图书介绍

软件工程 第2版PDF|Epub|txt|kindle电子书版本网盘下载

软件工程 第2版
  • 李代平编著 著
  • 出版社: 北京:冶金工业出版社
  • ISBN:7502441255
  • 出版时间:2006
  • 标注页数:492页
  • 文件大小:183MB
  • 文件页数:506页
  • 主题词:软件工程

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

软件工程 第2版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 绪论1

1.1 软件概述1

1.1.1 什么是计算机软件1

1.1.2 软件的特点2

1.1.3 软件的分类3

1.1.4 软件的发展5

1.1.5 软件危机5

1.2 软件工程7

1.2.1 软件工程与方法学8

1.2.2 软件工程的基本原理9

1.2.3 软件工程的目标11

1.2.4 软件工程的内容12

1.2.5 软件工程原则13

1.2.6 软件工程面临的问题14

小结15

综合练习一15

一、填空题15

二、选择题15

三、简答题16

第2章 基本理论17

2.1 软件工程过程17

2.2 软件生命周期17

2.2.1 软件分析时期18

2.2.2 软件设计时期19

2.2.3 编码与测试时期20

2.2.4 运行与维护时期21

2.3 软件生命周期模型21

2.3.1 软件生命周期模型的概念21

2.3.2 瀑布模型22

2.3.3 原型模型23

2.3.4 增量模型24

2.3.5 螺旋模型26

2.3.6 喷泉模型27

2.3.7 基于知识的模型28

2.3.8 变换模型29

2.4 软件开发方法29

2.4.1 结构化方法29

2.4.2 Jackson方法30

2.4.3 维也纳开发方法30

2.4.4 面向对象的开发方法31

2.5 软件工具与开发31

2.5.1 软件工具箱31

2.5.2 软件开发环境32

2.5.3 计算机辅助软件工程32

小结32

综合练习二33

一、填空题33

二、选择题33

三、简答题33

第3章 可行性研究34

3.1 可行性研究任务与步骤34

3.1.1 研究任务35

3.1.2 研究步骤37

3.2 系统分析39

3.2.1 系统分析员39

3.2.2 面临的问题域40

3.2.3 通信技术40

3.3 分析原理42

3.3.1 信息域42

3.3.2 建立模型43

3.3.3 分解44

3.4 系统模型与模拟45

3.4.1 系统模型45

3.4.2 系统建模和模拟46

3.5 成本-效益分析47

3.6 可行性研究的文档49

3.7 项目开发计划50

3.7.1 方案选择50

3.7.2 制定项目开发计划50

小结51

综合练习三51

一、填空题51

二、选择题51

三、简答题52

第4章 软件需求分析53

4.1 需求分析53

4.1.1 需求分析的特点53

4.1.2 需求分析的原则54

4.1.3 需求分析的任务54

4.1.4 需求分析的方法55

4.2 结构化分析57

4.2.1 自顶向下逐层分解57

4.2.2 结构化分析步骤58

4.3 系统流程图59

4.4 数据流图60

4.4.1 基本图形符号61

4.4.2 画数据流图62

4.4.3 结构化分析方法的应用65

4.5 数据字典69

4.5.1 内容及格式69

4.5.2 数据字典的实现71

4.6 关系数据理论71

4.6.1 数据依赖72

4.6.2 关系模式的操作异常72

4.6.3 范式73

4.6.4 EAR方法77

小结80

综合练习四80

一、填空题80

二、选择题80

三、简答题81

第5章 总体设计82

5.1 软件设计的重要性82

5.2 设计过程83

5.3 软件总体设计84

5.4 设计基本原理85

5.4.1 抽象86

5.4.2 细化86

5.4.3 模块化87

5.4.4 软件体系结构88

5.4.5 程序结构89

5.4.6 数据结构90

5.4.7 软件过程91

5.5 体系结构设计92

5.5.1 软件结构图92

5.5.2 模块的大小94

5.5.3 扇出和扇入与深度和宽度94

5.5.4 模块的耦合95

5.5.5 模块的内聚97

5.5.6 结构设计的一般准则99

