摘要:本博客为潘老师系统分析与设计课程作业交流博客,主要内容为课堂内容的简介与课后练习作答反馈。
-
1、简答题
- 简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
- 从项目特点、风险特征、人力资源利用角度思考
- 简述统一过程三大特点,与面向对象的方法有什么关系?
- 简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
- 1.简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
-
模型名称 技术特点 适用范围 瀑布模型 简单,分阶段,阶段间存在因果关系, 各个阶段完成后都有评审,允许反馈,不支持
用户参与,要求预先确定需求
需求易于完善定义且不易变更的软件系统 快速原型模型 不要求需求预先完备定义,支持用户参与, 支持需求的渐进式完善和确认,能够适应用户需求的变化
需求复杂、难以确定、动态变化的软件系统 增量模型 软件产品是被增量式地一块块开发的, 允许开发活动并行和重叠
技术风险较大、用户需求较为稳定的软件系统 迭代模型 不要求一次性地开发出完整的软件系统,将软件 开发视为一个逐步获取用广需求、完善软件产品的过程
需求难以确定、不断变更的软件系统 螺旋模型 结合瀑布模型、快速原型模型和迭代模 型的思想,并引进了风险分析活动
需求难以获取和确定、软件开发风险较大的软件系统 RUP 可改造、扩展和剪裁:可以对它进行设计、 开发、维护和发布;强调迭代开发
复杂和需求难以获取和确定的软件系统; 软件开发项目组拥有丰富的软件开发和管理经验
- 瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
- 瀑布模型
-
优点:
-
a.为项目提供了按阶段划分的检查点。
-
b.当前一阶段完成后,您只需要去关注后续阶段。
-
c.可在迭代模型中应用瀑布模型。
-
d.它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
-
-
缺点
-
a.各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
-
b.由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
-
c.通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
-
d.瀑布模型的突出缺点是不适应用户需求的变化
-
-
- 增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
- 增量模型:
- 优点:
- a 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
- b.以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。
- c.开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
- 缺点:
- a.要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。
- b. 如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。
-
c. 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性
- 优点:
- 螺旋模型兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
- 螺旋模型:
-
优点:
a. 设计上的灵活性,可以在项目的各个阶段进行变更。
b. 以小的分段来构建大型系统,使成本计算变得简单容易。
c. 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
d. 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
e. 客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
-
缺点:
a. 很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
b. 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
c.过多的迭代次数会增加开发成本,延迟提交时间。
-
- 2.简述统一过程三大特点,与面向对象的方法有什么关系?
- 答:统一过程(UP)是一种基于面向对象技术的软件开发过程,其基本特征是“用例驱动、以架构为中心的和受控的迭代式增量开发”。并且将一个周期的开发过程划分为4个阶段:先启阶段,精化阶段,构建阶段,提交阶段。同时统一过程本身已经成为一种流行的构造面向对象系统的迭代软件开发过程。可以说,统一过程就是一个将面向对象方法实际应用于软件开发流程的一个过程准则。在开发过程中强调对对象的描述和用例的实现,从而完成对于软件对象的定义和他们的协作模式。
- 3.简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 答:同一过程每次迭代都要经历一定的时间,这个迭代的时间又可以分为四个阶段:初始、细化、构造和移交。而在每个阶段,管理人员或开发人员又可以将本阶段的工作进一步划分为多次迭代过程以及每次迭代过程所产生的增量。每个阶段都以一个里程碑作为结束标记,并可以获得一组可用的制品来定义每个里程碑。里程碑的关键用途是能够帮助管理人员在进入下一个阶段之前据此作出某些意义重大的决定。还可以跟踪每个阶段所投入的时间和其他开销。这些对项目的控制和发展都是很有用的。
- 四个阶段的具体准则如下:
1. 先启阶段(inception):该阶段的主要目的是建立项目的范围和版本,确定项目目标的可行性和稳定性,
结交结果包括需求和用例,其关键的里程碑是生命周期目标(Lifecycle Objective)里程碑。
2. 精化阶段(elaboration):该阶段的目的是对问题域进行分析,建立系统需求和架构,确定实现的可行性和稳定性,提交结果包 括系统架构,问题领域、修改后的需求及项目开发计划等相关文档,其关键里程碑是生命周期结构(LifecycleArchitecture)里程碑。
3. 构建阶段(construction):将构造出最终产品,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测 试,其关键的里程碑是初始功能(Initial Operational)里程碑。
4.提交阶段(transition):包括产品进入beta版后的整个阶段。开发人员改正用户报告产品的缺陷和不足,其关键里程碑是产品 发布(Product Release)里程碑。
- 四个里程碑介绍如下:
- 生命周期目标(Lifecycle Objective)里程碑:目标里程碑对应初始阶段的结束,初始阶段的重点在于业务建模和需求工作,此时,开发者应该可以明确软件系统的目标和范围
- 生命周期结构(LifecycleArchitecture)里程碑:架构里程碑对应细化阶段的结束,细化阶段的重点在于设计工作,此时,开发者需要已经确定稳定的系统架构
- 初始功能(Initial Operational)里程碑:能力里程碑对应构造阶段的技术,构造阶段的重点在于实施和测试方面,此时,系统应该达到足够的稳定性和成熟性
- 产品发布(Product Release)里程碑:发布里程碑对应移交阶段的结束,移交阶段主要进行重构、修改、测试以及部署等工作,此时,需要完成系统发布和用户培训等工作
- 4. 软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
- 答:统一过程(UP)的关键是迭代,每个迭代都是由一个小周期构成,企业严格遵循这种迭代小周期进行阶段性开发,可以很好地实现增量发展,稳定推进项目进度,及时获取并应用用户的最新反馈,使产品一步一步往更好的方向发展。因此软件企业能按固定节奏生产、固定周期发布软件产品。同时也使得企业项目管理也更加方便、规范、易于员工接受。另外,这样每个周期都保持与客户的联系,能不断修正需求,保证项目的持续热度,提升客户的信任度,提升产品质量,保障客户体验。