《软件工程实用教程》按照典型的软件开发过程来组织内容,旨在培养读者具备软件工程思想及实际软件开发的能力。全书共12章,主要内容包括软件工程与软件过程、软件需求分析与建模、软件设计与建模、软件编程与软件测试以及软件工程的其他相关内容,如软件规模估算、进度计划、人员组织、软件开发风险管理等。
《软件工程实用教程》可以作为普通高校计算机相关专业“软件工程”课程的教材,也可以供学习软件工程的读者单独使用(包括参加计算机等级考试或相关专业自学考试)参考。
《软件工程实用教程》是高等院校计算机科学、软件工程及相关专业“软件工程”课程的理想教材,也可以供程序员、软件测试工程师、系统工程师以及软件项目经理等相关人员阅读参考。
软件工程是研究软件开发和管理的一门工程科学,是计算机学科及相关专业的主干课程,也是软件从业人员必不可少的专业知识。目前,软件工程的理论在我国各企业和部门的软件开发中得到了广泛的应用,软件工程课程也受到了各大专院校相关专业的重视,各种软件工程理论教材也很多。
软件工程是一门理论与实践并重的课程。本书在讲述软件工程的基本概念、原理和方法的基础上,详细而全面地介绍了可以实际用于软件开发实践的各种技能。旨在使学生通过有限课时的学习后,不仅能对软件工程的原理有所认识,而且能具备实际开发软件的各种技能,比如熟练使用各种软件工程工具,按照标准和规范编写文档等。
本书共分为12章,内容涉及软件工程的基本原理和概念、软件开发生命周期的各个阶段、软件工程管理的相关内容、如何使用各种自动化工具来辅助软件开发的过程,以及课程设计。
本书与其他书的不同之处在于,除了讲述必要的软件工程理论之外,还通过实验讲述比较流行的软件开发工具(如软件绘图工具Microsoft Visio、面向对象建模工具Rational Rose、软件实现工具Visual Studio、软件测试工具UnitTest、软件项目管理工具Microsoft Project等)是如何应用于“小型网上书店系统”的。书中还讲述了课程设计的指导,如怎样进行项目选题、组建团队、团队工作方式和项目进度安排等。本书中所讲述的“小型网上书店系统”是学生在做课程设计中可供模仿的一个项目。所有这些使得软件工程的三要素——过程、方法和工具在本书中能够充分地体现。
本书理论知识的教学安排建议如下:
软件工程是研究软件开发和管理的一门工程科学,是计算机学科及相关专业的主干课程,也是软件从业人员必不可少的专业知识。目前,软件工程的理论在我国各企业和部门的软件开发中得到了广泛的应用,软件工程课程也受到了各大专院校相关专业的重视,各种软件工程理论教材也很多。
软件工程是一门理论与实践并重的课程。本书在讲述软件工程的基本概念、原理和方法的基础上,详细而全面地介绍了可以实际用于软件开发实践的各种技能。旨在使学生通过有限课时的学习后,不仅能对软件工程的原理有所认识,而且能具备实际开发软件的各种技能,比如熟练使用各种软件工程工具,按照标准和规范编写文档等。
本书共分为12章,内容涉及软件工程的基本原理和概念、软件开发生命周期的各个阶段、软件工程管理的相关内容、如何使用各种自动化工具来辅助软件开发的过程,以及课程设计。
本书与其他书的不同之处在于,除了讲述必要的软件工程理论之外,还通过实验讲述比较流行的软件开发工具(如软件绘图工具Microsoft Visio、面向对象建模工具Rational Rose、软件实现工具Visual Studio、软件测试工具UnitTest、软件项目管理工具Microsoft Project等)是如何应用于“小型网上书店系统”的。书中还讲述了课程设计的指导,如怎样进行项目选题、组建团队、团队工作方式和项目进度安排等。本书中所讲述的“小型网上书店系统”是学生在做课程设计中可供模仿的一个项目。所有这些使得软件工程的三要素——过程、方法和工具在本书中能够充分地体现。
本书理论知识的教学安排建议如下。
章节内容学时数
第1章软件工程概述2~4
第2章软件过程2
第3章可行性研究及需求分析2
第4章结构化需求分析2~4
第5章面向对象分析6~8
第6章软件设计2~4
第7章结构化设计方法4~6
第8章面向对象设计2
第9章软件编程1~2
第10章软件测试概述2
第11章软件测试方法与过程5~8
第12章软件工程的其他相关内容2~4
建议先修课程:计算机导论、面向对象程序设计、数据结构、数据库原理等。
建议理论教学时数:32~48学时。
建议实验(实践)教学时数:16~32学时。
教师可以按照自己对软件工程的理解适当地删除一些章节,也可以根据教学目标,灵活地调整章节的顺序,增减各章的学时数。
由于软件工程是一门新兴学科,软件工程的教学方法本身还在探索之中,加之作者的水平和能力有限,本书内容难免有疏漏之处。恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得与作者交流(yunxianglu@hotmail.com)。
编者
2015年1月
第一部分软件工程与软件过程
第1章软件工程概述
1.1软件
1.1.1软件的概念
1.1.2软件的特点
1.1.3软件的分类
1.2软件危机
1.2.1软件危机的表现
1.2.2软件危机的原因
1.3软件工程
1.3.1软件工程的概念
1.3.2软件工程的基本内容
1.3.3软件工程目标和原则
1.3.4软件工程的知识体系
1.4软件工程的相关工具
1.5软件工程的常用信息源
1.6“小型网上书店系统”案例介绍
小结
习题
第2章软件过程
2.1软件过程概述
2.2软件生命周期
2.2.1软件生命周期的概念
2.2.2传统软件生命周期的各个阶段
2.3软件过程模型
2.3.1瀑布模型
2.3.2快速原型模型
2.3.3增量模型
2.3.4螺旋模型
2.3.5喷泉模型
2.3.6基于组件的开发模型
2.3.7统一软件开发过程模型
2.3.8敏捷模型
小结
习题
第二部分软件需求分析与建模
第3章可行性研究及需求分析
3.1可行性研究
3.1.1可行性研究的目的与意义
3.1.2可行性研究的内容
3.1.3可行性研究的步骤
3.2需求分析
3.2.1需求分析的目的与意义
3.2.2需求分析的步骤
3.2.3需求管理
3.3软件开发计划书编写指南
3.4需求规格说明书编写指南
3.5实验
3.5.1Visio的功能及使用方法介绍
3.5.2Rose的功能及使用方法介绍
小结
习题
第4章结构化需求分析
4.1结构化需求分析的方法
4.2结构化需求分析的工具
4.2.1实体关系(ER)图
4.2.2数据流图
4.2.3状态转换图
4.2.4数据字典
4.3实验: 利用Visio绘制“小型网上书店系统”的数据流图
小结
习题
第5章面向对象分析
5.1面向对象的软件工程方法
5.1.1面向对象的基本概念
5.1.2面向对象的软件工程方法的特征与优势
5.2UML简介
5.2.1用例图
5.2.2类图和对象图
5.2.3状态图
5.2.4顺序图
5.2.5活动图
5.2.6协作图
5.2.7构件图
5.2.8部署图
5.2.9包图
5.3面向对象分析方法
5.3.1面向对象分析过程
5.3.2面向对象分析原则
5.4面向对象建模
5.4.1建立对象模型
5.4.2建立动态模型
5.4.3建立功能模型
5.4.4三种模型之间的关系
5.5实验
5.5.1利用Rose绘制“小型网上书店系统”的用例图
5.5.2利用Rose绘制“小型网上书店系统”的类图
5.5.3利用Rose绘制“小型网上书店系统”的对象图
5.5.4利用Rose绘制“小型网上书店系统”的状态图
5.5.5利用Rose绘制“小型网上书店系统”的顺序图
5.6案例:“小型网上书店系统”的需求规格说明书
小结
习题
第三部分软件设计与建模
第6章软件设计
6.1软件设计的基本概念
6.1.1软件设计的意义和目标
6.1.2软件设计的分类
6.1.3软件设计的原则
6.2软件的体系结构
6.2.1软件的体系结构概述
6.2.2软件系统的设计模式
6.3分布式系统结构
6.3.1多处理器体系结构
6.3.2客户/服务器体系结构
6.3.3分布式对象体系结构
6.3.4对等端体系结构
6.3.5代理
6.4体系结构框架
6.4.1模型视图控制器
6.4.2模型视图表示器
6.4.3J2EE体系结构框架
6.4.4PCMEF
6.4.5PCBMER
6.5数据库结构设计
6.6人机界面设计
6.7软件设计说明书编写指南
小结
习题
第7章结构化设计方法
7.1结构化软件设计方法
7.1.1表示软件结构的图形工具
7.1.2面向数据流的设计方法
7.1.3面向数据结构的设计方法
7.2结构化软件设计工具
7.2.1流程图
7.2.2NS图
7.2.3PAD
7.2.4判定表
7.2.5判定树
7.2.6过程设计语言
7.3实验: 利用Visio绘制“小型网上书店系统”的结构图
小结
习题
第8章面向对象设计
8.1面向对象设计方法
8.1.1面向对象的设计原则
8.1.2面向对象设计的启发规则
8.1.3系统设计
8.1.4对象设计
8.2实验
8.2.1利用Rose绘制“小型网上书店系统”的活动图
8.2.2利用Rose绘制“小型网上书店系统”的协作图
8.2.3利用Rose绘制“小型网上书店系统”的构件图
8.2.4利用Rose绘制“小型网上书店系统”的部署图
8.3案例:“小型网上书店系统”的软件设计说明书
小结
习题
第四部分软件编程与软件测试
第9章软件编程
9.1编程语言
9.1.1编程语言的发展与分类
9.1.2选择编程语言需考虑的因素
9.2编程风格
9.3编程人员的基本素质
9.4实验
9.4.1Visual Studio使用方法介绍
9.4.2利用Visual Studio实现“小型网上书店系统”的用户登录模块
小结
习题
第10章软件测试概述
10.1软件测试的基本概念
10.1.1软件测试的原则
10.1.2软件测试模型
10.2软件测试的分类
10.3测试用例
10.3.1测试用例编写
10.3.2测试用例设计
10.3.3测试用例场景
10.4测试分析报告编写指南
小结
习题
第11章软件测试方法与过程
11.1软件测试方法
11.2黑盒测试
11.2.1等价类划分法
11.2.2边界值分析法
11.2.3错误推测法
11.2.4因果图法
11.2.5决策表法
11.2.6场景法
11.2.7黑盒测试选择
11.3白盒测试
11.3.1代码检查法
11.3.2静态结构分析法
11.3.3程序插桩技术
11.3.4逻辑覆盖法
11.3.5基本路径法
11.3.6白盒测试方法选择
11.3.7白盒测试和黑盒测试比较
11.4软件测试的一般步骤
11.5单元测试
11.5.1单元测试概述
11.5.2单元测试内容
11.5.3单元测试方法
11.6集成测试
11.6.1集成测试概述
11.6.2集成测试分析
11.6.3集成测试策略
11.7系统测试
11.7.1系统测试概述
11.7.2系统测试类型
11.8验收测试
11.8.1验收测试概述
11.8.2验收测试内容
11.8.3α测试和β测试
11.9回归测试
11.10面向对象的软件测试
11.11软件调试
11.11.1调试过程
11.11.2调试途径
11.12实验
11.12.1利用Visual Studio中的工具进行单元测试
11.12.2利用Visual Studio对“小型网上书店系统”的用户登录模块
进行
单元测试
11.13案例:“小型网上书店系统”的测试分析报告
小结
习题
第五部分软件工程的其他相关内容
第12章软件工程的其他相关内容
12.1软件估算
12.1.1软件估算的概念
12.1.2软件估算的方法
12.1.3软件估算的原则与技巧
12.2软件开发进度计划
12.2.1Gantt图
12.2.2PERT图
12.3软件开发人员组织
12.3.1民主制程序员组
12.3.2主程序员组
12.3.3现代程序员组
12.4软件开发风险管理
12.4.1软件开发风险
12.4.2软件开发风险管理
12.5软件质量保证
12.5.1软件质量的基本概念
12.5.2软件质量保证的措施
12.6软件配置管理概述
12.6.1软件配置管理术语
12.6.2配置管理的过程
12.6.3配置管理的角色划分
12.7软件维护
12.7.1软件维护的过程
12.7.2软件维护的分类
12.7.3软件的可维护性
12.7.4软件维护的副作用
12.7.5软件再工程技术
12.8软件工程标准与软件文档
12.8.1软件工程标准
12.8.2软件文档
12.9软件过程能力成熟度模型
12.10软件项目管理
12.10.1软件项目管理概述
12.10.2软件项目管理与软件工程的关系
12.11软件复用
12.12实验
12.12.1Project的功能及使用方法介绍
12.12.2利用Project管理“小型网上书店系统”的开发过程
小结
习题
附录A课程设计指导
附录B模拟考试题与参考答案
附录C部分习题参考答案
参考文献