瀑布模型-Waterfall
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。从本质来讲,它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,开发进程从一个阶段“流动”到下一个阶段,这也是瀑布开发名称的由来。瀑布模型最适合于那种在项目早期就能够确定需求的软件项目。
如上图所示,在瀑布模型中,发现问题的时间越晚,风险就越大。解决问题的代价也就越高。
螺旋式模型Spiral
螺旋模型采用一种周期性的方法来进行系统开发。这会导致开发出很多的中间版本。使用这种方法,项目经理在早期就能够为客户实证某些概念。该模型是快速原型法,以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。 因此每个阶段都包含分析,设计,实现,和测试部分,如下图所示:
统一软件开发过程-Unified Software Development Process (USDP or just UP)
统一软件开发过程是一个流行的递增式软件开发方法。最有名的就是Rational推出的RUP。
UP开发的重要特征包括:
- 迭代式开发。在软件开发的早期阶段就想完全、准确的捕获用户的需求几乎是不可能的。实际上,我们经常遇到的问题是需求在整个软件开发工程中经常会改变。迭代式开发允许在每次迭代过程中需求可能有变化,通过不断细化来加深对问题的理解。迭代式开发不仅可以降低项目的风险,而且每个迭代过程以可以执行版本结束,可以鼓舞开发人员。
- 用例驱动。 开发软件系统的目的是要为该软件系统的用户服务。因此,要创建一个成功的软件系统,我们必须明白其潜在用户需要什么 。 然而,用例并不仅仅是定义一个系统的需求的一个工具。它们还驱动系统的设计、实现和测试。也就是说,它们驱动整个开发过程。基于用例模型,软件开发人员创建一系列的设计和实现模型来实现各种用例。开发人员审查每个后续模型,以确保它们符合用例模型。测试人员将测试软件系统的实现,以确保实现模型中的组件正确实现了用例。这样,用例不仅启动了开发过程,而且与开发过程结合在一起。“用例驱动”意指开发过程将遵循一个流程:它将按照一系列由用例驱动的工作流程来进行。首先是定义用例,然后是设计用例,最后, 用例是测试人员构建测试案例的来源。
- 基于架构的体系结构。基于构件的体系架构创造了容易扩展的系统,并提升了软件的重用性和可读性。在UP方法中,一直坚持架构是整个软件系统的最核心部分。
如上图所示,UP把整个软件开发分为四个阶段:构思阶段,细化阶段,构建阶段,移交阶段。
极限编程-eXtreme Programming (XP)
是敏捷软件开发中最富有成效的几种方法学之一。XP更强调可适应性而不是可预测性。XP的支持者认为软件需求的不断变化是很自然的现象,是软件项目开发中不可避免的、也是应该欣然接受的现象;他们相信,和传统的在项目起始阶段定义好所有需求再费尽心思的控制变化的方法相比,有能力在项目周期的任何阶段去适应变化,将是更加现实更加有效的方法。
XP为管理人员和开发人员开出了一剂指导日常实践的良方;这个实践意味着接受并鼓励某些特别的有价值的方法。支持者相信,这些在传统的软件工程中看来是“极端的”实践,将会使开发过程比传统方法更加好的响应用户需求,因此更加敏捷,更好的构建出高质量软件。
极限编程的核心特征包括:
- 成对编程。如果代码审核好的话,那么就经常性的审核代码。
- 测试。持续性的测试你的代码。
- 重构。把重构做为每个开发者的日常工作。
- 简洁化。尽量使用简洁的方式来设计系统。