软件项目过程模型与规划

简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点(从项目特点、风险特征、人力资源利用角度思考)

瀑布模型开发活动的特征:

  • 本阶段活动的工作对象来自于上一项活动的输出,这些输出一般是代表本阶段活动结束的里程碑式的文档。
  • 根据本阶段的活动规程执行相应任务。
  • 本阶段活动产出相关的软件工件,作为下一阶段活动的输入。
  • 对本阶段活动执行情况进行评审。

瀑布模型优点:

  • 降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性。
  • 推迟软件实现,强调在软件实现前必须进行分析和设计工作。
  • 以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求。

瀑布模型缺点:

  • 强调过程活动的线性顺序。
  • 缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题。
  • 风险控制能力较弱。
  • 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量。
  • 管理人员如果仅仅以文档的完成情况来评估项目完成进度,往往会产生错误的结论。

增量模型:首先对系统最核心或最清晰的需求进行分析、设计、实现、测试并集成到系统中,再按优先级逐步实现后续需求。

增量模型的优点:

  • 增强客户对系统的信心。
  • 降低系统失败风险。
  • 提高系统可靠性。
  • 提高系统的稳定性和可维护性。

增量模型的缺点:

  • 建立初始模型时,作为增量基础的基本业务服务的确定有一定难度。
  • 增量粒度难以选择。

螺旋模型:主要针对大型软件项目的开发,引入了明确的风险管理机制。它是风险驱动的迭代过程,强调可选方案和约束条件从而支持软件的重用。它结合了瀑布模型和快速原型方法,每一次迭代都包含了:

  • 决定目标、替代方案和约束条件。
  • 识别和解决项目的风险。
  • 评估技术方案和替代方案。
  • 开发本次迭代的交付物,并验证迭代产出的正确性。
  • 计划下一次迭代。
  • 提交下一次迭代的步骤和方案。

螺旋模型的优点:

  • 支持软件重用,有助于将软件质量作为特殊目标融入产品开发之中。
  • 维持多轮迭代,降低项目的风险。

螺旋模型的缺点:

  • 螺旋模型强调风险分析,但说服外部客户接受和相信分析结果并做出相关反应并不容易。
  • 风险分析需要耗费相当的成本。
  • 失误的风险分析可能带来更大的风险。

简述统一过程三大特点,与面向对象的方法有什么关系?

统一过程三大特点:

  • 软件开发是一个迭代过程。
  • 软件开发是由Use Case驱动的。
  • 软件开发是以架构设计为中心的。

与面向对象方法的关系:统一过程是一种基于UML的、以构架为中心的、用例驱动与风险驱动相结合的迭代增量过程。它将软件开发过程要素和软件工件要素整合在统一的软件工程框架中,是一个面向对象的程序开发方法论。

简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?

初始阶段:

  • 划分准则:为系统建立商业案例并确定项目的边界。
  • 里程碑:生命周期目标里程碑,评价项目基本的生存能力。

细化阶段:

  • 划分准则:分析问题领域,建立健全的体系结构基础。编制项目计划,完成项目中高风险需求部分的开发。
  • 里程碑:生命周期结构里程碑,为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。

构造阶段:

  • 划分准则:完成所有剩余构件和应用程序功能的开发并集成为产品,详细测试所有的功能。
  • 里程碑:初始功能里程碑,决定产品是否可以在测试环境中进行部署。

交付阶段:

  • 划分准则:确保软件对最终用户是可用的。
  • 里程碑:产品发布里程碑,确定目标是否实现。
  1. 软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?

因为软件企业可以根据其产品的实际情况选择相对应的正确的软件开发模型,从而能够更好的调度人力、资源,协调好工期、预算。软件开发模型使得软件企业能够用多个里程碑对开发流程进行划分和管控。这使得企业可以按固定节奏进行生产、发布,提升企业生产力,明确企业生产方向。