软件已经成为驱动我们这个社会发展的重要力量。软件工程作为一门研究系统、规范、合理化软件开发的学科,已经成为计算机专业、软件工程专业的核心课程,也是其它专业可能选修的课程。目前已经有许多的软件工程教科书,不少教科书还是这个领域的经典。显然,这些教科书在解释软件工程的相关理论、技术方面均有自己的独特之处。然而,软件工程不是一门单纯理论性的课程,学生在学习时除了完成一些作业外,必须能够进行软件工程的实践,而且这种实践不是个别环节、个别技术的。因此,以小组为单位让学生能够真实地以软件工程方法为指导完整地开发一个软件就非常有必要了。目前,许多学校在教这一门课程时,也确实要求学生进行小组项目的开发。然而,在这个过程中,软件工程的教科书由于讲解知识点为主,往往并未给以明确的实践指导。
上海交通大学教授,
研究方向:1. 服务计算2. 网络计算3. 智能数据分析
教授课程:(1)软件工程 (本科)
(2)信息系统建模(博士生)
(3)IT项目管理 (硕士生)
(4)金融服务计算 (研究生实践课)
第一篇 指南篇
第1章 软件工程概论
1.1 软件工程的发展历史
1.1.1 第一台计算机和第一位程序员
1.1.2 软件的发展和软件危机
1.1.3 软件工程的提出
1.2 软件工程基本思想
1.2.1 抽象
1.2.2 分解
1.2.3 复用
1.3 传统软件工程
1.4 面向对象方法学
1.4.1 面向对象方法学的起源
1.4.2 面向对象方法学的核心概念
1.4.3 面向对象的特性
1.4.4 类之间的关系
1.4.5 面向对象的优点
第2章 面向对象软件过程
2.1 面向对象方法的发展
2.2 面向对象分析、设计与实现
2.2.1 面向对象分析
2.2.2 面向对象设计
2.2.3 面向对象实现
2.3 面向对象软件开发流程
2.4 统一开发过程——RUP
第3章 统一建模语言
3.1 UML简介
3.1.1 UML产生与发展
3.1.2 UML是什么
3.2 UML与软件体系结构
3.2.1 软件体系结构
3.2.2 UML五大视图
3.3 UML的构成
3.3.1 UML模型元素
3.3.2 UML模型图
3.3.3 公共机制
3.4 UML建模规则
3.5 静态建模机制模型图
3.5.1 用例图(use case diagram)
3.5.2 类图(class diagram)
3.5.3 包图(package diagram)
3.5.4 对象图(object diagram)
3.5.5 组件图(component diagram)
3.5.6 部署图(deployment diagram)
3.6 动态建模机制模型图
3.6.1 状态图(statechart diagram)
3.6.2 活动图(activity diagram)
3.6.3 顺序图(sequence diagram)
3.6.4 通信图(communication diagram)
3.6.5 其他图
3.7 典型的UML建模工具
3.7.1 Sybase PowerDesigner
3.7.2 Microsoft Visio
3.7.3 Rational Rose
3.7.4 StarUML
第4章 计划阶段
4.1 计划阶段的主要内容
4.2 可行性研究
4.2.1 进行可行性研究的目的与方法
4.2.2 可行性研究报告的编写方法
4.3 项目开发计划
4.3.1 项目开发计划的目的与主要内容
4.3.2 项目开发计划的编写方法
4.4 风险分析
4.4.1 风险管理
4.4.2 风险列袁的编写方法
第5章 需求定义阶段
5.1 需求定义阶段的主要内容
5.2 功能需求的表达
5.2.1 基于用例的功能需求获取
5.2.2 用例的编写方法
5.2.3 fj例模型与用例图
5.2.4 用例建模流程与注意点
5.3 非功能需求和设计约束
5.3.1 可用性
5.3.2 可靠性
5.3.3 性能
5.3.4 可支持性
5.3.5 设计约束
5.4 软件需求规格说明的编写
5.4.1 目前系统
5.4.2 建议的系统
5.4.3 系统模型
5.5 词汇表的编写
第6章 分析阶段
6.1 分析阶段的主要内容
6.2 对象模型的创建
6.2.1 类的识别
6.2.2 对象模型的表达
6.3 动态模型的创建
6.3.1 交互图
6.3.2 状态图
6.4 软件需求规格说明的修改
第7章 设计阶段
7.1 设计阶段的主要内容
7.2 软件设计的原则
7.3 从可重用软件单元到可重用设计知识
7.3.1 类库
7.3.2 软件框架
7.3.3 中间件
7.3.4 设计模式
7.4 系统设计
7.4.1 系统设计中的概念
7.4.2 确定系统设计目标
7.4.3 子系统的识别
7.5 对象设计
7.5.1 对象设计的相关概念
7.5.2 对象设计的工具与过程
7.5.3 对象识别和定义
7.6 运行设计
7.7 实现设计
7.8 软硬件部署设计
7.9 数据管理设计
7.10 其他设计
7.11 设计阶段交付物
7.11.1 设计模型
7.11.2 软件架构文档
第8章 构造阶段
8.1 构造阶段的主要内容
8.2 正向工程与逆向工程
8.2.1 正向工程与模型驱动的体系架构
8.2.2 逆向工程
8.3 单元测试与测试驱动开发
8.4 软件重构
8.5 从设计模型生成代码
8.6 构造过程中的优化
8.7 类与关系数据库表的映射
8.8 构造阶段交付物
8.8.1 代码与模块
8.8.2 模块开发卷宗
第9章 软件测试
9.1 软件测试的主要内容
9.1.1 测试计划的制订
9.1.2 测试用例和测试流程的设计
9.1.3 测试的准备
9.1.4 执行测试
9.1.5 测试评估
9.2 测试类型
9.2.1 按照测试阶段划分
9.2.2 按测试手段划分
9.3 软件测试工具
9.4 测试阶段交付物
9.4.1 软件测试计划
9.4.2 软件测试总结报告
第10章 交付阶段
10.1 交付阶段的主要内容
10.2 交付确认
10.3 系统上线
10.4 交付阶段文档编写
10.4.1 交付清单的编写
10.4.2 用户手册的编写
10.4.3 软件验收报告的编写
第11章 总结阶段
11.1 总结的主要内容
11.2 项目总结报告的编写
第二篇 案例篇
第12章 校园二手商品交易市场项目
12.1 计划阶段
12.1.1 可行性分析报告
12.1.2 项目开发计划
12.1.3 风险列表
12.2 需求获取和分析阶段
12.2.1 词汇表
12.2.2 软件需求规约
12.3 设计阶段
12.3.1 软件架构设计
12.3.2 软件设计模型
12.4 开发阶段
12.4.1 模块开发卷宗
12.5 测试阶段
12.5.1 软件测试计划
12.5.2 软件测试总结报告
12.6 总结和交付阶段
12.6.1 交付清单
12.6.2 软件项目总结报告
12.6.3 软件验收报告
12.6.4 用户手册
参考文献