《软件工程实用教程 第2版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:周丽娟,王华,张树东编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2016
  • ISBN:9787302426158
  • 页数:365 页
图书介绍:全书分为四个部分。第一部分介绍了软件可行性分析、软件计划、结构化分析设计、编码、测试以及软件维护阶段的过程、方法、工具、文档及案例。第二部分介绍面向对象的概念、模型、分析、设计及实现过程。第三部分介绍了软件项目管理、软件质量管理、软件配置管理及软件过程管理的内容。第四部分介绍了软件工程中的一些高级课题,如基于构件的软件工程、敏捷开发、WEB工程等。

第一部分 传统的软件工程 3

第1章 软件工程概述 3

1.1 软件的概念和特征 3

1.1.1 软件的概念 3

1.1.2 软件的分类 4

1.2 软件危机 5

1.2.1 软件危机的主要表现 6

1.2.2 产生软件危机的原因 7

1.2.3 解决软件危机的途径 8

1.3 软件工程 9

1.3.1 软件工程的定义 9

1.3.2 软件工程的目标 10

1.3.3 软件工程的研究内容 11

1.3.4 软件工程的基本原理 12

1.4 软件生存周期 13

1.4.1 软件生存周期定义 14

1.4.2 软件生存周期的基本任务 14

1.5 软件生存周期模型 14

1.5.1 瀑布模型 14

1.5.2 原型模型 15

1.5.3 增量模型 17

1.5.4 螺旋模型 17

1.5.5 喷泉模型 18

1.5.6 形式化方法模型 19

1.5.7 基于组件的开发模型 19

1.5.8 第四代技术模型 20

1.5.9 混合模型 20

小结 20

习题 20

第2章 可行性研究与软件开发计划 22

2.1 可行性研究的任务 22

2.2 可行性研究的过程 23

2.3 成本/效益分析 24

2.3.1 成本估计方法 24

2.3.2 成本/效益分析方法 25

2.4 可行性研究报告 27

2.5 软件开发计划 27

2.5.1 软件作用范围 28

2.5.2 资源需求 28

2.5.3 进度安排 28

2.6 软件开发计划说明书 28

小结 29

习题 30

第3章 需求工程 31

3.1 软件需求定义 31

3.1.1 业务需求 32

3.1.2 用户需求 32

3.1.3 功能需求 32

3.1.4 非功能需求 32

3.2 需求工程过程 33

3.3 需求的获取 34

3.3.1 需求获取的过程 34

3.3.2 需求获取的常用方法 35

3.4 需求分析 37

3.4.1 需求分析的特点 37

3.4.2 需求分析的原则 37

3.4.3 需求分析的任务 38

3.4.4 需求分析的方法 39

3.4.5 需求分析过程 40

3.5 需求定义 40

3.6 需求验证 42

3.7 需求管理 44

3.8 案例:小型教学管理系统 46

小结 49

习题 49

第4章 结构化分析 50

4.1 结构化分析方法 50

4.1.1 结构化分析策略 50

4.1.2 SA的描述工具 51

4.1.3 SA的分析步骤 51

4.2 数据流图 52

4.2.1 数据流图符号 52

4.2.2 绘制分层数据流图的方法 53

4.2.3 实例 54

4.2.4 数据流图的绘制与其他流程图的差别 56

4.3 数据字典 57

4.3.1 数据字典的内容 57

4.3.2 数据字典使用符号 58

4.3.3 数据字典条目实例 59

4.4 数据加工逻辑 60

4.4.1 结构化语言 60

4.4.2 判定表 61

4.4.3 判定树 62

4.5 实体-关系图 63

4.6 结构化分析实例 64

小结 69

习题 70

第5章 总体设计 71

5.1 软件设计基础 71

5.1.1 软件设计的目标 71

5.1.2 软件设计的任务 72

5.1.3 总体设计过程 72

5.2 软件设计的基本原理 73

5.2.1 模块化设计原理 73

5.2.2 抽象和逐步求精 75

5.2.3 信息隐蔽和局部化 76

5.2.4 模块独立性 76

5.2.5 软件结构设计优化原则 79

5.3 表示软件结构的图形 80

5.3.1 层次图HIPO图 80

5.3.2 软件结构图 82

5.4 结构化设计方法 83

5.4.1 结构化设计的流程 83

5.4.2 典型的数据流类型和系统结构 84

5.4.3 变换分析 86

5.4.4 事务分析 90

5.5 总体设计文档及复审 93

小结 94

习题 94

第6章 详细设计 95

6.1 结构化程序设计 95

6.2 详细设计的任务 95

6.3 详细设计的原则 96

6.4 详细设计工具 96

6.4.1 程序流程图 96

6.4.2 盒图(N-S图) 97

6.4.3 问题分析图 98

6.4.4 过程设计语言 100

6.4.5 详细设计工具的选择 102

6.5 程序复杂性度量 103

6.6 详细设计文档及复审 105

小结 107

习题 107

第7章 软件编码 109

7.1 程序设计语言 109

7.1.1 程序设计语言的特性 109

7.1.2 程序设计语言的分类 110

7.1.3 程序设计的选择 112

