本书通过几个贯穿软件工程所有框架活动的一体化案例来阐述软件开发过程规范及方法,具体包括业务建模、需求分析建模、系统分析设计(分析建模、体系结构设计和详细设计)、编程与测试、部署等阶段详细文档及代码。所有一体化案例取材于真实的软件项目,所有运用面向对象的开发方法,通过UML进行建模(使用Rational Rose工具),参考RUP过程模型,并采用MVC的体系结构进行设计实现。通过案例教学,能够使读者了解软件开发的全过程,并学会编写标准的软件开发文档,同时掌握代码的编写方法及规范。
封面图
目录
- 前言
- 教学建议
- 第1章软件工程导论1
- 1.1软件和软件工程史1
- 1.1.1软件的产生1
- 1.1.2软件危机3
- 1.1.3传统软件工程4
- 1.1.4现代软件工程4
- 1.1.5软件工程与计算机科学5
- 1.2软件和软件工程5
- 1.2.1软件5
- 1.2.2软件危机的表现6
- 1.2.3软件工程7
- 1.2.4软件过程及通用过程框架9
- 1.3常见的软件过程模型11
- 1.3.1编码修正模型11
- 1.3.2线性顺序模型12
- 1.3.3V模型13
- 1.3.4增量模型14
- 1.3.5快速应用开发模型15
- 1.3.6演化模型16
- 1.3.7高级软件工程21
- 1.4传统软件过程规范23
- 1.4.1过程总述23
- 1.4.2需求分析阶段23
- 1.4.3高阶设计阶段24
- 1.4.4详细设计阶段25
- 1.4.5编码和单元测试阶段25
- 1.4.6集成计划与测试阶段26
- 1.4.7系统测试阶段26
- 1.4.8验收测试与安装阶段27
- 1.4.9维护阶段27
- 1.5Rational统一过程28
- 1.5.1RUP简介28
- 1.5.2RUP的二维开发模型28
- 1.5.3阶段和里程碑30
- 1.5.4RUP规程33
- 1.5.5RUP模型、工件及信息流34
- 1.6软件工程的发展动向35
- 1.6.1面向切面编程35
- 1.6.2敏捷软件开发36
- 1.6.3实验软件工程37
- 1.6.4模型驱动工程38
- 1.6.5软件生产线38
- 1.7习题38
- 参考文献39
- 第2章面向对象和UML40
- 2.1面向对象40
- 2.1.1面向对象的历史40
- 2.1.2面向对象分析和设计基本概念42
- 2.1.3面向对象编程43
- 【案例分析】类、对象45
- 2.2UML45
- 2.2.1UML的发展历史45
- 2.2.2RUP的发展历史48
- 2.2.3UML语义和UML表示法48
- 2.3习题50
- 参考文献50
- 第3章业务建模52
- 3.1业务建模概述52
- 3.1.1业务建模的目的52
- 3.1.2业务的构架视图53
- 3.1.3业务建模工作流程53
- 3.1.4业务建模场景56
- 3.1.5业务建模关键任务57
- 3.2了解系统上下文58
- 【案例分析】“数字软件学院”系统上下文59
- 3.3选定目标组织60
- 3.3.1确定目标组织的边界60
- 3.3.2确定业务涉众61
- 【案例分析】数字软件学院的业务涉众62
- 3.3.3说明目标组织的结构62
- 【案例分析】数字软件学院的目标组织结构63
- 3.3.4描绘业务愿景和业务目标63
- 【案例分析】数字软件学院的业务愿景和业务目标65
- 3.4建立业务用例模型66
- 3.4.1识别业务执行者66
- 【案例分析】数字软件学院业务系统的业务执行者67
- 【案例分析】教务学分查询业务系统的业务执行者68
- 3.4.2识别业务用例69
- 【案例分析】软件学院的业务用例模型70
- 3.5优化业务用例73
- 3.5.1精化业务用例73
- 【案例分析】软件学院教学的业务用例精化74
- 3.5.2结构化业务用例74
- 【案例分析】软件学院教学的业务用例包含关系75
- 【案例分析】软件学院教学的业务用例扩展关系76
- 【案例分析】软件学院教学的业务用例泛化76
- 【案例分析】软件学院的业务执行者泛化77
- 3.5.3划分业务系统77
- 【案例分析】软件学院的业务系统79
- 3.5.4详述业务用例79
- 【案例分析】学分查询业务用例详细描述81
- 3.6建立业务分析模型85
- 3.6.1业务工作者86
- 3.6.2业务实体86
- 3.6.3业务用例实现87
- 【案例分析】“学生学分查询”业务用例实现之一——活动图87
- 【案例分析】“学生学分查询”业务用例实现之二——交互图89
- 【案例分析】“学生学分查询”业务用例实现之三——类图92
- 3.6.4详细描述业务工作者和业务实体92
- 【案例分析】“学生学分查询”业务用例——详细描述业务工作者和业务实体93
- 3.7创建领域模型94
- 3.8小结95
- 3.9习题96
- 参考文献98
- 第4章需求99
- 4.1需求概述99
- 4.1.1功能性需求100
- 4.1.2非功能性需求100
- 4.2需求工作流程102
- 4.2.1分析问题103
- 4.2.2理解涉众需求103
- 4.2.3定义系统104
- 4.2.4管理系统范围104
- 4.2.5精化系统定义105
- 4.2.6管理变更需求105
- 4.3需求关键任务105
- 4.3.1引发涉众请求106
- 4.3.2开发愿景106
- 4.3.3查找执行者和用例107
- 【案例分析】学院门户网站的执行者108
- 【案例分析】教务学分查询系统的执行者108
- 【案例分析】学院门户网站的用例109
- 【案例分析】教务学分查询系统的用例110
- 4.3.4划分用例优先级111
- 4.3.5结构化用例模型112
- 【案例分析】学院门户网站的用例包114
- 【案例分析】教务学分查询系统的用例包115
- 4.3.6详细描述用例116
- 【案例分析】学院门户网站中的两个用例描述117
- 【案例分析】教务学分查询系统中学分查询的用例描述120
- 4.3.7制定补充规范120
- 4.3.8其他任务123
- 4.4详细描述软件需求124
- 4.4.1软件需求规约(不带用例)125
- 4.4.2软件需求规约(带用例)128
- 4.4.3用户界面原型129
- 【案例分析】学分查询系统的界面原型131
- 4.5习题132
- 参考文献134
- 第5章分析与设计135
- 5.1关于分析与设计的讨论135
- 5.1.1分析概述136
- 5.1.2设计概述137
- 5.2分析与设计工作流程138
- 5.2.1执行体系结构合成139
- 5.2.2定义候选体系结构139
- 5.2.3优化体系结构139
- 5.2.4分析行为139
- 5.2.5设计构件140
- 5.2.6设计数据库140
- 5.2.7服务识别140
- 5.2.8服务规范140
- 5.3分析建模141
- 5.3.1分析模型元素141
- 5.3.2静态模型142
- 【案例分析】学院门户网站系统分析——静态模型144
- 【案例分析】教务学分查询系统分析——静态模型145
- 5.3.3动态模型145
- 【案例分析】教务学分查询用例分析——动态模型147
- 【案例分析】学院门户网站中的修改用户角色用例分析——动态模型148
- 5.4设计建模149
- 5.4.1设计及设计模型元素149
- 5.4.2软件模式150
- 5.5体系结构设计151
- 5.5.1体系结构演变152
- 5.5.2体系结构设计原则153
- 5.5.3三层体系结构设计154
- 5.5.4MVC架构158
- 5.5.5J2EE的轻量级框架SSH160
- 5.5.6体系结构风格、框架与模式关系162
- 5.5.7RUP4+1体系结构视图164
- 【案例分析】“数字软件学院”体系结构设计165
- 【案例分析】教务学分查询系统体系结构171
- 5.6详细设计171
- 5.6.1详细设计概念171
- 5.6.2设计模式172
- 5.6.3类设计181
- 【案例分析】教务学分查询系统——初始设计类183
- 【案例分析】学院门户网站——持久类185
- 【案例分析】教务学分查询系统——定义类操作188
- 5.6.4数据库设计191
- 【案例分析】学院门户网站持久类到表的映射192
- 5.6.5界面设计194
- 5.7习题197
- 参考文献198
- 第6章实现200
- 6.1实现工作流程200
- 6.1.1结构化实现模型介绍201
- 6.1.2计划集成201
- 6.1.3服务实现202
- 6.1.4实现构件202
- 6.1.5集成每个子系统202
- 6.1.6集成系统202
- 6.2实现关键任务202
- 6.2.1结构化实现模型步骤202
- 6.2.2实现设计元素205
- 6.2.3评审代码207
- 6.2.4分析运行时行为208
- 6.2.5开发人员测试210
- 6.2.6实现可测性元素213
- 6.2.7子系统集成213
- 6.2.8系统集成214
- 6.2.9记录服务实现决策217
- 6.3JSP代码实现案例219
- 【案例分析】门户网站用户管理功能实现219
- 【案例分析】教务学分查询功能实现221
- 6.4习题223
- 参考文献224
- 附录A一体化案例介绍225