软件开发方法是一种使用早已定义好的技术集和符号表示习惯来组织软件生产的过程。

结构化方法

结构化方法由结构化分析、结构化设计、结构化程序设计组成,它是一种面向数据流的开发方法。

  • 结构化分析:根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
  • 结构化设计:根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模块,实现系统的概要设计。
  • 结构化程序设计:使用 3 种基本控制结构构造程序,任何程序都可以由顺序、选择和循环构造。

结构化方法的主要思想是自顶向下、逐层分解,它的基本原则是功能的分解与抽象。

结构化方法是最早的开发方法,特别不适合解决大规模的,特别复杂的项目,且难以适应需求的变化。

原型方法

开发原型系统首先确定用户需求,开发初始原型,然后征求用户对初始原型的改进意见,并根据意见修改原型。

原型方法比较适用于用户需求不清、需求经常变化的情况。包括抛弃式原型和演化式原型。

面向对象方法

面向对象方法包括面向对象分析、面向对象设计和面向对象实现。

为了统一各种面向对象技术的术语、概念和模型,1997 年推出了统一建模语言(UML)。是面向对象的标准建模语言,通过统一的语义和符号表示。

敏捷开发方法

敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性,敏捷方法使用户能够在开发周期的后期增加或改变需求。

敏捷开发的基本思想和理念

  • 自适应开发(ASD)
  • 水晶方法(Crystal)
  • 特征驱动开发
  • 并列争求法 (SCRUM)
  • 极限编程(XP)

极限编程 XP

主要有 4 大价值观:

  • 沟通
  • 简单
  • 反馈
  • 勇气

5 大原则:

  • 快速反馈
  • 简单性假设
  • 逐步修改
  • 提倡更改
  • 优质工作

12 个最佳实践:

  • 计划游戏(快速制定计划、随着细节的不断变化而完善)
  • 小型发布(系统的设计要能够尽可能早地发布)
  • 隐喻(找到合适的比喻传达信息)
  • 简单设计(只处理当前的需求,使设计保持简单)
  • 测试先行(先写测试代码,然后再编写程序)
  • 重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)
  • 结对编程
  • 集体代码所有制
  • 持续集成(可以按日甚至按小时为客户提供可运行的版本)
  • 每周工作 40 个小时
  • 现场客户
  • 编码标准

并列争求法

并列争求法使用迭代的方法,其中,每个迭代称为“Sprint”。