《软件工程导论 第3版》求取 ⇩

第一章 软件危机与软件工程1

1.1 软件危机1

1.1.1 什么是软件危机1

1.1.2 产生软件危机的原因2

1.1.3 解决软件危机的途径5

1.2 软件工程5

1.2.1 软件工程的基本原理5

1.2.2 软件工程的传统途径7

1.2.3 生命周期各阶段的基本任务8

1.2.4 瀑布模型12

1.3 技术审查和管理复审13

1.3.1 进行审查和复审的必要性13

1.3.2 技术审查的标准和方法14

1.4 小结15

习题一16

第二章 可行性研究18

2.1 可行性研究的任务18

2.2 可行性研究的步骤18

2.2.1 复查系统规模和目标19

2.2.2 研究目前正在使用的系统19

2.2.3 导出新系统的高层逻辑模型19

2.2.4 重新定义问题20

2.2.5 导出和评价供选择的解法20

2.2.6 推荐行动方针20

2.2.7 草拟开发计划21

2.2.8 书写文档提交审查21

2.3 系统流程图21

2.3.1 符号21

2.3.2 例子22

2.3.3 分层23

2.4 数据流图23

2.4.1 符号23

2.4.2 例子25

2.4.3 命名27

2.4.4 用途28

2.5 数据字典29

2.5.1 数据字典的内容30

2.5.2 定义数据的方法30

2.5.3 数据字典的用途31

2.5.4 数据字典的实现31

2.6 成本/效益分析32

2.6.1成本估计33

2.6.2 成本/效益分析的方法34

2.7 小结36

习题二36

第三章 需求分析38

3.1 需求分析的任务38

3.1.1 确定对系统的综合要求38

3.1.2 分析系统的数据要求39

3.1.3 导出系统的逻辑模型39

3.1.4 修正系统开发计划39

3.1.5 开发原型系统39

3.2 分析过程40

3.2.1 沿数据流图回溯40

3.2.2 用户复查41

3.2.3 细化数据流图41

3.2.4 修正开发计划42

3.2.5 书写文档42

3.2.6 审查和复审43

3.3 概念模型和规范化43

3.3.1 ER模型43

3.3.2 范式45

3.4 图形工具45

3.4.1 层次方框图45

3.4.2 Warnier图46

3.4.3 IPO图47

3.5 验证软件需求48

3.5.1 从哪些方面验证软件需求的正确性48

3.5.2 验证软件需求的方法48

3.5.3 用于需求分析的软件工具49

3.5.4 超高级语言和第四代语言50

3.6 小结51

习题三52

第四章 总体设计54

4.1 总体设计的过程54

4.1.1 设想供选择的方案54

4.1.2 选取合理的方案55

4.1.3 推荐最佳方案55

4.1.4 功能分解55

4.1.5 设计软件结构55

4.1.6 数据库设计56

4.1.7 制定测试计划56

4.1.8 书写文档56

4.1.9 审查和复审57

4.2 软件设计的概念和原理57

4.2.1 模块化57

4.2.2 抽象58

4.2.3 信息隐蔽和局部化59

4.2.4 模块独立59

4.3 启发式规则62

4.3.1 改进软件结构提高模块独立性62

4.3.2 模块规模应该适中62

4.3.3 深度、宽度、扇出和扇入都应适当62

4.3.4 模块的作用域应该在控制域之内63

4.3.5 力争降低模块接口的复杂程度63

4.3.6 设计单入口单出口的模块64

4.3.7 模块功能应该可以预测64

4.4 图形工具64

4.4.1 层次图和HIPO图64

4.4.2 结构图65

4.5 面向数据流的设计方法66

4.5.1 概念67

4.5.2 变换分析68

4.5.3 事务分析74

4.5.4 设计优化75

4.6 小结75

习题四76

第五章 详细设计80

5.1 结构程序设计80

5.2 详细设计的工具83

5.2.1 程序流程图83

5.2.2 盒图(N_S图)84

5.2.3 PAD图84

5.2.4 判定表86

5.2.5 判定树87

5.2.6 过程设计语言(PDL)87

5.2.7 模块开发文件夹88

5.3 Jackson程序设计方法88

5.3.1 Jackson图89

5.3.2 改进的Jackson图90

5.3.3 Jackson方法90

5.4 Warnier程序设计方法95

5.4.1 Warnier方法95

5.4.2 Warnier方法的辅助技术100

5.5 程序复杂程度的定量度量104

5.5.1 McCabe方法104

5.5.2 Halstead方法106

5.6 小结107

习题五107

第六章 编码113

6.1 程序设计语言113

6.1.1 程序设计语言分类113

6.1.2 程序设计语言的特点114

6.1.3 选择一种语言117

6.2 程序设计途径118

6.2.1 写程序的风格119

