《软件工程:原理、方法和工具》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:李东生,崔东华,李爱萍等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2009
  • ISBN:9787111257400
  • 页数:291 页
图书介绍:本书全面系统地介绍了软件工程的概念,原理和技术等知识。

第1篇 面向过程的软件工程第1章 软件危机、软件工程 1

1.1 软件工程的发展史 1

1.1.1 程序设计时代 1

1.1.2 程序系统时代 1

1.1.3 软件工程时代 2

1.2 软件危机主要表现形式 2

1.3 产生软件危机的原因及解决途径 3

1.3.1 产生软件危机的原因 3

1.3.2 解决软件危机的途径 3

1.4 软件和软件工程 4

1.4.1 软件 4

1.4.2 软件工程 4

1.5 软件质量 5

1.6 软件的生存周期及开发模型 5

1.6.1 软件生存周期 5

1.6.2 软件开发模型 7

1.7 习题 12

第2章 可行性研究 13

2.1 可行性研究的目的与任务 13

2.2 可行性研究的步骤 13

2.3 系统流程图 14

2.3.1 系统流程图的符号 15

2.3.2 系统流程图示例 16

2.4 成本-效益分析 16

2.4.1 货币的时间价值 16

2.4.2 投资回收期 17

2.4.3 纯收入 17

2.5 可行性研究报告的主要内容 17

2.6 习题 18

第3章 软件需求分析 19

3.1 需求分析的任务和步骤 19

3.1.1 需求分析的任务 19

3.1.2 需求分析的步骤 20

3.2 需求获取的常用方法 21

3.2.1 常规的需求获取方法 21

3.2.2 快速建立软件原型来获取需求 22

3.3 需求分析的方法 23

3.3.1 功能分解方法 23

3.3.2 结构化分析方法 23

3.3.3 信息建模方法 23

3.3.4 面向对象的分析 24

3.4 结构化分析方法 24

3.4.1 自顶向下逐层分解的分析策略 24

3.4.2 结构化分析描述工具 25

3.4.3 数据流图 25

3.4.4 数据字典 28

3.4.5 加工逻辑的描述 30

3.5 需求分析图形工具 32

3.5.1 层次方框图 32

3.5.2 Warnier图 33

3.5.3 IPO图 33

3.6 SA方法的应用 34

3.7 习题 39

第4章 软件总体设计 40

4.1 软件总体设计的目标和任务 40

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

4.2.1 模块和模块化 40

4.2.2 抽象 41

4.2.3 信息隐蔽和局部化 42

4.2.4 模块独立性及其度量 42

4.3 软件结构设计准则 44

4.4 软件结构设计的图形工具 46

4.4.1 软件结构图 46

4.4.2 层次图 47

4.4.3 HIPO图 47

4.5 结构化设计方法 48

4.5.1 数据流图的类型 48

4.5.2 结构化设计方法的步骤 49

4.5.3 变换型分析设计 49

4.5.4 事务型分析设计 51

4.6 习题 52

第5章 软件详细设计 54

5.1 详细设计的目的与任务 54

5.2 结构化程序设计 54

5.3 详细设计工具 55

5.3.1 程序流程图 55

5.3.2 N-S图 55

5.3.3 PAD图 56

5.3.4 过程设计语言 57

5.4 习题 60

第6章 软件编码 62

6.1 程序设计语言的分类 62

6.1.1 基础语言 62

6.1.2 结构化语言 63

6.1.3 面向对象的语言 64

6.2 程序设计语言的选择 65

6.3 程序设计风格 66

6.3.1 程序内部文档 66

6.3.2 数据说明 67

6.3.3 语句构造 67

6.3.4 输入/输出 67

6.3.5 效率 68

6.4 习题 69

第7章 软件测试 70

7.1 软件测试的目标 70

7.2 软件测试的原则 70

7.3 软件测试方法 71

7.3.1 静态测试与动态测试 71

7.3.2 黑盒测试法与白盒测试法 72

