软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up

软件开发过程(process)

是一个将用户需求转化为软件系统所需要的活动的集合。

软件生命周期(SDLC,Software Devlopment Life Cycle)

软件从孕育、诞生、成长、成熟、衰亡等阶段称为软件生命周期。

早期系统开发的生命周期以结构化的方法具体分成了六个阶段:问题的定义及规划、需求分析、软件设计、程序编码、软件测试、运行维护。

而随着面向对象方法和统一软件开发过程(RUP)方法论的提出,出现统一过程的生命周期,在统一过程中以迭代的方式重复一些列组成系统生命周期的循环,每次循环都可以向用户提供一个产品版本作为终结。每次迭代都包括四个阶段:初始、细化、构造和交付。

软件开发模型(Software Development Model)

软件开发模型是软件开发全过程、软件开发活动以及他们之间关系的结构框架。它是一种策略,这种策略是由软件工程师在具体的实践工程活动当中设计并提炼出来,能够覆盖软件生命周期的基本阶段,确定设计的方法、过程及工具。

软件开发模型也称软件生命周期模型(Life Cycle Model),典型的软件开发模型有:瀑布模型、快速原型模型、迭代模型、螺旋模型等。

瀑布模型(Waterfall Model)

瀑布模型的软件开发过程与软件生命周期是一致的并且它是由文档驱动,两相邻阶段之间存在因果关系。

缺点:

1. 瀑布模型假定用户的需求是不变的,因此缺乏灵活性。瀑布模型本质上是一种线性顺序模型,各阶段之间存在着严格的顺序性和依赖性,特别是强调预先定义需求的重要性,在着手进行具体的开发工作之前,必须通过需求分析预先定义并“冻结”软件需求,然后再一步一步的实现这些需求。

2. 以文档驱动,导致产生大量的文档资料。

3. 由于以文档为主体的特点,很多的问题可能在最后才会暴露出来,风险被压后,后果可能是巨大的。如某个需求在前期分析时认为是可行的,而接纳到开发计划里,但直到详细设计,甚至具体实现时才发现无法实现……。或者是直到测试阶段才知道需求理解有偏差,核心业务要推倒重写。

快速原型模型(Rapid Prototype) 

快速原型模型又称原型模型,它是增量模型的另一种形式;快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互。

快速原型在功能上等价于产品的一个子集。根据客户的需要在很短的时间内解决用户最迫切的需要,此时只是部分功能的实现,快速原型模型最重要的目的是确定用户真正的需求并支持需求的动态变化。一般不会单独使用,而和其他模型一起使用。

  

迭代模型

迭代模型指在进行较大规模的项目任务时,将开发分为若干次迭代,每次迭代都要从项目的管理及计划、分析、设计、实现到运作整个过程。又称做迭代和增量式开发或迭代和进化式开发。

注意点!!

  1. 一次迭代时间在2到6周之间,小步骤、快速反馈和调整是迭代的主要思想。仅一周的迭代时间不足以获取有意义的产出和反馈。若大于6周则复杂性会变得不可控制,反馈将延迟。时间太长会破坏迭代的核心动机并增加项目风险。
  2. 一个关键思想是时间定量。在项目开始之初就要确定下来迭代时间,之后的工作都必须依照时间表来集成、测试和稳定局部系统。如果难以满足期限要求,建议从本次迭代中移去一些任务或需求,但不能推迟完成日期。
  3. 迭代开发中绝不能被“瀑布思维”侵蚀,不要在编程前做完整而详细的分析。整个开发过程是不断迭代和进化的,所以实现前的所有需求和设计都是不完整的,它们会在一次次迭代中基于反馈而完善。
  4. 整个项目不会有完整的计划,而是制定估计结束日期和阶段计划(Rup中的里程碑),但不会对这些阶段计划详细定义细粒度的步骤。只能预先对一次迭代制定详细计划(迭代计划)。
  5. 每次迭代都具有各自的需求分析、设计、实现和测试活动,实质上,它类似小型的瀑布式项目。每一次的迭代都会产生一个经过测试、集成并可执行的局部系统,它是最终产品的一个子集。

需求变更是软件开发永恒的主题,而迭代开发可以包容变更。经过多次迭代的系统持续地扩展和精化,并以循环反馈和调整为核心驱动力,最终称为适当的系统。

  1. 来自早期开发中的反馈,有助于程序设计人员理解规格说明,有助于精化需求。
  2. 来自测试中的反馈,有助于开发者精化设计或模型。
  3. 来自团队处理早期特性过程中的反馈,有助于精化时间表和估计。
  4. 来自客户和市场的反馈,有助于重新定义下一次迭代实现特性的优先级。
对比瀑布模型有以下优点:
  1. 在早期缓解高风险(技术、需求、目标、可用性等等)。
  2. 由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
  3. 早期反馈、用户参与和调整,会产生更接近涉众真是需求的精化系统。
  4. 加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
  5. 减少项目失败的可能性,提高生产率,降低缺陷率。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
  6. 早期可见的进展。降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值