内容简介
本书是作者在多年从事软件工程、软件设计模式课程教学实践基础上编写的。全书共分为8章,通过大量的实例,介绍了实用软件工程学的原理及设计模式的相关知识,根据软件开发“工程化”思想,系统地讲授了软件工程学、软件设计过程、23种先进的设计模式、软件测试方法、软件项目管理、应用技术和实用工具等相关知识。全书采用社会所需实际案例为基线,以案例、项目式教学思路贯穿始终,根据需要安排了多个任务和子任务,读者可以通过实践掌握课程所学内容。书后配有适量的思考题和练习题,使读者能够在学习过程中提高操作能力和实际应用能力。
本书可作为高等院校学生学习软件工程、软件设计模式、软件体系结构设计等课程的教材,也可以作为读者自学的参考书。
前 言
21世纪是信息社会,信息技术已经渗透到社会的各行各业。随着计算机应用技术的不断发展,软件工程学也渗入软件研发的各个环节中。实用软件工程是一门将理论和知识应用于实践的工程,它借鉴了传统工程的原则和方法,讲解了常用的23种设计模式,以求高效地开发高质量软件。近年来,大多数高等院校,无论是理工科还是文科专业都将软件工程作为计算机应用技术类课程的必修课或选修课。
软件工程是软件开发组织根据所要开发的软件特点及项目自身的特点,选择适合的软件设计模式,把各种软件工程学原理的特性和软件设计模式有机地结合起来,充分利用它们的优点,回避缺陷,有效地提高软件质量的过程。
本书是软件开发方法体系的完整体现,有别于传统软件工程学,增加了许多实际软件开发过程中需要的实用方法技术,填补了传统软件工程的设计薄弱环节。
全书共分为8章,各章的主要内容安排如下。
第1章主要介绍软件工程学的基本概念、理论和基础知识。
第2章主要介绍软件设计过程基本原理、软件设计建模工具UML,以及软件设计环境Visio、PowerDesigner、Violet等。
第3章主要介绍23种先进的设计模式,体现23种设计模式在软件开发过程中的重要设计地位和作用。
第4章主要介绍在面向对象程序设计语言Java中实现23种设计模式的方法和实践。
第5章主要介绍面向对象技术。面向对象技术是一种以对象为基础,以事件或消息驱动对象执行相应的消息处理函数的程序设计技术。
第6章主要介绍各种行之有效的软件测试方法和技术。
第7章主要介绍23种设计模式在实际应用中的原则和分类。
第8章主要介绍软件工程控制活动中的质量保证、配置管理和项目管理的基本知识。
本书以学习、应用为目的,以案例贯穿始终,系统地讲授了软件工程学和软件设计模式,各章均以项目分配任务形式编排,有助于提高学生的实操和实际应用能力。
本书由白文荣主编,在本书策划和编写的过程中,得到了清华大学出版社的大力支持,在此表示衷心的感谢。
由于作者水平有限,书中难免存在错误和不足之处,敬请广大读者批评指正。
为了方便教师教学和学生自主学习,本书配有电子教案、案例源代码、安装软件等,若有需要,可从清华大学出版社网站下载。
编 者
目录
项目1 软件工程概述 1
任务1 问题的提出 3
任务要求 3
知识储备 3
任务实施 7
任务2 软件工程概述 8
任务要求 8
知识储备 8
任务实施 10
任务3 面向对象的几个基本原则 11
任务要求 11
知识储备 11
任务实施 13
任务4 软件项目的生命周期 13
任务要求 13
知识储备 14
任务实施 15
任务5 软件项目的开发模型 15
任务要求 15
知识储备 15
任务实施 24
任务6 软件工程学的基本原则 24
任务要求 24
知识储备 24
任务实施 25
上机实训:机票预订系统 26
项目小结 27
习题 27
项目2 软件设计过程 29
任务1 洞悉软件设计过程 30
任务要求 30
知识储备 30
任务实施 31
任务2 面向对象软件设计工具UML 32
任务要求 32
知识储备 32
任务实施 39
任务3 软件设计过程管理 54
任务要求 54
知识储备 54
任务实施 55
上机实训:商品销售系统 60
项目小结 61
习题 61
项目3 软件设计模式 63
任务1 创建型模式 64
任务要求 64
知识储备 64
任务实施 65
任务2 结构型模式 92
任务要求 92
知识储备 92
任务实施 92
任务3 行为型模式 135
任务要求 135
知识储备 135
任务实施 136
上机实训:小动物模式的应用 212
项目小结 213
习题 213
项目4 设计模式案例 217
任务1 命令模式 218
任务要求 218
知识储备 218
任务实施 219
任务2 观察者模式 220
任务要求 220
知识储备 220
任务实施 221
任务3 装饰模式 224
任务要求 224
知识储备 224
任务实施 224
任务4 策略模式 226
任务要求 226
知识储备 226
任务实施 226
任务5 适配器模式 229
任务要求 229
知识储备 229
任务实施 229
任务6 责任链模式 231
任务要求 231
知识储备 231
任务实施 232
任务7 外观模式 234
任务要求 234
知识储备 234
任务实施 234
任务8 迭代器模式 236
任务要求 236
知识储备 236
任务实施 237
任务9 中介者模式 238
任务要求 238
知识储备 238
任务实施 239
任务10 工厂方法模式 241
任务要求 241
知识储备 242
任务实施 242
任务11 抽象工厂模式 244
任务要求 244
知识储备 244
任务实施 245
任务12 生成器模式 248
任务要求 248
知识储备 248
任务实施 249
任务13 原型模式 251
任务要求 251
知识储备 252
任务实施 252
任务14 单件模式 254
任务要求 254
知识储备 254
任务实施 254
任务15 组合模式 255
任务要求 255
知识储备 256
任务实施 256
任务16 桥接模式 259
任务要求 259
知识储备 259
任务实施 260
任务17 状态模式 261
任务要求 261
知识储备 261
任务实施 262
任务18 模板方法模式 264
任务要求 264
知识储备 264
任务实施 264
任务19 代理模式 266
任务要求 266
知识储备 266
任务实施 267
任务20 享元模式 268
任务要求 268
知识储备 268
任务实施 269
任务21 访问者模式 271
任务要求 271
知识储备 271
任务实施 272
任务22 备忘录模式 274
任务要求 274
知识储备 274
任务实施 275
任务23 解释器模式 278
任务要求 278
知识储备 278
任务实施 278
上机实训:工厂方法模式的应用 283
项目小结 283
习题 283
项目5 面向对象技术概述 287
任务1 传统方法学 288
任务要求 288
知识储备 288
任务实施 289
任务2 面向对象方法学 296
任务要求 296
知识储备 296
任务实施 301
任务3 面向对象程序设计语言 301
任务要求 301
知识储备 301
任务实施 302
上机实训:学校运动会模型 307
项目小结 308
习题 309
项目6 软件测试方法 311
任务1 软件测试概述 312
任务要求 312
知识储备 312
任务实施 314
任务2 软件测试方法 316
任务要求 316
知识储备 317
任务实施 320
任务3 软件测试管理 331
任务要求 331
知识储备 331
任务实施 331
任务4 测试工具简介 338
任务要求 338
知识储备 338
任务实施 338
上机实训:软件测试方法 345
项目小结 346
习题 347
项目7 设计模式的原则和分类 349
任务1 设计模式的原则 350
任务要求 350
知识储备 350
任务实施 351
任务2 设计模式的分类 351
任务要求 351
知识储备 351
任务实施 353
上机实训:观察者模式 355
项目小结 356
习题 356
项目8 软件项目管理 357
任务1 软件项目管理导论 358
任务要求 358
知识储备 358
任务实施 361
任务2 项目管理流程及方法 362
任务要求 362
知识储备 363
任务实施 370
上机实训:项目管理工具Project 2010的
应用 376
项目小结 380
习题 380
参考文献 385