# 软件系统分析与设计作业3

  1. 简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点

    • 从项目特点、风险特征、人力资源利用角度思考

    瀑布模型:当前阶段的工作对象依赖于上一阶段的输出,每个阶段根据对应的活动规程执行任务,并将完成的工作作为下一阶段的输入。

    优点:

    • 定义了软件开发的基本流程与活动,每个阶段的需求是明确的,从而使整体流程的复杂程度降低,对软件的分析与设计工作较为完整;
    • 对每个阶段都具有情况评审,保证阶段间的衔接,能及时发现与纠正缺陷。

    缺点:

    • 强调流程的线性,每个阶段都依赖于先前阶段,在前期需求存在问题的情况下在后期工作中纠正成本较大;
    • 各个阶段所需的人员技能和数量的需求不相同,对人力资源的利用率可能下降。

    增量模型:增量模型首先对系统最核心或清晰地需求进行分析、设计、实现与测试并集成,再根据优先级通过迭代逐步对后续需求增量式地进行实现。

    优点:

    • 相较瀑布模型人力资源的使用率高,因为各个阶段的人力资源完成一个迭代的任务后可直接参与下一增量迭代的工作;
    • 多次迭代可根据先前迭代的工作改进后续迭代的分析与设计,从而令需求更加完善。

    缺点:

    • 前期需求不明确的情况下在开发后期纠正系统错误的成本较高
    • 增量模型中系统的各个组成部分在迭代中不断被添加入系统中,需保证新添组成部分不会对系统其它部分造成影响,否则可能带来风险

    螺旋模型:分为分析确定目标、评估和解决风险、开发实现和计划下一迭代四个象限,是风险驱动的迭代过程

    优点:

    • 开发过程为多个迭代,人力资源的使用率高
    • 每轮迭代后可根据用户反馈查找存在的风险并进一步完善需求

    缺点:

    • 强调风险分析,而对风险评估能力有较高的要求,失误的风险分析可能带来更大的风险
    • 迭代次数需要依据每一次迭代中的计划中的评审而定,从而可能令软件交付时间不可控。
  2. 简述统一过程三大特点,与面向对象的方法有什么关系?

    1. 软件开发是一个迭代过程
    2. 软件开发是由 Use Case 驱动的(Use Case Driven)
    3. 软件开发是以架构设计为中心的(Architecture Centric)

    与面向对象的方法的关系是:在设计阶段需要将系统组织为具有良好接口的设计包和子系统,并描述类的对象如何协同工作从而实现需求目标。实现阶段则用组件和类的形式实现类和对象

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

    划分准则是软件生命周期的时间维度。

    1. 初始阶段(Inception):生命周期目标里程碑
    2. 精化阶段(Elaboration):生命周期体系结构里程碑
    3. 构建阶段(Construction):初始运行能力里程碑
    4. 移交阶段(Transition):产品发布里程碑
  4. 软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?

    软件企业能够根据软件产品的实际情况,选择使用正确的软件开发模型,从而在人力资源、工期、预算等方面进行优化。软件开发模型使得软件企业进行产品开发时可以用多个里程碑对流程进行划分与控制,对工作流程有着较好的管理,对于每个阶段的时间也有较好的掌握,提升团队生产力,从而使企业可以按固定节奏生产与发布产品。