简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点
从项目特点、风险特征、人力资源利用角度思考
瀑布模型
瀑布模型和核心在于把软件生存周期的各项活动划分为固定的顺序并且连接的阶段性工作,将功能的实现与设计分开,便于分工协作
优点:
- 瀑布模型具有直观的活动流,可以降低软件开发的复杂程度,提高软件开发过程中的透明性,提高软件开发过程的可管理性。
- 瀑布模型是文档驱动的,推迟了软件实现,强调在软件实现前必须进行分析和设计工作。
- 以项目的节点阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求。
缺点
- 强调过程活动的线性顺序
- 缺乏灵活,尤其无法解决软件需求不明确或不准确的问题
- 风险控制能力较弱
- 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量
- 文档有时并不能正确反映实际的情况,管理人员如果仅仅以文档的完成情况来评估项目的完成进度,往往会得到错误的结论
增量模型
增量模型特点在于开发人员可以分批次地将产品进行提交
优点
- 增强客户对系统的信心
- 降低系统失败风险
- 提高系统可靠性
- 提高系统的稳定性和可维护性
缺点
- 建立初始模型时,作为增量基础的基本业务服务的确定有一定难度
- 增量粒度难以选择
螺旋模型
螺旋模型的特点在于他兼顾了快速原型迭代的特征以及瀑布模型的系统化与严格监控,引入了风险分析。
优点
- 针对大型软件项目开发,引入了明确的风险管理机制,能够避免或减轻大型项目诸多的风险。
- 结合了瀑布模型和快速原型方法,将瀑布模型的多个阶段转化到多个迭代过程中,以降低项目的风险
缺点
- 比较难说服外部客户接受和相信风险分析结果并做出相关反应
- 风险分析存在一定的成本,对于小项目耗费成本百分比较大
- 失误的风险分析坑了带来更大的风险
简述统一过程三大特点,与面向对象的方法有什么关系?
统一过程的三大特点为:
- 软件开发是一个迭代过程
- 软件开发是由Use Case驱动的
- 软件开发是以架构设计为中心的
统一软件开发过程(RUB),是一个面向对象且基于网络的程序开发方法论。而面向对象软件过程(OOSP)同样是把开发中面向过程的方面和其他开发的组件整合在一个统一的框架中。而面向对象的方法则属于这些方法论框架当中处理部分对象的方法。
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
统一过程可以把一个项目分为四个不同的阶段:
- 构思阶段
- 包括用户沟通和计划活动两个方面,开发人员定义项目的范围及其业务用例。
- 其关键的里程碑为生命周期目标
- 细化阶段
- 包括用户沟通和建模活动,重点是创建分析和设计模型,强调类的定义和体系结构的表示。开发人员更详细地分析项目的需求并定义其架构基础
- 其关键的里程碑为生命周期结构
- 构建阶段
- 将设计转化为实现,并进行集成和测试。开发人员创建应用程序设计和源代码
- 其关键的里程碑为初始功能
- 移交阶段
- 将产品发布给用户进行测试评价,并收集用户的意见,之后再次进行迭代修改产品使之完善。开发人员将系统交付给用户。
- 其关键的里程碑为产品发布
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
因为软件企业内部都有一套完善的软件工程的开发过程方法论,提供了在开发组织中分派任务和责任的纪律化方法,使并且规范了整个软件开发流程。指导了多人在一定的时间内完成指定的任务,使得企业可以按固定节奏生产并且固定周期发布软件产品,它给企业项目管理提供了一套方法论,使得企业可以平稳地输出以及顺利地运营。