软件工程-软件生存周期模型

软件工程-软件生存周期模型

软件工程-软件测试
软件工程-软件测试-测试方法

概念

同任何事物一样,一个软件产品或软件系统也要经过孕育、诞生、成长、成熟、衰亡的许多阶段,一般称为软件生存周期。
软件的生命周期包括可行性分析与项目开发计划、需求分析、总体设计、详细设计、编码和单元测试、综合测试及维护阶段。

软件生存周期模型

概念

软件生存周期模型是一个包括软件产品开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止。

模型

瀑布模型

概念

瀑布模型是将软件生存周期各个活动规定为先行顺序连接的若干阶段。
软件工程-软件生存周期模型

特点
  1. 阶段间具有顺序性和依赖性。前一阶段的工作完成之后,才能开始后一阶段的工作; 前一阶段的输出文档就是后一阶段的输入文档。
  2. 推迟实现的观点。对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。
  3. 质量保证的观点。每个阶段都必须完成规定的文档,是“文档驱动”的模型;每个阶段结束前都要对所完成的文档进行评审,尽早发现问题,改正错误。
优缺点

瀑布模型的优点:
1.可强迫开发人员采用规范的方法;
2.严格地规定了每个阶段必须提交的文档;
3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点:
只能通过文档了解产品,不经过实践的需求是不切实际的。

适用于

需求是预知的、软件实现方法是成熟的、项目周期较短。

快速原型

概念

快速原型:是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
软件工程-软件生存周期模型

特点

1.快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的;
2.快速原型的本质是“快速”。应该尽可能快地建造出原型系统,以加速软件开发过程,节约成本。

优缺点

快速原型优点
1.克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险;
2.适合预先不能确切定义需求的软件系统的开发。
快速原型缺点
1.所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下;
2.使用前提是要有一个展示性的产品原型,一定程度上可能会限制开发人员的创新。

适用于

无完整的需求说明,只有一些基本要求、用于及早向用户提交一个原型系统

增量模型

概念

增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
(瀑布模型+原型)
软件工程-软件生存周期模型

优缺点

增量模型的优点:
1.人员分配灵活,刚开始不用投入大量人力资源;
2.当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径;
3.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。
增量模型的缺点:
1.软件体系结构必须是开放的;
2.模型本身是自相矛盾的。整体——独立构件;
3.不同的构件并行地构建有可能加快工程进度,但是冒无法集成到一起的风险。

适用于

1.适用于需求经常改变的软件开发过程;
2.如果在项目既定的商业要求期限之前不可能找到足够的开发人员,在这种情况下,增量模型显得特别有用。

演化模型

概念

演化模型是一种全局的软件(或产品)生存周期模型。属于迭代开发方法。主要针对实现不能完整定义需求的软件开发,是在快速开发原型的基础上,根据用户在使用圆形的过程中提出的意见和建议对原型进行改进,获得圆形的新版本。
软件工程-软件生存周期模型

优缺点

演化模型的优点
任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高质量的产品要求。
演化模型的缺点
如果不加控制地让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面影响。

适用于

需求不清楚、小型或中小型系统、开发周期短

螺旋模型

概念

螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
(快速原型+瀑布模型)+风险分析
软件工程-软件生存周期模型
软件工程-软件生存周期模型

特点
优缺点

螺旋模型的优点:
1.主要优势在于它是风险驱动的。
2.对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;
3.减少了过多测试或测试不足所带来的风险;
4.维护只是模型的另一个周期,维护和开发之间没有本质区别。
螺旋模型的缺点:
1.采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;
2.过多的迭代次数会增加开发成本,延迟提交时间。

适用于

1.特别适用于庞大、复杂并具有高风险的系统。
2.适用于内部开发的大规模软件项目。

喷泉模型

概念

喷泉模型:是典型的面向对象生命周期模型。 “喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图中的中心垂线)作为总目标。
软件工程-软件生存周期模型

优缺点

喷泉模型的优点:
1.该模型的各个阶段没有明显的界限,开发人员可以同步进行开发;
2.多次反复地增加或明确目标系统,而不是本质性的改动,降低错误的可能性。
喷泉模型的缺点:
1.由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理;
2.要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

适用于

适用于面向对象的软件开发过程。

敏捷过程与极限编程

敏捷过程
敏捷软件开发宣言(价值观声明):
1.个体和交互胜过过程和工具;
2.可以工作的软件胜过面面俱到的文档;
3.客户合作胜过合同谈判;
4.响应变化胜过遵循计划;
根据上述价值观声明提出的软件过程统称为敏捷过程。
极限编程(eXtreme Programming, XP):
1.敏捷过程中最富盛名的一个;
2.广泛适用于需求模糊且经常改变的场合;
3.使得敏捷过程能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。