软件生命周期都有哪些阶段?常见的软件生命周期模型有哪些?
回答
JYONG回答
一、
1、软件生命周期:一个软件产品或者系统要经历孕育、诞生、成熟、衰亡等阶段,一般称为软件生命周期(软件生存周期)。
2、 软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期。为了使规模扩大、结构复杂和管理复杂的软件开发变得容易管理和控制,把整个软件生命周期划分成若干个阶段,使每个阶段都有明确的任务,整理出软件生命周期模型。
二、软件生命周期模型
1、概念:软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。
2、软件生命周期模型分为:瀑布型生命周期、迭代模型、快速原型模型、螺旋模型、V模型、W模型
三、瀑布型生命周期
瀑布型生命周期包括可行性分析与开发计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等阶段。其他软件生命周期未必有与瀑布型生命周期相同的阶段。
瀑布型生命周期的典型六个阶段:
1、问题的定义及规划
有软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析
在确定开发可行性的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段。同样的需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计
此阶段主要根据需求分析的结果,对整个软件系统进行设计,入系统框架设计,数据库设计等等。软件设计分为总体设计和详细设计。 好的软件设计将为软件程序编写打下良好的基础。
4、程序编码
将软件设计的结果转换成计算机可运行的程序代码。在编码过程中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分为:单元测试、组装测试、系统测试三个阶段。测试方法主要有黑盒测试和白盒测试两种。在测试的过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、运营维护
软件维护是软件生命周期中持续最长的阶段。
在软件开发完成并投入使用之后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进维护两个方面。
四、迭代式模型
1、概念
迭代式模型是RUP(Rational Unified Process,统一开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必须的所有其他外围因素。
在某种程度上,开发迭代式一次完整地经过所有工作流程的过程:(至少有)需求工作流程、分析设计、实施、测试。类似于小型的瀑布式项目。
RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次迭代都会产生一个可以发布的产品。这个产品是最终产品的一个子集。
2、RUP是严格按照标准UML进行开发的,主要特点表现:
(1)开发复用,减少开发人员的工作量,并保证软件质量,项目初期可以降低降低风险;
(2)对需求进行有效管理
(3)可视化建模;
(4)使用组件体系结构,使软件体系架构更具弹性;
(5)贯穿整个开发周期的质量;
(6)对软件开发的变更控制。
3、RUP提出迭代方法,在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。测试从可靠性、功能性和系统性能来进行测试。
软件生命周期被分解为周期,每一个周期都工作在产品的一个新版本上。RUP将周期又划分为4个连续的阶段,即初始阶段、细化阶段、构造阶段和交付阶段。
4、迭代模型不同阶段的特点:
(1)初始阶段
系统的阐述项目范围,选择可行的系统构架,计划和准备业务案例
(2)细化阶段
细化构想,细化过程和基础设施,细化构架并选择构件
(3)构造阶段
资源管理、控制和过程最优化,完成构建的开发并根据评价标准进行测试
(4)交付阶段
同步并使开发的构造增量集成到一致的实施基线中。
5、迭代模型适用的条件
(1)在项目开发早期需求可能有所变化
(2)分析设计人员对应用领域很熟悉
(3)高风险项目
(4)用户可不同程度地参与整个项目的开发过程
(5)使用面向对象的语言或统一建模语言(UML)
(6)使用CASE(Computer Aied Software Engineering,计算机辅助软件工程)工具,如Rose(物体软件开发工具)
(7)具有高素质的项目管理者和软件研发团队。
6、迭代和瀑布模型的最大差别在于风险暴露时间上;
瀑布模型(文档是主体),很多问题在最后才会暴露,导致解决问题风险巨大。 在迭代式生命周期中,需要根据风险列表选择要在迭代中开发新的增量内容。每次迭代完成时都会生成一个经过测试的可执行文件,这样就可以核实是否已经降低了目标风险。
五、快速原型模型
快速原型模型在功能上等价于产品的一个子集。
瀑布型模型缺点在于不够直观,快速原型模型解决了这个问题。
快速原型模型根据客户需要在最短时间内解决客户的迫切需要,完成一个可以演示的产品。这个产品只是实现了部分功能(最重要的)。
最终目的:确定客户的真正需求,在得到用户的需求之后,原型将被抛弃,因为原型的发展速度很快,设计方面几乎没有考虑的,如果保留原型的话,在随后开发中会为此付出巨大代价。
六、螺旋模型
将瀑布模型和快速原型模型结合起来。强调了其他模型所忽视的风险分析,特别适合于大型复杂系统。
1、螺旋螺旋沿着螺旋线进行若干次迭代
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
2、螺旋模型的限制条件:
(1)螺旋模型强调风险分析,但要求客户接收和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适用于内部的大规模软件开发。
(2)如果执行分先分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适用于大规模软件项目。
(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则会带来更大的风险。
3、一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后评价该阶段的结果,并设计下一个阶段。
实际上,模型和实用之间还是有很大差别的。
(0)