chapter_1
1.1 软件
- 指令的集合+数据结构+文档描述
1.2 软件为什么要变更?
- 软件件必须进行适应性调整,以满足新的计算环境和技术的需求。
- 软件必须升级以实现新的商业需求。
- 软件必须扩展使之具有与更多现代系统和数据库的互操作能力。
- 软件必须进行改建使之能适应多样化的网络环境。
1.3 软件危机
- 落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象称为软件危机。
1.4 软件工程
- 定义:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护, 即将工程化方法应用于软件以及上述所述方法的研究。
1.5 软件工程三要素
- tools 工具
- methods 方法
- process model 过程
1.6 软件工程的层次图
- 方法、工具、过程、质量关注点
- P.S.三要素&a 'quality' focus
1.7 Hooker的一般原则
- 存在价值
- 保持简洁
- 保持愿景
- 关注使用者
- 面向未来
- 计划复用
- 认真思考
chapter_2
2.1 软件生命周期
- 软件定义时期
- 软件开发时期
- 软件维护时期
2.2 瀑布模型
- 特点:
-
- 阶段间的顺序性和依赖
- 推迟实现的观点
- 质量保证的观点:文档、评审
- 优点:
-
- 通过设置里程碑,明确每阶段的任务与目标。
- 可为每阶段制定开发计划,进行成本预算,组织开发力量
- 通过阶段评审,将开发过程纳入正确轨道
- 强迫开发人员采用规范化的方法
- 缺点:
-
- 缺乏灵活性,不能适应用户需求的改变
- 开始阶段的小错误被逐级放大,可能导致软件产品报废
- 返回上一级的开发需要十分高昂的代价
- 随着软件规模和复杂性的增加,软件产品成功的机率大幅下降。
2.3 螺旋模型
- 优点:
-
- 支持用户需求的动态变化
- 原型易于用户和开发人员共同理解需求
- 降低开发风险
- 缺点:
-
- 如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间
- 使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。
2.4 通用框架活动有哪些?
- 沟通、策划、建模、构建、部署
2.5 通用过程模型有哪些 ?
- 瀑布模型、原型、螺旋模型、协同、增量模型、RAD 模型
chapter_3
3.1 敏捷宣言
- 个体和交互胜过过程和工具
- 可行的软件胜过篇篇文档
- 客户合作胜过合同谈判
- 响应变更胜过遵循计划
- 核心理念是适应和以人为本
3.2 敏捷开发
- 一种以人为核心、迭代 、循序渐进的开发方法。
3.3 XP的Spike解决方法
- 迭代&重构
3.4 敏捷过程模型有哪些?
- XP、Scrum、Crystal、ASD、驱动开发
chapter_4
4.1 需求工程的任务有哪些
- 起始、导出、精化、协商、规格说明、确认、需求管理
4.2 质量功能部署有哪三类需求?
- 常规需求、期望需求、意外需求
4.3 需求模型的元素有哪些
- 基于场景的元素、基于类的元素、行为元素、面向数据流元素
chapter_5
5.1 需求分析的元素有哪些?
- 基于场景的模型、基于类的模型、行为模型、面向数据流的模型
5.2 基于类的模型的元素有哪些?
- 类和对象、属性、 操作、CRC模型、协作图、包
5.3 什么是CRC模型?
- 类-职责-协作者 (Class-Responsibility-Collaboration)可以识别和组织与系统或产品需求相关的类。
chapter_6
6.1 软件设计宣言
- 良好软件设计应该展示:坚固、适用、愉悦
6.2 从技术角度,软件设计有哪几种设计?
- 数据设计、体系结构设计、构件设计、接口设计
6.3 从管理角度,软件设计有哪几种设计?
- 概要设计和详细设计
6.4 重构
- 重构是使用这样一种方式改变软件系统的过程:不改变代码的外部行为而是改进其内部结构 。
chapter_7
7.1 软件体系结构风格
- 以数据为中心的体系结构
- 数据流体系结构
- 调用和返回体系结构
- 面向对象体系结构
- 层次体系结构
7.2 软件体系结构
- 构件 + 连接件 + 拓扑结构 + 约束 + 质量
chapter_8
8.1 构件
- OMG:“系统模块化的、可部署的和可替换的部件, 该部件封装了实现并暴露一组接口。”
8.2. 基本的设计原则
- 开闭原则(OCP)
- Liskov替换原则(LSP)
- 依赖倒置原则(DIP)
- 接口分离原则(ISP)
- 发布复用等价性原则(REP)
- 共同封装原则(CCP)
- 共同复用原则(CRP)
chapter_9
9.1 软件测试策略有哪些?
- 单元测试
- 集成测试
- 确认测试
- 系统测试
9.2 集成测试策略有哪些?
- 大爆炸集成
- 自顶向下集成
- 自顶向上集成
- 三明治集成
- 分层集成
- 高频集成
- 基于事件的集成
chapter_10
10.1 白盒测试及其方法
- 基本路径测试
- 控制结构测试
- 数据流测试
- 循环测试
10.2 黑盒测试及其方法
- 基于图的测试方法
- 等价类划分
- 边界值分析
- 对比测试
chapter_11
11.1 软件质量
- 在一定程度上应用有效的软件过程,创造有用的产品,为生产者和使用者提供明显的价值。
11.2 软件质量困境
- 一方面,产品要足够好,不会立即被抛弃
- 另一方面,又不是那么完美,不需要花费太长时间和太多成本