Homework 3
简单题
-
简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点(从项目特点、风险特征、人力资源利用角度思考)
(1)瀑布模型
优点:
- 降低了软件开发的复杂度,提高了软件开发的透明度,增强了可管理性
- 以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接
- 能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求。
缺点:
-
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
-
由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
-
开发过程一般不能逆转,否则代价太大;很难严格按该模型进行;很难清楚地给出所有的需求。不适应用户需求的变化。
(2)增量模型
优点:- 降低系统失败风险,提高可靠性,稳定性和可维护性
- 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,增量能够有计划地管理技术风险。
缺点:
- 增量粒度难以选择,确定所有的基本业务困难
- 在开发过程中,需求的变化是不可避免的。
- 增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速 原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性
- 进度和配置可能很复杂,超出进度
(3)螺旋模型
优点:- 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互
- 设计上的高度灵活性,用户参与度高,可以有效保障整个项目朝着正确的方向进行,得到用户需要的高质量的产品。
缺点:
- 螺旋模型需要丰富的风险评估经验,多次迭代会延长软件开发周期
- 建设周期长,而软件发展技术较快,经常出现当开发完毕后,软件水平与当前水平有较大的差距,无法满足客户需求。
-
简述统一过程三大特点,与面向对象的方法有什么关系?
统一过程是是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,由UML方法和工具支持,广泛应用于各类面向对象项目。
统一过程三大特点:
- 统一过程是用例驱动的:用例图要求我们站在用户的角度出发,从用户的价值层面考虑问题。同时还可以驱动系统设计、实现和测试的进行,也就是说用例可以驱动开发过程。
- 统一过程是以架构为中心的:软件系统的构架是从不同的角度描述即将构造的系统,它刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特性。明确和可以进化的架构是用例实现的基础,所以架构必须是实现统一过程的中心。
- 统一过程是迭代和增量的过程:软件开发是一个复杂的过程,受控的迭代可以用来处理用例,是提高软件开发效率的关键,迭代和增量使软件开发阶段性展开,对于用例的实现做出了控制和协调。
统一过程与面向对象的方法的关系:统一过程本身已经成为一种流行的构造面向对象系统的迭代软件开发过程。可以说,统一过程就是一个将面向对象方法实际应用于软件开发流程的一个过程准则。在开发过程中强调对对象的描述和用例的实现,从而完成对于软件对象的定义和他们的协作模式
- 简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
统一过程四个阶段:
- 初始阶段:大体上的构想,业务案例,范围,和模糊评估。定义系统的业务模型,确定系统的范围。完成后建立目标里程碑
- 细化阶段:已精化的构想、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评估。完成系统的体系结构设计,完成系统开发计划。建立结构里程碑
- 构建阶段:对遗留下的风险较低和比较简单的元素进行迭代实现,准备部署。构造产品,并继续演进需求、体系结构和计划,直到产品完成
- 移交阶段:进行系统部署,系统测试,最终移交给用户。最后建立发布里程碑
每个阶段的里程碑:
-
目标(生命周期目标)里程碑:目标里程碑对应初始阶段的结束,初始阶段的重点在于业务建模和需求工作,此时,开发者应该可以明确软件系统的目标和范围
-
架构(生命周期体系结构)里程碑:架构里程碑对应细化阶段的结束,细化阶段的重点在于设计工作,此时,开发者需要已经确定稳定的系统架构
-
能力(初始运行能力)里程碑:能力里程碑对应构造阶段的技术,构造阶段的重点在于实施和测试方面,此时,系统应该达到足够的稳定性和成熟性
-
发布(产品发布)里程碑:发布里程碑对应移交阶段的结束,移交阶段主要进行重构、修改、测试以及部署等工作,此时,需要完成系统发布和用户培训等工作
-
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
RUP (软件统一过程)中的每个阶段可以进一步分解为迭代。一个迭代是一 个完整的开发循环,软件企业严格按照迭代过程,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地发展,从一个选代过程到另一个迭代过程到成为最终的系统。
好处:
- 每个迭代产品在增量(制品是可运行的),利于及时交付使用并反馈
- 固定的迭代周期(等量的人月),利于量化团队/个人生产率
- 对产品的质量和生产开发过程都能进行较为精准的把控