软件生命周期模型

一、瀑布模型

瀑布模型(Waterfall Model)是最基本也最常用的一种生命周期模型,又称线性模型。瀑布模型顺序展开项目开发过程中的各阶段,开发进程从一个阶段“流动”到下一个阶段,每个阶段都会产生循环反馈,如果有信息未被覆盖或者发现问题,可以返回上一个阶段进行修改。

瀑布模型

实际上,在某个阶段出现问题时,可以根据实际情况直接返回到之前的任意阶段进行修改,并不是只能返回上一阶段;另外在运行维护阶段,根据维护工作类型的不同,有可能返回到需求分析、软件设计、软件编码等不同阶段。(为突出主流程、避免混淆,图中用一条虚线概括表示)

二、增量模型

增量模型把软件产品分为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,可以完成特定的功能。增量模型分批逐步地向用户交付产品,首先开发交付产品的基本部分,然后再逐步开发交付产品的附加部分。为了保证所开发的产品各个部分最后能有机地组合起来,通常会进行统一的需求分析和概要设计。

增量模型

三、快速原型模型

快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能通常是最终产品功能的子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户评价或试用,直观的了解目标系统的概貌,开发人员根据用户意见快速修改原型系统,然后再次请用户评价或试用,直至用户确认原型系统能够满足要求为止,开发人员据此形成需求规格说明文档后再开展设计和编码工作。

快速原型的本质是“快速”,开发人员应尽可能快地建立原型系统;快速原型的用途是获知用户的真正需求,一旦需求确认后,原型就可以被抛弃。(注:此处的快速原型指抛弃型原型)

快速原型模型

由于原型系统已经通过与用户交互得到了验证,据此产生的需求规格说明文档应该能够较为准确地描述用户需求,因此在后续阶段发现问题需要返回上一阶段的可能性也变小了。

四、螺旋模型

螺旋模型引入了其他模型不具备的风险分析,在每个阶段构建原型以便减小风险。在螺旋模型中,软件过程表示为一条螺线,而不是像其他模型那样表示为一个活动序列。螺线的每一个循环表示过程的一个阶段。一个循环可划分为4个象限,表示一个阶段中的4个活动。

  1. 目标设定——定义本阶段目标、实施方案,弄清开发的限制条件,制订管理计划;
  2. 风险分析——分析评估目标与方案,识别风险并通过原型规避风险,如果风险巨大且无法规避,则可以停止项目或缩减项目规模;
  3. 实施开发——基于瀑布模型实施软件开发和验证;
  4. 评审和计划——评审开发成果,计划项目下一个循环的工作。

螺旋模型

沿螺线自内向外每循环一圈便开发出一个更为完善的软件版本。如果开发人员对需求有很好的理解,螺旋线只循环一圈即达到了用户要求,则螺旋模型实际上就是增加了风险分析的快速原型模型;如果对需求理解较差,则需要经历多圈螺旋线渐进明细,最初的循环可以只完成需求确认或设计确认,后续的循环就可以完成可运行程序的构建。(当然,如果在每个循环中都完成一次完整的瀑布流程,则螺旋模型实际上又演变为多轮迭代的快速原型模型)。下面是参照其他模型的惯例,用活动序列简化表示螺旋模型的几种典型情况。(实际上,每轮循环中具体的实施开发工作应该要基于上轮的开发成果并符合本轮的目标要求,不同项目情况千差万别,下图仅表示了几种典型情况)

增加了风险分析的快速原型模型

多轮循环渐进明细的螺旋模型

多轮迭代的快速原型模型

五、Rational统一过程(RUP)

RUP是Rational公司创造的一种混合型过程模型的实例,它集合了一般过程模型的要素,也支持原型构造和增量交付的方法。

RUP从2个视角描述过程:动态视角描述过程中随时间所经历的阶段,静态视角描述过程中所进行的活动。RUP没有像其他模型那样将阶段与活动等同起来。

5.1 四个阶段

