分析
软件需求分析就是回答要做什么的问题。它是正确理解用户需求,去粗取精,去伪存真,然后用软件工程开发语言(形式化功能规范,即需求规范)表达出来的过程。这一阶段的基本任务是与用户一起确定需要解决的问题,建立软件的逻辑模型,编写需求规格说明文档,最终获得用户的认可。需求分析的主要方法有结构化分析法、数据流程图法和数据字典法。这一阶段的工作是根据需求说明书的要求,设计和建立相应的软件系统的体系结构,将整个系统分解为若干子系统或模块,定义子系统或模块之间的接口关系,并进行具体的设计。每个子系统。定义、编写软件概要设计和详细设计规范、数据库或数据结构设计规范,并编制测试计划。
设计
软件设计可分为两个阶段:概要设计和详细设计。事实上,软件设计的主要任务是将软件分解为模块,模块是指数据和程序描述的程序单元以及能够实现某种功能的可执行程序。它可以是函数、过程、子程序、独立的程序和具有程序描述的数据,也可以是可组合、分解和替换的功能单元。模块,然后进行模块设计。概要设计是结构设计,其主要目标是给出软件的模块结构,用软件结构图来表示。详细设计的首要任务是设计模块的程序流程、算法和数据结构,次要任务是设计数据库。常用的方法仍然是结构化编程方法。
编码
软件编码是指将软件设计转化为计算机可以接受的程序,即写成用某种编程语言表达的“源程序列表”。充分了解软件开发语言、工具、编程风格的特点和编程风格,将有助于你选择开发工具,保证软件产品的开发质量。
现在的软件开发中,除了特殊场合,很少使用80年代的高级语言,而是使用面向对象的开发语言。而且,大多数面向对象的开发语言和开发环境合二为一,大大提高了开发速度。
测试
软件测试的目的是以较低的成本发现尽可能多的错误。实现这一目标的关键是设计一套好的测试用例(测试数据和预期输出结果组成了测试用例)。设计一套优秀的测试用例的关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。常用的两种测试方法是白盒法,即对源程序进行测试,利用程序的内部逻辑结构来发现软件编程错误、结构错误和数据错误。结构性错误包括逻辑、数据流、初始化等方面的错误。用例设计的关键是用更少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法是根据软件的功能或行为描述,发现软件的界面、功能和结构中的错误。接口错误包括内部/外部接口、资源管理、集成和系统错误。黑盒方法用例设计的关键还在于用更少的用例覆盖模块输出和输入接口。黑盒方法。
维持
维护是指软件开发(分析、设计、编码和测试)完成并交付使用后,对软件产品进行的一些软件工程活动。即根据软件的运行情况,对软件进行适当的修改,以适应新的需求并纠正运行过程中发现的错误。准备软件问题报告和软件修改报告。
一个中等规模的软件,如果开发阶段需要一到两年的时间,那么投入使用后可能会运行或工作五到十年。那么它的维护阶段也是在运行的五到十年期间。在此期间,人们需要开始解决开发阶段遇到的几乎所有问题,同时解决一些维护工作本身特有的问题。做好软件维护工作,不仅可以排除障碍,使软件正常工作,而且可以使其功能扩展,提高性能,给用户带来明显的经济效益。然而不幸的是,对软件维护的重视往往远远低于对软件开发的重视。事实上,与软件开发工作相比,软件维护的工作量和成本要大得多。
在实际的开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段之前通常都会有一个或几个步骤的回溯。测试过程中出现的问题可能需要修改设计,用户可能会提出一些修改需求说明书的需求等。
1、项目设计
我认为项目设计的主导思想可以理解为两种,一种是完整设计,一种是简单设计。
完整的设计是指在编写代码之前调查软件的各个方面,进行详细的需求分析,编写所有的开发文档,并在开始编写代码之前设计出程序的整个流程。也就是说,一切计划都已经制定好了,在战争开始之前就可以看到最终的样子了。这似乎是许多“软件工程”书籍所要求的。一开始我觉得这个方法不错。一切都是计划好的,就照着去做吧。但这里有一个明显的问题,谁来做这个完美的计划?估计只有非常擅长BT的人,但大多数人都希望有一个完整的设计,没有错误,或者已经有几个备份容错方案,并且能够准确地实现。以达到最终目标。如果没有多年的工作经验,这样的状态是不可能的。我没有这个能力,所以就放弃了这个想法。
简单设计:简单设计是一种理念,是一种可以接受的、简单的设计。至少数据库已经确定了,基本流程也已经确定了。以此作为方案设计的开始,具体细节可以根据实际情况的进展随时修改。功能设计,但是这个功能修改不能修改数据库结构。也就是说,在编程之前,要反复演示数据库结构。这种方法减少了早期设计的时间,将代码编写工作和部分设计工作放在一起,实际上缩短了项目开发时间。如果说完整的设计方法需要强大的前期设计师,那么简单的设计则需要具有伟大设计头脑的程序员。程序员不仅仅是写K代码的人,还要负责程序架构的设计。因此,对程序员的要求非常高。简单设计成功的基本点之一是程序员设计的逻辑结构简单,可以根据需要进行调整。即代码结构灵活。简单设计带来的另一个变化是程序员之间有更多的会议和交流。这变得非常重要。如今,除了那些非常大型的软件公司外,大多数中小型软件公司基本上都采用简单的设计。
综上所述,简单的设计很考验开发者的能力。完整的设计考验的是早期设计师和整个项目团队的完整能力。 (开发人员必须编写各种文档的一部分。)
2、设计变更和需求变更
开发商最怕什么?设计改变还是需求改变?我认为需求变化是最致命的。当你的项目数据库定稿并开发了几个工作日后,你突然收到甲方的请求,要求更改某个功能,需要修改原来的需求分析。如果这个修改是针对涉及到的数据库,表结构改变的话,那真的是最致命的。这意味着项目的某些部分必须重新启动,而如果这部分涉及到多个已经完成的部分,后果将更加可怕。所以当出现这种情况时,作为项目经理就应该考虑先去检查责任人。是自己的需求分析不够好,还是客户同意需求分析后进行的修改。如果是后者的话,你完全可以要求客户对他的修改负责!那么,呵呵,客户先生,抱歉,这次新增的需求将被归类到另一个版本中。如果你改变了之前某个需求的定义,可能就得重新发明轮子了,不过这个时候也不用太担心,毕竟错的是客户。 (项目正式启动前没有明确要求)。所以,亲爱的观众,需求分析完成后,一定要请客户签字认可后才能开始工作,并且必须在合同中注明,当客户造成的需求变化以及开发成本增加时,客户必须为此付出代价。土地。
如果设计发生变化而需求不变,这只是我们内部的矛盾,可以通过讨论解决。在简单设计中,由于早期设计不完整,当进入任何新模块进行开发时,都可能导致设计变更。开发人员的水平基本上决定了软件的质量。
3. 代码编写
当需求确定了,数据库也确定了,我们其实就可以进行实质性的编码了。我认为最好一个人单独编程,因为他随时都可能偷懒。 (上网和MM聊聊),但是现在软件项目越来越大,工期也越来越紧。其实我们一个团队通常有3-5个程序员,所以我们要强调团队合作。那么如果你写的代码别人能看懂,我们在实际写代码的过程中一定要有详细的编码标准。许多书籍中都提到了编码标准。但至少以下规范是我们必须遵守的:
1)源程序文件结构:
每个程序文件应由三部分组成:标题、内容和附加说明。
(1)标题:文件前面的注释,主要包括:程序名称、作者、版权信息、简要说明等,如有必要,还应该有更详细的说明(这部分会用空格分隔)行并单独评论)。
(2)内容控制注册等功能应放在内容部分的末尾。类定义的顺序应为 、 、 、 ,并尽量每一部分只保留一个。每个部分应按数据、函数、属性和事件的顺序排列。
(3)附加注释:文档末尾的补充注释,如参考资料等,如果内容不大,也可以放在标题部分的末尾。
2)界面设计风格的一致性:
由于采用可视化编程,所有界面风格相似,对应的控件多为操作系统下的标准控件,并参考了市场上其他相关企业内部管理应用软件。
用户界面本着简单易操作、贴近用户考虑的原则,采用操作风格一致的标准界面。这样可以减少实施过程中的客户培训,方便用户上手和学习。
3)编辑风格:
(1)缩进:缩进单位为Tab,一个Tab为四个空格。全局数据、函数原型、标题、附加注释、函数说明、标签等都是用top格式写的。
(2) 空格:数据和函数的类型、修饰(如等)名称之间应有适当的空格,并根据情况对齐。原则上,关键字应该有一个空格,无论是否有括号。语句行后面添加的注释应与语句之间用适当的空格分隔,并尽可能对齐。
(3)对齐:原则上紧密相关的线应该对齐。对齐包括类型、修改、名称、参数和其他部分的对齐。
另外,每行的长度不应超过屏幕太多。如有必要,适当缠绕线。
(4) 空行:程序文件结构各部分之间有两个空行。如果没有必要,可以只使用一个空行。一般情况下,每个函数实现之间有两个空行。
(5)注释:注释的要求有三点:
A. 必须是有意义的;
B. 程序必须正确描述;
C. 必须是最新的。
评论是必要的,但不应该过多。以下是四个必要的评论:
标题、附加说明;
功能描述:几乎每个功能都应该有适当的描述。通常在函数实现之前添加。如果没有函数实现部分,则添加在函数原型之前。内容主要是函数的功能、用途、算法等。 、参数说明、返回值说明等,必要时还有特殊软硬件要求等一些说明;
当代码不清楚或不可移植时,应该有少量的解释;
以及其他一些注释。
4)命名约定:
遵守匈牙利变量命名约定。所有标识符必须为英文或英文缩写。禁止使用拼音。标识符中每个单词的第一个字母都是大写的。缩写词一般全部大写。仅在必要时使用“_”分隔单词。
4.BUG修复
如果程序有bug,谁来修复?呵呵...
最好的方法是谁写了它就修复它,谁破坏它就修复它。一个人修复损坏的代码。两个人一起努力修复损坏的代码。
5. 开发者测试
开发人员的测试是为了保证代码能够正常运行,而开发过程中发现的错误往往更容易纠正。 (还有一个好处就是没人会骂你。因为只有你自己知道)。但一旦软件到达测试团队并出现问题,就需要花费大量时间来纠正错误。如果bug到了客户那里才发现,时间会更长,开发者自己的压力也最大。客户->公司->测试团队->开发人员。这完全是一个倒金字塔的形状,如果连杆耐力差的话很容易发生事故。
另外,开发者测试除了保证代码能够正常运行之外,一个很重要的方面就是保证上次运行正常的代码这次依然能够正常运行。如果做不到这一点,那么BUG就会不断出现,而且很多BUG会反复出现。所以这个软件似乎有无穷无尽的错误需要修复。如果发生这种情况,那么开发人员教育是必要的。企业教育的一般方法有四种。第一个是扣工资,第二个是加班,反复加班+精神攻击。第三种选择是驱逐。四是动员人员救助有困难的家伙。我希望读这篇文章的人不要受到前三种教育的教育。