一、教材基本信息
1.适用对象
本教材适用于高等院校、示范性软件学院的软件工程等计算机相关专业的学生作为软件工程课程的教材使用,也可供从事软件开发的专业技术人员进行参考。
2.具备的知识和能力基础
学习本教材,需要具备简单的小型应用系统的编程经验,熟练掌握一种面向对象编程语言(Java语言),已经具有基本的数据库、计算机网络等基础知识,并具备查阅资料及文献以及书面表达等能力。
3.预期达到的学习效果
学习本教材之后,将为后续软件工程项目实践、项目实训等软件工程系列课程打下基础,并且将培养学生TOPCARESCDIO能力中的6个方面的能力,它们分别是:
(1)软件工程知识:软件工程基本概念、原理,系统分析与设计方法。
(2)团队工作运行:能够选择目标和议程、实施计划和组织有效会议、执行团队基本规定、实施有效交流(聆听、合作、提供和接受信息)、进行正面和有效的反馈、形成问题的解决方案(创造性和决策能力)。
(3)实事求是:发现问题及时解决,并能够找出问题的症结。
(4)设立系统目标和要求:可以识别市场需求和机会;找出并分析顾客需求;解释系统目标和要求。
(5)定义功能、概念和结构:能够确定必要的系统功能(以及系统的行为指标)、选择系统的概念、利用合理的技术水平。
(6)设计过程:为系统目标和要求导出备选方案,并能够进行系统功能结构设计、系统架构设计、系统部署结构设计。
4.教材编写团队介绍
本教材编写团队的成员都属于软件工程课程组的成员,包括石冬凌、吴吉红、常镜洳、任政、贾跃及周慧老师。他们不仅具有多年教授软件工程的丰富授课经验,而且也具有多年丰富的实际项目的实践经验,对于理论与实践的结合都有深刻的理解。在课程组老师的共同努力下,经过多年的教学实践和探索,教学思路已经逐步成熟起来,具备了形成完整知识体系的基础。
二、教材的基本结构与内容组织
1.教材的基本结构
本教材首先从整体上介绍软件工程的整个知识体系及经典的软件开发过程模型;然后以面向对象知识体系为主线,按照软件生命周期的顺序讲解软件从需求确定、系统分析、系统设计,到编码实现、软件测试及软件维护等环节的基础理论。教材的逻辑图如图1所示。
图1教材编排体系结构逻辑图
2.教材的内容组织
软件工程知识体系的相关内容共分为10章。第1章是对软件工程领域的整体概述,着重介绍了软件开发过程模型;第2章是对软件项目管理核心内容的介绍;第3章到第10章是采用面向对象技术,依托一个案例讲解软件生命周期各过程中的基本原理和建模方法。
为了更好地帮助学生理解所讲述的内容,本教材采用一个真实案例贯穿始终,指导学生在实际项目中如何灵活应用所讲述的知识。在每个项目实施的阶段,都设定一个案例分析环节,剖析项目在实施过程中是如何一步步得到推进,贯彻分析设计技术的,让学生体会理论与实践的结合,实际问题的解决方式。最后通过每章课后设置的多项练习,巩固学生对问题的理解,强化学生解决实际问题的能力。
第1章软件工程概述1
1.1项目引入1
1.2项目分析1
1.3需要解决的问题1
1.4软件工程的历史2
1.5软件工程的基本概念5
1.6软件工程的基本原理6
1.7软件生命周期7
1.8软件开发过程模型9
1.8.1瀑布模型10
1.8.2原型模型13
1.8.3螺旋模型15
1.8.4迭代开发与RUP17
1.8.5敏捷软件开发21
1.9项目实施28
1.10知识拓展30
1.10.1精益开发30
1.10.2看板方法32
1.11本章小结34
1.12习题35
第2章软件项目管理37
2.1项目导入37
2.2项目分析37
2.3需要解决的问题38
2.4软件项目管理概述38
2.5项目人力资源管理39
2.5.1项目人力资源管理定义40
2.5.2项目人力资源构成描述41
2.6项目范围管理41
2.6.1项目范围计划41
2.6.2项目范围定义42
2.6.3项目范围确认43
2.6.4项目范围控制43
2.7项目进度管理44
2.7.1创建工作分解结构45
2.7.2活动定义45
2.7.3活动排序46
2.7.4活动资源估算46
2.7.5活动历时估算46
2.7.6制订进度计划46
2.7.7进度控制48
2.8项目风险管理49
2.8.1风险的分类50
2.8.2风险的识别50
2.8.3风险评估51
2.8.4风险的驾驭和监控51
2.8.5CMMI3风险管理示例52
2.9项目配置管理55
2.9.1配置管理相关概念55
2.9.2配置管理计划56
2.9.3变更管理57
2.9.4版本管理58
2.10项目质量管理60
2.10.1质量规划60
2.10.2执行质量保证63
2.10.3执行质量控制63
2.11项目实施64
2.11.1角色的映射64
2.11.2开发案例中的制品65
2.11.3为初始阶段制订计划65
2.12知识拓展66
2.12.1质量管理资格认证1ISO9000:200066
2.12.2质量管理资格认证2CMM67
2.12.3质量管理资格认证3ISO9000368
2.13本章小结69
2.14习题70第3章需求概述72
3.1项目引入72
3.2项目分析72
3.3需要解决的问题72
3.4需求阶段的任务和目标73
3.5基本概念73
3.5.1什么是需求73
3.5.2需求的分类74
3.5.3需求的不同来源76
3.6需求获取方法76
3.6.1建立联合分析小组76
3.6.2客户访谈77
3.6.3问卷调查77
3.6.4问题分析与确认77
3.6.5快速原型法77
3.7功能建模的方法介绍79
3.7.1数据流图法80
3.7.2功能列表法80
3.7.3原型法80
3.7.4用户故事80
3.7.5用例模型81
3.8需求确认81
3.9迭代中需求的特点81
3.10项目实施83
3.10.1项目背景说明83
3.10.2涉众83
3.10.3用户需求84
3.10.4非功能性需求85
3.11知识拓展85
3.12本章小结87
3.13习题88
第4章需求建模90
4.1项目引入90
4.2项目分析90
4.3需要解决的问题91
4.4业务流程描述91
4.4.1什么是业务流程91
4.4.2业务流程的图形化表示91
4.5用例模型94
4.5.1用例的描述形式96
4.5.2用例图99
4.6用例产生的过程100
4.6.1事件列表101
4.6.2从事件列表转换成用例104
4.6.3用例的描述105
4.6.4用例的优先级确定增量107
4.7补充性规格说明108
4.8项目实施108
4.8.1业务流程说明108
4.8.2用例模型110
4.9知识拓展115
4.10本章小结115
4.11习题116
第5章系统分析118
5.1项目导入118
5.2项目分析118
5.3需要解决的问题119
5.4领域模型119
5.4.1什么是领域模型120
5.4.2如何构建领域模型121
5.4.3何时构建领域模型125
5.5健壮性分析125
5.5.1健壮图的表示法126
5.5.2健壮图的使用规则127
5.6动态模型——顺序图的转换131
5.6.1将健壮性分析与顺序图对应131
5.6.2为静态类图增加方法132
5.7动态模型——状态的标识134
5.8项目实施135
5.8.1构建领域模型135
5.8.2捕捉状态变迁137
5.8.3健壮性分析138
5.8.4构建顺序图139
5.8.5整理分析类图1395.9知识拓展140
5.9.1抽取候选类的其他方法140
5.9.2领域驱动设计(DDD)141
5.10本章小结142
5.11习题142
第6章系统设计145
6.1项目导入145
6.2项目分析145
6.3需要解决的问题146
6.4什么是软件体系结构147
6.5软件设计的通用原则147
6.6应用程序的分割149
6.6.1按照业务划分150
6.6.2按照层次划分151
6.7体系结构模型154
6.7.1客户机/服务器模型154
6.7.2分层体系结构155
6.7.3数据仓库模型156
6.7.4管道过滤器模型156
6.8体系结构的表示157
6.8.1逻辑结构158
6.8.2物理结构159
6.9体系结构设计过程160
6.9.1制订核心业务架构160
6.9.2制订物理体系结构161
6.9.3确定分层策略162
6.9.4确定执行体系结构(选择框架)162
6.10用户界面设计163
6.11持久化设计166
6.11.1设计目标166
6.11.2数据库设计步骤167
6.12项目实施170
6.12.1体系架构设计170
6.12.2数据库的设计172
6.12.3界面设计175
6.13知识拓展176
6.13.1MVC架构模式176
6.13.2常见应用框架——SSM177
6.14本章小结178
6.15习题178
第7章对象设计181
7.1项目导入181
7.2项目分析181
7.3需要解决的问题182
7.4类的设计原则182
7.4.1单一职责原则183
7.4.2开闭原则184
7.4.3依赖倒转原则186
7.4.4里氏替换原则188
7.4.5接口隔离原则189
7.4.6合成复用原则191
7.4.7最少知识原则192
7.5设计模式的应用193
7.5.1策略模式(Strategy)193
7.5.2单例模式(Singleton)195
7.5.3适配器模式(Adapter)198
7.5.4工厂方法模式(Factory Method)199
7.6设计模式应用的注意事项201
7.7完善软件设计类201
7.8项目实施202
7.9知识拓展205
7.10本章小结206
7.11习题207
第8章软件实现209
8.1项目导入209
8.2项目分析209
8.3需要解决的问题210
8.4模型向代码的转换210
8.4.1类图与代码的关系210
8.4.2类之间的关系211
8.4.3顺序图与代码的对应213
8.5编码规范216
8.5.1源程序文档化217
8.5.2数据说明220
8.5.3语句结构220
8.5.4输入/输出221
8.6项目实施222
8.7知识拓展223
8.8本章小结224
8.9习题225
第9章软件测试227
9.1项目引入227
9.2项目分析227
9.3需要解决的问题227
9.4软件测试的目的和原则228
9.5软件测试与软件开发各阶段的关系229
9.6经典测试方法230
9.7黑盒测试231
9.7.1等价类划分231
9.7.2边界值分析法234
9.7.3错误推测法235
9.7.4因果图法235
9.7.5场景测试法238
9.8白盒测试241
9.8.1逻辑覆盖241
9.8.2基本路径覆盖243
9.9测试过程248
9.9.1单元测试249
9.9.2集成测试251
9.9.3系统测试252
9.9.4验收测试252
9.10面向对象测试方法253
9.11项目实施253
9.12知识拓展257
9.12.1自动化测试257
9.12.2JUnit258
9.13本章小结262
9.14习题263
第10章软件维护265
10.1项目引入265
10.2项目分析265
10.3需要解决的问题266
10.4软件维护的种类266
10.5软件维护的过程267
10.6软件维护的成本269
10.7项目实施270
10.8知识拓展271
10.8.1逆向工程271
10.8.2重构271
10.9本章小结272
10.10习题273
第11章软件项目综合练习275
11.1综合练习一275
11.1.1教师在线答疑系统275
11.1.2参考答案276
11.2综合练习二281
11.2.1空车配货系统281
11.2.2参考答案281
附录A面向对象技术概述286
A.1面向对象的基本概念286
A.1.1对象(Object)286
A.1.2类(Class)287
A.1.3实例(Instance)288
A.1.4消息(Message)288
A.1.5方法(Method)288
A.1.6属性(Attribute)288
A.1.7封装(Encapsulation)288
A.1.8继承(Inheritance)289
A.1.9多态性(Polymorphism)289
A.1.10重载(Overloading)289
A.2面向对象方法的总结290
A.3面向对象建模291
A.4小结293
附录B学习知识要点及能力要点294
参考文献297
2016年6月,中国成为国际本科工程学位互认协议《华盛顿协议》的正式会员,这是中国工程教育国际化进程的重要里程碑。“回归工程”、培养学生的“大工程观”是当今国际工程教育的主流理念。《华盛顿协议》对毕业生提出的12条素质要求中,不仅要求工程知识、工程能力,还强调通用能力和品德伦理;在实践上,以学生为中心,以产出为导向,注重对目标达成的支撑及持续改进,与CDIO工程教育实质等效。
CDIO工程教育是近年来国际工程教育改革的最新成果,以“预期学习结果”集合来驱动课程内容、教学方法、教育文化的设计,重视营造工程教育文化,其注重工程能力培养和基于工程项目全生命周期的一体化设计思想,对于国内工程类和相关专业的建设具有重要的实施价值。
作为承载了教学改革思想的载体,融入CDIO工程教育理念的高品质教材,东软CDIO工程教育教材在注重理实结合的同时,也注重对学生八大能力的培养,即:技术知识与推理能力,开放式思维与创新,个人职业能力,沟通表达与团队合作,态度与习惯,责任,价值观,实践构思、设计、实现和运行对社会的贡献。
CDIO工程教育教材是 CDIO教育教学改革在教学实施过程中的集中体现,它不仅承载着课程和项目的教学内容,而且贯穿和体现了CDIO工程教育的理念、思想与方法,是在系统化理论的指导下,将知识、能力、素质培养进行一体化设计,有机融合在教材体系中。教材的编写以能力培养为主线,以案例教学为引导,以项目为载体,充分体现“做中学”和“学中做”的思想,具有以下优势:
(1)以能力培养为主线,培养学生专业知识学习能力和工程实践能力。
(2)以案例为驱动,在做案例的过程中学习新知识,充分体现了“做中学”。
(3)以项目为载体,基于工程化教育方法,按照分析、设计、实施、运行展开项目及知识点的讲解。
(4)围绕专业知识结构和能力体系设计教材,实现同一专业下不同教材紧密的关联性。
(5)内容编排循序渐进,符合人的认知规律。
(6)适应柔性化教学变革,构建一体化、立体化教学资源。
CDIO工程教育教材可供以应用型人才为培养目标的高等院校以及职业培训机构作为教材使用。
目前,CDIO工程教育教材的建设还处于探索阶段,是一项创造性的工作,尚需要通过改革的实践不断加以深化和持续改进,任重而道远。