7.2 程序设计的风格 113

7.2.1 源程序文档化 113

7.2.2 数据说明 114

7.2.3 语句结构 114

7.2.4 输入/输出 115

7.2.5 重用 116

7.3 效率 116

小结 118

习题 118

第8章 软件测试 119

8.1 软件测试基本理论 119

8.1.1 软件测试的概念 119

8.1.2 软件测试的原则 119

8.1.3 软件测试过程 121

8.1.4 软件测试方法 121

8.2 白盒测试技术 122

8.2.1 逻辑覆盖法 122

8.2.2 基本路径测试法 126

8.2.3 循环测试法 130

8.3 黑盒测试技术 131

8.3.1 等价类划分法 131

8.3.2 边界值分析法 134

8.3.3 错误猜测法 136

8.3.4 因果图法 137

8.4 软件测试策略 137

8.4.1 单元测试 138

8.4.2 集成测试 139

8.4.3 确认测试 141

8.4.4 系统测试 142

小结 143

习题 144

第9章 软件维护 145

9.1 软件维护概述 145

9.1.1 软件维护分类 145

9.1.2 软件维护成本 146

9.2 软件维护过程 148

9.2.1 软件维护活动 148

9.2.2 软件维护技术 151

9.3 软件可维护性 151

9.3.1 影响软件可维护性的因素 152

9.3.2 软件可维护性度量 152

9.3.3 提高可维护性的方法 154

9.4 软件维护的副作用 155

9.4.1 代码的副作用 155

9.4.2 数据副作用 155

9.4.3 文档副作用 156

9.5 软件再工程 156

9.5.1 软件再工程概述 156

9.5.2 软件再工程过程 157

9.5.3 软件再工程方法 159

小结 159

习题 159

第二部分 面向对象的软件工程 163

第10章 面向对象基础 163

10.1 面向对象方法论概述 163

10.1.1 传统软件开发方法中存在的问题 163

10.1.2 面向对象方法主要优点 165

10.1.3 面向对象方法的发展史及现状简介 167

10.2 面向对象的基本概念 168

10.2.1 对象 168

10.2.2 类 168

10.2.3 消息 168

10.2.4 封装性 168

10.2.5 继承性 169

10.2.6 多态性 169

10.3 面向对象软件工程 170

10.3.1 面向对象的开发方法 170

10.3.2 统一建模语言UML 171

10.3.3 RUP过程 171

10.3.4 工具 175

小结 176

习题 176

第11章 UML建模语言 177

11.1 UML统一建模语言简介 177

11.1.1 UML的发展历史 177

11.1.2 UML的特点 178

11.1.3 UML用于软件的开发 178

11.2 UML的基本模型 179

11.2.1 UML的事物 179

11.2.2 UML的关系 181

11.2.3 UML的图 185

11.3 用例图 187

11.3.1 用例图描述 187

11.3.2 建立用例模型 190

11.3.3 用例图示例 191

11.4 类图 192

11.4.1 类图描述 192

11.4.2 类的表示方法 192

11.4.3 类的关系 193

11.4.4 类图示例 193

11.5 对象图 194

11.5.1 对象图描述 194

11.5.2 对象的表示方法 194

11.5.3 对象图示例 195

11.6 包图 195

11.6.1 包图描述 195

11.6.2 包的表示方法 196

11.6.3 包之间的关系 196

11.6.4 包图示例 196

11.7 状态机图 197

11.7.1 状态机图描述 197

11.7.2 状态的表示方法 197

11.7.3 转换 198

11.7.4 事件 199

11.7.5 状态图示例 199

11.8 活动图 200

11.8.1 活动图描述 200

11.8.2 活动的表示方法 200

11.8.3 泳道 201

11.8.4 对象流和控制流 202

11.8.5 活动图示例 202

11.9 顺序图 203

11.9.1 顺序图描述 203

11.9.2 顺序图表示方法 203

11.9.3 顺序图示例 204

11.10 通信图 205

11.10.1 通信图描述 205

11.10.2 通信图表示方法 205

11.10.3 通信图示例 207

11.11 构件图 207

11.11.1 构件图描述 207

11.11.2 构件的表示方法 208

11.11.3 接口 208

11.11.4 依赖关系 209

11.11.5 构件图示例 209

11.12 部署图 210

11.12.1 部署图描述 210

11.12.2 部署图表示方法 211

11.12.3 部署图示例 212

小结 213

习题 213

第12章 面向对象分析 215

12.1 面向对象分析过程 215

12.2 建立用例模型 216

12.2.1 确定系统的执行者 216

12.2.2 确定用例 216

12.2.3 确定用例模型 217

12.2.4 用例模型说明 218

12.2.5 用例模型评价 220

12.2.6 优化用例模型 221

12.2.7 构造系统原型 221

12.3 建立对象模型 221

12.3.1 补充用例说明 222

12.3.2 识别分析类 222

12.3.3 描述类的职责 224

12.3.4 建立分析类之间的关系 225

12.3.5 描述每个类的属性 226

12.4 建立动态模型 226

12.5 评审分析模型 228

小结 229

习题 229

第13章 面向对象的设计 230

