开发方法
Software Development Methodologies
开发方法
软件的生命周期
可行性研究与计划->需求分析->概要设计->详细设计->实现->集成测试->确认测试->使用与维护
软件开发模型
- 瀑布模型
- 演化模型
- 螺旋模型
- 增量模型
- 构建组装模型
统一过程
- UP的9个核心工作流
业务建模,需求,分析设计,实施,测试,部署,配置与变更管理,项目管理,环境 - UP的生命周期
目标里程碑,架构里程碑,能力里程碑,发布里程碑 -
UP的特点
- UP不但给出类迭代的生命周期,还给出了生命周期每一阶段的迭代指南
- 采用不同迭代方式的UP可以演变为演化模型或增量模型
- 迭代特点使得更容易控制软件开发的风险
- UP本身并不属于敏捷
- 实际应用中可以根据具体问题对UP进行剪裁
-
架构师在UP中的活动
- 同需求人员和项目管理人员密切协作
- 细化软件架构
- 保持整个架构的概念完整性
敏捷方法
-
极限编程
- XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。
- 在更短的周期内,更早的提供具体、持续的反馈信息
- 迭代的进行计划编制
- 依赖自动测试程序来监控开发进度,并及早捕获缺陷
- 依赖口头交流、测试和源程序进行沟通
- 倡导持续的、演化式的设计
- 依赖与开发团队内部的紧密协作
- 尽可能达到程序员短期利益和项目长期利益的平衡
- 四大价值观
沟通,简单,反馈,勇气,(尊重) - 十二个最佳实践
计划游戏,小型发布,隐喻,简单设计,测试先行,重构,结对编程,集体代码所有制,持续集成,每周工作40小时,现场客户,编码标准
-
特性驱动开发
FDD也是一个迭代开发模型,FDD每一步都强调质量,不断的交付可运行的软件,并以很小的开发提供精准的项目进度报告和状态信息。- FDD角色定义
项目经理,首席架构设计师,开发经理,主程序员,程序员,领域专家 - 核心过程
开发整体对象模型、构造特征列表、计划特征开发、特征设计、特征构建 - 最佳实践
领域对象建模、根据特征进行开发、类的个体所有、组成特征小组、审查、定期构造、配置管
- FDD角色定义
-
Scrum
Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程。- Scrum 的五个活动
产品待办事项列表梳理、Sprint计划会议、每日Scrum会议、Sprint评审会议、Sprint回顾会议 - Scrum的5大价值观
承诺、专注、开放、尊重、勇气
- Scrum 的五个活动
- 水晶方法
Crystal 是发展一种提倡“机动性“的方法,包括共有的核心元素,每个都含有独特的角色,过程模式,工作产品和实践。
7大体系特征:经常交付,反思改进,渗透式交流,个人安全,焦点,与专家用户建立方便的联系,配有自动测试、配置管理和经常集成功能的技术环境
软件重用
- 软件重用
源代码重用,架构重用,应用框架重用,业务建模重用,文档及过程的重用,软构件重用,软件服务重用
基于架构的软件设计
-
ABSD方法于生命周期
ABSD:分解功能,通过选择架构风格来事先质量和业务需求,软件模版的使用- 抽象功能需求,包括变化的需求和通用的需求
- 用例(实际功能需求)
- 抽象的质量和业务需求
- 架构选项
- 质量场景
- 约束
-
基于架构的软件开发模型(ABSDM)
- 架构需求
需求获取,标识构件(生成类图,对类分组,打包构件),需求评审 - 架构设计
提出软件架构模型,把已标识的构件映射到软件架构中,分析构件的互相作用,产生软件架构,设计评审 - 架构文档化
输出:架构需求规格说明,测试架构需求的质量设计说明 - 架构复审
- 架构实现
- 架构演化
需求变动归类,制定架构演化计划,修改、增加或删除构件,更新构件的互相作用,构件组装与测试,技术评审
- 架构需求