本书英文版面世以来,广受业界专家和读者的好评,历经3个版本的锤炼,吸收了大量OOA,D的精华思想和现代实践方法。全书叙述清晰、用词精炼、构思巧妙,将面向对象分析设计的概念、过程、方法、原则和个人的实践建议娓娓道来,以实例为证,将软件的分析和设计的过程叙述得如逻辑推理一般,于细节处见真知。\r\n 本书是一本经典的面向对象分析设计技术的入门书,适用范围广泛,从初学者到有一定对象技术知识但希望进一步提高开发水平的中级读者,甚至是资深的专业人员,都可以从本书获益匪浅,同时,本书也适合作为高等院校相关课程的教材和各类培训班的辅导教材。\r\n\r\n 作者简介:\r\n Craig Larman,Valtech公司首席科学家,Valtech是一家领先的跨国技术咨询公司,在美国、欧洲和亚洲都有分支机构。他是国际软件界知名的专家和导师,专长为OOA/D与设计模式、敏捷/迭代方法、统一过程的敏捷途径和UML建模。除本书外,他还著有畅销的《Agile and lterative Development:A Manager''s Guide》(敏捷迭代开发,该书影印版由机械工业出版社引进出版)一书,并且与Rhett Guthrie合著了《Java 2 Performance and ldiom Guide》一书。Larman是ACM和IEEE会员,拥的计算机科学学士和硕士学位。他的中文网站是www.craiglarman.cn。
译者序\r\n序\r\n前言\r\n第一部分 绪论\r\n 第1章 面向对象分析和设计 \r\n 1.1 本书的主要内容 \r\n 1.2 最重要的学习目标 \r\n 1.3 什么是分析和设计 \r\n 1.4 什么是面向对象分析和设计 \r\n 1.5 简短示例 \r\n 1.6 什么是UML \r\n 1.7 可视建模的优点 \r\n 1.8 历史 \r\n 1.9 参考资料 \r\n 第2章 迭代、进化和敏捷 \r\n 2.1 什么是UP?其他方法能否对其进行补充 \r\n 2.2 什么是迭代和进化式开发 \r\n 2.3 什么是瀑布生命周期 \r\n 2.4 如何进行迭代和进化式分析和设计 \r\n 2.5 什么是风险驱动和客户驱动的迭代计划 \r\n 2.6 什么是敏捷方法及其观点 \r\n 2.7 什么是敏捷建模 \r\n 2.8 什么是敏捷UP \r\n 2.9 UP的其他关键实践 \r\n 2.10 什么是UP的阶段 \r\n 2.11 什么是UP科目 \r\n 2.12 如何定制过程和UP开发案例 \r\n 2.13 判断你是否理解迭代开发或UP \r\n 2.14 历史 \r\n 2.15 参考资料 \r\n 第3章 案例研究 \r\n 3.1 案例研究中涵盖的内容 \r\n 3.2 案例研究策略:迭代开发+迭代学习 \r\n 3.3 案例一:NextGen POS系统 \r\n 3.4 案例二:Monopoly游戏系统 \r\n第二部分 初 始 阶 段\r\n 第4章 初始不是需求阶段 \r\n 4.1 什么是初始 \r\n 4.2 初始阶段的持续时间 \r\n 4.3 初始阶段会创建的制品 \r\n 4.4 何时知道自己并不了解初始阶段 \r\n 4.5 初始阶段中有多少UML \r\n 第5章 进化式需求 \r\n 5.1 定义:需求 \r\n 5.2 进化式需求与瀑布式需求 \r\n 5.3 寻找需求可以采用的方法 \r\n 5.4 需求的类型和种类 \r\n 5.5 UP制品如何组织需求 \r\n 5.6 本书是否包含这些制品的示例 \r\n 5.7 参考资料 \r\n 第6章 用例 \r\n 6.1 示例 \r\n 6.2 定义:参与者、场景和用例 \r\n 6.3 用例和用例模型 \r\n 6.4 动机:为什么使用用例 \r\n 6.5 定义:用例是功能性需求吗 \r\n 6.6 定义:参与者的三种类型 \r\n 6.7 表示法:用例的三种常用形式 \r\n 6.8 示例:详述风格的处理销售\r\n 6.9 各小节的含义 \r\n 6.10 表示法:有其他格式吗?两栏变体 \r\n 6.11 准则:以无用户界面约束的本质风格编写用例 \r\n 6.12 准则:编写简洁的用例 \r\n 6.13 准则:编写黑盒用例 \r\n 6.14 准则:持有参与者和参与者目标的视点 \r\n 6.15 准则:如何发现用例 \r\n 6.16 准则:什么样的测试有助于发现有用的用例 \r\n 6.17 应用UML:用例图 \r\n 6.18 应用UML:活动图 \r\n 6.19 动机:用例还有其他益处吗?语境中的需求 \r\n 6.20 示例:Monopoly游戏 \r\n 6.21 过程:在迭代方法中如何使用用例 \r\n 6.22 历史 \r\n 6.23 参考资料 \r\n 第7章 其他需求 \r\n 7.1 如何完成这些示例 \r\n 7.2 准则:初始阶段是否应该对此彻底地进行分析 \r\n 7.3 准则:这些制品是否应该放在项目Web站点上 \r\n 7.4 NextGen示例:(部分)补充性规格说明 \r\n 7.5 注解:补充性规格说明 \r\n 7.6 NextGen示例:(部分)设想 \r\n 7.7 注解:设想 \r\n 7.8 NextGen示例:(部分)词汇表 \r\n 7.9 注解:词汇表(数据字典) \r\n 7.10 NextGen示例:业务规则(领域规则) \r\n 7.11 注解:领域规则 \r\n 7.12 过程:迭代方法中的进化式需求 \r\n 7.13 参考资料 \r\n第三部分 细化迭代1—基础\r\n第四部分 细化迭代2—更多模式\r\n第五部分 细化迭代3——中级主题\r\n第六部分 其他主题\r\n参考文献\r\n术语表
感谢你阅读本书!我提供问题解答、咨询或培训等服务(在OOA/D、UML、建模、迭代和敏捷方法等方面),欢迎访问我的网站www.craiglarman.com。
本书是面向对象分析和设计(OOA/D)的实用指南,并且阐述了迭代开发相关方面的内容。我很高兴地看到本书的第1版和第2版在全世界范围内得到广泛认可。我衷心地感谢所有读者!
通过阅读本书,你将会有如下收益:
第一,对象技术已广泛地应用在软件开发中,掌握OOA/D对创建健壮、可维护的对象系统至关重要。
设计优秀
第二,如果你刚刚接触OOA/D,你将会面临如何掌握这个复杂主题的挑战;本书提供了一个良好定义的路标—统一过程,使你能一步一步地实现从需求到编码的全过程。
学习方法
第三,统一建模语言(UML)已成为建模的标准表示法,所以熟悉UML将使你受益。本书用UML表示法教授了运用OOA/D的技能。
学习UML建模
第四,设计模式表达了面向对象设计专家用于创建系统的“最佳实践”的习惯用法和方案。在本书中,你将学习如何应用设计模式,包括流行的GoF模式和GRASP模式。GRASP模式表达了对象设计中职责分配的基本原则。学习和掌握这些模式将加快你掌握分析和设计技能的速度。
学习设计模式
第五,本书的结构和重点建立在作者多年教授和培训成千上万学生掌握OOA/D的经验之上,它提供了一个精炼的、已证明的和高效率的掌握OOA/D的学习方法,使你在阅读和学习上的投资得到优化。
经验和教训
第六,本书详尽地说明一个案例,以便实际地说明整个OOA/D过程,并深入讨论问题的棘手细节;这是一个实际的练习。
实际案例
第七,本书说明如何将对象设计工件映射成Java代码。
设计到编码,TDD和重构
第八,本书解释如何设计一个分层架构并将图形用户界面层与领域层和技术服务层关联起来。
分层架构
最后,本书展示如何设计一个面向对象框架的相关知识并应用这些知识创建一个在数据库中持久化存储的框架。
框架设计
教学和Web资源
你可以在www.craiglarman.com找到相关文章。
在全球范围内,有数百或数千名教师在使用本书;并且至少被翻译为十种语言。在我的站点上有各种资源,包括组织为微软PowerPoint形式的本书所有插图、简单OOA/D的PowerPoint以及其他更多内容。如果你是教学工作者,欢迎与我联系以获取这些资源。
我从现有使用本书的教学者中收集了一些资料,并且也共享给了其他教学者。如果你可以共享的任何资料,请与我联系。
适用读者
本书是一本入门书,主要介绍OOA/D以及相关的需求分析,并以统一过程作为样例过程来阐述迭代开发;本书不是有关OOA/D的高级教材。它适用于以下读者:
具有面向对象程序设计语言使用经验的开发者和学生,但是刚刚接触面向对象分析和设计。
学习计算机科学和软件工程课程中对象技术的学生。
熟悉OOA/D但希望学习UML表示法、应用模式的读者,或者希望加强和提高自己的分析和设计技能的读者。
预备知识
本书假设读者已具备如下必需的知识:?
面向对象程序设计语言(如Java、C#、C++或Smalltalk)的知识和经验。
对象技术的基本概念和知识,如类、实例、接口、多态、封装和继承。
在本书中没有定义基本的对象技术概念。
Java示例,但是…
本书用Java提供代码示例或讨论Java的实现,这是因为Java使用广泛。然而,本书的观点适用于大多数(即使不是全部)的面向对象程序设计语言,包括C#、Python等等。
本书的组织
本书组织的整个策略是按与软件开发项目类似的顺序引入分析和设计的主题,包括“初始”阶段(统一过程中的术语)及后续的三个迭代(见图P-1)。
1. 初始阶段的各章介绍需求分析的基本知识。
2. 迭代1介绍基本的OOA/D的知识以及如何为对象分配职责。
3. 迭代2重点介绍对象设计,特别是介绍一些常用的设计模式。
4. 迭代3介绍多个不同的主题,如架构分析和框架设计。
图P-1本书的组织遵循项目的开发过程。
无封面