本书是使用UML(统一建模语言)进行OO(面向对象)分析和设计的复杂过程的绝佳指南。它描述了OO分析和设计过程如何适应同统一过程(UP)所定义的软件开发过程,并讨论了UML和统一过程中大量可以立即应用的实践技术。随着阅读的深入,读者将学会OO分析和设计技术、UML语法和统一过程的相关内容。同时,本书从OO分析师和设计师的角度提供了UML和统一过程可理解的、精确简洁的概述。本书内容丰富,结构合理,适于计算机及相关专业的学生及从业人员使用。\r\n 本书主要内容: \r\n\r\n\r\n ◆章节导航图、详细的图解和页边注解使读者可以快速找到需要的内容。 \r\n ◆每一章的概要总结方便读者进行温习,而全面的索引则方便将本书作为参考书。 一个简单的电子商务系统的完整可用的示例。\r\n\r\n\r\n 配套网站主要内容:\r\n\r\n\r\n 指向开源和专有软件的超级链接。\r\n\r\n\r\n http://www.umlandtheunifiedprocess.com\r\n
\r\n
第一部分 UML和UP介绍\r\n第1章 什么是UML 3\r\n1.1 章节导航图 3\r\n1.2 什么是UML 5\r\n1.3 UML的诞生 5\r\n1.4 为什么“统一” 6\r\n1.5 对象和 UML 7\r\n1.6 UML 结构 7\r\n1.7 UML构造块 8\r\n1.7.1 物件 8\r\n1.7.2 关系 8\r\n1.7.3 图 9\r\n1.8 UML 公共机制 9\r\n1.8.1 规格说明 10\r\n1.8.2 修饰 11\r\n1.8.3 公共分类 12\r\n1.8.4 扩展机制 13\r\n1.9 构架 15\r\n1.10 我们已经学习的内容 16\r\n第2章 什么是UP 18\r\n2.1 章节导航图 18\r\n2.2 什么是 UP 20\r\n2.3 UP 的诞生 20\r\n2.4 UP和Rational统一过程 22\r\n2.5 为项目实例化UP 23\r\n2.6 UP 公理 24\r\n2.7 UP 是迭代和增量过程 24\r\n2.7.1 迭代工作流 25\r\n2.7.2 基线和增量 25\r\n2.8 UP 结构 26\r\n2.9 UP 阶段 27\r\n2.9.1 初始—目标 27\r\n2.9.2 初始—焦点 27\r\n2.9.3 初始—里程碑:生命期目标 28\r\n2.9.4 细化—目标 28\r\n2.9.5 细化—焦点 28\r\n2.9.6 细化—里程碑:生命期构架 29\r\n2.9.7 构造—目标 29\r\n2.9.8 构造—焦点 29\r\n2.9.9 构造—里程碑:初始运作功能 30\r\n2.9.10 移交—目标 30\r\n2.9.11 移交—焦点 30\r\n2.9.12 移交—里程碑:产品发布 30\r\n2.10 我们已经学习的内容 31\r\n第二部分 需求\r\n第3章 需求工作流 35\r\n3.1 章节导航图 35\r\n3.2 需求工作流 37\r\n3.3 软件需求—元模型 38\r\n3.4 需求工作流细节 38\r\n3.5 需求的重要性 40\r\n3.6 定义需求 40\r\n3.6.1 系统需求规格说明 41\r\n3.6.2 形式良好的需求 41\r\n3.6.3 功能性和非功能性需求 41\r\n3.6.4 需求抽取—映射是没有范围的 42\r\n3.7 我们已经学习的内容 43\r\n第4章 用例建模 45\r\n4.1 章节导航图 45\r\n4.2 用例建模 47\r\n4.3 UP 活动:找出参与者和用例 47\r\n4.3.1 系统边界 47\r\n4.3.2 什么是参与者 48\r\n4.3.3 什么是用例 49\r\n4.3.4 项目词汇表 50\r\n4.4 UP 活动:详述用例 51\r\n4.4.1 用例规格说明 52\r\n4.4.2 流内分支 54\r\n4.4.3 流内循环:For 55\r\n4.4.4 流内循环:While 56\r\n4.4.5 需求跟踪 57\r\n4.5 复杂用例 58\r\n4.5.1 场景 58\r\n4.5.2 说明主要场景 58\r\n4.5.3 说明次要场景 58\r\n4.5.4 寻找次要场景 58\r\n4.5.5 多少场景 60\r\n4.6 何时适用用例建模 60\r\n4.7 我们已经学习的内容 61\r\n第5章 高级用例建模 63\r\n5.1 章节导航图 63\r\n5.2 参与者泛化 65\r\n5.3 用例泛化 66\r\n5.4 《include》 69\r\n5.5 《extend》 70\r\n5.5.1 扩展用例 72\r\n5.5.2 多重插入片段 73\r\n5.5.3 条件扩展 73\r\n5.6 何时使用高级特征 74\r\n5.7 我们已经学习的内容 74\r\n第三部分 分析\r\n第6章 分析工作流 79\r\n6.1 章节导航图 79\r\n6.2 分析工作流 80\r\n6.2.1 分析制品—元模型 80\r\n6.2.2 分析工作流细节 81\r\n6.3 分析模型—经验法则 82\r\n6.4 我们已经学习的内容 82\r\n第7章 类和对象 84\r\n7.1 章节导航图 84\r\n7.2 什么是对象 86\r\n7.2.1 封装 87\r\n7.2.2 消息传递 88\r\n7.3 UML 对象符号 89\r\n7.4 什么是类 90\r\n7.4.1 类和对象 92\r\n7.4.2 对象实例化 92\r\n7.5 UML类符号 93\r\n7.5.1 名称分栏 93\r\n7.5.2 属性分栏 94\r\n7.5.3 操作分栏 96\r\n7.5.4 类构造型语法 97\r\n7.6 范围 97\r\n7.6.1 实例范围和类范围 97\r\n7.6.2 范围决定访问 98\r\n7.7 对象构造和销毁 98\r\n7.7.1 构造函数—类BankAccount示例 99\r\n7.7.2 析构函数—类BankAccount示例 100\r\n7.8 我们已经学习的内容 100\r\n第8章 寻找分析类 103\r\n8.1 章节导航图 103\r\n8.2 UP 活动:分析用例 105\r\n8.3 什么是分析类 105\r\n8.3.1 分析类剖析 106\r\n8.3.2 如何产生良好的分析类 107\r\n8.3.3 分析类经验法则 108\r\n8.4 寻找类 109\r\n8.4.1 使用名词/动词分析寻找类 109\r\n8.4.2 使用 CRC 分析寻找类 110\r\n8.4.3 寻找其他类来源 111\r\n8.5 创建初步分析模型 112\r\n8.6 我们已经学习的内容 112\r\n第9章 关系 114\r\n9.1 章节导航图 114\r\n9.2 什么是关系 116\r\n9.3 什么是链接 116\r\n9.3.1 对象图 116\r\n9.3.2 路径 117\r\n9.4 什么是关联 118\r\n9.4.1 关联语法 119\r\n9.4.2 多重性 120\r\n9.4.3 导航性 123\r\n9.4.4 关联和属性 124\r\n9.4.5 关联类 125\r\n9.4.6 受限关联 127\r\n9.5 什么是依赖 128\r\n9.5.1 使用依赖 129\r\n9.5.2 抽象依赖 130\r\n9.5.3 授权依赖 131\r\n9.6 我们已经学习的内容 132\r\n第10章 继承和多态 135\r\n10.1 章节导航图 135\r\n10.2 泛化 137\r\n10.3 类继承 138\r\n10.3.1 覆盖 138\r\n10.3.2 抽象操作和类 139\r\n10.3.3 抽象层次 140\r\n10.4 多态 141\r\n10.5 我们已经学习的内容 144\r\n第11章 分析包 145\r\n11.1 章节导航图 145\r\n11.2 什么是包 146\r\n11.3 包依赖 147\r\n11.4 传递性 148\r\n11.5 嵌套包 149\r\n11.6 包泛化 151\r\n11.7 包构造型 151\r\n11.8 构架分析 152\r\n11.8.1 寻找分析包 153\r\n11.8.2 包循环依赖 153\r\n11.9 我们已经学习的内容 154\r\n第12章 用例实现 157\r\n12.1 章节导航图 157\r\n12.2 UP 活动:分析用例 159\r\n12.3 什么是用例实现 159\r\n12.4 用例实现—元素 160\r\n12.5 交互图 160\r\n12.6 协作和交互 161\r\n12.7 协作图 161\r\n12.7.1 描述符形式的协作图 162\r\n12.7.2 实例形式的协作图 163\r\n12.7.3 对象交互 164\r\n12.7.4 多重对象 167\r\n12.7.5 迭代 168\r\n12.7.6 分支和自委托 169\r\n12.7.7 并发性—活动对象 170\r\n12.7.8 对象状态 174\r\n12.8 顺序图 175\r\n12.8.1 迭代 177\r\n12.8.2 分支和自委托 178\r\n12.8.3 并发性—活动对象 178\r\n12.8.4 对象状态和约束 179\r\n12.9 我们已经学习的内容 181\r\n第13章 活动图 184\r\n13.1 章节导航图 184\r\n13.2 什么是活动图 185\r\n13.3 动作状态 185\r\n13.4 子活动状态 186\r\n13.5 迁移 186\r\n13.6 判定 187\r\n13.7 分叉和结合 188\r\n13.8 泳道 189\r\n13.9 对象流 190\r\n13.10 信号 191\r\n13.11 我们已经学习的内容 192\r\n第四部分 设计\r\n第14章 设计工作流 197\r\n14.1 章节导航图 197\r\n14.2 设计工作流 199\r\n14.3 设计制品—元模型 199\r\n14.4 设计工作流细节 202\r\n14.5 制品 202\r\n14.6 我们已经学习的内容 203\r\n第15章 设计类 205\r\n15.1 章节导航图 205\r\n15.2 什么是设计类 207\r\n15.3 设计类剖析 207\r\n15.4 形式良好的设计类 208\r\n15.4.1 完整性和充分性 208\r\n15.4.2 原始性 209\r\n15.4.3 高内聚 209\r\n15.4.4 低耦合 210\r\n15.5 继承 210\r\n15.5.1 聚合与继承 211\r\n15.5.2 多重继承 212\r\n15.5.3 继承与接口实现 213\r\n15.6 模板 213\r\n15.7 嵌套类 215\r\n15.8 我们已经学习的内容 216\r\n第16章 精化分析关系 219\r\n16.1 章节导航图 219\r\n16.2 设计关系 221\r\n16.3 聚合和组合 221\r\n16.4 聚合语义 222\r\n16.5 组合语义 224\r\n16.6 如何精化分析关系 225\r\n16.7 一对一关联 226\r\n16.8 多对一关联 226\r\n16.9 一对多关联 226\r\n16.10 汇集 227\r\n16.10.1 简单 OCL汇集 229\r\n16.10.2 映射表 229\r\n16.11 具体化关系 230\r\n16.11.1 多对多关联 230\r\n16.11.2 双向关联 231\r\n16.11.3 关联类 231\r\n16.12 我们已经学习的内容 232\r\n第17章 接口和子系统 236\r\n17.1 章节导航图 236\r\n17.2 什么是接口 238\r\n17.3 接口和基于组件的开发 239\r\n17.4 寻找接口 242\r\n17.5 接口设计 242\r\n17.6 什么是子系统 243\r\n17.6.1 子系统和接口 244\r\n17.6.2 外观模式 245\r\n17.6.3 物理构架和分层模式 245\r\n17.7 接口的优点和缺点 247\r\n17.8 我们已经学习的内容 247\r\n第18章 用例实现—设计 250\r\n18.1 章节导航图 250\r\n18.2 用例实现—设计 251\r\n18.3 交互图—设计 251\r\n18.4 子系统交互 253\r\n18.5 我们已经学习的内容 254\r\n第19章 基本状态图 255\r\n19.1 章节导航图 255\r\n19.2 基本状态图 256\r\n19.3 状态机与类 256\r\n19.4 基本状态图语法 257\r\n19.5 状态 258\r\n19.6 迁移 259\r\n19.7 事件 259\r\n19.7.1 调用事件 260\r\n19.7.2 信号事件 261\r\n19.7.3 改变事件 261\r\n19.7.4 时间事件 262\r\n19.8 我们已经学习的内容 263\r\n第20章 高级状态图 265\r\n20.1 章节导航图 265\r\n20.2 复合状态 267\r\n20.3 顺序复合状态 267\r\n20.4 并发复合状态 268\r\n20.5 子状态机通信 271\r\n20.5.1 使用属性通信 271\r\n20.5.2 使用同步状态通信 272\r\n20.6 历史 273\r\n20.6.1 浅度历史 273\r\n20.6.2 深度历史 274\r\n20.7 子状态机状态 274\r\n20.8 我们已经学习的内容 276\r\n第五部分 实现\r\n第21章 实现工作流 279\r\n21.1 章节导航图 279\r\n21.2 实现工作流 280\r\n21.3 模型跟踪关系 281\r\n21.4 实现工作流细节 282\r\n21.5 制品 282\r\n21.6 我们已经学习的内容 282\r\n第22章 组件 284\r\n22.1 章节导航图 284\r\n22.2 什么是组件 285\r\n22.3 简单 Java 示例 286\r\n22.4 Enterprise JavaBean 示例 288\r\n22.5 我们已经学习的内容 290\r\n第23章 部署 291\r\n23.1 章节导航图 291\r\n23.2 部署图 292\r\n23.3 部署图语法 292\r\n23.4 Enterprise JavaBean 示例 294\r\n23.5 我们已经学习的内容 296\r\n附录A 用例模型举例 297\r\n附录B XML和用例 302\r\n参考书目 303\r\n索引 305 \r\n
\r\n
信息技术革命给人类社会带来了深刻的变化, 半导体工业每十八个月提速一倍, 互联网越来越廉价可用, 软件给人们的生活. 学习和工作提供了越来越多. 越来越方便的服务. 但软件产业本身并没有像人们想像的那样高速发展, 软件产品的生产并不像其他工业产品生产那样容易和高效. 随着人类几十年来在软件领域实践的逐步深入, 出现一些很好的方法论, 如 RUP, 一些很好的可视化建模语言, 如UML, 它们集成了软件工业的最好实践, 给软件生产和管理带来了前所未有的活力.
UML汲取了近十年来在可视化建模领域出现的所有方法的优点, 它使涉及软件开发各阶段的人员能够有效沟通, 也使项目的其他利益相关人(如客户)能够可视化地理解他们所期望的系统和行为. 关于它的一些历史, 作者在文中颇有论述.
UP能够有效地指导和帮助软件公司组织和管理软件生产. 根据UP指南, 你能够把管理学知识引入到软件生产中, 分配恰当的职位和职务(角色), 并且赋予他们恰当的职责和义务, 确定合适的工作阶段及其有效的成果(制品), 设置恰当的里程碑及其应该满足的条件. 它使软件开发有章可循. 关于UP的历史, 作者在文中亦有论述.
UML本身非常复杂, 如果研究它的规范, 你会发现它几乎包罗万象. 现在, 市场上也有很多关于UML的书籍, 如《UML用户指南》和《UML参考手册》, 它们确实是弥足珍贵的技术资料, 但如果把UML和UP有效地结合起来讨论面向对象的分析和设计的话, 我觉得本书是不可多得的有用书籍. 它让我们看到在软件生产的各个阶段, 如何能够有的放矢地使用UML和UP进行面向对象的分析和设计.
本书的组织结构颇具特色. 每章都提供一幅用UML活动图编写的章节导航图, 它使你能够快速地了解每章各节之间的联系以便灵活科学地决定阅读顺序. 加上详细的图表和页边注解, 使你能够快速地获得你所需要的知识. 每章的概括性总结使得你能够很好地回顾该章内容. 另外, 目录和索引可以帮助你迅速地找到你所需要的知识点.
本书主要由方贵宾翻译, 李侃参与了本书第14. 15. 16. 17. 18章的翻译工作, 张罡参与了本书第19. 20. 21. 22. 23章以及附录的翻译工作. 鉴于我们的水平有限, 加之时间仓促, 错误在所难免, 敬请读者批评指正.
我们的Email是:umlandup@hotmail.com .
译 者
2002年8月6日于上海
Jim Arlow自1990年开始从事编程和面向对象系统的设计工作, 在此期间, 为Mannesmann和British Airways等公司创建对象模型. 在欧洲, 他是受人尊重的OO顾问, 他编写了在伦敦. 法兰克福和苏黎土定期举办的很多培训课程的教程, 并讲授这些培训课程. Jim经常在诸如ObjectWorld会议上进行讲演, 也是City University和British Computer Society的特邀演讲人. lIa Neustadt为British Airways公司的IT部门工作了18年, 在此期间, 她经历了IT开发生命期的所有过程. 她推出了BA的数据质量方法论, 并分析和形式化公司的方法来开发业务和系统构架.
本书的目标是帮助你使用UML(统一建模语言, Unified Modeling Language)和统一过程(Unified Process, UP), 学习面向对象的分析和设计(Object-Oriented Analysis and Design, OOA&D)过程.
UML 为 OO 建模提供了可视化建模语法, UP提供了软件工程框架, 告诉我们如何执行 OO 分析和设计.
我们尽量直接和实用地展示UML和UP.
约定
为了帮助你导航本书, 我们在每章都提供了一幅 UML 活动图以便你概览该章. 这些图表示阅读活动以及应该阅读的章节顺序. 示例显示在图 0-1 中.
本书中大多数图是 UML 图. 灰色的注释不是 UML 语法的组成部分.
我们在页边提供了注释以突出重要信息. 示例显示在页边.
如何阅读本书
如此多的书, 如此少的时间!我们设计本书以便你根据需要以几种不同的方式(除了一章接一章地)阅读它.
快速浏览
如果你想纵览整本书或特定章节, 请选择快速浏览. 这也是“管理概述”.
?选择一章.
?阅读章节导航图以便你知道处在何处.
?通过看图和阅读页边注释, 通览该章.
?阅读“我们已经学习的内容”.
?回溯到任何你感兴趣的章节并阅读它.
快速浏览是阅读本书快速和高效的方法. 你会惊奇地发现你能如此快速地获得知识!注意, 如果你开始能够明确地知道你想要什么信息, 快速阅读最有效. 例如, “我想了解如何进行用例建模”.
图 0-1
参考
如果你需要了解UML的特定部分或者想要学习特定的技术, 我们提供了详细的索引和内容目录, 应该能够帮助你快速和高效地定位你所需的信息.
复习
如果你想尽可能快速和高效地更新你的UML知识, 请阅读每章的“我们已经学习的内容”. 当你不了解某些东西的时候, 回溯并且阅读相应的章节.
趣味
如果你有几分钟剩余时间, 你可能拾起本书, 随机地打开它. 我们尽力保证每一页都有有趣的东西. 即使你已经非常了解UML, 你仍可以发现值得学习的新东西.
无封面