
本书是一本融合项目实践与开发原理于一体的书。它的特色是以项目实践作为主线贯穿其中。本书提供了完整的项目案例,通过项目使读者能够快速掌握软件工程中最核心的组件,包括:软件工程概述,项目开发生命周期及流程,需求分析,系统分析和设计,编码实现,测试和实施,软件配置和变更管理,软件过程管理,项目管理等。另外本书提供国际化企业标准开发文档,体现了国际化软件项目的标准开发流程和过程管理等。本书即可以作为初学软件工程的基础教程,对已经掌握了部分J知识的读者亦可起到画龙点睛的作用。
高等学校计算机科学与技术项目驱动案例实践规划教材编写指导委员会主任
李晓明
委员
(按姓氏笔画排序)
卢先和杨波
梁立新蒋宗礼
策划
张瑞庆序言
作为教育部高等学校计算机科学与技术教学指导委员会的工作内容之一,自从2003年参与清华大学出版社的“21世纪大学本科计算机专业系列教材”的组织工作以来,陆续参加或见证了多个出版社的多套教材的出版,但是现在读者看到的这一套“高等学校计算机科学与技术项目驱动案例实践规划教材”有着特殊的意义。
这个特殊性在于其内容。这是第一套我所涉及的以项目驱动教学为特色,实践性极强的规划教材。如何培养符合国家信息产业发展要求的计算机专业人才,一直是这些年人们十分关心的问题。加强学生实践能力的培养,是人们达成的重要共识之一。为此,教育部高等学校计算机科学与技术教学指导委员会专门编写了《高等学校计算机科学与技术专业实践教学体系与规范》(清华大学出版社出版)。但是,如何加强学生的实践能力培养,在现实中依然遇到种种困难。困难之一,就是缺乏合适的教材。以往的系列教材,大都比较“传统”,没有跳出固有的框框。而这一套教材,在设计上采用软件行业中卓有成效的项目驱动教学思想,突出“做中学”的理念,突出案例(而不是“练习作业”)的作用,为高校计算机专业教材的繁荣带来了一股新风。
这个特殊性在于其作者。本套教材目前规划了十余本,其主要编写人不是我们常见的知名大学教授,而是知名软件人才培训机构或者企业的骨干人员,以及在该机构或者企业得到过培训的并且在高校教学一线有多年教学经验的大学教师。我以为这样一种作者组合很有意义,他们既对发展中的软件行业有具体的认识,对实践中的软件技术有深刻的理解,对大型软件系统的开发有丰富的经验,也有在大学教书的经历和体会,他们能在一起合作编写教材本身就是一件了不起的事情,没有这样的作者组合是难以想象这种教材的规划编写的。我一直感到中国的大学计算机教材尽管繁荣,但也比较“单一”,作者群的同质化是这种风格单一的主要原因。对比国外英文教材,除了Addison Wesley和Morgan Kaufmann等出版的经典教材长盛不衰外,我们也看到O’Reilly“动物教材”等的异军突起——这些教材的作者,大都是实战经验丰富的资深专业人士。
这个特殊性还在于其产生的背景。也许是由于我自己在计算机技术方面的动手能力相对比较弱,其实也不太懂如何教学生提高动手能力,因此一直希望有一个机会实际地了解所谓“实训”到底是怎么回事,也希望能有一种安排让现在教学岗位的一些青年教师得到相关的培训和体会。于是作为2006—2010年教育部高等学校计算机科学与技术教学指导委员会的一项工作,我们和教育部软件工程专业大学生实习实训基地(亚思晟)合作,举办了6期“高等学校青年教师软件工程设计开发高级研修班”,每期时间虽然只是短短的1~2周,但是对于大多数参加研修的青年教师来说都是很有收获的一段时光,在对他们的结业问卷中充分反映了这一点。从这种研修班得到的认识之一,就是目前市场上缺乏相应的教材。于是,这套“高等学校计算机科学与技术项目驱动案例实践规划教材”应运而生。
当然,这样一套教材,由于“新”,难免有风险。从内容程度的把握、知识点的提炼与铺陈,到与其他教学内容的结合,都需要在实践中逐步磨合。同时,这样一套教材对我们的高校教师也是一种挑战,只能按传统方式讲软件课程的人可能会觉得有些障碍。相信清华大学出版社今后将和作者以及高等学校计算机科学与技术教学指导委员会一起,举办一些相应的培训活动。总之,我认为编写这样的教材本身就是一种很有意义的实践,祝愿成功。也希望看到更多业界资深技术人员加入到大学教材编写的行列中来,和高校一线教师密切合作,将学科、行业的新知识、新技术、新成果写入教材,开发适用性和实践性强的优秀教材,共同为提高高等教育教学质量和人才培养质量做出贡献。
在21世纪,哪些技术将影响人类的生活?哪些产业将决定国家的发展?信息技术与信息产业无疑会排在前列。软件工程是信息技术的重要组成部分,它是围绕软件项目开展的需求分析、面向对象的分析设计、编码实现、测试、维护和项目管理等一系列过程、方法和工具。
高等学校学生是企业和政府的后备军,国家教育部门计划在高等学校中普及软件工程教育。多所高校的实践表明,软件工程教育受到学生的普遍欢迎,取得了很好的教学效果。然而,在软件工程教育中也存在一些不容忽视的共性问题,其中比较突出的是教材问题。
从近两年软件工程教育情况来看,许多任课教师提出目前的很多教材不能满足教学需求。具体体现在以下3方面: 第一,软件工程专业的术语很多,没有专业知识背景的学生在学习时有一定难度;第二,很多教材中的案例比较匮乏,并且案例内容与企业的实际情况相差太远,致使案例的参考价值不大;第三,缺乏具体的课程实践指导和真实的项目案例详解。因此,针对高等学校软件工程专业课程的教学特点与需求,编写适用的教材已刻不容缓。
本书就是针对以上问题编写的,围绕一个完整的项目来组织知识内容。作者希望推广一种有效的学习与培训方法,这就是项目驱动训练(ProjectDriven Training),用项目实践带动理论学习(或者叫作“做中学”)。基于这种教学模式,本书围绕一个电子政务项目来驱动面向对象的设计、开发及管理各个模块的理论讲解。另外,本书提供了国际化企业普遍使用的软件工程标准文档模板,以使学生了解国际化软件项目的标准开发流程和过程管理。学生通过项目实践,可以明确技术应用的目的(为什么学),更好地将技术原理融会贯通(学什么),也可以更好地检验学习效果(学得怎样)。
本书有两大特色:
(1) 注重项目实践。作者基于多年项目开发经验认识到“IT是做出来的,不是想出来的”,理论虽然重要,但一定要为实践服务。因此,以项目为主线来带动理论学习是最有效的方法。希望读者通过本书对软件工程有整体了解,能够根据本书的知识体系循序渐进地完成真实项目。
(2) 注重理论要点。本书以项目实践为主线,着重介绍软件工程中最重要、最核心的部分以及它们之间的联系。在学习时,首先应通过项目把握整体概貌,再深入局部细节,系统地学习理论;然后不断优化和扩展细节,完善知识的整体框架并改进项目。
为了便于教学,本书配有教学课件,可从清华大学出版社网站(www.tup.com.cn)下载。
本书第一作者梁立新的工作单位为深圳技术大学。本教材得到深圳技术大学的大力支持和教材出版资助,作者在此致以特别感谢。
限于作者的水平,书中难免有不足之处,敬请广大读者批评指正。
梁立新2020年8月
第1章软件工程及信息化建设1
1.1软件工程概述1
1.1.1面向过程的方法3
1.1.2面向对象的方法3
1.2信息化建设项目案例——电子政务系统4
1.2.1电子政务系统概述4
1.2.2电子政务系统分类6
1.2.3电子政务建设的基础8
习题9
第2章项目开发流程与UML概述10
2.1项目开发流程10
2.1.1项目生命周期11
2.1.2项目开发阶段12
2.2UML概述13
2.2.1UML图13
2.2.2Rational Rose及其使用19
习题27
第3章软件需求分析28
3.1软件需求分析概述28
3.2软件需求分析过程29
3.2.1什么是软件需求29
3.2.2需求分析过程中的角色30
3.2.3需求分析过程的迭代30
3.2.4需求来源31
3.2.5需求获取方法31
3.2.6软件需求表达31
3.3项目案例36
3.3.1学习目标36
3.3.2案例描述363.3.3案例要点36
3.3.4案例实施37
3.3.5特别提示55
3.3.6拓展与提高55
习题55
第4章系统分析设计56
4.1软件架构设计57
4.1.1软件架构设计基本概念57
4.1.2软件架构设计步骤59
4.1.3架构设计文档69
4.2软件详细设计78
4.2.1软件详细设计概述78
4.2.2面向对象的详细设计79
4.2.3数据库设计82
4.3项目案例94
4.3.1学习目标94
4.3.2案例描述94
4.3.3案例要点94
4.3.4案例实施94
4.3.5特别提示127
4.3.6拓展与提高127
习题127
第5章软件实现128
5.1StrutsSpringHibernate架构概述 128
5.2Struts技术128
5.2.1Struts概述129
5.2.2MVC与Struts映射129
5.2.3Struts 2的工作流程和配置文件130
5.2.4创建Controller组件132
5.2.5创建Model组件142
5.2.6创建View组件143
5.3Hibernate技术144
5.3.1Hibernate概述144
5.3.2Hibernate的对象/关系数据库映射146
5.4Spring技术1655.4.1Spring概述165
5.4.2Spring IoC166
5.4.3Spring AOP原理176
5.4.4事务管理180
5.5项目案例185
5.5.1学习目标185
5.5.2案例描述185
5.5.3案例要点185
5.5.4案例实施185
5.5.5特别提示211
5.5.6拓展与提高212
习题212
第6章软件测试213
6.1软件测试概述213
6.2常用测试技术214
6.3JUnit217
6.3.1安装JUnit217
6.3.2JUnit测试流程217
6.3.3Eclipse与JUnit220
6.4JMeter223
6.4.1JMeter简介223
6.4.2JMeter测试流程223
6.4.3JMeter总结226
6.5项目案例227
6.5.1学习目标227
6.5.2案例描述227
6.5.3案例要点227
6.5.4案例实施227
6.5.5特别提示230
6.5.6拓展与提高230
习题230
第7章软件项目部署231
7.1软件部署概述231
7.2项目案例236
7.2.1学习目标2367.2.2案例描述236
7.2.3案例要点236
7.2.4案例实施236
7.2.5特别提示247
7.2.6拓展与提高247
习题247
第8章软件配置和变更管理248
8.1软件配置管理概述248
8.2软件配置管理工具——CVS248
8.3软件变更管理概述249
8.4统一变更管理250
8.4.1统一变更管理简介250
8.4.2统一变更管理原理250
8.5项目案例259
8.5.1学习目标259
8.5.2案例描述259
8.5.3案例要点259
8.5.4案例实施260
8.5.5特别提示271
8.5.6拓展与提高272
习题272
第9章软件过程管理273
9.1CMM273
9.1.1CMM基本概念273
9.1.2实施CMM的必要性274
9.1.3CMM的基本内容274
9.2CMMI278
9.2.1CMMI基本概念278
9.2.2从CMM到CMMI的映射279
9.3项目案例280
9.3.1学习目标280
9.3.2案例描述280
9.3.3案例要点280
9.3.4案例实施280
9.3.5特别提示2819.3.6拓展与提高281
习题281
第10章项目管理282
10.1项目管理基本概念282
10.1.1项目282
10.1.2项目管理的定义和特点283
10.1.3项目管理专业知识领域284
10.2项目管理知识体系286
10.2.1项目管理知识体系概述286
10.2.2项目管理的9个知识领域和5个过程287
10.3项目管理工具Project及其使用290
10.3.1Project概述290
10.3.2Project工具的使用292
10.4项目案例309
10.4.1学习目标309
10.4.2案例描述309
10.4.3案例要点310
10.4.4案例实施310
10.4.5特别提示314
10.4.6拓展与提高314
习题314
附录A软件工程标准文档模板315
A.1软件需求规格说明书315
A.2架构设计说明书317
A.3详细设计说明书320
A.4测试说明书322
A.5用户手册324
A.6项目开发计划327
本书针对软件行业各个职业岗位所需关键技术能力、职业素质、可持续发展能力进行深入的调查研究,并在此基础上构建学生的知识、技能和素质结构,以项目为载体,采用项目实践来带动理论学习的方式,形成课程标准、案例实施方案、过程化考核方案的创新教材。
融合项目实践与开发原理于一体,以项目实践作为主线贯穿全书。本书提供了完整的项目案例,通过项目使读者能够快速掌握软件工程中最核心的组件,包括:软件工程概述、项目开发生命周期及流程、需求分析、系统分析和设计、编码实现、测试和实施、软件配置和变更管理、软件过程管理、项目管理等。
本书还提供了国际化企业标准开发文档,体现了国际化软件项目的标准开发流程和过程管理等。
本书既可以作为初学软件工程的基础教程,对已经掌握了部分软件工程与项目开发知识的读者也会有很大的帮助。
梁立新,毕业于中国科技大学,获理学学士和管理科学硕士学位,后留学美国伊利诺依理工大学,获工商管理硕士学位。毕业后曾工作于美国华尔街、加拿大多伦多证券交易所和Canada Gain Fortune Inc.,担任高级软件设计师和首席技术官。在国内具有从零开始成功创业以及多年职业管理经历。现任深圳技术大学大数据与互联网学院副教授、外国专家局特聘专家。