7.4 软件测试用例的设计 73

7.4.1 白盒技术 73

7.4.2 黑盒技术 78

7.5 软件测试过程 82

7.5.1 单元测试 82

7.5.2 集成测试 84

7.5.3 确认测试 86

7.5.4 系统测试 87

7.6 调试 87

7.6.1 调试的目的 87

7.6.2 调试技术 87

7.7 习题 89

第8章 软件维护 90

8.1 软件维护的分类 90

8.2 软件维护的特点 91

8.2.1 结构化维护与非结构化维护 92

8.2.2 维护的代价 93

8.2.3 软件维护中存在的问题 93

8.3 软件可维护性 94

8.3.1 软件可维护性的定义 94

8.3.2 软件可维护性的度量 96

8.3.3 提高软件可维护性的方法 96

8.4 维护的副作用 98

8.5 软件再工程 99

8.5.1 软件再工程与逆向工程的概念 99

8.5.2 实施软件再工程的原因 100

8.5.3 软件再工程技术 101

8.6 习题 102

第2篇 UML与面向对象的软件工程第9章 UML简介 103

9.1 UML概述 103

9.1.1 UML的组成 104

9.1.2 UML的特点和用途 107

9.1.3 UML的模型视图简介 108

9.2 UML软件开发工具简介 110

9.2.1 Rational Rose 110

9.2.2 Visio简介 114

9.3 习题 114

第10章 面向对象的概念 115

10.1 面向对象的方法学 115

10.1.1 面向对象建模 115

10.1.2 面向对象的方法与传统软件方法的比较 118

10.2 对象与类及其UML表示 119

10.2.1 对象 119

10.2.2 类与实例 120

10.2.3 对象属性与操作 120

10.2.4 对象类的关联 123

10.3 聚集、组合、继承和多态 127

10.3.1 聚集与组合 127

10.3.2 抽象与继承 129

10.3.3 多态 131

10.4 习题 132

第11章 对象设计模式 133

11.1 对象设计模式概念 133

11.1.1 历史背景 133

11.1.2 对象设计模式 134

11.1.3 设计模式的分类 135

11.2 几种典型的对象设计模式及应用 136

11.2.1 行为型模式中的职责键模式及应用 136

11.2.2 结构型模式中的外观模式及应用 138

11.2.3 创建型模式中的抽象工厂模式及应用 142

11.3 对象类的高级概念 146

11.3.1 抽象类、参数对象类、型与实现对象类 146

11.3.2 接口 147

11.3.3 版型 148

11.4 组件、包和结点 149

11.4.1 组件 149

11.4.2 包和包图 153

11.4.3 结点 159

11.5 习题 160

第12章 面向对象的软件开发过程 162

12.1 RUP概述 162

12.1.1 RUP的历史 162

12.1.2 RUP的特色 163

12.2 RUP软件开发生命周期和建模 164

12.2.1 RUP软件开发的生命周期 164

12.2.2 RUP的动态结构 165

12.2.3 RUP的静态结构 165

12.2.4 RUP的建模 166

12.3 面向对象软件开发过程的案例分析 167

12.3.1 系统需求 167

12.3.2 系统的静态结构模型 168

12.3.3 顺序图和协作图 168

12.3.4 状态图和活动图 170

12.3.5 组件图和部署图 171

12.4 习题 172

第13章 软件开发工具Rose 173

13.1 Rose的用例图与类图 173

13.1.1 用例图 174

13.1.2 类图 176

13.2 Rose的交互图与状态机图 177

13.2.1 交互图 177

13.2.2 状态机图 180

13.3 包、组件图与部署图 182

13.3.1 包 182

13.3.2 组件图 183

13.3.3 部署图 185

13.4 Rose的代码生成和逆向工程 187

13.4.1 代码生成 187

13.4.2 逆向工程 188

13.5 Rose应用举例 188

13.6 习题 189

第14章 Rose及其应用 190

14.1 Rose的主要功能 190

