惯用过程模型(process models)

惯用过程模型

力求达到软件开发的结构和秩序,其活动和任务都是按照过程的特定指引顺序进行的。

一、瀑布模型(经典的生命周期)

提供一个系统的、顺序的软件开发方法:

瀑布模型的变形为 V 模型:

瀑布模型中遇到的问题:

实际的项目很少遵守瀑布模型提出的顺序。客户通常难以清楚地描述所有的需求。客户必须要有耐心。

由于任务之间的依赖性,开发团队的一些成员要等待另一些成员工作完成。 瀑布模型的优点:

结构简单,强调软件开发过程的阶段性和顺序性对软件开发管理严格,文档齐全容易理解和实施支持推迟实现的观点,尽可能将编码向后推迟。

瀑布模型的缺点:

不适应需求经常发生变更的环境要求项目开始时就能从用户那里得到准确的需求会导致工作中发生阻塞状态早期无法发现缺陷对于大的项目,用户要等很长时间才能得到最终产品

二、增量过程模型

增量模型综合了线性过程流和并行过程流的特征。 增量模型优点:

整个产品被分解成若干个构件逐步交付,用户可以不断看到所开发软件的可运行中间版本。将早期增量作为原型有助于明确后期增量的需求降低开发风险重要功能被首先交付,从而使得其得到最多的测试

增量模型局限性:

需要软件具备开放式的体系结构需求难以在增量实现之前详细定义,因此增量与需求的准确映射以及所有增量的有效集成可能会比较困难容易退化为边做边改方式,使软件过程的控制失去整体性

三、演化过程模型

原型开发

使开发者能够逐步开发出更完整的软件版本。 优点: 原型系统提供了定义软件需求的一种机制。在原型系统不断调整以满足各种利益相关者需求的过程中,采用迭代技术,同时也使开发者逐步清楚用户需求。 缺点:

利益相关者往往会要求对原型稍加修改变为一个可运行的产品,软件开发管理陷入失效。为了使原型系统快速运行,往往使用折中的手段(如低效算法),结果造成他们成为系统的组成部分。

螺旋模型

结合了原型的迭代性质和瀑布模型的可控性和系统性特点。是开发大型系统和软件的很实际的方法。

四、协同模型

并发建模定义了一系列事件,这些事件将触发软件工程活动、动作或者任务的状态转换。 可用于所有类型的软件开发,能够提供精确的项目当前状态图。