《软件工程 原理、方法与应用》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:史济民,顾春华,郑红编著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2009
  • ISBN:9787040261462
  • 页数:372 页
图书介绍:本书第一版自1990年出版以来,已再版两次,累计印刷26万余册。第三版被列入普通高等教育“十一五”国家级规划教材。作为一本注重能力培养的实践型教材,第三版继承并保持了“注重实践”的风格,将全书分编为绪论和上、中、下3篇,共14章。其内容依次为:上篇:软件生存期与软件过程、结构化分析与设计;中篇:面向对象与UML、需求工程与需求分析、面向对象分析、面向对象设计、编码和测试;下篇:软件维护、软件复用、软件工程管理、软件质量管理、软件工程环境、软件工程高级课题。与第二版相比,本版将“并行介绍传统的和面向对象的软件工程”改变为“重点介绍面向对象的软件工程”,并在OOA、OOD两章分别给出案例;通过“软件工程高级课题”,对Web工程及基于体系结构的软件开发等热门课题集中进行了简要的讲解。本书结构合理、文字通俗,例题丰富、可读性强,可作为本科计算机及相关专业软件工程课程的教材,亦可供软件开发人员参考使用。

第1章 绪论 1

1.1 软件和软件危机 1

1.1.1 软件的定义 1

1.1.2 软件的特征 2

1.1.3 软件危机 2

1.2 软件工程学的范畴 4

1.2.1 软件开发方法学 5

1.2.2 软件工具 5

1.2.3 软件工程环境 6

1.2.4 软件工程管理 6

1.3 软件工程的发展 6

1.3.1 3种编程范型 7

1.3.2 3代软件工程 9

1.4 软件工程的应用 10

1.4.1 在各种规模软件开发中的应用 10

1.4.2 软件工程的成就与发展展望 12

1.5 软件工程的教学:本书导读 13

小结 15

习题 15

上篇 传统软件工程 17

第2章 软件生存周期与软件过程 19

2.1 软件生存周期 19

2.1.1 软件生存周期的主要活动 19

2.1.2 生存周期与软件过程的关系 20

2.2 传统的软件过程 21

2.2.1 瀑布模型 21

2.2.2 快速原型模型 23

2.3 软件演化模型 24

2.3.1 增量模型 24

2.3.2 螺旋模型 25

2.3.3 构件集成模型 27

2.4 形式化方法模型 28

2.4.1 转换模型 28

2.4.2 净室模型 29

2.5 统一过程和敏捷过程 31

2.5.1 统一过程 31

2.5.2 敏捷过程 32

2.5.3 极限编程 33

2.6 软件可行性研究 35

2.6.1 可行性研究的内容与步骤 35

2.6.2 软件风险分析 36

2.6.3 项目实施计划 39

小结 40

习题 40

第3章 结构化分析与设计 41

3.1 概述 41

3.1.1 结构化分析与设计的由来 41

3.1.2 SA模型的组成与描述 43

3.1.3 SD模型的组成与描述 50

3.2 结构化系统分析 51

3.2.1 画分层数据流图 51

3.2.2 确定数据定义与加工策略 54

3.2.3 需求分析的复审 55

3.3 结构化系统设计 55

3.3.1 SD概述 55

3.3.2 SD的步骤:从DFD图到SC图 57

3.3.3 变换映射 58

3.3.4 事务映射 60

3.3.5 优化初始SC图的指导规则 62

3.3.6 教材购销系统的总体结构 63

3.4 模块设计 65

3.4.1 目的与任务 65

3.4.2 模块设计的原则与方法 66

3.4.3 常用的表达工具 68

小结 70

习题 71

中篇 面向对象软件工程 73

第4章 面向对象与UML 75

4.1 面向对象概述 75

4.1.1 对象和类 75

4.1.2 面向对象的基本特征 76

4.1.3 面向对象开发的优点 78

4.2 UML简介 78

4.2.1 UML的组成 79

4.2.2 UML的特点 82

4.2.3 UML的应用 83

