系统架构师学习笔记 — 1
系统开发
软件开发生命周期
主要过程
- 获取过程:需求的定义、分析;招标准备;合同准备
- 供应过程:需求评审;投标准备;签订合同;项目计划
- 开发过程:系统需求分析、系统结构设计、软件需求分析、软件结构设计、软件详细设计、软件编码、软件集成、软件测试、系统集成、系统测试、软件安装验收
- 运行过程:运行计划、运行测试、提供帮助
- 维护过程:变更、维护、移植、退役
支持过程
- 文档编制
- 配置管理
- 质量保证
- 验证过程
- 确认过程
- 联合评审
- 审计过程
- 问题解决
组织过程
- 管理过程
- 基础设施
- 改进过程
- 培训过程
软件开发方法
- 净室方法
- 结构化方法:自顶向下
- 面向对象方法:UML
- 原型法
- 逆向工程
软件开发模型
- 瀑布模型:自上而下线性,适用于需求明确变更少的项目
- 演化模型
- 螺旋模型:增加了风险分析
- 喷泉模型:支持面向对象的开发方法
- 智能模型:基于知识
- 增量模型
- 迭代模型
- 构件组装模型
- V模型:以测试为中心
- 快速应用开发(RAD)
- 敏捷方法:价值观:沟通、简单、反馈、勇气
- 统一过程(UP)
系统规划与问题定义
- 可行性分析
- 成本效益分析
- 新旧系统分析比较
- 结构化系统建模
- 问题定义
需求工程
需求获取
需求获取技术
- 用户访谈
- 用户调查
- 现场观摩
- 阅读历史文档
- 联合讨论会
需求分析
分类
- 结构化分析方法:
DFD数据流图 - 面向对象分析方法
构建用例模型:
1)识别参与者(actor):参与者是系统之外与系统进行交互的任何事物,可以是系统的用户,也可以是外部实体
2)合并需求获得用例
3)细化用例描述
分析模型:建立领域模型(概念模型、域模型)
1)发现领域对象,定义概念类:名词动词法
2)识别对象的属性
3)识别对象的关系
4)为类添加指责
5)建立交互图 - 面向问题域分析
需求定义
需求定义的方法
- 严格定义(不现实)
- 原型方法
软件需求说明书(SRS)
是需求开发阶段的成果物,代表用户和开发人员对软件系统的共同理解。SRS需要把用户对软件的功能需求和非功能需求进行详细记录和准确描述。
不应该包括设计、构造、测试或工程管理的细节,更不包括对算法的描述
可以使用以下方法编写SRS
- 结构化和自然语言编写(最现实)
- 图形化模型
- 编写形式化规格说明
需求管理
需求的变更、跟踪和风险管理
软件设计
目的
- 制定规范
- 总体设计
- 设计处理方式:算法、性能、响应时间、吞吐量等
- 数据结构
- 可靠性设计
- 设计文档:概要设计、详细设计、数据库设计、用户手册、初步测试计划等
- 设计评审
设计活动
- 数据设计:E-R图
- 软件结构设计
- 人机界面设计(接口设计)
- 过程设计
结构化设计
工作流设计
软件测试
测试类型
- 动态测试:黑盒、白盒、灰盒
- 静态测试
测试阶段
- 单元测试
- 集成测试
- 确认测试
- 系统测试