软件工程导论

2020年华中科技大学出版社出版的图书
《软件工程导论》是2020年华中科技大学出版社出版的图书。
内容简介
本书全面介绍了软件工程的基本概念、原理和典型的方法学，全书共分为11章，第1章介绍软件工程的概况；第2章至第9章顺序讲述软件生命周期各阶段的任务、过程、方法和工具，包括可行性分析、需求分析、概要设计、详细设计、编程实现、软件测试和软件维护；第10章介绍软件管理；第11章介绍软件工程的新技术。
本书可作为高等院校本科各专业软件工程课程教材，以及计算机科学技术和软件工程本科专业“软件工程概论”和“软件工程导论”课程教材，也可以作为从事软件开发、管理、维护和应用的工程技术和管理人员的参考书。
图书目录
第1章软件工程概述(1)
1.1软件工程的概念(1)
1.1.1软件的定义与特点(1)
1.1.2软件的发展(2)
1.1.3软件的分类(2)
1.1.4软件危机(4)
1.1.5软件工程(5)
1.2软件生存周期模型及软件开发方法和工具(8)
1.2.1软件生存周期模型(8)
1.2.2软件开发方法(10)
1.2.3软件开发工具(12)
1.3软件工程过程(13)
1.3.1概述(13)
1.3.2软件工程过程(14)
1.3.3统一软件开发过程(16)
习题1(18)
第2章软件可行性分析(19)
2.1可行性分析的意义(19)
2.2可行性分析的内容(19)
2.2.1经济可行性(19)
2.2.2技术可行性(20)
2.2.3社会可行性(20)
2.3可行性分析方法(21)
2.3.1系统流程图(21)
2.3.2成本效益分析(22)
2.4项目开发计划(23)
2.4.1概述(23)
2.4.2软件开发计划的内容(23)
2.5可行性分析报告(24)
习题2(26)
第3章软件需求分析(27)
3.1软件需求分析的任务(27)
3.1.1软件需求分析的概念(27)
3.1.2需求分析的基本任务(27)
3.2需求分析过程(28)
3.2.3需求规格说明书(30)
3.2.4需求评审(30)
3.3需求分析模型(30)
3.3.1实体关系图(31)
3.3.2数据流图(33)
3.5数据字典(37)
3.5.1词条描述(37)
3.5.2数据字典中的符号(40)
3.6需求规格说明书(41)
习题3(42)
第4章软件概要设计(44)
4.1软件设计过程(44)
4.2概要设计的目标与任务(46)
4.2.1概要设计的目标(46)
4.2.2概要设计的任务(46)
4.3概要设计原则(46)
4.3.1模块化(46)
4.3.2抽象(48)
4.3.3自顶向下，逐步细化(48)
4.3.4信息隐蔽(49)
4.3.5模块独立性(49)
4.4体系结构设计工具(53)
4.4.1结构图(53)
4.4.2HIPO图(54)
4.5面向数据流的设计方法(55)
4.5.1数据流的类型(55)
4.5.2设计过程(56)
4.5.3变换分析设计(57)
4.5.4事务分析设计(57)
4.5.5实例分析(58)
4.6表示软件结构的另一种图形工具——HIPO图(59)
4.6.1HIPO图的H图(59)
4.6.2IPO图(60)
4.7概要设计说明书(60)
习题4(62)
第5章软件详细设计(64)
5.1详细设计的任务与原则(64)
5.1.1详细设计的任务(64)
5.1.2详细设计的基本原则(65)
5.2结构化程序设计(65)
5.2.1结构化程序设计的概念(65)
5.2.2结构化程序设计的原则(65)
5.2.3程序设计的优点(66)
5.3过程设计工具(66)
5.3.1程序流程图(67)
5.3.2盒图(NS图)(69)
5.3.3PAD(69)
5.3.4判定表(70)
5.3.5判定树(72)
5.3.6PDL语言(72)
5.3.7小结(73)
5.4面向数据结构的设计方法(74)
5.4.1概述(74)
5.4.2Jackson结构图(74)
5.4.3Jackson方法设计步骤(75)
5.5详细设计说明书(78)
习题5(80)
第6章软件编程(81)
6.1程序设计语言(81)
6.1.1程序设计语言分类(81)
6.1.2程序设计语言的特点(83)
6.1.3程序设计语言的选择(85)
6.2编程风格(87)
6.2.1源程序文档化(87)
6.2.2数据说明(88)
6.2.3语句构造(88)
6.2.4输入和输出(88)
6.3程序效率(89)
6.3.1程序效率的准则(89)
6.3.2算法对效率的影响(89)
6.3.3存储效率(89)
6.3.4输入/输出效率(90)
6.4冗余编程及容错技术(90)
6.4.1冗余编程(90)
6.4.2软件容错技术(91)
6.5程序复杂性的度量(93)
6.5.1代码行度量法(94)
6.5.2McCabe度量法(94)
习题6(95)
第7章面向对象的方法(96)
7.1面向对象方法(96)
7.1.1面向对象方法概述(96)
7.1.2面向对象的概念(97)
7.1.3面向对象的开发方法(100)
7.2面向对象的模型(101)
7.2.1对象模型(101)
7.2.2动态模型(104)
7.2.3功能模型(106)
7.3面向对象的分析(107)
7.3.1面向对象的分析(108)
7.3.2建立对象模型(108)
7.3.3建立动态模型(112)
7.3.4建立功能模型(114)
7.3.5确定操作(116)
7.4面向对象设计(116)
7.4.1面向对象设计的准则(116)
7.4.2面向对象设计的启发规则(117)
7.4.3系统设计(118)
7.4.4对象设计(118)
7.5面向对象的实现(119)
7.5.1程序设计语言(119)
7.5.2类的实现(119)
7.5.3应用系统的实现(119)
7.5.4面向对象测试(120)
习题7(120)
第8章软件测试(121)
8.1概述(121)
8.1.1测试的概念(121)
8.1.2测试的过程(122)
8.1.3测试的原则(123)
8.2静态测试(123)
8.2.1静态测试的概念(123)
8.2.2静态测试方法(124)
8.3动态测试(124)
8.3.1白盒测试与黑盒测试的区别与联系(124)
8.3.2白盒测试(125)
8.3.3黑盒测试(127)
8.4单元测试(129)
8.4.1单元测试概述(129)
8.4.2单元测试的策略(130)
8.4.3面向对象的单元测试(131)
8.5集成测试(132)
8.5.1集成测试概述(132)
8.5.2集成测试的策略(132)
8.5.3面向对象的集成测试(133)
8.6系统测试(134)
8.7验收测试(134)
习题8(135)
第9章软件维护(136)
9.1概述(136)
9.1.1维护的定义(136)
9.1.2维护的目的(136)
9.1.3维护的种类(137)
9.2软件维护的难点和软件的可维护性(137)
9.2.1软件维护的难点(137)
9.2.2软件的可维护性(138)
9.3软件维护的工作(139)
9.3.1收取故障信息(139)
9.3.2排查方法(139)
9.3.3修改程序(139)
9.3.4维护管理(140)
习题9(140)
第10章软件管理(141)
10.1软件质量管理(141)
10.1.1软件质量管理概述(141)
10.1.2软件质量评价(143)
10.2软件文档管理(145)
10.2.1软件文档的分类(145)
10.2.2软件文档的编写(147)
10.3软件项目管理(148)
10.3.1软件项目管理概述(148)
10.3.2软件开发成本估计(149)
10.3.3软件开发进度安排(150)
习题10(152)
第11章软件工程新技术(154)
11.1形式化方法(154)
11.1.1形式化方法的引入(154)
11.1.2形式化规格说明语言(155)
11.1.3形式化方法的十条戒律(156)
11.2净室软件工程(156)
11.2.1CRSE方法的引入(157)
11.2.2CRSE过程模型(157)
11.2.3CRSE的特点(158)
11.3基于构件的软件工程(159)
11.3.1基本概念(159)
11.3.2基于构件的软件工程(159)
11.3.3构件库的建立与使用(160)
11.4软件复用与再工程(161)
11.4.1基本概念(161)
11.4.2业务过程再工程(162)
11.4.3软件再工程(163)
11.5敏捷软件过程(164)
11.5.1基本概念(164)
11.5.2敏捷软件开发方法的指导原则(165)
11.5.3典型的敏捷过程模型(166)
习题11(167)
参考文献(168)
作者简介
刘昕，男，1980年8月出生。1998年在华中科技大学计算机学院学习，获学士学位。2003-2010在华中科技大学计算机学院学习，从事计算机软件与理论方向的研究工作，获得工学硕士及工学博士学位。2011年-2014年在中国船舶重工集团第722研究所工作。从事项目管理相关工作，作为第一项目负责人参与项目两项，作为主要负责人参与项目三项。参与发明专利一项。2014-至今在湖北大学计算机与信息工程学院工作，从事软件工程方向的研究与相关专业课程的讲授。