软件工程之软件过程模型

大耗子 2020年02月28日 337次浏览

文章链接:https://codemouse.online/archives/2020-02-28105658

能力成熟度模型CMM

  1. 初始(initial)级:
    软件过程的特点是无秩序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,成功往往依赖于个人或小组的努力。
  2. 可重复(repeatable)级:
    建立了基本的项目管理过程来跟踪成本、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。
  3. 已定义(defined)级:
    己将管理和工程活动两方面的软件过程文档化、标准化,并综合成该机构的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。
  4. 已管理(managed)级:
    收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。
  5. 优化(optimizing)级:
    整个组织关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的发生。过程的量化反馈和先进的新思想、新技术促使过程不断改进。
    软件过程成熟度

软件过程模型

瀑布模型(waterfall model)

  • 特征

    • 接受上一阶段的结果作为本阶段的输入,利用这一输入实施本阶段应完成的活动
    • 对本阶段的工作进行评审
    • 将本阶段的结果作为输出,传递给下一阶段
    • 简单来说就是:①阶段间具有顺序性和依赖性 ②推迟实现的特点 ③质量保证的特点
  • 优点

    • 可强迫开发人员采用规范的方法;
    • 严格规定了每个阶段必须提交的文档;
    • 要求每个阶段交出的所有产品都必须经过质量;
    • 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细检查。
  • 缺点

    • 缺乏灵活性,难以适应需求不明确或经常变化的开发
    • 早期存在的问题到交付使用时才发现,维护代价大

瀑布模型

演化模型(evolutionary model)

  • 典型的演化模型:

    增量模型

    原型模型

    螺旋模型

  • 特征

    • 开发过程是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。
    • 在获取了一组基本的需求后,通过快速分析构造出该软件的一个初始可运行版本,称之谓原型(prototype),然后根据用户在试用原型的过程中提出的意见和建议、或者增加新的需求,对原型进行改造,获得原型的新版本,重复这一过程,最终得到令客户满意的软件产品。

增量模型(incremental model)

  • 融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征

  • 强调每一个增量都发布一个可运行的产品

  • 特别适用于:

    • 需求经常变化的软件开发
    • 市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发
  • 增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术
    增量模型

原型模型(prototyping model)

  • 特点:没有明显的开始,也没有明显的结束,计划不下去了,就结束这个过程
    原型模型

螺旋模型(spiral model)

  • 螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:

    制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件

    风险分析:评价所选的方案,识别风险,消除风险

    工程实施:实施软件开发,验证工作产品

    客户评估:评价开发工作,提出修正建议

    螺旋模型

喷泉模型(water fountain model)

喷泉模型

基于构件的开发模型(component-based development model)

基于构件的开发模型

形式方法模型(formal methods model)