5.5.7 模块的作用域与控制域101

5.6 结构化设计101

5.6.1 数据流的类型102

5.6.2 过程步骤103

5.6.3 变换分析设计104

5.6.4 事务分析设计105

5.6.5 混合流设计106

5.6.6 结构化设计方法应用示例108

5.6.7 设计的后期处理109

5.7 软件结构优化109

5.7.1 软件结构设计优化准则109

5.7.2 软件结构的HIPO图111

小结111

综合练习五112

一、填空题112

二、选择题112

三、简答题112

第6章 软件详细设计113

6.1 细节设计的任务与方法113

6.1.1 细节设计的基本任务113

6.1.2 细节设计方法114

6.2 设计表示法115

6.2.1 结构化语言115

6.2.2 判定表115

6.2.3 判定树116

6.3 结构化程序设计117

6.3.1 程序流程图117

6.3.2 三种基本控制结构118

6.3.3 常用符号119

6.4 结构化定理120

6.4.1 程序函数121

6.4.2 基本定理121

6.4.3 常见错误122

6.4.4 过程设计语言124

6.5 面向数据结构的设计127

6.5.1 Jackson图127

6.5.2 纲要逻辑129

6.5.3 Jackson方法129

6.5.4 JSP应用130

6.5.5 JSD方法132

小结136

综合练习六137

一、填空题137

二、选择题137

三、简答题137

第7章 面向对象方法概论139

7.1 面向对象简介139

7.1.1 什么是面向对象139

7.1.2 面向对象方法的历史及现状141

7.2 面向对象的相关概念141

7.2.1 对象141

7.2.2 类143

7.2.3 对象图144

7.2.4 属性144

7.2.5 服务(操作或方法)145

7.2.6 封装145

7.2.7 继承146

7.2.8 多重继承149

7.2.9 消息151

7.2.10 结构与连接152

7.2.11 多态性153

7.2.12 永久对象156

7.2.13 主动对象156

7.2.14 对象类的表示方法157

7.3 链接与关联157

7.3.1 一般概念157

7.3.2 重数158

7.3.3 关联的重要性159

7.3.4 三元关联159

7.3.5 关联的候选关键字159

7.3.6 异或关联160

7.3.7 资格关联160

7.3.8 链接属性160

7.3.9 用关联模型化为类161

7.3.10 角色名161

7.3.11 排序162

7.3.12 资格符162

7.4 聚合163

7.4.1 聚合与关联163

7.4.2 聚合与概括163

7.4.3 递归聚合164

7.4.4 操作的传播165

7.4.5 物理聚合与分类聚合165

7.4.6 物理聚合的语义扩展166

7.4.7 分类聚合的语义扩展166

7.5 概括166

7.5.1 一般概念166

7.5.2 概括的使用167

7.5.3 重写特征167

7.5.4 抽象类和具体类168

7.5.5 概括与其他对象建模结构168

7.6 构造分组169

7.6.1 模块169

7.6.2 表169

小结169

综合练习七169

一、填空题169

二、选择题170

三、简答题170

第8章 模型171

8.1 统一建模语言171

8.1.1 模型的建立172

8.1.2 UML的基本图标172

8.1.3 UML的基本元素181

8.1.4 UML的语法规则181

8.1.5 UML的词别182

8.2 对象模型182

8.2.1 表示方法182

8.2.2 表示结构183

8.2.3 例子185

8.3 动态模型185

8.3.1 事件和状态186

8.3.2 操作190

8.3.3 嵌套状态图191

8.3.4 实践技巧194

8.4 功能模型195

8.4.1 数据流图195

8.4.2 指定的操作196

8.4.3 约束197

8.4.4 功能模型的实例(飞行模拟机装置)197

8.4.5 功能模型与对象模型和动态模型的关系200

小结201

综合练习八201

一、填空题201

二、选择题201

三、简答题202

第9章 发现对象、建立对象类203

9.1 对象、主动对象以及它们的类203

9.2 表示法204

9.3 研究问题域和用户需求205

9.3.1 研究用户需求,明确系统责任205

9.3.2 研究问题域206

9.3.3 确定系统边界207