4.3 静态建模 83

4.3.1 用例图与用例模型 84

4.3.2 类图和对象图 85

4.3.3 包 92

4.4 动态建模 92

4.4.1 消息 92

4.4.2 状态图 93

4.4.3 时序图和协作图 95

4.4.4 活动图 98

4.5 物理架构建模 99

4.5.1 物理架构 99

4.5.2 构件图和部署图 100

4.6 UML工具 101

4.6.1 Rational Rose 101

4.6.2 StarUML 103

小结 104

习题 104

第5章 需求工程与需求分析 105

5.1 软件需求工程 105

5.1.1 软件需求的定义 105

5.1.2 软件需求的特性 106

5.1.3 需求工程的由来 107

5.2 需求分析与建模 108

5.2.1 需求分析的步骤 108

5.2.2 需求分析是迭代过程 109

5.3 需求获取的常用方法 110

5.3.1 常规的需求获取方法 110

5.3.2 用快速原型法获取需求 111

5.4 需求模型 112

5.4.1 需求模型概述 112

5.4.2 面向对象的需求建模 114

5.5 软件需求描述 123

5.6 需求管理 123

5.6.1 需求管理的内容 124

5.6.2 需求变更控制 125

5.6.3 需求管理工具 128

5.7 需求建模示例 128

5.7.1 问题陈述 129

5.7.2 用例模型 130

5.7.3 补充规约 134

5.7.4 术语表 135

小结 136

习题 136

第6章 面向对象分析 138

6.1 软件分析概述 138

6.1.1 面向对象软件分析 138

6.1.2 面向对象分析模型 140

6.2 面向对象分析建模 141

6.2.1 识别与确定分析类 141

6.2.2 建立对象-行为模型 144

6.2.3 建立对象-关系模型 147

6.3 面向对象分析示例 149

6.3.1 注册 149

6.3.2 维护个人信息 151

6.3.3 维护购物车 153

6.3.4 生成订单 157

6.3.5 管理订单 159

小结 164

习题 164

第7章 面向对象设计 165

7.1 软件设计概述 165

7.1.1 软件设计的概念 165

7.1.2 软件设计的任务 167

7.1.3 模块化设计 167

7.2 面向对象设计建模 173

7.2.1 面向对象设计模型 173

7.2.2 面向对象设计的任务 174

7.2.3 模式的应用 175

7.3 系统架构设计 176

7.3.1 系统高层结构设计 176

7.3.2 确定设计元素 177

7.3.3 任务管理策略 179

7.3.4 分布式实现机制 182

7.3.5 数据存储设计 185

7.3.6 人机交互设计 188

7.4 系统元素设计 189

7.4.1 子系统设计 189

7.4.2 分包设计 192

7.4.3 类/对象设计 195

7.5 面向对象设计示例 204

7.5.1 关联关系的具体化 205

7.5.2 网上购物系统的架构设计 206

7.5.3 网上购物系统的类/对象设计 207

小结 210

习题 211

第8章 编码与测试 212

8.1 编码概述 212

8.1.1 编码的目的 212

8.1.2 编码的风格 213

8.2 编码语言与编码工具 216

8.2.1 编码语言的发展 216

8.2.2 常用的编程语言 218

8.2.3 编码语言的选择 220

8.2.4 编码工具 222

8.3 编码示例 222

8.3.1 注册功能编码实现 222

8.3.2 维护购物车功能编码实现 228

8.4 测试的基本概念 233

8.4.1 目的与任务 233

8.4.2 测试的特性 234

8.4.3 测试的种类 235

8.4.4 测试的文档 235

8.4.5 软件测试过程 236

8.5 黑盒测试和白盒测试 236

8.5.1 黑盒测试 237

8.5.2 白盒测试 240

8.6 测试用例设计 248

8.6.1 黑盒测试用例设计 248

8.6.2 白盒测试用例设计 250

8.7 多模块程序的测试策略 254

8.7.1 测试的层次性 254

8.7.2 单元测试 255

