系统分析与设计—hw3

【简答题】

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

  • 瀑布模型:

    • 简述:瀑布模型设置了一系列的阶段,按顺序进行开发,项目开发进程从一个阶段流动到下一个阶段,形式上与物理世界中的瀑布非常相像。同时,每个阶段都会产生循环反馈,对临近阶段进行影响。
    • 优点:
      • 降低软件开发的复杂程度,提高软件开发过程的透明性;同时,由于开发的基本流程和活动都是易理解的,因此提高了软件开发过程的可管理性。
      • 推迟软件实现,强调在软件实现前必须进行分析和设计工作。
      • 以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求。
    • 缺点:
      • 强调过程活动的线性顺序,因此理论上需要保证需求明确,且短期内可获得,每个阶段是无差错的。
      • 缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题。同时,在后期发现需求问题,更改的工作量十分巨大。
      • 风险控制能力较弱,当前面需求模糊/前方成果不完善,会对后阶段产生巨大影响。
      • 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量。
      • 管理人员如果仅仅以文档的完成情况来评估项目完成进度,往往会产生错误的结论,容易被人为误导。
  • 增量模型:

    • 简述:增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,分批次地分析、设计、编码和测试这些组块,具有一个递增式的开发过程。
    • 优点:
      • 将待开发的软件系统模块化,可以分批次地提交软件产品,进行迭代式的开发,遵循“先做出来可以用的软件,再把软件做好。”的原则,因此对开发方较友好。
      • 由于软件产品模块化交付,因此用户可以及时了解软件项目的进展并给出反馈,使得用户可以及时了解到项目进展,提升其在软件开发阶段的参与度和对项目的信息。
      • 开发顺序灵活,开发人员可以对组件的实现顺序进行选择和优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
      • 降低了软件开发的风险,出现在组件中的错误可以被灵活解决,而不会对整个软件系统造成巨大的影响。
    • 缺点:
      • 待开发的软件系统需要可以被模块化;使用增量模型对难以模块化的软件系统进行开发会导致很多的问题:如模块划分,功能交付等。
      • 增量粒度难以选择。
      • 为了将软件系统分成多个模块,需要增加额外的工作量。
  • 螺旋模型(含原型方法):

    • 简述:螺旋模型采用周期性的方法进行开发,以进化的开发方式为中心,在不断迭代的过程中完成开发,且强调风险分析。
    • 优点:

      • 设计上具有灵活性,可以在项目的各个阶段中或是下一次迭代中完成变更,可以不需要在一开始就给出具体明确的需求。
      • 以小的分段来构造大型的系统,易于计算成本。
      • 进行了风险分析,使得项目具有更高的可靠性。
      • 由于快速原型法需要客户使用并提供反馈,因此提升了客户的参与度,保证了项目与客户需求是一致的,项目是可控的。同时提升了客户对项目的信心,对开发团队的认可。
    • 缺点:

      • 没有明确的项目终点,需要根据项目的具体进度进行判断。
      • 建设周期长,可能导致软件开发的需求或核心技术与现实产生差距,无法满足当前用户的需求。
      • 需要使用户确信这种模型的开发方法的结果是可以控制的。

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

统一过程(Unified Process,UP)是一种以用例驱动的、以体系结构为核心的、迭代和增量的软件过程模型。由UML方法和工具支持,广泛应用于各类面向对象项目。
统一过程的三大特点分别是:

  1. 软件开发是一个迭代的过程,是一种受控的迭代和增量式开发。
  2. 软件开发是由用例(Use Case)驱动的,也就是通过测试来推动整个开发过程的进行,在测试中完成需求分析、设计、质量控制等过程。这为整个开发过程提供了高效的驱动力。
  3. 软件开发是以体系结构为核心的。

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

UP项目将其工作和迭代组织为四个主要阶段:

  1. 初始(Inception):大体上的构想、业务案例、范围和模糊评估。
    • 里程碑:生命周期目标里程碑,包括一些重要的文档,如:项目构想(Vision)、原始用例模型、原始业务风险评估、一个或者多个原型、原始业务案例等。需要对这些文档进行评审,以确定正确理解用例需求、项目风险评估合理、阶段计划可行等。
  2. 细化(Elaboration):已精化的构想、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评估。
    • 里程碑:生命周期体系结构(Lifecycle Architecture) 里程碑。包括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等。通过评审确定软件体系结构已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。
  3. 构造(Construction):对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署。
    • 里程碑:初始运行能力(Initial Operational Capability) 里程碑。包括可以运行的软件产品、用户手册等,它决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运行。
  4. 移交(Transition):进行beta测试和部署。
    • 里程碑:产品发布(Product Release) 里程碑。确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的相重合。

下图提供了一个可视化的循环过程:
Aq3Gdg.png

4.软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?

当企业使用UP进行软件开发时,基于UP迭代式、增量式的开发特点,整个开发过程可以被划分为几个固定的阶段和多次迭代的过程。也就是说,整个开发过程被划分成了固定的开发周期,因此企业就可以按照固定的节奏进行软件生产,也可以得到预期的生产周期并以此来形成一个发布软件产品的固定周期。
UP本身的特性,使得其可应用于各种领域的软件开发和不同的项目规模。其带来的好处有:

  • 企业可以将项目格式化、流程化,并对每一个流程标定固定的工作内容,使得整个系统架构更具有鲁棒性。
  • 项目管理者以及客户都可以更了解开发进度、存在的问题和预期的目标,有利于开发者和使用者的交流,使得项目开发不会与需求偏差过大
  • 开发过程可以进行风险分析和需求理解,降低了项目失败的概率

文章目录
  1. 1. 【简答题】