系统分析与设计hw_02
简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点
瀑布模型
优点:
- 有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
缺点:
- 实际的项目开发很难严格按该模型进行
- 客户往往很难清楚地给出所有的需求,而该模型却要求如此
- 软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。
- 开发过程一般不能逆转,否则代价太大
增量模型
优点:
- 采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源
- 如果核心产品很受欢迎,则可增加人力实现下一个增量
- 可先发布部分功能给客户,对客户起到镇静剂的作用
缺点:
- 并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构
- 增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性
螺旋模型(含原型方法)
优点:
- 设计上的灵活性,可以在项目的各个阶段进行变更
- 以小的分段来构建大型系统,使成本计算变得简单容易
- 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性
- 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互
缺点:
- 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失
- 过多的迭代次数会增加开发成本,延迟提交时间
简述 UP 的三大特点,其中哪些内容体现了用户驱动的开发,哪些内容体现风险驱动的开发
统一软件开发过程(Rational Unified Process,RUP)是一个面向对象且基于网络的程序开发方法论。它的三大特点是用例驱动的,以架构为核心,迭代和增量的软件过程框架。
用例驱动
- 将用户关心的软件系统的业务功能实体功能模型和开发人员结合起来,提供一种贯穿整体软件生存周期的开发方式,使得软件开发的各个阶段的工作自然、一致地协调起来
- 采用用例来捕获对目标系统的功能需求
- 采用用例来驱动软件的整个开发过程,保证需求的可跟踪性,确保系统所有功能均被实现
以架构为核心
- 强调在开发过程的早期,识别出软件与软件的体系结构紧密相关的用例,并通过对这些用例的分析、设计、实现和测试,形成体系结构框架
- 在后续阶段中对已形成的体系结构框架进行不断细化,最终实现整体系统
- 在开发过程中的早期形成良好的软件体系结构,有利于对系统的理解、支持重用和有效的组织软件开发
迭代和增量
- 将软件开发分为一系列小的迭代过程,在每个得带过程中逐步增加信息、进行细化
- 根据具体情况决定迭代的次数、每次迭代延续的时间以及迭代工作流
- 每次迭代都选择目前对风险影响最大的用例进行,以分解和降低风险
UP 四个阶段的划分准则是什么, 关键的里程碑是什么
RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。每个阶段结束于一个主要的里程碑(Major Milestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。
初始阶段
初始阶段的目标是为系统建立商业案例和确定项目的边界。
为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。它包括识别所有用例和描述一些重要的用例。商业案例包括验收规范、风险评估、所需资源估计、体现主要里程碑日期的阶段计划。本阶段具有非常重要的意义,在这个阶段中,关注的是整个项目进行工程中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来说,初始阶段的时间可能很短。
里程碑:生命周期的目标
细化阶段
细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。
为了达到该目的,必须对系统具有”英里宽和英寸深”的观察。体系结构的决策必须在理解整个系统的基础上作出:它的范围,主要功能和如性能等非功能性需求。
里程碑:生命周期的结构
构造阶段
在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详尽的测试。
构建阶段,从某种意义上说,是重点在管理资源和控制运作以优化成本、日程、质量的生产过程。就这一点而言,管理的理念经历了初始阶段和细化阶段的智力资产开发到构建阶段和交付阶段可发布产品的过渡。许多项目规模大的足够产生许多平行的增量构建过程,这些平行的活动可以极大地加速版本发布的有效性;同时也增加了资源管理和工作流同步的复杂性。健壮的体系结构和易于理解的计划是高度关联的。换言之,体系结构上关键的质量是构建的容易程度。这也是在细化阶段平衡的体系结构和计划被强调的原因。
里程碑:初始运作能力
交付阶段
交付阶段的目的是将软件产品交付给用户群体。
只要产品发布给最终用户,问题常常就会出现:要求开发新版本,纠正问题或完成被延迟的问题。当基线成熟得足够发布到最终用户时,就进入了交付阶段。其典型要求一些可用的系统子集被开发到可接收的质量级别及用户文档可供使用,从而交付给用户的所有部分均可以有正面的效果。
里程碑:产品发布
IT 项目管理中,“工期、质量、范围/内容” 三个元素中,在合同固定条件下,为什么说“范围/内容”是项目团队是易于控制的
工期会在签订合同时就商定好,何时完成是明确要求的,项目团队不能延迟。
质量则是客户最看重的,也不能由团队决定。
只有范围/内容是可变的,由团队控制的。
为什么说,UP 为企业按固定节奏生产、固定周期发布软件产品提供了依据
UP中的每个阶段可以进一步分解为迭代。在工作流中的每一次顺序的通过称为一次迭代。软件生命周期是迭代的连续,通过它,软件是增量的开发。一次迭代包括了生成一个可执行版本的开发活动,还有使用这个版本所必需的其他辅助成分,如版本描述、用户文档等。因此一个开发迭代在某种意义上是在所有工作流中的一次完整的经过,这些工作流至少包括:需求工作流、分析和设计工作流、实现工作流、测试工作流。其本身就像一个小型的瀑布项目。