RUP将软件生命周期划分为四个连续的阶段。每个阶段都有明确的目标,需要通过一次或多次迭代来完成;每个阶段结束之前都有一个里程碑,用于评估阶段目标是否达到。各阶段的主要目标如下:

  1. 初始阶段(t目标里程碑):明确项目范围和边界,定义软件核心需求,初步项目估算,制定里程碑计划,初步设计软件体系架构,准备项目支持环境;
  2. 细化阶段(t结构里程碑):定义至少80%以上的软件需求,设计软件体系架构,制定总体开发计划,建立项目支持环境;确保项目需求、计划、体系架构足够稳定;确保项目风险降低到能够满足项目成本和进度要求的程度;
  3. 构建阶段(t初始功能里程碑):设计、开发和测试,按计划循序渐进地形成各个版本并最终开发出一个完整产品,准备项目部署环境;
  4. 交付阶段(t产品发布里程碑):将软件产品交付用户,部署、培训、维护。

5.2 九个核心工作流

RUP定义了九个核心工作流,包括六个过程工作流和三个支持工作流,对所有角色和活动进行逻辑分组。工作流的主要任务如下:

  1. 业务建模工作流:使用业务用例对业务过程建模,确保软件开发人员理解业务;
  2. 需求工作流:需求建模,描述系统应该做什么,确保软件开发人员构建正确的系统;
  3. 分析和设计工作流:分析和设计建模,描述如何实现系统;
  4. 实现工作流:代码实现、单元测试、集成,编码或自动生成代码;
  5. 测试工作流:集成测试、系统测试以及回归验证;
  6. 分发工作流:软件打包、部署、培训,组织验收;
  7. 项目管理工作流:计划、组织、协调、控制项目开发;
  8. 配置和变更管理工作流:跟踪维护开发过程中所有成果的一致性和完整性;
  9. 环境工作流:提供软件开发环境,包括过程管理和工具支持。

5.3 RUP生命周期模型

基于过程的动态结构和静态结构,RUP建立了二维生命周期模型,横坐标体现阶段,纵坐标表示活动。

RUP生命周期模型

RUP采用迭代和演化的方式开发软件,每个阶段都可以进一步分解为多个迭代过程,每次迭代可以只考虑系统的一部分需求,针对这部分需求进行业务建模、需求分析、设计、编码、测试与部署,如此循序渐进直至完成整个项目。当然,项目经理可以根据当前所处阶段以及上次迭代的结果,对本次迭代中的核心过程工作流进行裁剪,比方说在细化阶段第1次迭代中,需求和设计工作的工作量较大,分发工作基本没有;而在构建阶段的最后1次迭代中,主要以测试和分发工作为主,业务建模和需求分析工作就很少了。

六、生命周期模型适用范围及优缺点对比

生命周期模型适用范围及优缺点对比

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DDD(领域驱动设计)是一种软件设计思想,其中包含了四个重要的概念:实体、值对象、聚合根和领域服务。 1. 实体(Entity) 实体是指具有唯一标识的对象,它具有生命周期,并且在系统中需要被跟踪和修改。实体通常是通过唯一标识来进行识别和区分的。例如,订单、用户、商品等都可以是实体。 例如,订单实体包含了订单号、下单时间、订单状态等属性,同时具有一些操作,比如修改订单状态、添加订单项等。 2. 值对象(Value Object) 值对象是指没有唯一标识的对象,它的属性值可以改变,但是不会改变对象的身份。值对象通常作为实体的属性存在,比如订单中的收货地址、商品的价格等。值对象通常是不可变的,即创建后不可修改。 例如,收货地址值对象包含了姓名、电话、地址等属性,它们的值可以改变,但是这个地址本身并没有唯一标识。 3. 聚合根(Aggregate Root) 聚合根是指一组具有关联关系的实体和值对象的集合,其中一个实体作为聚合根,负责管理整个聚合。聚合根可以保证整个聚合的完整性和一致性。在聚合内,实体只能通过聚合根来进行访问和修改。 例如,订单聚合包含了订单实体、订单项实体以及收货地址值对象,订单实体是聚合根,通过订单实体管理整个聚合。 4. 领域服务(Domain Service) 领域服务是指在领域模型中,不属于任何实体或值对象的操作,它们通常是跨实体的业务操作,或者是需要进行复杂计算的操作。 例如,计算订单中的总金额就是一个领域服务,它需要查询订单中的所有订单项,并计算每个订单项的金额,最后求和计算出订单的总金额。 总之,DDD中的实体、值对象、聚合根和领域服务是设计领域模型的重要概念,它们能够帮助我们构建具有高内聚、低耦合、易扩展的领域模型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值