目录 第1篇概述篇 第1章面向对象技术概述3 1.1结构化方法和面向对象方法3 1.2面向对象方法的由来6 1.3面向对象的基本概念与术语7 1.4面向对象的软件开发9 1.5面向对象方法的优缺点10 1.6面向对象程序设计语言12 1.6.1Simula和Smalltalk语言12 1.6.2C扩展语言13 1.6.3Eiffel语言14 1.6.4Java语言14 1.6.5其他面向对象语言15 1.7面向对象的分析与设计15 1.8典型的面向对象方法20 1.8.1Coad & Yourdon方法20 1.8.2Rumbaugh方法20 1.8.3Booch方法22 1.8.4Jacobson方法23 1.8.5RDD方法25 1.9本章小结26 1.10习题27 第2章统一建模语言UML概述31 2.1UML概述31 2.1.1为什么要建模31 2.1.2什么是UML34 2.1.3UML的发展历史35 2.1.4UML的特点37 2.2UML的构成38 2.2.1UML的概念模型38 2.2.2UML中的视图42 2.2.3UML 1.5版的规范44 2.3UML 2.0简介45 2.3.1底层结构46 2.3.2上层结构47 2.3.3活动图48 2.3.4结构化类元49 2.3.5组合50 2.3.6异常51 2.3.7交互概观图52 2.3.8用例图53 2.3.9UML一致性53 2.3.10小结54 2.4一个UML的例子55 2.4.1需求分析55 2.4.2用例图56 2.4.3活动图57 2.4.4顺序图57 2.4.5协作图59 2.4.6类图59 2.4.7状态图60 2.4.8组件图60 2.4.9部署图61 2.5本章小结62 2.6习题63 第2篇建模篇 第3章用例图69 3.1参与者69 3.1.1参与者的概念69 3.1.2参与者之间的关系70 3.1.3参与者和用例之间的关系71 3.2用例71 3.2.1用例的概念71 3.2.2用例的特征72 3.2.3用例之间的关系73 3.2.4用例之间的泛化、包含、扩展关系的比较76 3.2.5用例的实现78 3.3用例描述78 3.4用例建模81 3.4.1用例建模的步骤82 3.4.2确定系统的边界82 3.4.3确定参与者83 3.4.4确定用例84 3.4.5区分用例的优先次序84 3.4.6细化每个用例84 3.4.7编写每个用例的用例描述85 3.4.8绘制用例图85 3.4.9编写项目词汇表85 3.5用例建模中常见的问题分析86 3.5.1用例的设计原则86 3.5.2用例模型的复杂度87 3.5.3用例模型的调整88 3.5.4用例模型的检查88 3.5.5系统的三层结构89 3.5.6用例描述89 3.5.7不同层次的用例模型之间的一致性91 3.6一个用例建模的例子93 3.6.1需求陈述93 3.6.2识别参与者94 3.6.3识别用例94 3.6.4确定系统边界95 3.6.5调整用例图96 3.6.6编写用例描述97 3.7本章小结108 3.8习题109 第4章类图与对象图120 4.1类与对象120 4.1.1类与对象的概念120 4.1.2类的属性121 4.1.3类的操作123 4.1.4类的职责125 4.2类与对象的识别126 4.2.1识别类与对象126 4.2.2识别类的属性130 4.2.3定义类的操作133 4.3类之间的关系134 4.3.1关联关系134 4.3.2聚合关系和组成关系144 4.3.3泛化关系145 4.3.4依赖关系146 4.4类之间关系的识别148 4.4.1识别关联关系148 4.4.2识别聚合关系148 4.4.3识别泛化关系149 4.4.4识别依赖关系152 4.5派生属性和派生关联153 4.6抽象类和接口153 4.6.1抽象类153 4.6.2接口153 4.6.3实现关系155 4.7类版型156 4.7.1实体类156 4.7.2边界类156 4.7.3控制类157 4.7.4用户自定义版型157 4.8类图158 4.8.1类图的抽象层次158 4.8.2构造类图159 4.9对象图160 4.9.1对象的表示161 4.9.2链的表示162 4.10一个结构建模的例子162 4.10.1需求陈述162 4.10.2识别对象163 4.10.3识别属性164 4.10.4识别关系164 4.11本章小结166 4.12习题167 第5章顺序图与协作图179 5.1交互模型概述179 5.2顺序图180 5.2.1对象180 5.2.2生命线180 5.2.3控制焦点181 5.2.4消息182 5.2.5分支182 5.2.6从属流182 5.3顺序图中的消息183 5.3.1调用消息183 5.3.2异步消息183 5.3.3返回消息183 5.3.4阻止消息184 5.3.5超时消息184 5.3.6消息的语法格式184 5.3.7调用消息和异步消息的比较186 5.4建立顺序图概述187 5.4.1建立顺序图187 5.4.2顺序图与用例描述的关系188 5.4.3顺序图与类图的区别188 5.5协作图189 5.5.1对象189 5.5.2链190 5.5.3消息190 5.5.4对象生命周期190 5.6建立协作图概述192 5.6.1建立协作图192 5.6.2协作图与顺序图的比较192 5.6.3协作图与用例描述的关系193 5.6.4协作图与类图的区别193 5.7交互建模中常见的问题分析194 5.7.1在顺序图中表示方法的普通嵌套和递归嵌套194 5.7.2在协作图中表示消息的发送顺序和嵌套顺序194 5.7.3条件消息和循环消息的表示196 5.7.4在顺序图中使用交互架构196 5.7.5调用消息和事件(信号)消息的区别197 5.7.6在顺序图中表示时间约束198 5.7.7顺序图的两种形式198 5.7.8协作图的两种形式198 5.7.9用例实现的类图与协作图199 5.7.10协作图中的多对象201 5.7.11协作图中的主动对象202 5.8一个交互建模的例子203 5.8.1需求陈述204 5.8.2识别对象类204 5.8.3识别消息205 5.8.4确定消息的形式和内容205 5.8.5“新增学习计划”用例实现的顺序图206 5.8.6其他用例实现的顺序图或协作图207 5.9本章小结209 5.10习题210 第6章状态图与活动图221 6.1行为模型概述221 6.2状态图222 6.2.1状态223 6.2.2组合状态/子状态225 6.2.3转移226 6.2.4事件229 6.2.5信号230 6.3建立状态图233 6.3.1识别需要绘制状态图的实体234 6.3.2识别状态空间234 6.3.3识别状态转移234 6.3.4绘制并审查状态图235 6.4状态图的工具支持235 6.5活动图237 6.5.1活动237 6.5.2分支237 6.5.3分叉和汇合237 6.5.4泳道238 6.5.5对象流238 6.5.6信号239 6.6活动图的用途240 6.6.1对业务过程建模240 6.6.2对具体操作建模241 6.7建立活动图241 6.7.1定义活动图的范围241 6.7.2添加起始点和结束点241 6.7.3添加活动242 6.7.4添加活动间的变迁和决策点242 6.7.5找出可并行活动之处242 6.8活动图的工具支持243 6.9状态图和活动图的比较243 6.10一个行为建模的例子244 6.10.1需求陈述244 6.10.2分析活动244 6.10.3分析对象状态245 6.11本章小结246 6.12习题248 第7章组件图与部署图259 7.1组件图259 7.1.1组件259 7.1.2组件的类型260 7.1.3组件之间的关系261 7.1.4组件和类的关系261 7.1.5组件和接口的关系262 7.2组件图的用途262 7.2.1对源代码文件之间的关系建模262 7.2.2对可执行文件之间的关系建模262 7.2.3对物理数据库中各个具体对象之间的关系建模263 7.2.4对自适应系统建模263 7.3组件图的工具支持263 7.3.1正向工程263 7.3.2逆向工程267 7.4组件图的例子274 7.5部署图277 7.5.1结点277 7.5.2连接277 7.5.3部署图介绍278 7.5.4分布式系统的物理建模278 7.6部署图的例子279 7.7一个体系结构建模的例子281 7.7.1需求陈述281 7.7.2分析类和接口281 7.7.3确定组件282 7.7.4确定组件之间的依赖关系282 7.7.5确定硬件结点283 7.7.6确定硬件结点之间的通信关系283 7.8本章小结284 7.9习题284 第8章包图288 8.1包图概述288 8.1.1包中的元素288 8.1.2包的命名288 8.1.3包中元素的可见性289 8.1.4包的层次性289 8.1.5包之间的关系289 8.2设计包的原则291 8.2.1重用等价原则291 8.2.2共同闭包原则291 8.2.3共同重用原则291 8.2.4非循环依赖原则292 8.2.5高内聚和低耦合原则292 8.3包的应用293 8.4一个分组机制建模的例子293 8.4.1需求陈述293 8.4.2分析类和接口293 8.4.3确定包293 8.4.4确定包之间的依赖关系294 8.5本章小结294 8.6习题295 第9章数据建模297 9.1数据建模概述297 9.2数据库设计的基本过程297 9.3数据库设计的步骤298 9.3.1Rational Rose中的设计步骤298 9.3.2Rational Rose中的具体操作过程300 9.3.3在Rational Rose中表之间的关系304 9.4对象模型和数据模型的相互转换307 9.4.1对象模型转换为数据模型307 9.4.2数据模型转换为对象模型310 9.5关联关系的多重性在数据模型中的映射311 9.5.1多对多的关联的映射312 9.5.2一对多的关联的映射312 9.5.3零或一对一的关联的映射312 9.6本章小结314 9.7习题314 第3篇架构篇 第10章软件设计模式及应用319 10.1设计模式概述319 10.1.1设计模式的历史319 10.1.2设计模式的组成元素320 10.1.3设计模式的作用和研究意义321 10.1.4为什么要使用设计模式322 10.1.5设计模式的分类323 10.1.6设计模式遵循的原则325 10.1.7设计模式的使用策略326 10.2经典设计模式328 10.2.1工厂模式328 10.2.2适配器模式331 10.2.3命令模式332 10.2.4解释器模式334 10.2.5迭代器模式335 10.2.6观察者模式336 10.2.7代理模式338 10.2.8单例模式339 10.2.9状态模式340 10.2.10策略模式341 10.2.11访问者模式343 10.3设计模式实例345 10.3.1Facade模式345 10.3.2Adapter模式348 10.3.3Abstract Factory模式352 10.3.4Observer模式355 10.4在Rose中使用设计模式359 10.5基于UML建模方法中的设计模式的运用364 10.5.1Struts 2框架364 10.5.2用户需求364 10.5.3UML建模的用例图365 10.5.4UML建模的类图365 10.5.5设计模式优化类图366 10.5.6顺序图367 10.5.7融合UML建模和设计模式的开发模式367 10.6本章小结369 10.7习题369 第11章Rational统一过程379 11.1软件开发过程和统一过程379 11.2Rational统一过程的概述380 11.2.1Rational统一过程的发展历史380 11.2.2Rational统一过程的宏观与微观381 11.2.3Rational统一过程中的核心概念382 11.3Rational统一过程的软件开发生命周期384 11.3.1Rational统一过程的生命周期384 11.3.2Rational统一过程的核心工作流385 11.3.3Rational统一过程的阶段388 11.4Rational统一过程的模型与文档393 11.4.1Rational统一过程的模型393 11.4.2Rational统一过程产生的模型与文档394 11.5Rational统一过程的特点395 11.6Rational统一过程的6个最佳实践400 11.7Rational统一过程的配置和实现403 11.7.1配置Rational统一过程403 11.7.2实现Rational统一过程404 11.8RUP裁剪405 11.9RUP Builder405 11.10基于RUP的Cycle过程的迭代开发模式409 11.10.1RUP的生命周期409 11.10.2RUP的循环409 11.10.3RUP的模型410 11.10.4开发模式410 11.10.5项目需求411 11.10.6课程网站运行效果415 11.10.7与其他开发方法的比较417 11.11本章小结418 11.12习题419 第4篇应用篇 第12章基于Struts 2的个人信息管理系统应用实例425 12.1系统概述425 12.2需求分析425 12.2.1用户需求425 12.2.2系统功能模块结构图426 12.2.3系统运行效果426 12.3用例建模432 12.3.1确定系统边界432 12.3.2识别参与者433 12.3.3识别用例433 12.3.4绘制用例图433 12.3.5用例描述434 12.4静态建模440 12.4.1识别对象类440 12.4.2识别属性441 12.4.3绘制类图441 12.4.4绘制数据模型441 12.4.5设计数据表442 12.5动态建模444 12.5.1绘制顺序图444 12.5.2绘制协作图449 12.5.3绘制活动图450 12.5.4绘制状态图452 12.6架构建模453 12.6.1绘制包图454 12.6.2绘制组件图455 12.6.3绘制部署图457 12.7本章小结458 12.8习题458 附录A部分习题参考答案459 参考文献502