软件工程概论
作者 : 郑人杰 马素霞 殷人昆 编著
出版日期 : 2010-01-21
ISBN : 978-7-111-28381-2
定价 : 36.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 371
开本 : 16
原书名 :
原出版社: 机工
属性分类: 教材
包含CD :
绝版 :
图书简介

软件工程学科具有知识面广、发展迅速、实践性强等特点。本书作者针对软件工程的学科特点,在系统讲解软件工程理论、方法和工具的同时,注重结合实例分析软件工程方法、技术和工具的综合应用;在兼顾传统的结构化方法的同时,注重介绍广为采用的面向对象方法。全书内容组织成四部分:第一部分是软件工程概述,第二部分介绍传统的软件开发方法,第三部分讲述面向对象的软件开发方法,第四部分介绍软件维护与软件管理。
本书结构合理、内容丰富,讲解由浅入深,既体现知识点的连贯性、完整性,又体现知识在实际中的应用,适合作为计算机科学与技术、软件工程等专业本科生用教材。

图书特色

软件工程概论
郑人杰 马素霞 殷人昆 编著
本书主要内容
本书既强调和突出基本概念、基本方法,又使内容的组织符合学生的认识规律,在讲解理论的过程中尽量结合实例,并注重软件工程方法、技术和工具的综合应用,避免抽象和枯燥的论述。在兼顾传统的结构化方法的同时,注重当前广为采用的面向对象方法。紧密结合当前技术的新发展,在阐述理论知识的同时侧重实用性。既充分重视技术性内容,便于初学者掌握必要的知识和技能,同时也兼顾软件工程实践中必不可少的基本管理知识。
本书结构合理、内容丰富,讲解由浅入深,既体现知识点的连贯性、完整性,又突出了相关知识在实际中的应用。适合作为计算机科学与技术、软件工程等专业的本科生教材。
作者简介
郑人杰 清华大学教授,清华同方股份有限公司顾问,现任中国软件行业协会理事、系统与软件过程改进分会常务副会长。1961年于清华大学毕业后留校任教,多年来教学、科研工作围绕着软件工程领域,近年注重于软件质量及软件过程改进。编著有《实用软件工程》、《计算机软件测试技术》、《基于软件能力成熟度模型(CMM)的软件过程改进》等。
马素霞 华北电力大学计算机科学与技术系教授。1989年获清华大学计算机系工学硕士学位,毕业后一直从事计算机软件方面的教学及研究工作,2001年赴加拿大卡尔顿(Carleton)大学计算机科学系做访问学者,主要研究方向为软件工程、数据库与信息系统。
殷人昆 清华大学计算机系教授。1970年清华大学计算数学专业毕业,1980年获清华大学计算机系工学硕士学位,1985年赴日本东京理科大学做访问学者,研究方向为软件工程过程的质量管理和软件产品的质量评价。主要讲授大学本科“数据结构”、“软件工程”和研究生“软件工程”、“软件项目管理”,其中,本科“数据结构”和工程硕士“软件工程”是清华大学精品课程,此外还主持了教育部-微软精品课程“数据结构”的建设。

图书前言

当今,软件业是社会经济发展的先导性和战略性产业,它已成为信息产业和国民经济新的增长点和重要支柱。软件工程在软件开发中起着重要的作用,对软件产业的形成及发展起着决定性的推动作用。采用先进的工程化方法进行软件开发和生产是实现软件产业化的关键技术手段。与其他产业相比,软件产业具有自己的特殊性。软件产业的发展更加依赖于人力资源,因此软件产业的竞争越来越集中到对人才的竞争。然而,刚毕业的大学生往往要经过半年到一年的培训才能适应软件企业的工作。长期以来,我国软件人才的现状远远不能满足软件产业发展的要求。因此,软件工程人员队伍的成长,特别是高层软件工程人员队伍的成长显得更为紧迫。
  自从软件工程概念诞生以来,学术界和工业界做了大量的研究与实践工作,也取得了许多重要成果。尤其是上个世纪90年代以后,随着网络技术及面向对象技术的广泛应用,软件工程取得了突飞猛进的发展。软件工程已从计算机科学与技术中脱离出来,逐渐形成了一门独立的学科。软件工程教育所处的地位也越来越重要。软件工程课程已成为软件工程、计算机科学与技术等专业的必修课程。
  软件工程课程是实践性比较强的课程,如果学生没有实践经验,则很难理解相关的理论知识。因此,教师普遍感到软件工程课程难教,而学生则普遍感到难学。近年来,软件工程学科的发展非常迅速,新的理论、方法和工具层出不穷,其中很多已经应用到企业的实际工作中。软件工程的教学面临越来越大的压力。我们认为,除了需要在教学内容、教学方法方面进行改革之外,实践能力的培养对于建设一支企业需要的合格软件工程人才队伍显得更为关键。
  我们在编写中力图遵循如下原则:
  (1) 既要强调和突出基本概念、基本方法,又要尽可能使材料内容的组织符合学生的认识规律,在讲解理论的过程中尽量结合实例,并注重软件工程方法、技术和工具的综合应用,避免讲解抽象和枯燥。
  (2) 在兼顾传统的结构化方法的同时,注重当前广为采用的面向对象方法。紧密结合当前技术的新发展,在阐述理论知识的同时侧重实用性。
  (3) 既要充分重视技术性内容,使其作为初学者必须掌握的知识,同时也要兼顾软件工程实践中必不可少的管理知识。
