文章目录- 1. 简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
- 2. 简述统一过程三大特点,与面向对象的方法有什么关系?
- 3. 简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 4. 软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
1. 简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
从项目特点、风险特征、人力资源利用角度思考
- 瀑布模型
其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。
- 优点
- 定义了软件开发基本流程与活动
- 为项目提供了按阶段划分的检查点
- 当前一阶段完成后,您只需要去关注后续阶段
- 可在迭代模型中应用瀑布模型
- 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导
- 缺点
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
- 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
- 瀑布模型的突出缺点是会出现延期,项目不可控的情况,不适应用户需求的变化。
- 优点
- 增量模型
把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
- 优点
- 有利于用户需求的逐渐明朗,能够有效适应用户需求的变更
- 有利于用户尽早地用上系统,能够更好地适应新的软件环境
- 有利于技术复用,前面构件中设计的算法、采用的技术策略、编写的源码
- 有利于从总体上降低软件项目的技术风险
- 使得整个软件系统更具健壮性
- 缺点
- 如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定
- 如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布
- 由于进度和配置的复杂性,可能会增大管理成本,超出组织的能力
- 优点
- 螺旋模型(含原型方法)
- 一个典型的螺旋模型应该由以下的步骤构成:
- 明确本迭代阶段的目标、备选方案以及应用备选方案的限制;
- 对备选方案进行评估,明确并解决存在的风险,建立原型;
- 当风险得到很好的分析与解决后,应用瀑布模型进行本阶段的开发与测试;
- 对下一阶段进行计划与部署;
- 与客户一起对本阶段进行评审;
- 优点
- 引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以 减小损失
- 每个迭代阶段植入软件测试,使每个阶段的质量得到保证
- 对用户反馈的采集,与用户沟通,以保证用户需求的最大实现
- 缺点
- 过分依赖风险分析经验与技术,一旦在风险分析过程中出现偏差将造成重大损失
- 过于灵活的开发过程不利于已经签署合同的客户与开发者之间的协调
- 由于只适用大型软件,过大的风险管理支出会影响客户的最终收益
- 一个典型的螺旋模型应该由以下的步骤构成:
2. 简述统一过程三大特点,与面向对象的方法有什么关系?
三大特点:
- 统一过程是用例驱动的
- 统一过程是以构架为中心的
- 统一过程是迭代和增量的过程
与面向对象的方法的关系:
- 统一过程将软件开发过程要素和软件工件要素整合在统一的软件工程框架中,是一个面向对象的程序开发方法论。
- RUP和类似的产品–例如面向对象的软件过程(OOSP),以及OPEN Process都是理解性的软件工程工具–把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内。
- 设计类被组织成具有良好接口的设计包(Package)和设计子系统(Subsystem),而描述则体现了类的对象如何协同工作实现用例的功能
- 实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
- 测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现, 识别并确 认缺陷在软件部署之前被提出并处理。
3. 简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 初始阶段(Inception)
- 细化阶段(Elaboration)
- 构造阶段(Construction)
- 交付阶段(Transition)
划分标准:在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。
- 初始阶段:生命周期目标(Lifecycle Objective)里程碑。生命周期目标里程碑评价项目基本的生存能力。
- 细化阶段:生命周期结构(LifecycleArchitecture)里程碑。生命周期结构里程碑为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。此刻,要检验详细的系统目标和范围、结构的选择以及主要风险的解决方案。
- 构造阶段:初始功能(Initial Operational)里程碑。初始功能里程碑决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。此时的产品版本也常被称为“beta”版。
- 交付阶段:产品发布(Product Release)里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的结束重合。
4. 软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
软件企业使用的是统一过程,UP的每个阶段都由一个或多个迭代组成。每个迭代都要针对不同的业务用例或系统用例进行细化和实现。每个阶段开始时都有特定的目标,结束时有里程碑。在每个阶段中存在一个或多个迭代,在每个迭代中,可以有多个工作流,企业只需要完成该阶段性的小目标即可。因此软件企业在企业在使用UP时依据各个迭代过程能按固定节奏生产、固定时间发布软件产品。
好处:
- 每个迭代都是瀑布的工作流程,在迭代内部需求明确的情况下,差错较少。
- 每个迭代在增量且制品可运行,有利于产品的及时交付使用并获得用户客户的反馈
- 降低了产品无法按照既定进度进入市场的风险
- 固定迭代周期有利于量化团队和个人的生产率。