什么是软件生命周期模型?
通常软件生命周期模型是是软件开发的全部过程、活动和任务的结构框架通常他是用来简洁描述软件过程,而软件过程则描述为了开发出客户需要的软件,什么人在什么时候做什么事以及怎么做这些事来实现一个特定的目标。
并且生命周期模型规定了把生命周期划分成哪些阶段以及各个阶段的执行顺序。
试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的优缺点?
瀑布模型:
优点:强迫开发人员采用规范的方法;严格规定每个阶段必须提交的文档;要求每个阶段交出的产品都必须经过质量保证小组的仔细验证;
缺点:瀑布模型由文档驱动,在产品提交前给用户之前,用户只能通过文档了解产品,有可能导致最终产品不能真正满足用户需求;
适用于:需求明确的小型开发;
快速原型模型:
优点:可以得到比较良好的需求定义,容易适应需求的变化;有利于开发与培训的同步;开发费用低、开发周期短且对用户更友好。
缺点:客户与开发者对原型理解不同; 准确的原型设计比较困难; 不利于开发人员的创新。
适用于:需求不明确,组内成员不熟悉时;对所开发的领域比较熟悉而且有快速的原型开发工具;进行产品移植或升级时,或对已有产品原型进行客户化工作。
增量模型:
优点:短时间内可以向用户提交可完成工作部分的产品;逐步增加产品功能可以使用户有充足的时间学习和适应新产品,减少一个全新的软件带给客户组织的冲击;
缺点:把每个新增构建集成到现有软件结构中必须不能破坏原来已经开发出的产品;软件结构需要更加精心的设计;它一方面要求开发人员把软件看成一个整体,另一个方面又要求开发人员把软件看成构建序列,每个构建本质上相互独立;
适用于:进行已有产品升级或新版本开发;对完成期限严格要求的产品;对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的;
螺旋模型:
优点:对可选方案和约束条件的强调有利于软件重用,也有助于提高软件质量;减少过多测试或测试不足带来的风险;螺旋模型中的维护只是模型的另一个周期,在维护和开发之间并没有本质的区别;
缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间;
适用于:内部开发的大规模项目;