6.2.2 程序设计方法论121

6.2.3 程序设计自动化121

6.2.4 程序设计工具122

6.3 小结124

习题六124

第七章 测试126

7.1 基本概念126

7.1.1 软件测试的目标127

7.1.2 黑盒测试和白盒测试127

7.1.3 软件测试的步骤128

7.1.4 测试阶段的信息流129

7.2 单元测试130

7.2.1 单元测试考虑130

7.2.2 单元测试过程132

7.3 集成测试134

7.3.1 自顶向下结合135

7.3.2 自底向上结合137

7.3.3 不同集成测试策略的比较137

7.4 验收测试138

7.4.1 验收测试的范围138

7.4.2 软件配置复查139

7.5 设计测试方案139

7.5.1 逻辑覆盖139

7.5.2 等价划分143

7.5.3 边界值分析146

7.5.4 错误推测147

7.5.5 实用测试策略148

7.6 调试151

7.6.1 调试技术151

7.6.1 调试策略152

7.7 软件可靠性154

7.7.1 基本概念154

7.7.2 估算平均无故障时间的方法155

7.7.3 程序正确性证明157

7.8 日立预测法158

7.8.1 测试完成率模型158

7.8.2 错误发现率模型159

7.8.3 使用日立预测法的步骤159

7.9 自动测试工具159

7.9.1 测试数据生成程序160

7.9.2 动态分析程序160

7.9.3 静态分析程序160

7.9.4 文件比较程序161

7.10 小结161

习题七162

第八章 维护166

8.1 软件维护的定义166

8.2 维护的特点167

8.2.1 结构化维护与非结构化维护的对比167

8.2.2 维护的代价168

8.2.3 维护的问题168

8.3 维护过程169

8.3.1 维护组织169

8.3.2 维护报告169

8.3.3 维护的事件流170

8.3.4 保存维护记录171

8.3.5 评价维护活动171

8.4 可维护性172

8.4.1 决定软件可维护性的因素172

8.4.2 文档173

8.4.3 可维护性复审174

8.5 小结174

习题八175

第九章 面向对象方法学引论176

9.1 传统方法学的缺点176

9.1.1 存在的问题176

9.1.2 出现问题的原因178

9.2 软件工程的新途径180

9.2.1 快速原型法180

9.2.2 面向对象方法学182

9.2.3 两种新途径的结合187

9.3 基本概念188

9.3.1 对象188

9.3.2 其他概念191

9.4 面向对象建模194

9.5 对象模型196

9.5.1 表示类——对象的图形符号196

9.5.2 表示结构的图形符号197

9.5.3 例子200

9.6 动态模型201

9.6.1 术语201

9.6.2 表示方法202

9.6.3 例子202

9.7 功能模型203

9.7.1 表示方法203

9.7.2 与其他两种模型的关系203

9.8 小结204

习题九205

第十章 面向对象分析206

10.1 面向对象分析的基本过程206

10.1.1 概述206

10.1.2 三个子模型与五个层次207

10.2 需求陈述208

1.2.1 书写要点208

10.2.2 例子209

10.3 建立对象模型210

10.3.1 确定类——对象210

10.3.2 确定关联212

10.3.3 划分主题216

10.3.4 确定属性216

10.3.5 识别继承关系219

10.3.6 反复修改220

10.4 建立动态模型221

10.4.1 编写脚本222

10.4.2 设想用户界面223

10.4.3 画事件跟踪图224

10.4.4 画状态图224

10.4.5 审查动态模型227

10.5 建立功能模型227

10.5.1 画出基本系统模型图227

10.5.2 画出功能级数据流图228

10.5.3 描述处理框功能228

10.6 定义服务229

10.6.1 常规行为229

10.6.2 从事件导出的操作229

10.6.3 与数据流图中处理框对应的操作230

10.6.4 利用继承减少冗余操作230

10.7 小结230

习题十230

第十一章 面向对象设计232

11.1 面向对象设计的准则232

11.1.1 模块化233

11.1.2 抽象233

11.1.3 信息隐藏233

11.1.4 弱耦合233

11.1.5 强内聚234

11.1.6 可重用234

11.2 启发规则235

11.2.1 设计结果应该清晰易懂235

11.2.2 一般一特殊结构的深度应适当235

11.2.3 设计简单的类235

11.2.4 使用简单的协议236

11.2.5 使用简单的服务236

11.2.6 把设计变动减至最小236

11.3 软件重用237

11.3.1 概念237

11.3.2 软件重用的效果237

11.3.3 软件重用技术239

11.3.4 类构件239

11.4 系统分解241

11.4.1 子系统之间的两种交互方式242

11.4.2 组织系统的两种方案242

11.4.3 设计系统的拓扑结构243

11.5 设计问题域子系统243

11.5.1 调整需求244