9.4 发现对象207

9.4.1 正确地运用抽象原则207

9.4.2 策略与启发208

9.4.3 审查和筛选210

9.4.4 识别主动对象212

9.5 对象的发现和标识212

9.5.1 动机212

9.5.2 方法213

9.5.3 三视图模型(3VM)213

9.5.4 语言信息分析214

9.6 对象分类,建立类图的对象层216

9.6.1 异常情况的检查和调整216

9.6.2 类的命名217

9.6.3 建立类图的对象层217

9.7 电梯例子218

9.7.1 功能需求218

9.7.2 发现对象218

9.7.3 对象层表示219

小结219

综合练习九219

一、填空题219

二、选择题220

三、简答题220

第10章 定义属性与服务221

10.1 对象的属性和服务221

10.2 表示法222

10.3 定义属性222

10.3.1 策略与启发222

10.3.2 审查与筛选223

10.3.3 推迟到OOD考虑的问题225

10.3.4 属性的命名和定位226

10.3.5 属性的详细说明226

10.4 定义服务226

10.4.1 对象的状态与状态转换图226

10.4.2 行为分类228

10.4.3 发现服务的策略与启发229

10.4.4 审查与调整229

10.4.5 认识对象的主动行为230

10.4.6 服务的命名和定位230

10.4.7 服务的详细说明230

10.5 建立类图的特征层231

10.6 电梯例子231

10.6.1 电梯系统的属性描述232

10.6.2 电梯系统的服务定义233

10.6.3 电梯系统的特征层238

小结238

综合练习十238

一、填空题238

二、选择题239

三、简答题239

第11章 定义结构与连接240

11.1 整体-部分结构240

11.1.1 整体-部分结构及其用途240

11.1.2 表示法242

11.1.3 如何发现整体-部分结构243

11.1.4 审查与筛选244

11.1.5 简化对象的定义244

11.1.6 支持软件复用245

11.1.7 整体-部分结构的进一步运用246

11.1.8 调整对象层和属性层247

11.2 一般-特殊结构247

11.2.1 一般-特殊结构及其用途247

11.2.2 表示法248

11.2.3 如何发现一般-特殊结构249

11.2.4 审查与调整250

11.2.5 多继承及多态性问题250

11.2.6 一般-特殊结构的简化253

11.2.7 调整对象层和特征层253

11.3 实例连接253

11.3.1 简单的实例连接254

11.3.2 复杂的实例连接及其表示255

11.3.3 三元关联问题257

11.3.4 如何建立实例连接257

11.3.5 对象层、特征层的增补及实例连接说明259

11.4 消息连接259

11.4.1 消息的定义259

11.4.2 顺序系统中的消息259

11.4.3 并发系统中的消息260

11.4.4 消息对OOA的意义263

11.4.5 OOA对消息的表示——消息连接263

11.5 如何建立消息连接264

11.5.1 建立控制线程内部的消息连接264

11.5.2 建立控制线程之间的消息连接265

11.5.3 对象分布问题及其消息的影响265

11.6 消息的详细说明266

11.7 电梯例子267

11.7.1 一般-特殊关系267

11.7.2 整体-部分关系267

11.7.3 连接267

11.7.4 电梯控制系统的关系层268

小结268

综合练习十一268

一、填空题268

二、选择题268

三、简答题269

第12章 面向对象设计原则270

12.1 类型一致性与闭合行为270

12.1.1 类与类型270

12.1.2 类型一致性原则270

12.1.3 闭合行为原则271

12.2 封装与共生性272

12.2.1 封装结构272

12.2.2 共生性273

12.2.3 面向对象系统中共生性的滥用275

12.2.4 共生性的术语276

12.3 领域、依附集和内聚276

12.3.1 对象类的领域276

12.3.2 依附集278

12.3.3 类的内聚:一个类和它的特性280

12.4 继承与多态性的危险性282

12.4.1 继承的滥用282

12.4.2 错误的聚集282

12.4.3 倒置的层次结构282

12.4.4 混淆类及其实例283

12.4.5 误用283

12.4.6 多态性的危险性284

12.5 状态空间和行为285