总之,本书力争做到结构合理、内容丰富,讲解由浅入深,既体现知识点的连贯性、完整性,又体现其在实际中的应用。

作者
2009年12月

上架指导

计算机科学及应用

封底文字

本书既强调和突出基本概念、基本方法,又使内容的组织符合学生的认识规律,在讲解理论的过程中尽量结合实例,并注重软件工程方法、技术和工具的综合应用,避免抽象和枯燥的论述。
在兼顾传统的结构化方法的同时,注重当前广为采用的面向对象方法。紧密结合当前技术的新发展,在阐述理论知识的同时侧重实用性。
既充分重视技术性内容,使其作为初学者必须掌握的知识和技能,同时也兼顾软件工程实践中必不可少的基本管理知识。
  本书结构合理、内容丰富,讲解由浅入深,既体现知识点的连贯性、完整性,又突出了相关知识在实际中的应用。适合用作计算机科学与技术、软件工程等专业的本科生教材。
作者简介
郑人杰 清华大学教授,清华同方股份有限公司顾问,现任中国软件行业协会理事、系统与软件过程改进分会常务副会长。1961年毕业于清华大学后留校任教。多年来教学、科研工作围绕着软件工程领域,近年注重于软件质量及软件过程改进。曾编写《实用软件工程》、《计算机软件测试技术》、《基于软件能力成熟度模型(CMM)的软件过程改进》等。

马素霞 华北电力大学计算机科学与技术系教授。1989年获清华大学计算机系工学硕士学位。毕业后一直从事计算机软件方面的教学及研究工作。2001年赴加拿大卡尔顿(Carleton)大学计算机科学系做访问学者。主要研究方向为软件工程、数据库与信息系统。

殷人昆 清华大学计算机系教授。1970年清华大学计算数学专业毕业,1980年清华大学计算机系工学硕士,1985年赴日本东京理科大学做访问学者,研究方向为软件工程过程的质量管理和软件产品的质量评价。主要讲授大学本科《数据结构》、《软件工程》和研究生《软件工程》、《软件项目管理》,其中,本科《数据结构》和工程硕士《软件工程》是清华大学精品课程,此外还主持了教育部-微软精品课程《数据结构》的建设。

图书序言

