February 08, 2021By Gethin Ge← Back to Blog

开发方法


Software Development Methodologies

开发方法

软件的生命周期

可行性研究与计划->需求分析->概要设计->详细设计->实现->集成测试->确认测试->使用与维护

软件开发模型

  • 瀑布模型
  • 演化模型
  • 螺旋模型
  • 增量模型
  • 构建组装模型

统一过程

  • UP的9个核心工作流
    业务建模,需求,分析设计,实施,测试,部署,配置与变更管理,项目管理,环境
  • UP的生命周期
    目标里程碑,架构里程碑,能力里程碑,发布里程碑
  • UP的特点

    • UP不但给出类迭代的生命周期,还给出了生命周期每一阶段的迭代指南
    • 采用不同迭代方式的UP可以演变为演化模型或增量模型
    • 迭代特点使得更容易控制软件开发的风险
    • UP本身并不属于敏捷
    • 实际应用中可以根据具体问题对UP进行剪裁
  • 架构师在UP中的活动

    • 同需求人员和项目管理人员密切协作
    • 细化软件架构
    • 保持整个架构的概念完整性

敏捷方法

  • 极限编程

    • XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。
    • 在更短的周期内,更早的提供具体、持续的反馈信息
    • 迭代的进行计划编制
    • 依赖自动测试程序来监控开发进度,并及早捕获缺陷
    • 依赖口头交流、测试和源程序进行沟通
    • 倡导持续的、演化式的设计
    • 依赖与开发团队内部的紧密协作
    • 尽可能达到程序员短期利益和项目长期利益的平衡
    • 四大价值观
      沟通,简单,反馈,勇气,(尊重)
    • 十二个最佳实践
      计划游戏,小型发布,隐喻,简单设计,测试先行,重构,结对编程,集体代码所有制,持续集成,每周工作40小时,现场客户,编码标准
  • 特性驱动开发
    FDD也是一个迭代开发模型,FDD每一步都强调质量,不断的交付可运行的软件,并以很小的开发提供精准的项目进度报告和状态信息。

    1. FDD角色定义
      项目经理,首席架构设计师,开发经理,主程序员,程序员,领域专家
    2. 核心过程
      开发整体对象模型、构造特征列表、计划特征开发、特征设计、特征构建
    3. 最佳实践
      领域对象建模、根据特征进行开发、类的个体所有、组成特征小组、审查、定期构造、配置管
  • Scrum
    Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程。

    1. Scrum 的五个活动
      产品待办事项列表梳理、Sprint计划会议、每日Scrum会议、Sprint评审会议、Sprint回顾会议
    2. Scrum的5大价值观
      承诺、专注、开放、尊重、勇气
  • 水晶方法
    Crystal 是发展一种提倡“机动性“的方法,包括共有的核心元素,每个都含有独特的角色,过程模式,工作产品和实践。
    7大体系特征:经常交付,反思改进,渗透式交流,个人安全,焦点,与专家用户建立方便的联系,配有自动测试、配置管理和经常集成功能的技术环境

软件重用

  • 软件重用
    源代码重用,架构重用,应用框架重用,业务建模重用,文档及过程的重用,软构件重用,软件服务重用

基于架构的软件设计

  • ABSD方法于生命周期
    ABSD:分解功能,通过选择架构风格来事先质量和业务需求,软件模版的使用

    1. 抽象功能需求,包括变化的需求和通用的需求
    2. 用例(实际功能需求)
    3. 抽象的质量和业务需求
    4. 架构选项
    5. 质量场景
    6. 约束
  • 基于架构的软件开发模型(ABSDM)

    • 架构需求
      需求获取,标识构件(生成类图,对类分组,打包构件),需求评审
    • 架构设计
      提出软件架构模型,把已标识的构件映射到软件架构中,分析构件的互相作用,产生软件架构,设计评审
    • 架构文档化
      输出:架构需求规格说明,测试架构需求的质量设计说明
    • 架构复审
    • 架构实现
    • 架构演化
      需求变动归类,制定架构演化计划,修改、增加或删除构件,更新构件的互相作用,构件组装与测试,技术评审