14.2 Rose的使用 190

14.2.1 Rose主菜单窗口 190

14.2.2 模型与工作方式的组织 192

14.3 教学管理系统的分析与设计 193

14.3.1 系统需求分析 193

14.3.2 系统问题领域分析 194

14.3.3 静态结构模型的建立 198

14.3.4 动态行为模型的建立 201

14.3.5 物理模型的建立 205

14.4 UML类图与VB代码的转换 206

14.4.1 VB代码生成属性 206

14.4.2 Rose模型—VB代码的生成 207

14.4.3 VB代码的逆向工程 207

14.5 UML类图与Java代码的转换 208

14.5.1 UML类图—Java代码的生成 208

14.5.2 Java代码的逆向工程 209

14.6 习题 209

第15章 面向对象的软件体系结构 211

15.1 软件体系结构概述 211

15.2 流程处理与客户机/服务器体系结构 212

15.2.1 流程处理 212

15.2.2 客户机/服务器体系结构 213

15.3 三层和多层体系结构 214

15.3.1 三层体系结构 215

15.3.2 浏览器/服务器体系结构风格 216

15.3.3 多层体系结构 217

15.3.4 团聚与串行 218

15.4 公共对象请求代理体系结构 219

15.5 基于层次消息总线的体系结构风格 221

15.6 异构结构风格 222

15.7 习题 224

第16章 软件工程新技术 225

16.1 软件复用技术 225

16.1.1 软件复用概念及分类 225

16.1.2 软件复用的关键技术和复用粒度 226

16.2 中间件技术 226

16.2.1 中间件概念及特点 226

16.2.2 中间件的分类 228

16.3 组件技术 229

16.3.1 组件与组件化 230

16.3.2 组件模型及描述语言 231

16.3.3 组件的检索与组装 233

16.4 计算机辅助软件工程技术 237

16.4.1 CASE的基本概念 237

16.4.2 CASE工具与集成CASE环境 237

16.5 软件产品线技术 240

16.5.1 软件产品线基本概念 240

16.5.2 软件产品线方法 243

16.5.3 北大青鸟工程 243

16.6 软件过程与标准化 245

16.6.1 软件过程及其改进 245

16.6.2 ISO 9000标准 246

16.6.3 软件能力成熟度模型 247

16.7 习题 250

第3篇 软件工程实验 251

第17章 软件工程实验大纲 251

17.1 面向过程的软件工程实验 252

17.1.1 实验1 图书馆图书管理系统的可行性分析 253

17.1.2 实验2 图书馆图书管理系统的项目开发计划 253

17.1.3 实验3 图书馆图书管理系统的需求分析 254

17.1.4 实验4 图书馆图书管理系统的总体设计 254

17.1.5 实验5 图书馆图书管理系统的详细设计及编码实现 255

17.1.6 实验6 图书馆图书管理系统的系统测试 256

17.1.7 实验7 图书馆图书管理系统用户手册的撰写 257

17.1.8 实验8 图书馆图书管理系统项目开发总结报告的撰写 257

17.2 面向对象的软件工程实验 257

17.2.1 实验1 浏览器系统的可行性分析 258

17.2.2 实验2 浏览器系统的项目开发计划 258

17.2.3 实验3 浏览器系统的需求分析 259

17.2.4 实验4 浏览器系统的体系结构设计 265

17.2.5 实验5 采用面向对象方法进行浏览器系统的详细设计 267

17.2.6 实验6 利用Rational Rose正向工程功能完成编码的实验 269

17.2.7 实验7 利用Rational Rose逆向工程完成修改设计的实验 270

17.2.8 实验8 浏览器系统的测试 270

17.2.9 实验9 浏览器系统用户手册的撰写 272

17.2.10 实验10 浏览器系统项目开发总结报告的撰写 272

附录 273

附录A UML图总结 273

附录B UML中定义的常用版型、约束和标记 278

附录C GOF给出的软件设计模式 280

参考文献 291