12.5.1 一个类的状态空间和行为285

12.5.2 子类的状态空间286

12.5.3 子类的行为286

12.5.4 状态空间的一个约束条件:类的不变式287

12.5.5 前置条件和后置条件288

12.5.6 类接口中支持的状态288

12.5.7 类接口中支持的行为289

12.5.8 类接口中操作的聚合290

小结290

综合练习十二290

一、填空题290

二、选择题291

三、简答题291

第13章 控制驱动部分的设计292

13.1 什么是控制驱动部分292

13.2 相关技术问题292

13.2.1 系统总体方案292

13.2.2 软件体系结构293

13.2.3 分布式系统的体系结构风格294

13.2.4 系统的并发性297

13.3 如何设计控制驱动部分300

13.3.1 选择软件体系结构风格300

13.3.2 确定系统分布方案301

13.3.3 识别控制流304

13.3.4 用主动对象表示控制流306

13.3.5 把控制驱动部分看作一个主题308

小结308

综合练习十三308

一、填空题308

二、选择题308

三、简答题309

第14章 对象设计310

14.1 对象设计综述310

14.1.1 从分析和系统结构着手310

14.1.2 对象设计的步骤311

14.1.3 对象模型工具311

14.2 组合三种模型311

14.3 设计算法312

14.3.1 选择算法312

14.3.2 选择数据结构314

14.3.3 定义内部类和操作314

14.3.4 指定操作的职责315

14.4 设计优化315

14.4.1 添加冗余关联获取有效访问316

14.4.2 重新安排执行次序以获得效率317

14.4.3 保存导出属性避免重复计算317

14.5 控制实现318

14.5.1 在程序内进行状态设置318

14.5.2 状态机器引擎319

14.5.3 控制作为并发任务319

14.6 继承的调整319

14.6.1 重新安排类和操作319

14.6.2 抽象出公共的行为320

14.6.3 使用授权共享实现321

14.7 关联设计322

14.7.1 分析关联遍历322

14.7.2 单向关联322

14.7.3 双向关联323

14.7.4 链接属性323

14.8 对象的表示324

14.9 物理打包324

14.9.1 信息隐藏324

14.9.2 实体的相关性325

14.9.3 构造模块326

14.10 设计决策文档326

小结327

综合练习十四327

一、填空题327

二、选择题327

三、简答题328

第15章 数据库及其接口设计329

15.1 数据管理系统及其选择329

15.2 技术整合336

15.3 数据接口337

15.4 对象存储方案和数据接口的设计策略338

15.4.1 针对文件系统的设计339

15.4.2 针对RDBMS的设计343

15.4.3 使用OODBMS352

小结352

综合练习十五353

一、填空题353

二、选择题353

三、简答题353

第16章 用户界面设计354

16.1 人的因素354

16.1.1 分析活动者——与系统交互的人354

16.1.2 从Use Case分析人机交互355

16.1.3 分析处理异常事件的人机交互358

16.1.4 命令的组织358

16.1.5 输出信息的组织结构362

16.2 界面设计风格362

16.2.1 菜单的选择363

16.2.2 对话框364

16.2.3 窗口365

16.3 人机界面的设计准则365

16.4 人机界面设计过程367

16.4.1 用户界面模型367

16.4.2 界面支持系统368

16.4.3 界面元素369

16.4.4 设计的形式369

16.5 描述方法与技术371

16.5.1 灵境技术372

16.5.2 多通道人机交互技术372

小结373

综合练习十六373

一、填空题373

二、选择题374

三、简答题374

第17章 形式化方法375

17.1 基础知识375

17.1.1 形式化方法概念375

17.1.2 形式化规约语言376

17.2 有限状态机(FSM)378

17.3 Petri网基本原理379

17.3.1 静态结构379

17.3.2 动态特征380

17.3.3 转移启动规则381

17.3.4 行为特性383

17.3.5 行为特性分析方法386

17.3.6 结构特性分析方法392

17.3.7 Petri网到程序结构的转换395

小结398

综合练习十七398

一、填空题398

二、选择题398

三、简答题399

第18章 软件质量400