11.5.2 重用已有的类244

11.5.3 把问题域类组合在一起244

11.5.4 增添一般化类以建立协议244

11.5.5 调整继承层次245

11.5.6 ATM系统之例247

11.6 设计人-机交互子系统247

11.6.1 设计人-机交互界面的准则247

11.6.2 设计人-机交互子系统的策略248

11.7 设计任务管理子系统250

11.7.1 分析并发性250

11.7.2 设计任务管理子系统250

11.8 设计数据管理子系统252

11.8.1 选择数据存储管理模式252

11.8.2 设计数据管理子系统253

11.8.3 例子255

11.9 设计类中的服务255

11.9.1 确定类中应有的服务255

11.9.2 设计实现服务的方法256

11.10 设计关联257

11.10.1 关联的遍历257

11.10.2 实现单向关联257

11.10.3 实现双向关联257

11.10.4 链属性的实现258

11.11 设计优化258

11.11.1 确定优先级258

11.11.2 提高效率的几项技术259

11.11.3 调整继承关系260

11.12 小结262

习题十一263

第十二章 面向对象实现264

12.1 程序设计语言264

12.1.1 面向对象的语言与非面向对象的语言264

12.1.2 面向对象语言的技术特点265

12.1.3 选择面向对象语言268

12.2 程序设计风格269

12.2.1 提高可重用性269

12.2.2 提高可扩充性272

12.2.3 提高健壮性272

12.3 面向对象测试273

12.4 小结274

习题十二275

第十三章 管理技术276

13.1 成本估计276

13.1.1 参数方程276

13.1.2 标准值法277

13.1.3 COCOMO模型279

13.2 进度计划282

13.2.1 Gantt图(横道图)282

13.2.2 工程网络283

13.2.3 估算进度285

13.2.4 关键路径286

13.2.5 机动时间286

13.3 人员组织288

13.3.1 程序设计小组的组织289

13.3.2 主程序员组289

13.4 质量保证290

13.4.1 软件质量290

13.4.2 质量保证292

13.5 项目计划293

13.5.1 项目计划的内容293

13.5.2 项目报告293

13.5.3变动控制294

13.6 软件管理工具295

13.7 小结295

习题十三295

附录A C++类库管理系统的分析与设计297

A.1 面向对象分析297

A.1.1 需求297

A.1.2 建立对象模型298

A.2 面向对象设计299

A.2.1 设计类库结构299

A.2.2 设计问题域子系统300

A.2.3 设计人-机交互子系统301

A.2.4 设计其他类303

附录B 一个汉字行编辑程序的设计305

B.1 设计规格说明305

B.1.1 外部编辑命令305

B.1.2 编辑命令306

B.1.3 输出信息306

B.2 概要设计308

B.2.1 正文文件308

B.2.2 两个工作模式309

B.2.3 数据元素310

B.2.4 过程310

B.3 概要设计结果311

B.4 详细设计314

B.4.1 数据元素314

B.4.2 控制数据元素316

B.4.3 编辑过程316

B.4.4 输入模式的过程317

B.4.5 编辑模式的过程318

B.5 详细设计结果322

B.5.1 编辑程序的详细结构322

B.5.2 为PASCAL伪码323

B.5.3 实现编辑程序的算法325

参考文献352

1998《软件工程导论 第3版》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由张海藩编著 1998 北京:清华大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

软件工程导论(1987 PDF版)
软件工程导论
1987 北京:清华大学出版社
CAD软件工程(1991年10月第1版 PDF版)
CAD软件工程
1991年10月第1版
软件工程:方法·工具·实践 第二版(1988 PDF版)
软件工程:方法·工具·实践 第二版
1988
软件工程引论(1995 PDF版)
软件工程引论
1995 天津:南开大学出版社
软件工程引论(1987 PDF版)
软件工程引论
1987 南京:南京大学出版社
软件工程引论(1987 PDF版)
软件工程引论
1987 成都:成都电讯工程学院出版社
软件工程概论(1987 PDF版)
软件工程概论
1987 长沙:湖南科学技术出版社
软件工程学(1991 PDF版)
软件工程学
1991 北京:电子工业出版社
软件工程(1997 PDF版)
软件工程
1997 重庆:重庆大学出版社
ADA软件工程(1986 PDF版)
ADA软件工程
1986 北京:科学普及出版社
软件工程(1997 PDF版)
软件工程
1997 北京:高等教育出版社
软件工程基础(1986 PDF版)
软件工程基础
1986 上海:上海科学技术出版社
软件工程  初级(1999 PDF版)
软件工程 初级
1999 北京:清华大学出版社
软件工程导论  修订版(1992 PDF版)
软件工程导论 修订版
1992 北京:清华大学出版社
软件工程(1994 PDF版)
软件工程
1994 北京:中国铁道出版社