近20年里,计算机学科有了很大的发展,人们普遍认为,“计算机科学”这个名字已经难以涵盖该学科的内容,因此,改称其为计算学科(Computing Discipline)。在我国本科教育中,1996年以前曾经有计算机软件专业和计算机及应用专业,之后被合并为计算机科学与技术专业。2004年以来,教育部计算机科学与技术专业教学指导分委员会根据我国计算机专业教育和计算学科的现状,为更好地满足社会对计算机专业人才的需求,发布了《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》(以下简称《规范》),提出在计算机科学与技术专业名称之下,构建计算机科学、计算机工程、软件工程和信息技术四大专业方向。《规范》中四大专业方向的分类,在于鼓励办学单位根据自己的情况设定不同的培养方案,以培养更具针对性和特色的计算机专业人才。
为配合《规范》的实施,落实中央“提高高等教育质量”的精神,我们规划了“面向计算机科学与技术专业规范系列教材”。本系列教材面向全新的计算学科,针对我国高等院校逐步向新的计算机科学与技术专业课程体系过渡的趋势编写,在知识选择、内容组织和教学方法等方面满足《规范》的要求,并与国际接轨。本套教材具有以下几个特点:
  (1) 体现《规范》的基本思想,满足其课程要求。为使教材符合我国高等院校的教学实际,编委会根据《规范》的要求规划本套教材,广泛征集在国内知名高校中从事一线教学和科研工作、经验丰富的优秀教师承担编写任务。
  (2) 围绕“提高教育质量”的宗旨开发教材。为了确保“精品”,本系列教材的出版不走盲目扩大的路子,每本教材的选题都将由编委会集体论证,并由一名编委担任责任编委,最大程度地保证这套教材的编写水准和出版质量。
  (3) 教材内容的组织科学、合理,体系得当。本套教材的编写注重研究学科的新发展和新成果,能够根据不同类型人才培养需求,合理地进行内容取舍、组织和叙述,还精心设计了配套的实验体系和练习体系。
  (4) 教材风格鲜明。本套教材按4个专业方向统一规划,分批组织,陆续出版。教材的编写体现了现代教育理念,探讨先进的教学方法。
  (5) 开展教材立体化建设。根据需要配合主教材的建设适时开发实验教材、教师参考书、学生参考书、电子参考资料等教辅资源,为教学实现多方位服务。
  我们衷心希望本系列教材能够为我国高等院校计算机科学与技术等专业的教学作出贡献,欢迎广大读者广为选用。

“面向计算机科学与技术专业规范系列教材”编委会

图书目录

