由于瀑布模型规定的软件开发过程与软件生命周期一致,因此瀑布模型也称为经典生命周期模型。
注:瀑布模型一直被用来规范软件开发活动,很多后续其它模型都是在瀑布模型基础上的改进。
瀑布模型是一种线性模型,各个阶段按照顺序依次进行,下一阶段依赖于上一阶段的结果。编码处于软件开发的中后期,体现了推迟实现的观点,强调需求分析和系统设计的重要性。
瀑布模型以文档为驱动,每个阶段都有与其相关联的里程碑和可交付产品。每个阶段都会产生相应的报告。每个阶段结束前都会进行文档审查,及早改正错误。
实际使用中,是带反馈的。
开发过程的后面的总会返回到上一级。例如:总体设计阶段发现需求错误,则反馈到需求分析阶段;详细设计阶段发现总体设计错误,则反馈到总体设计阶段。
但对软件的维护则反馈到相应的阶段。例如:若错误原因在于编码,则反馈到编码阶段;如果错误原因在于设计,则反馈到设计阶段;如果错误原因在于需求,则反馈到需求分析阶段。
系统需求明确且稳定、技术成熟、工程管理较严格的场合,如军工、航天、医疗。能保证这些的高质量完成。
是瀑布模型的变种。
在V模型中,处于顶端的是编码,左侧是分析设计阶段,右侧是测试运维阶段。该模型将测试的各个阶段和分析设计的各个阶段关联起来,单元测试验证详细设计,系统测试验证总体设计,验收测试验证需求分析。
如果在单元测试发现错误,则需要检查相应模块的详细设计,修改相应模块的代码,并重新进行单元测试。
如果在系统测试中发现错误,则需要检查总体设计,检查可疑模块的详细设计,对错误模块进行代码修改,然后进行错误模块的单元测试,通过后再次进行系统测试。
如果在验收测试中发现问题,则需要检查系统需求,然后检查系统总体设计,然后检查可疑模块的详细设计,对错误模块进行代码修改,然后进行错误模块的单元测试,单元测试通过后再次进行系统测试,系统测试通过后再次进行验收测试。
也称为原型化模型、快速原型模型
由于原型构建处于真正的系统开发之前,为了满足软件进度要求,要求原型构建过程要快,因此也称为快速原型模型。
一个部分开发的产品,就是只开发了一部分。
通过这个部分开发的产品,客户和开发人员能够对计划开发的产品的相关方面进行检查,以明确需求或者确定方案的可行性。
根据原型质量和项目计划,可以选择抛弃原型或者把原型发展成最终产品。
例1 只做出了图书借阅系统的主要界面
例2 智能家居系统:只做出了少量的室内信息监视和电器控制
共两个阶段:原型构建阶段、系统开发阶段。
原型构建阶段开始于策划原型需求,然后构建原型系统,部署原型系统,基于原型系统和客户沟通,明确需求或验证方案。如果用户不满意,则修改原型需求,修改原型系统,重新部署原型系统,再次和客户沟通,经过多次迭代,直到用户满意,才进入系统开发阶段。
按照正常的开发过程:进行需求分析,设计,实现,测试和维护。
由于通过构建原型来明确需求,能减少需求不明确带来的风险
•由于构建原型要求快,构造原型采用的技术和工具不一定主流
•快速建立起来的系统加上连续的修改可能导致原型质量低下
•设计者可能需要在质量和原型中进行折中,可能产生客户意识不到一些质量问题
——“如果抛弃原型,则开发时间延长,若将原型发展成最终产品,则系统可能会存在一些客户意识不到的质量问题。”
1、当客户定义一个总体目标集,但并不清楚系统的具体输入和输出
2、开发者不确定算法的效率、软件与操作系统是否兼容以及客户与计算机交互的方式等情况
类似于原型,满足用户需求的一个子集,是能够完成一定功能、小而可用的软件
都是系统的一部分,但是它们的构建原因不同和最终结局不同。
原型构建:明确需求或验证方案,最终可能会被抛弃
增量:是实际开发过程和最终系统的一部分
文字处理软件:实现三个功能——创建文本、组织文本、格式化文本。依次实现每一个增量到发布的功能的转变,这时系统所有增量开发完成,系统开发完成。
如果在软件开发初期无法确定软件所有需求,则可以采用这种方式进行增量开发:
增量的方式可以采取两种:增量方式或者迭代方式。
每个增量是一些新功能,通过增加新功能来增加增量,
每个增量是对一些功能的改进,通过改进功能来增加增量
注:实际使用中,常常是两种方式的结合。
把开发活动和风险管理结合起来控制风险
前面课程中讲到的原型模型通过原型化降低需求不明确带来的风险,增量模型通过产品逐步交付降低需求变化带来的风险,但是当软件项目具有更大更多风险时,这些方法是不够的。
在软件开发过程中加入风险管理。
软件开发普遍存在风险,例如,最终交付的产品用户不满意,产品不能按期交付,开发成本超过了预算,产品开发期间关键人员离职,产品投入市场前竞争对手发布了功能相近价格更低的产品,等等。如何应对这些风险对软件项目的成功开发至关重要。
如果将螺旋模型展开,它实际上是瀑布模型,其中每个阶段加入了原型化过程,因此螺旋模型结合了瀑布模型和原型模型的特点。
以图为例:
1、螺旋模型强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力,支持用户需求的动态变化;
2、原型可看作可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便;
3、螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程
软件开发早期定义对象,整个开发过程充实和扩充对象
各个阶段使用统一的概念和表示方法,生命周期各阶段无缝连接
各个开发步骤多次反复迭代
一共五个阶段
各个开发阶段使用统一的概念和表示方法,因此各阶段之间无缝连接。各个开发阶段可以多次反复迭代,最终开发出完整的系统。
喷泉模型的各个阶段没有明显的界限,开发人员可以同步进行开发,可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删