软件工程

5 - 新兴过程方法

2019-12-19 05:00 CST
2019-12-18 23:02 CST
CC BY-NC 4.0

5.1 什么是敏捷过程

敏捷过程是一系列软件开发方法,在短周期的迭代中生产软件,并允许更大的设计变化。

敏捷宣言中的价值观:

  • 个人和互动高于过程和工具
  • 可工作软件高于详细的文档
  • 客户合作高于合同谈判
  • 响应变化高于遵循计划

敏捷过程的一系列特征和方法:

  • 短周期的版本发布和迭代
  • 增量设计:尽可能多地推迟设计决策,并在获得更多知识时改进现有的设计
  • 用户参与:让参与项目的用户提供持续的反馈
  • 最少的文档:只做必要的文档
  • 非正式沟通
  • 变化:假设需求和环境会发生变化

5.2 为什么使用敏捷过程

传统软件开发过程的问题:

  • 漫长的开发时间
  • 无法适应不断变化的需求
  • 假设在项目开始之前就完全理解了需求
  • 过分依赖于英勇的开发人员的努力
  • 复杂的方法:提供活动和工作产品的详细规范
  • 多余/重复工作

敏捷开发方法的优点:

  • 允许在较小的迭代中开发软件
  • 保证在任何时候都有一个成品
  • 只需要开发人员的正常工作量
  • 非常擅长处理变更

5.3 一些过程方法

  • 极限编程(XP)
    • 基本原则:快速反馈、简单、增量式变化、拥抱变化、优质工作
    • 12个关键实践(略)
  • 水晶系列方法:透明水晶、橙色水晶、橙色水晶网
    • 将项目进行分类
    • 颜色越深,方法越重量级
  • 敏捷统一过程
    • 重量级过程
    • 迭代和增量的过程
  • Scrum
    • 比XP更轻量级
    • 三个核心角色:产品负责人、开发团队、Scrum教练
  • 看板方法
    • 项目状态和流程可视化
    • 最小化过程中的总体在制品(WIP)数量
  • 开源软件开发

5.4 过程的选择

敏捷过程的主要风险和缺点:

  • 可能不可扩展
  • 严重依赖团队合作
  • 依赖于频繁访问客户
  • 文化冲突

敏捷过程的主要优点:

  • 过程复杂性低
  • 成本和开销低
  • 有效地处理变化
  • 快速的结果
  • 可用的系统