13.1 面向对象设计准则 230

13.1.1 设计准则 230

13.1.2 设计策略 231

13.1.3 系统分解与组织 233

13.2 问题域子系统设计 235

13.3 人机交互子系统设计 236

13.4 任务管理子系统设计 238

13.5 数据管理子系统设计 240

13.5.1 选择数据存储管理模式 240

13.5.2 设计数据管理子系统 241

13.6 对象设计 243

13.6.1 使用模式设计对象 244

13.6.2 接口规格说明设计 244

13.6.3 重构对象设计模型 246

13.6.4 优化对象设计模型 246

小结 247

习题 247

第14章 面向对象实现 248

14.1 面向对象程序设计语言 248

14.2 面向对象的程序实现特征 249

14.3 面向对象测试 250

14.3.1 面向对象测试模型 251

14.3.2 面向对象分析的测试 251

14.3.3 面向对象设计的测试 252

14.3.4 面向对象编程的测试 253

14.3.5 面向对象的单元测试 254

14.3.6 面向对象的集成测试 256

14.3.7 面向对象的系统测试 257

小结 258

习题 258

第三部分 软件工程管理 261

第15章 软件工程管理概述 261

15.1 软件项目管理 261

15.1.1 软件项目管理的特点 261

15.1.2 软件项目管理活动 262

15.1.3 软件项目计划 263

15.2 软件风险管理 274

15.2.1 风险识别 275

15.2.2 风险分析 278

15.2.3 风险规划 280

15.2.4 风险控制 280

15.3 软件质量管理 281

15.3.1 软件质量基础 281

15.3.2 软件质量控制 281

15.4 软件配置管理 283

15.4.1 软件配置管理概述 283

15.4.2 软件配置管理过程 284

15.5 软件过程管理 285

15.5.1 ISO 9000体系 285

15.5.2 能力成熟度模型 286

小结 289

习题 289

第四部分 软件工程高级课题 293

第16章 Web工程 293

16.1 基于Web的系统和应用特点 293

16.2 Web工程的层次 295

16.2.1 过程 295

16.2.2 方法 296

16.2.3 工具和技术 296

16.3 Web分析 297

16.3.1 内容分析模型 297

16.3.2 交互分析模型 297

16.3.3 功能分析模型 298

16.3.4 配置分析模型 298

16.3.5 关系导航分析模型 299

16.4 Web设计 300

16.4.1 界面设计 300

16.4.2 美学设计 301

16.4.3 内容设计 302

16.4.4 体系结构设计 302

16.4.5 导航设计 303

16.4.6 构件设计 304

16.5 Web测试 304

16.5.1 内容测试 304

16.5.2 界面测试 305

16.5.3 构件级测试 306

16.5.4 导航测试 307

16.5.5 配置测试 307

16.5.6 安全性测试 308

16.5.7 性能测试 309

16.6 Web项目管理 310

16.6.1 Web队伍 310

16.6.2 项目管理 311

16.6.3 配置管理 312

小结 312

习题 313

第17章 基于构件的软件开发 314

17.1 软件复用概述 314

17.1.1 软件复用的定义 315

17.1.2 软件复用的形式和级别 315

17.1.3 软件复用的过程 317

17.1.4 软件复用的意义 318

17.2 构件与构件技术 319

17.2.1 构件的定义及基本特征 319

17.2.2 构件技术的产生与基本思想 320

17.3 构件与构件系统 322

17.3.1 对可复用构件的要求 322

17.3.2 构件模型及系统 323

17.3.3 构件的分类模式 324

17.3.4 构件库的管理 326

17.4 领域工程 327

17.4.1 领域工程过程 327

17.4.2 领域工程实施 329

17.4.3 组织机构 329

17.4.4 相关技术 330

17.5 基于构件的软件开发 330

17.5.1 CBSE/CBD概述 330

17.5.2 CBSE过程 332

17.5.3 基于构件的系统的开发 332

17.5.4 构件构造 333

17.5.5 软件构件技术规范 333

17.6 CBD与传统的软件开发方法比较 336

小结 338

习题 338

第18章 分布式系统的软件开发 339

18.1 分布式系统概述 339

18.2 客户/服务器体系结构 341

18.3 分布式对象技术 342

18.4 机构间分布式计算 345

18.4.1 对等体系结构 346

18.4.2 面向服务的系统体系结构 346

小结 348

习题 348

第19章 敏捷开发 349

19.1 敏捷方法概述 349

19.1.1 敏捷方法发展史 350

19.1.2 敏捷宣言 350

19.2 敏捷方法的特点 352

19.3 敏捷方法与传统软件开发方法的区别 352

19.4 主要敏捷方法简介 353

19.5 极限编程 355

19.5.1 XP的含义 355

19.5.2 XP的4个核心价值 356

19.5.3 为什么使用XP 356

19.5.4 XP的开发过程 357

19.5.5 XP的实践 358

19.6 Scrum模型 361

19.6.1 Scrum简介 361

19.6.2 角色的作用 361

19.6.3 会议的作用 362

19.6.4 Scrum开发模式的流程 363

小结 364

习题 364

参考文献 365