在软件开发的过程中,为了有效地进行开发和管理,人们往往根据经验规律,形成一定的模式。将开发过程分成几个阶段,每个阶段都有明确的任务,并且需要产生一定规格的文档资料交付给下一个阶段,下一个阶段在上阶段的基础上继续进行开发过程。
按结构化方法,通常将开发过程分为软件计划、需求分析、软件设计、程序编码、软件测试、软件维护6个主要阶段,各个阶段像瀑布流水一样联为一体。
1.软件计划
通过初步的、总体的需求分析,确定这是一个什么样的软件。从总体上把握软件的目标和功能的框架,继而研究论证总体方案的可行性。该阶段的主要任务有:
1.问题定义,包括开发软件的现状、开发的条件和理由、总体要求以及目标。
2.可行性研究,一般从经济、技术、操作、法律、时间五方面讨论。
3.软件计划内容
软件范围的内容有:软件功能规模、软件能力对硬件的要求、接口界面的性质和复杂性。
环境资源包括需要什么样水平的人,什么功能性能的软件和硬件。
4.软件价格估计
5.成本/收益分析
6.编写项目开发计划文档
2.需求分析
所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。该阶段的主要任务就是深入描述软件的功能和性能,借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“干什么”的问题。该阶段编写需求规格说明书。
3.软件设计
软件设计的任务是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法,形成软件的具体设计方案。具体分为以下四方面的设计:
结构设计:定义软件系统各主要部件之间的关系。
数据设计:将模型转换成数据结构的定义。
接口设计:软件内部,软件和操作系统间以及软件和人之间如何通信。
过程设计:系统结构部件转换成软件的过程描述。
4.程序编码
在此之前,我们已经解决了系统是什么,干什么,怎么干的问题,接下来就是实际去干了。在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题。
5.软件测试
软件测试就是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。测试是为了发现程序中的错误而执行程序的过程。好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。成功的测试是发现了至今为止尚未发现的错误的测试。测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
6.软件维护
软件维护就是在软件运行过程中,为了改正运行过程中偶尔出现的个别错误或由于外部环境以及用户对系统功能、性能的需求进行提高完善。该阶段的工作量占软件的整个生命周期的70%左右,主要包括对程序、数据、代码和设备的维护。