出版者的话
序言
前言
教学建议
第一部分软件工程概述
第1章软件与软件工程的概念2
1.1软件的概念、特性和分类2
1.1.1软件的概念及特性2
1.1.2软件的分类4
1.2软件危机与软件工程5
1.2.1软件危机5
1.2.2软件工程5
1.3系统工程的目标6
1.4软件生存期7
1.5软件生存期模型8
1.5.1瀑布模型8
1.5.2快速原型模型10
1.5.3增量模型11
1.5.4螺旋模型12
1.5.5喷泉模型14
1.5.6统一过程14
1.6软件工程知识体系及知识域16
习题18第2章软件工程方法与工具20
2.1软件工程方法概述20
2.1.1传统方法20
2.1.2面向对象方法21
2.1.3形式化方法21
2.2面向对象的概念与开发方法22
2.2.1对象22
2.2.2类与封装23
2.2.3继承24
2.2.4多态25
2.2.5消息通信25
2.2.6面向对象的软件开发方法25
2.3统一建模语言UML简介26
2.3.1UML的产生和发展27
2.3.2UML的特点27
2.4软件工具概述28
2.4.1软件工具的概念28
2.4.2软件工具的发展28
2.4.3软件工具的分类28
2.4.4常用软件工具介绍29
2.5UML建模工具Rational Rose31
2.5.1Rose的特点31
2.5.2Rose简介32
2.5.3Rose的基本操作33
习题36
第二部分传统的软件开发方法
第3章软件需求获取与结构化分析方法38
3.1需求获取与需求分析阶段的任务38
3.1.1需求获取的任务和原则38
3.1.2需求获取的过程39
3.1.3软件需求分析阶段的任务42
3.2结构化分析方法43
3.2.1功能建模44
3.2.2数据建模48
3.2.3行为建模49
3.2.4数据字典52
3.2.5加工规格说明55
3.3系统需求规格说明57
3.3.1软件需求规格说明模板58
3.3.2SRS和DRD的质量要求59
3.4需求评审61
3.4.1正式的需求评审61
3.4.2需求评审中的常见风险63
3.5需求管理63
3.5.1需求跟踪64
3.5.2需求变更管理64
习题65
第4章结构化设计方法66
4.1软件设计的概念及原则66
4.1.1软件设计的概念66
4.1.2软件设计的原则66
4.2结构化设计69
4.2.1结构化软件设计的任务69
4.2.2结构化设计与结构化分析的关系69
4.2.3模块结构及表示70
4.2.4数据结构及表示74
4.3体系结构设计75
4.3.1基于数据流方法的设计过程75
4.3.2典型的数据流类型和系统结构75
4.3.3变换型映射方法77
4.3.4事务型映射方法80
4.3.5软件模块结构的改进方法82
4.4接口设计89
4.4.1接口设计概述89
4.4.2人机交互界面89
4.5数据设计91
4.5.1文件设计91
4.5.2数据库设计92
4.6过程设计92
4.6.1结构化程序设计92
4.6.2程序流程图93
4.6.3N-S图96
4.6.4PAD图97
4.6.5伪代码98
4.6.6自顶向下、逐步细化的设计过程99
4.7软件设计规格说明101
4.8软件设计评审104
4.8.1概要设计评审的检查内容104
4.8.2详细设计评审的检查内容105
习题106
第5章编码109
5.1程序设计语言109
5.1.1程序设计语言的性能109
5.1.2程序设计语言的分类111
5.1.3程序设计语言的选择113
5.2程序设计风格113
5.2.1源程序文档化114
5.2.2数据说明标准化115
5.2.3语句结构简单化115
5.2.4输入/输出规范化118
5.3编码规范119
5.4程序效率与性能分析125
5.4.1算法对效率的影响125
5.4.2影响存储器效率的因素125
5.4.3影响输入/输出的因素126
习题126
第6章软件测试方法127
6.1软件测试的基本概念127
6.1.1什么是软件测试127
6.1.2软件测试的目的和原则128
6.1.3软件测试的对象129
6.1.4测试信息流130
6.1.5测试与软件开发各阶段的关系131
6.1.6白盒测试与黑盒测试131
6.2白盒测试的测试用例设计133
6.2.1逻辑覆盖133
6.2.2语句覆盖134
6.2.3判定覆盖134
6.2.4条件覆盖134
6.2.5判定-条件覆盖135
6.2.6条件组合覆盖136
6.2.7路径覆盖136
6.3基本路径测试137
6.4黑盒测试的测试用例设计141
6.4.1等价类划分141
6.4.2边界值分析144
6.5软件测试的策略146
6.5.1单元测试147
6.5.2组装测试149
6.5.3确认测试152
6.5.4系统测试154
6.5.5测试的类型154
6.6人工测试157
6.6.1静态分析157
6.6.2人工测试方法158
6.7调试159
习题160
第三部分面向对象的软件开发方法
第7章统一建模语言UML概述162
7.1UML的基本模型162
7.2UML的事物162
7.2.1结构事物163
7.2.2行为事物163
7.2.3分组事物164
7.2.4注释事物164
7.3UML的关系164
7.3.1依赖关系164
7.3.2关联关系165
7.3.3泛化关系168
7.3.4实现关系169
7.4UML的图169
7.4.1用例图169
7.4.2类图171
7.4.3交互图173
7.4.4状态图174
7.4.5活动图175
7.4.6实现图176
习题178
第8章面向对象分析179
8.1面向对象分析概述179
8.1.1面向对象分析的3个模型179
8.1.2对象模型的5个层次179
8.2建立用例模型180
8.2.1建立用例模型的过程180
8.2.2使用Rose创建用例模型183
8.3建立对象模型187
8.3.1划分主题188
8.3.2确定类与对象188
8.3.3确定关联189
8.3.4确定属性189
8.3.5确定服务190
8.3.6使用Rose建立类图191
8.4建立动态模型197
8.4.1顺序图197
8.4.2协作图200
8.4.3状态图200
习题201
第9章软件体系结构与设计模式202
9.1软件体系结构的基本概念202
9.1.1什么是体系结构202
9.1.2体系结构模式、风格和框架的概念203
9.1.3体系结构的重要作用204
9.2典型的体系结构风格204
9.2.1数据流风格204
9.2.2调用-返回风格205
9.2.3仓库风格207
9.3特定领域的软件体系结构208
9.3.1类属模型208
9.3.2参考模型209
9.4分布式系统结构210
9.4.1多处理器体系结构210
9.4.2客户机∕服务器体系结构211
9.4.3分布式对象体系结构214
9.4.4代理215
9.5体系结构框架216
9.5.1模型-视图-控制器216
9.5.2J2EE体系结构框架217
9.5.3PCMEF与PCBMER框架218
9.6设计模式219
9.6.1抽象工厂220
9.6.2单件222
9.6.3外观222
9.6.4适配器223
9.6.5职责链225
9.6.6中介者226
9.6.7观察者228
习题230
第10章面向对象设计231
10.1面向对象设计过程与准则231
10.1.1面向对象设计过程231
10.1.2面向对象设计准则232
10.2体系结构模块及依赖性233
10.2.1类及其依赖性233
10.2.2接口及其依赖性236
10.2.3包及其依赖性237
10.2.4构件及其依赖性238
10.3系统分解240
10.3.1子系统和类240
10.3.2服务和子系统接口240
10.3.3子系统分层和划分240
10.3.4Coad &Yourdon的面向对象设计模型241
10.3.5子系统之间的两种交互方式241
10.3.6组织系统的两种方案242
10.4问题域部分的设计242
10.5人机交互部分的设计244
10.5.1用户界面设计步骤244
10.5.2Web应用系统的界面设计245
10.6任务管理部分的设计246
10.7数据管理部分的设计247
10.8对象设计248
10.8.1使用模式设计对象248
10.8.2接口规格说明设计251
10.8.3重构对象设计模型252
10.8.4优化对象设计模型252
习题253
第四部分软件维护与软件管理
第11章软件维护256
11.1软件维护的概念256
11.1.1软件维护的定义256
11.1.2影响维护工作量的因素257
11.1.3软件维护的策略257
11.2软件维护活动258
11.2.1软件维护申请报告258
11.2.2软件维护工作流程258
11.2.3维护档案记录259
11.2.4维护评价259
11.3程序修改的步骤及修改的副作用260
11.3.1分析和理解程序260
11.3.2修改程序260
11.3.3修改程序的副作用及其控制262
11.3.4重新验证程序262
11.4软件的维护性263
11.4.1软件维护性定义263
11.4.2软件维护性度量264
11.5提高软件维护性的方法265
11.5.1建立明确的软件质量目标和优先级264
11.5.1使用提高软件维护性的开发技术和工具265
11.5.2实施开发阶段产品的维护性审查265
11.5.3改进文档267
习题267第12章软件过程与软件过程改进…268
12.1软件过程概述268
12.2软件生存期过程国际标准270
12.3软件过程成熟度274
12.3.1什么是软件过程成熟度274
12.3.2过程制度化275
12.4软件能力成熟度模型277
12.4.1CMM与SEI277
12.4.2CMM的演化278
12.4.3CMM族和CMMI279
12.4.4CMMI 1.2简介280
12.4.5CMMI评估288
12.5软件过程改进289
12.5.1软件过程改进的IDEAL模型289
12.5.2软件过程改进框架290
12.5.3有效的软件过程292
习题293
第13章软件项目管理294
13.1软件项目管理概述294
13.1.1软件项目管理的目标294
13.1.2软件项目管理涉及的几个方面294
13.2项目估算296
13.2.1项目策划与项目估算296
13.2.2软件规模估算的功能点方法297
13.2.3软件开发成本估算301
13.3风险管理307
13.3.1什么是软件风险307
13.3.2风险管理的任务309
13.3.3风险评估310
13.3.4风险控制313
13.3.5做好风险管理的建议315
13.4进度管理316
13.4.1进度控制问题316
13.4.2甘特图318
13.4.3时标网状图319
13.4.4PERT图319
13.5需求管理321
13.5.1系统需求与软件需求322
13.5.2需求工程324
13.5.3需求变更325
13.5.4需求变更控制327
13.5.5可追溯性管理330
13.6配置管理331
13.6.1什么是软件配置管理332
13.6.2软件配置标识332
13.6.3变更管理334
13.6.4版本控制337
13.6.5系统建立339
13.6.6配置审核340
13.6.7配置状态报告340
习题341
第14章软件工程标准及软件文档342
14.1软件工程标准342
14.1.1标准的概念342
14.1.2软件标准化的意义343
14.1.3标准的分类与分级344
14.1.4软件工程标准的制定与实施347
14.1.5软件组织内的标准化工作348
14.2软件文档348
14.2.1软件文档的作用和分类348
14.2.2软件基本文档的内容要求350
14.2.3对文档编制的质量要求353
14.2.4文档的管理和维护356
习题356
参考文献357

教学资源推荐
作者: (美)Kevin F. Brennan 著
作者: 刘凤岐 编著
作者: (加)Dennis Roddy 著
作者: 王立柱 编著
参考读物推荐
作者: [美]迈克尔·贝耶勒(Michael Beyeler)著
作者: [美] 迈克尔·弗里曼(Michael Freeman), 乔尔·罗斯(Joel Ross) 著