关于课程
学习目标
- 在高级语言程序设计的基础上,认识软件构造的质量标准与目标,学习软件构造的基本过程, 从而具备面向质量目标的复杂软件构造方法与能力
- 深入学习抽象数据类型 ADT 与面向对象编程 OOP
- 初步掌握面向关键质量目标(可理解性、可维护性、可复用性、健壮性、时空性能)的软件构造基本技术
- 了解软件代码重构和面向更复杂软件系统的高级构造技术
应具备的能力
- 程序设计与实现能力:了解软件开发过程中应考虑哪些质量目标;掌握面向关键质量目标的软件基本构造技术;形成面向质量目标的软件开发思维模式
- 系统设计与实现能力:掌握“面向抽象编程”的核心思想和面向对象软件开发的基本过程;能够对实际应用问题进行抽象和建模;利用模型与开发者和用户进行有效表达和沟通
- 系统分析与评价能力:从关注单一开发环节到关注全开发过程的转换;根据用户期望质量特性进行全生命周期系统分析与评价; 发现系统设计的缺陷并做出优化和改进
- 利用现代软件构造工具的能力:了解复杂软件系统相对于简单程序的本质差异;初步掌握利用各类软件开发工具进行编码、测试和质量保障;利用现代软件构造工具进行高质量和高效率软件开发
学时安排(2023春)
重点学习内容
- 软件构造的多维度视图
- 软件构造的阶段划分、各阶段的构造活动
- 内部/外部的质量指标
- 软件配置管理SCM与版本控制系统VCS
- Git的结构、工作原理、基本指令
- 基本数据类型、对象数据类型
- 静态/动态类型检查
- Mutable/Immutable
- 值的改变、引用的改变、 final
- 防御式拷贝
- Snapshot diagram
- Specification、 前置/后置条件
- 行为等价性
- 规约的强度
- ADT操作的四种类型
- 表示独立性、 表示泄露
- 不变量、表示不变量RI
- 表示空间、抽象空间、 AF
- 以注释的形式撰写AF、 RI
- 接口、抽象类、具体类
- 继承、 override
- 多态、 overload
- 泛型
- 等价性equals()和==
- equals()的自反、传递、对称
- hashCode()
- 不可变对象的引用等价性、对象等价性
- 可变对象的观察等价性、行为等价性
- Programing for/with reuse
- LSP
- 协变、反协变
- 数组的子类型化
- 泛型的子类型化
- Delegation
- Comparator和Comparable
- CRP原则
- 接口的组合
- 白盒框架的原理与实现
- 黑盒框架的原理与实现
- 可维护性的常见度量指标
- 聚合度与耦合度
- SOLID
- 语法、正则表达式
- 设计模式adapter、 decorator、 strategy、 template method、iterator/iterable、 factory method、 visitor
- 健壮性和正确性
- Throwable
- Error/Runtime异常、其他异常
- Checked异常、 Unchecked异常
- Checked异常的处理机制:– 声明、抛出、捕获、处理、清理现场、释放资源等
- 自定义异常类
- 断言的作用、 应用场合
- 防御式编程的基本思路
- 黑盒测试用例的设计– 等价类划分、边界值分析
- 以注释的形式撰写测试策略
- JUnit测试用例写法
- 测试覆盖度