前言:
软件开发方法是软件开发的方法学、自从“软件危机”爆发以来,软件研究人员就在对开发方法进行不断的研究,以期待能够提高软件的质量、降低软件的成本。经过40多年的研究,人们提出了 很多的开发方法,如最初的结构化开发到现在非常流行的面向对象的开发方法等。本文主要解释好软件生命周期、软件开发模型、软件重用技术、逆向工程以及形式化开发方法。
软件生命周期:
软件生命周期也就是软件生存的周期。如同万物一样,软件也有诞生和消亡,软件生命周期就是指软件自开发构思与研发到不再使用而消亡的过程。有关软件生命周期的阶段划分,不同的标准有不同的规定。在《软件工程国家标准---计算机软件开发规范GB8566-88》中将软件生命周期划分为8个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、集成测试、确认测试、使用和维护。
1. 可行性研究与计划
在决定是否开发软件之前,首先需要进行可行性研究。通过可行性研究,来确定开发此软件的必要性,并且根据可行性研究的结果初步确定软件的目标、范围、风险、开发成本等内容。从而制定出初步的软件开发计划。通过可行性研究,如果确定该软件具有研发的必要,则将产生《可行性研究报告》和软件开发计划,并进入需求分析的阶段。
2. 需求分析
需求分析是软件开发的重要阶段。经过可行性研究之后,初步确定了软件开发的目标和范围,之后则需要对软件的需求进行细致的分析,来确定软件要做成什么样的。需求分析是软件开发过程中极为重要的一个环节,如果需求分析出现了重大偏差,那么软件开发必然会偏离正确的道路,越走越远。尤其是需求分析的错误如果在软件开发后期才被发现,修正的代价是非常大的。
3. 概要设计
概要设计确定整个软件的技术蓝图,负责需求分析的结果转化为技术层面的设计方案。在概要设计中,需要确定系统架构、各个子系统间的关系、接口规约、数据库模型、编码规范等内容。该也要设计的结果将作为程序员的工作指南,供程序员了解系统的内部原理,并在其基础上进行详细设计和编码工作。
4. 详细设计
详细设计完成编码前最后的设计,详细设计在概要设计的基础上,进行细化,如类设计。详细设计不是开发过程中必须的阶段,在一些规模较小、结构简单的系统 中,详细设计往往被省略。同样,在某一次软件开发中,可能只会对部分的关键模块进行详细设计。
5. 实现
实现过程包括编码和单元测试。单元测试指的是对刚刚编写 出的一个小的 程序单元进行测试,如某一个过程、方法或函数。因为单位测试的对象是小的程序单元,而不是完整的程序,因此往往需要编写一些测试程序来进行测试。有效的单元测试可以大大提高编码的质量 ,降低软件系统的缺陷率。
6. 集成测试
集成测试又称为组织测试。通过单元测试的程序并不意味着没有缺陷,当程序单元被集成到一起进行交互的时候 ,往往会出现单元测试中不能发现的问题。同单元测试不同,集成测试 必须经过精心的组织,指定集成测试计划,确定如何将这些程序单元集成到一起,按照什么样的顺序进行测试,使用那些测试数据等问题。
7. 确认测试
当完成集成测试之后,软件之间的接口方面的错误已经排除,这时候需要验证软件是否同需求一致,是否达到了预期目标。同集成测试一样,确认测试也需要进行计划和组织,逐步地验证 软件系统同需要的一致性。经过确认测试的 软件将投入正常使用,并进入维护期。
8. 使用和维护
即使通过单元测试,集成测试和确认测试,也不可能发现软件系统 中的全部缺陷;软件系统的需要也会根据业务的发展变化而变化。因此,在软件使用过程中,必须不断地对软件进行维护,修正软件中的缺陷,修改软件中已经不能适应最新情况的功能或者增加新的功能。软件维护的过程会贯穿整个软件使用过程。当使用和维护阶段结束后,软件系统也就自然消亡,软件系统的生命周期结束。