软件开发过程需要经历的几个主要阶段:
(1)定义。明确软件开发的目的、软件的需求。
(2)计划。制订软件开发所涉及的各种计划。
(3)实现。进行设计、编码、文档编写工作,完成所要求的软件特性。
(4)稳定化。以测试和修复工作为主,确保将提交的软件具有良好的质量。
(5)部署。安装、提交开发完成的软件,建立可供用户使用的环境。
常见的软件生命周期模型:
瀑布模型
原型模型
增量模型
螺旋模型
瀑布模型:
在瀑布模型中,包括六个阶段:计划、需求分析、设计、编码、测试、运行维护。这六个阶段自上而下、相互衔接,以固定的次序来进行。模型驱动的一个重要的特征是强调阶段的顺序性和依赖性。下一个阶段必须是以上一个阶段为前提。例如在开始设计工作前,必须完成需求分析过程。瀑布模型要求各个阶段必须有相应的文档为依据,因此瀑布模型是以文档为驱动的。
瀑布模型自身存在了一些缺点,比方说:测试人员可能在后期发现大量错误,因此必须返回需求分析、设计或代码中定位问题,而瀑布模型中认为已经完成的各个阶段必须修改,这样以来所花费的代价是很大的。因此很多人认为瀑布模型适合硬件系统的开发。
原型模型:
在很多的时候,用户提出了软件需达到的一系列目标,但不能给出详细的输入、输出和处理过程;开发人员不能确定某种算法或合理的解决方案。在这种情况下适合用原型模型。
其主要思想是:先建立一个能反映用户需求的原型系统,使得用户和开发人员能够对目标系统的概况进行评价和判断,然后对原型进行反复的扩充和改进,最终建立可以满足用户需求的目标系统。
开发者和用户得到更加详细的待开发软件的需求,对已经开发的原型进行调整,使之更加符合用户的需求。通过不断的迭代,最终开发出符合需求的软件。
增量模型:
增量模型结合了瀑布模型和原型模型的特性。
增量模型中,在每个阶段都生成软件的一个可发布版本。这些阶段是交错进行的,这意味着前一个版本还没有发布时,下一个版本的部分工作就已经开始了。
增量模型和原型模型有一个很大的差别:在原型中,每个阶段发布一个原型,而在增量模型中是完成一个正式的版本。在增量模型中,软件版本是在功能上逐步完善的。
螺旋模型:
螺旋模型将瀑布模型和原型模型结合起来,并且加入了两种模型都忽略的风险分析。螺旋模型的每一周都包括制定计划、风险分析、实施工程和评审四个阶段。开 发过程没迭代一次,螺旋线就增加一周,软件开发又前进一个层次,系统又生成一个新的版本,而软件开发的时间和成本又有了新的投入,最后得到一个客户满意的软件版本。
在螺旋模型中,可软件也同样是以一系列版本的形式进行逐步发布的。螺旋模型和一些传统的过程模型不同,它不是当软件交付的后就结束了,而是贯穿了软件的整个生命周期,在螺旋模型中,可能会包含了增强(升级)项目和产品维护项目。