高级系统架构师笔记——软件工程基础知识(2)RAD/敏捷模型/CMM/CBSE
软件工程基础知识(2)RAD/敏捷模型/CMM
- 快速应用开发模型(RAD)
- 概念
- 特点
- 敏捷模型
- 敏捷方法的特点
- 敏捷方法的核心思想
- 敏捷方法介绍
- 极限编程(Extreme Programming, XP)
- 水晶系列方法
- Scrum
- 特征驱动开发方法(Feature Driven Development,FDD)
- 软件能力成熟度模型(Capability Maturity Model for Software,CMM)
- 概念
- 基于构件的软件工程(CBSE)
- 概述
- CBSE构件的特征
- CBSE过程
- 构件组装
快速应用开发模型(RAD)
概念
特点
利用基于构件开发,使用已有的构件提升开发效率
敏捷模型
敏捷方法的特点
传统软件方法 | 敏捷方法 |
---|---|
预设性的 | 适应性的 |
面向过程 | 面向人 |
整体分阶段的 | 适合小型项目 |
- 敏捷方法是适应性的而非预设性的:软件需求的不稳定导致软件过程不可预测,传统软件方法都是针对可预测的环境,敏捷方法强调适应性,使用反馈机制对不可预测过程进行控制
- 敏捷方法是面向人的而非面向过程的:敏捷方法强调开发人员交流而非一昧地地接受一个过程
敏捷方法的核心思想
- 敏捷方法是适应型,而非可预测型
- 敏捷方法是以人为本,而非以过程为本
- 迭代增量式开发过程
敏捷方法介绍
极限编程(Extreme Programming, XP)
XP的基础和价值观是交流、朴素、反馈和勇气,加强交流;从简单做起;寻求反馈;勇于实事求是
水晶系列方法
以人为中心,提倡机动性。具有共性的核心元素以及独特的角色、过程模式、工作产品和实践
Scrum
侧重项目管理,是迭代式增量软件开发过程。使用产品Backlog来管理产品的需求,整个开发过程被分为若干个端的迭代周期Sprint
特征驱动开发方法(Feature Driven Development,FDD)
强调软件开发3要素人、过程、技术。
6个关键项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家
5个核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建
软件能力成熟度模型(Capability Maturity Model for Software,CMM)
概念
软件能力成熟度模型(Capability Maturity Model for Software,CMM)是一个概念模型,模型框架和表示是刚性的,不能随意更改,但模型的解释和实现有一定弹性。CCMI(Capability Maturity Model Inntegration for Software,软件能力成熟度模型集成)是CMM的基础上发展来的,它将软件过程改进的步骤组织成5个成熟度等级
基于构件的软件工程(CBSE)
概述
基于构件的软件工程(Component-Based Software Engineering, CBSE)是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。CBSE体现了购买而不是重新构造的哲学
CBSE构件的特征
- 可组装性:所有的外部交互必须通过公开定义的接口进行
- 可部署性:构件是二进制行式,无须在部署前编译,能作为一个独立实体在构件平台上运行。
- 文档化:用户根据文档来判断构件是否满足需求
- 独立化:可以在无其他特殊构件的情况下进行组装和部署,如有依赖其他构件应显示声明
- 标准化:构件必须符合某种标准化的构件模型
CBSE过程
CBSE过程主要活动包括:
graph LR
A[系统需求概览]
B[识别候选构件]
C[根据发现的构件修改需求]
D[体系结构设计]
E[构件定制与适配]
F[组装构件,创建系统]
A-->B-->C-->D-->E-->F
构件组装
- 顺序组装:按顺序调用将两个已存在的构件组装成一个新构件。
- 层次组装:被调用构件的“提供”接口必须和调用构件的“请求”接口兼容。
- 叠加组装:多个构件合并成新构件,新构件整合原构件的功能,对外提供新的接口。