8.7.3 集成测试 256

8.7.4 确认测试 259

8.7.5 系统测试 260

8.7.6 终止测试的标准 260

8.8 面向对象系统的测试 261

8.8.1 OO软件的测试策略 261

8.8.2 OO软件测试用例设计 262

小结 265

习题 265

下篇 软件工程的近期进展、管理与环境 269

第9章 软件维护 271

9.1 软件维护的种类 271

9.2 软件可维护性 272

9.3 软件维护的实施 274

9.4 软件维护的管理 275

9.5 软件配置管理 277

9.6 软件再工程 279

小结 281

习题 282

第10章 软件复用 283

10.1 软件复用的基本概念 283

10.1.1 软件复用的定义 283

10.1.2 软件复用的措施 284

10.1.3 软件复用的粒度 285

10.2 领域工程 286

10.2.1 横向复用和纵向复用 286

10.2.2 实施领域分析 287

10.2.3 开发可复用构件 287

10.2.4 建立可复用构件库 289

10.3 基于构件的软件开发 290

10.3.1 构件集成模型 291

10.3.2 应用系统工程 291

10.4 面向对象与软件复用 292

10.4.1 OO方法对软件复用的支持 292

10.4.2 复用技术对OO方法的支持 293

10.4.3 基于构件软件开发的现状与问题 295

小结 295

习题 296

第11章 软件工程管理 297

11.1 管理的目的与内容 297

11.2 软件估算模型 298

11.2.1 资源估算模型 298

11.2.2 COCOMO模型 300

11.3 软件成本估计 302

11.4 人员的分配与组织 308

11.5 项目进度安排 311

小结 314

习题 315

第12章 软件质量管理 316

12.1 从质量保证到质量认证 316

12.2 质量保证 317

12.2.1 软件的质量属性 317

12.2.2 质量保证的活动内容 318

12.3 软件可靠性 319

12.3.1 可靠性的定义和分级 319

12.3.2 可靠性模型 321

12.3.3 软件容错技术 323

12.4 程序正确性证明 326

12.5 CMM软件能力成熟度模型 328

12.5.1 CMM的基本概念 328

12.5.2 软件能力成熟度等级 329

12.5.3 CMM的应用 330

12.5.4 CMM评估的实施 331

12.5.5 软件过程评估的SPICE国际标准 331

12.6 ISO 9000国际标准 332

12.6.1 ISO 9001和ISO 9000-3 332

12.6.2 ISO 9000标准对软件企业的重要性 333

12.6.3 在软件企业中实施ISO 9000标准 334

12.7 软件度量 334

12.7.1 项目度量 334

12.7.2 过程度量 336

小结 337

习题 338

第13章 软件工程环境 339

13.1 什么是软件工程环境 339

13.1.1 软件开发环境的特点 339

13.1.2 理想环境的模型 341

13.1.3 CASE环境 341

13.2 CASE环境的组成与结构 342

13.2.1 CASE的组成构件 342

13.2.2 CASE的一般结构 343

13.3 CASE环境实例 345

13.3.1 Rational SUITE Enterprise Studio 346

13.3.2 青鸟系统 351

小结 351

习题 352

第14章 软件工程高级课题 353

14.1 Web工程 353

14.1.1 Web工程与软件工程 354

14.1.2 Web开发 354

14.2 基于体系结构的软件开发 358

14.2.1 应用软件的体系结构 359

14.2.2 编程范型对体系结构的影响 360

14.2.3 编程范型对复用粒度的影响 360

14.2.4 软件体系结构技术仍在发展 360

14.3 面向方面的软件开发 361

14.3.1 面向方面编程 361

14.3.2 AOP语言规范 362

14.3.3 AOP与OOP比较 363

14.3.4 面向方面软件开发 364

14.4 形式化的软件开发 364

14.4.1 形式化方法的定义 365

14.4.2 形式化的软件开发 366

小结 368

习题 369

附录 缩略语中英文对照表 370

主要参考文献 372