18.1 软件质量概述400

18.1.1 软件质量的定义400

18.1.2 软件质量特性400

18.1.3 软件质量特性之间的竞争404

18.2 软件质量的度量和评价405

18.2.1 软件质量的度量405

18.2.2 软件质量度量的分类406

18.2.3 软件质量评价406

18.3 软件质量保证409

18.3.1 软件质量保证的概述409

18.3.2 软件质量保证原则409

18.3.3 软件质量保证计划410

18.3.4 软件质量保证的措施410

18.3.5 软件质量管理小组410

18.4 技术评审与审查411

18.4.1 评审过程411

18.4.2 选择参加评审的成员412

18.4.3 评审的管理和组织412

18.4.4 评审的方法412

18.4.5 走查和审查412

18.4.6 开发过程的评审413

18.4.7 对评审的综合评价414

18.5 软件的可靠性415

小结415

综合练习十八415

一、填空题415

二、选择题416

三、简答题416

第19章 软件实现417

19.1 程序设计语言的特性及选择417

19.1.1 程序设计语言特性417

19.1.2 程序设计语言的选择418

19.2 程序设计风格421

19.3 程序设计效率423

19.3.1 代码效率423

19.3.2 内存效率423

19.3.3 I/O效率424

19.4 冗余编程424

19.5 软件容错技术425

19.5.1 容错软件425

19.5.2 容错的一般方法426

19.5.3 容错软件的设计过程429

19.5.4 软件的容错系统结构429

小结432

综合练习十九432

一、填空题432

二、选择题432

三、简答题433

第20章 软件测试434

20.1 软件测试概述434

20.1.1 软件测试的目的434

20.1.2 软件测试的原则434

20.2 测试方法435

20.2.1 静态测试435

20.2.2 动态测试435

20.3 测试用例的设计436

20.3.1 白盒技术436

20.3.2 黑盒技术441

20.4 测试过程445

20.4.1 软件测试过程中的信息445

20.4.2 软件测试的步骤与各开发阶段的关系445

20.4.3 单元测试446

20.4.4 集成测试447

20.4.5 确认测试450

20.5 调试451

小结452

综合练习二十452

一、填空题452

二、选择题453

三、简答题453

第21章 软件维护454

21.1 软件维护概述454

21.1.1 软件维护的定义454

21.1.2 影响维护工作的因素455

21.1.3 维护成本455

21.2 软件可维护性455

21.2.1 软件可维护性的定义455

21.2.2 可维护性的度量456

21.3 软件维护的特点458

21.3.1 非结构化维护和结构化维护458

21.3.2 维护的困难性459

21.3.3 软件维护的费用459

21.4 软件维护的实施460

21.4.1 维护的组织460

21.4.2 维护的流程460

21.4.3 维护技术461

21.4.4 维护的副作用462

21.5 维护“老化代码”463

21.6 逆向工程和再工程464

21.6.1 预防性维护464

21.6.2 逆向工程的元素465

21.6.3 再工程中的重构技术465

小结468

综合练习二十一469

一、填空题469

二、选择题469

三、简答题469

第22章 软件项目管理与计划470

22.1 软件项目管理概述470

22.1.1 软件管理的对象470

22.1.2 软件开发中的资源471

22.1.3 分解技术472

22.2 项目管理过程472

22.3 软件开发成本估算473

22.3.1 软件开发成本估算方法473

22.3.2 软件开发成本估算的经验模型474

22.4 风险分析476

22.4.1 风险识别477

22.4.2 风险估算477

22.4.3 风险评价478

22.4.4 风险驾驭和监控479

22.5 进度安排480

22.5.1 软件开发小组人数与软件生产率481

22.5.2 任务的确定与并行性481

22.5.3 制定开发进度计划482

22.5.4 进度安排的图形方法483

22.5.5 项目的追踪和控制484

22.6 软件项目的组织484

22.6.1 软件项目管理的特点484

22.6.2 软件项目组织的建立485

22.6.3 人员配备487

小结489

综合练习二十二489

一、填空题489

二、选择题490

三、简答题490

参考文献491

热门推荐