第七章、软件工程

  1. 计算机学科中的一个分支
  2. 致力于寻找大型复杂软件系统的开发原则
  3. 包含人员管理、项目管理之类的主题

1. 软件工程学科

与其他工程学科之间的一个差别在于缺少衡量属性的定量技术——度量学(metrics)

  • 同时也出现了计算机辅助软件工程(CASE)、IDE
  • 通用也有ISO、ACM、IEEE等组织来指定标准、提供方针、增强人们的职业精神

2. 软件生命周期

软件工程中最基础的概念

  • 开发 -> 使用 <-> 维护

2.1 传统的开发阶段

1. 需求分析

2. 设计

3. 实现

4. 测试

3. 软件工程方法学

4. 模块化

把软件分割成多个易于处理的单元

  • 降低软件之间的耦合
  • 提高内部绑定程序的关联度
  • 隐藏软件的信息(封装)

耦合的形式

  • 控制耦合
  • 数据耦合

5. 行业工具

  • 通过数据流图,确定业务的流程,以及理解系统(同时也作为客户与软件工程师之间的交流手段)
  • 构建统一的建模语言(UML/ER等)
  • 设计模式

6. 质量保证

  • 软件质量保证,开发记录、标准指定等
  • 软件测试:白盒测试、黑盒测试

7. 文档

分类

  • 用户文档
  • 系统文档
  • 技术文档

8. 人机界面

主要来于人机工程学知行学

  • 界面上呈现的东西应该不依赖于人类的记忆

9. 软件所有权和责任

  • 知识产权
  • 软件许可
  • 专利问题