本课程从软件生命周期的角度讲解软件工程的基本概念、基本原理和基本方法,内容涉及开发管理、需求建模、设计实现和测试维护等四大部分的相关基础知识,强调软件工程的根本性和永久性原则,诸如可测试性、软件体系结构、模块化和可复用性等,关注软件系统的复杂性问题以及迭代式的开发方法,重视分析问题与解决问题的能力以及软件工程实践训练,培养学生良好的工程化开发习惯。经过本课程的学习,学生能够掌握软件工程的基础知识,从工程学角度认识软件在大型复杂系统中的设计和应用,具备作为软件工程师从事软件开发所需的专业能力。
Overview
Syllabus
- 第1章 初识软件工程
- 1.1 软件无处不在
- 1.2 软件的本质特性
- 1.3 软件工程的产生与发展
- 1.4 软件工程的基本概念
- 1.5 软件质量实现
- 1.6 业界人士谈软件工程
- 测验题
- 讨论题
- 第2章 编写高质量代码
- 2.1 编程过程与规范
- 2.2 良好的编程实践
- 2.3 Python集成开发环境
- 2.4 代码静态检查
- 2.5 代码性能分析
- 2.6 结对编程实践
- 2.7 刘贺谈软件工程
- 测验题
- 讨论题
- 第3章 单元测试
- 3.1 单元测试概述
- 3.2 黑盒测试方法
- 3.3 白盒测试方法
- 3.4 单元测试工具
- 测验题
- 讨论题
- 第4章 软件开发过程
- 4.1 软件过程
- 4.2 软件过程模型
- 4.3 敏捷开发过程
- 4.4 微软公司开发过程
- 测验题
- 第5章 团队开发管理
- 5.1 团队组织与管理
- 5.2 项目沟通管理
- 5.3 软件项目计划
- 5.4 软件项目估算
- 测验题
- 讨论题
- 第6章 敏捷开发与配置管理
- 6.1 敏捷开发之Scrum
- 6.2 用户故事与估算
- 6.3 团队协作工具Tower
- 6.4 配置管理
- 6.5 配置管理工具Git
- 6.6 持续集成与交付
- 测验题
- 作业题
- 第7章 华为云DevOps实践
- 7.1 华为云DevOps和实例
- 7.2 新建Scrum项目
- 7.3 持续规划与设计
- 7.4 持续开发与集成
- 7.5 持续测试与反馈
- 7.6 持续部署与发布
- 第8章 需求获取
- 8.1 需求工程师
- 8.2 需求定义
- 8.3 需求的类型
- 8.4 需求工程过程
- 8.5 需求的主要来源
- 8.6 需求获取技术
- 8.7 撰写需求文档
- 测验题
- 讨论题
- 第9章 用例建模
- 9.1 用例建模概念
- 9.2 用例建模过程
- 9.3 用例建模精讲
- 9.4 建模工具介绍
- 9.5 微信抢票应用案例
- 测验题
- 讨论题
- 第10章 面向对象分析与设计
- 10.1 面向对象分析
- 10.2 CRC卡片分拣法
- 10.3 面向对象设计
- 10.4 类图建模
- 测验题
- 讨论题
- 第11章 行为建模
- 11.1 顺序图概念
- 11.2 顺序图建模
- 11.3 顺序图风格
- 11.4 状态建模
- 11.5 状态图
- 11.6 状态图精讲
- 测验题
- 讨论题
- 第12章 软件系统设计
- 12.1 软件体系结构概念
- 12.2 软件设计原则
- 12.3 软件体系结构风格(一)
- 12.4 软件体系结构风格(二)
- 12.5 软件体系结构风格(三)
- 12.6 软件设计过程
- 12.7 Web系统架构设计
- 12.8 数据库选择策略
- 测验题
- 作业题
- 第13章 软件交互设计
- 13.1 交互设计概述
- 13.2 交互设计目标
- 13.3 GUI设计原则
- 13.4 KLM效率模型
- 13.5 Fitts定律
- 13.6 交互设计过程
- 测验题
- 第14章 软件系统测试
- 14.1 软件测试概念
- 14.2 软件测试类型
- 14.3 软件功能测试
- 14.4 软件性能测试
- 测验题
- 第15章 软件交付与维护
- 15.1 软件部署与交付
- 15.2 软件演化与维护
- 测验题
- 第16章 期末考试与总结
- 第一部分:基础知识
- 第二部分:编程与测试(选做)
- 期末考试
Taught by
Qiang Liu and Lin Liu