软件开发方式与迭代
1. 瀑布式开发
试图在编程之前详细定义所有或大部分需求。瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
优点
i. 所有需求提前规定,适合充分理解的项目。
ii. 适用于没有经验的开发团队。
iii. 当前一阶段完成后,只需要去关注后续阶段。
iv. 可在迭代模型中应用瀑布模型。缺点
i. 在开始阶段定义完整且正确的需求很困难。
ii. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
iii. 瀑布模型的突出缺点是不适应用户需求的变化。
2. 螺旋式开发
螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风险的系统。
优点
i. 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
ii. 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。缺点
i. 建设周期长
3. 什么是迭代:
迭代发开是UP和大多数其他现代方法中的关键实践。在这种生命周期方法种,开发被组织成一系列固定的短期小项目,成为迭代。
每次迭代都产生经过测试,集成并可执行的局部系统。每次迭代都具有各自的需求分析,设计,实现和测试活动。
4. 迭代式开发:
迭代生命周期基于对经过多次迭代的系统进行持续扩展和精化,并以循环反馈和调整为核心驱动力,使之最终成为适当的系统。
因为随着时间的推进, 系统是在增长式的完善的,所以这一方法也被称为迭代和增量式开发
因为反馈和调整使规格说明不断进化,所以这种方法也被称为迭代和进化式开发
优点
i. 在最终确定所有需求前,快速地实施一小步的方式可以得到来自用户,开发人员的快速反馈。
ii. 尽早解决和验证了具有风险,关键的设计决策。
iii. 由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。缺点
i. 在项目早期开发可能有所变化 ,对于开发人员的要求较高,需有一个高素质的项目管理者和一个高技术水平的开发团队
注意: 每次迭代所产生的不是实验性原型,而是最终系统的一部分,也就是可交付的产品。
5. 统一式开发过程(UP):
UP是一种迭代式的软件开发方式,其基本思想为:短时间定量迭代,进化和可适应性开发。
其他概念包括:
- 在早期迭代中解决高风险和高价值问题。
- 不断地让用户参与评估,反馈和需求。
- 不断地验证质量;提早,经常和实际地测试。
6. 什么是UP的阶段:
UP项目将其工作和迭代组织分为四个主要阶段:
- 初始(Inception):大体上的构想,业务案例,范围和模糊评估。
- 细化(Elaboration):已精化的构想,核心架构的迭代实现,高风险的解决,确定大多数需求和范围以及进行更为实际的评估。
- 构造(Construction):对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署。
- 移交(Transition):进行beta测试和部署。
7. 什么是UP科目(Discipline)
科目是在一个主题域中的一组活动,例如编写用例。
制品(artifact)是对所有工作产品的统称,如代码,数据库模式,文本文档等。
参考书目: UML和模式应用