描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111744429
编辑推荐
(1)经典之作。本书是面向对象分析与设计领域圣经级著作,UML和设计模式应用领域的标杆。畅销全球20余年,被翻译为10余种语言。多年来广受好评,为面向对象编程思想的普及做出了巨大贡献。(2)大师出品。作者被誉为“The 20 Most Influential People In The Agile Community”,是LeSS(大规模Scrum)的共同创始人。(3)广受赞誉。《敏捷软件开发》作者Alistair Cockburn、《重构》作者Martin Fowler、《设计模式》作者之一John Vlissides等多位大师推荐。(4)实践验证。本书的内容源自于作者多年来教授和培训成千上万的学生的经验,已经被实践证明是一种精炼的、高效的学习面向对象分析和设计的教材,作者官网上提供了一些教辅资料。典藏版由国内知名的UMLChina社区进行了全文重新审校,在内容上精益求精。
内容简介
本书是面向对象分析和设计(OOA/OOD)领域的圣经级著作,为面向对象编程思想的普及做出了巨大贡献。历经3个版本的锤炼,本书在全球范围内被翻译为10余种文字,畅销20余年,历久弥新。同时,本书还是UML和设计模式应用领域的标准性著作。本书根据软件项目开发的过程来组织内容,充满着Craig的真知灼见,巧妙地将面向对象分析与设计的基本原则、开发方法和辅助工具结合起来,同时吸收了大量的轻量级的敏捷方法以及现代软件开发方法。学完本书不仅能系统地掌握面向对象分析与设计的概念、过程、方法和原则,而且还能掌握UML建模的标准方法以及GRASP和流行的GoF设计模式在面向对象设计中的应用。此外,本书还将指导我们如何将面向对象设计成果映射成Java代码。本书的内容源于作者多年来教授和培训成千上万的学生的经验,已经被实践证明是一种精炼的、高效的学习面向对象分析和设计的教材,作者的官网上提供了一些辅助学习和教学的资料。
目 录
译者序
序
前言
第一部分 绪 论
第1章 面向对象分析和设计 2
1.1 本书的主要内容 2
1.2 最重要的学习目标 4
1.3 什么是分析和设计 5
1.4 什么是面向对象分析和设计 5
1.5 简单示例 6
1.6 什么是UML 8
1.7 可视化建模的优点 11
1.8 历史 11
1.9 推荐资源 12
第2章 迭代、演化和敏捷 13
2.1 什么是UP?其他方法能否对其进行补充 14
2.2 什么是迭代和演化式开发 15
2.3 什么是瀑布生命周期 18
2.4 如何进行迭代和演化式分析与设计 19
2.5 什么是风险驱动和客户驱动的迭代计划 21
2.6 什么是敏捷方法及敏捷宣言 22
2.7 什么是敏捷建模 23
2.8 什么是敏捷UP 24
2.9 UP的其他关键实践 25
2.10 什么是UP的阶段 25
2.11 什么是UP科目 26
2.12 如何定制过程和UP开发案例 28
2.13 判断你是否理解迭代开发或UP 29
2.14 历史 30
2.15 推荐资源 30
第3章 案例研究 32
3.1 案例研究中涵盖的内容 32
3.2 案例研究策略:迭代开发+迭代学习 33
3.3 案例一:NextGen POS系统 34
3.4 案例二:Monopoly游戏系统 34
第二部分 初始阶段
第 4 章 初始阶段不是需求阶段 38
4.1 什么是初始阶段 38
4.2 初始阶段的持续时间 40
4.3 初始阶段会创建的制品 40
4.4 何时知道自己并不了解初始阶段 41
4.5 初始阶段中有多少UML 41
第5章 演化式需求 42
5.1 定义:需求 42
5.2 演化式需求与瀑布式需求 43
5.3 可以采用哪些方法寻找需求 44
5.4 需求的类型 44
5.5 UP制品如何组织需求 45
5.6 本书是否包含这些制品的示例 46
5.7 推荐资源 46
第6章 用例 47
6.1 示例 48
6.2 定义:执行者、场景和用例 49
6.3 用例和用例模型 49
6.4 动机:为什么使用用例 50
6.5 定义:用例是功能性需求吗 50
6.6 定义:执行者的三种类型 51
6.7 表示法:用例的三种常用形式 51
6.8 示例:详述风格的“处理销售”用例 52
6.9 各小节的含义 57
6.10 表示法:有其他格式吗?两栏变体 62
6.11 准则:以无用户界面约束的本质风格编写用例 63
6.12 准则:编写简洁的用例 64
6.13 准则:编写黑盒用例 64
6.14 准则:采用执行者和执行者目标的视角 65
6.15 准则:如何发现用例 65
6.16 准则:什么样的测试有助于发现有用的用例 68
6.17 应用UML:用例图 70
6.18 应用UML:活动图 72
6.19 动机:用例还有其他益处吗?
语境中的需求 72
6.20 示例:Monopoly游戏 73
6.21 过程:在迭代方法中如何使用用例 74
6.22 历史 78
6.23 推荐资源 78
第7章 其他需求 80
7.1 这些示例有多完整 81
7.2 准则:初始阶段是否应该对此进行彻底分析 81
7.3 准则:这些制品是否应该放在项目Web站点上 82
7.4 NextGen示例:(部分)补充性规格说明 82
7.5 注解:补充性规格说明 85
7.6 NextGen示例:(部分)愿景 86
7.7 注解:愿景 88
7.8 NextGen示例:(部分)术语表 91
7.9 注解:术语表(数据字典) 91
7.10 NextGen示例:业务规则(领域规则) 92
7.11 注解:领域规则 92
7.12 过程:迭代方法中的演化式需求 93
7.13 推荐资源 94
第三部分 细化迭代1——基础
第8章 迭代1——基础 96
8.1 迭代1的需求和重点:核心OOA/D技能 96
8.2 过程:初始阶段和细化阶段 98
8.3 过程:计划下一个迭代 101
第9章 领域模型 102
9.1 示例 103
9.2 什么是领域模型 104
9.3 动机:为什么要创建领域模型 107
9.4 准则:如何创建领域模型 108
9.5 准则:如何找到概念类 108
9.6 示例:寻找和描绘概念类 111
9.7 准则:敏捷建模—绘制类图的草图 112
9.8 准则:敏捷建模—是否要使用工具维护模型 112
9.9 准则:报表对象—模型中是否要包括“票据” 112
9.10 准则:像地图绘制者一样思考;使用领域术语 112
9.11 准则:如何对非现实世界建模 113
9.12 准则:属性与类的常见错误 113
9.13 准则:何时使用描述类建模 114
9.14 关联 116
9.15 示例:领域模型中的关联 120
9.16 属性 121
9.17 示例:领域模型中的属性 127
9.18 结论:领域模型是否正确 128
9.19 过程:迭代和演化式领域建模 129
9.20 推荐资源 130
第10章 系统序列图 132
10.1 示例:NextGen SSD 132
10.2 什么是系统序列图 134
10.3 动机:为什么绘制SSD 134
序
前言
第一部分 绪 论
第1章 面向对象分析和设计 2
1.1 本书的主要内容 2
1.2 最重要的学习目标 4
1.3 什么是分析和设计 5
1.4 什么是面向对象分析和设计 5
1.5 简单示例 6
1.6 什么是UML 8
1.7 可视化建模的优点 11
1.8 历史 11
1.9 推荐资源 12
第2章 迭代、演化和敏捷 13
2.1 什么是UP?其他方法能否对其进行补充 14
2.2 什么是迭代和演化式开发 15
2.3 什么是瀑布生命周期 18
2.4 如何进行迭代和演化式分析与设计 19
2.5 什么是风险驱动和客户驱动的迭代计划 21
2.6 什么是敏捷方法及敏捷宣言 22
2.7 什么是敏捷建模 23
2.8 什么是敏捷UP 24
2.9 UP的其他关键实践 25
2.10 什么是UP的阶段 25
2.11 什么是UP科目 26
2.12 如何定制过程和UP开发案例 28
2.13 判断你是否理解迭代开发或UP 29
2.14 历史 30
2.15 推荐资源 30
第3章 案例研究 32
3.1 案例研究中涵盖的内容 32
3.2 案例研究策略:迭代开发+迭代学习 33
3.3 案例一:NextGen POS系统 34
3.4 案例二:Monopoly游戏系统 34
第二部分 初始阶段
第 4 章 初始阶段不是需求阶段 38
4.1 什么是初始阶段 38
4.2 初始阶段的持续时间 40
4.3 初始阶段会创建的制品 40
4.4 何时知道自己并不了解初始阶段 41
4.5 初始阶段中有多少UML 41
第5章 演化式需求 42
5.1 定义:需求 42
5.2 演化式需求与瀑布式需求 43
5.3 可以采用哪些方法寻找需求 44
5.4 需求的类型 44
5.5 UP制品如何组织需求 45
5.6 本书是否包含这些制品的示例 46
5.7 推荐资源 46
第6章 用例 47
6.1 示例 48
6.2 定义:执行者、场景和用例 49
6.3 用例和用例模型 49
6.4 动机:为什么使用用例 50
6.5 定义:用例是功能性需求吗 50
6.6 定义:执行者的三种类型 51
6.7 表示法:用例的三种常用形式 51
6.8 示例:详述风格的“处理销售”用例 52
6.9 各小节的含义 57
6.10 表示法:有其他格式吗?两栏变体 62
6.11 准则:以无用户界面约束的本质风格编写用例 63
6.12 准则:编写简洁的用例 64
6.13 准则:编写黑盒用例 64
6.14 准则:采用执行者和执行者目标的视角 65
6.15 准则:如何发现用例 65
6.16 准则:什么样的测试有助于发现有用的用例 68
6.17 应用UML:用例图 70
6.18 应用UML:活动图 72
6.19 动机:用例还有其他益处吗?
语境中的需求 72
6.20 示例:Monopoly游戏 73
6.21 过程:在迭代方法中如何使用用例 74
6.22 历史 78
6.23 推荐资源 78
第7章 其他需求 80
7.1 这些示例有多完整 81
7.2 准则:初始阶段是否应该对此进行彻底分析 81
7.3 准则:这些制品是否应该放在项目Web站点上 82
7.4 NextGen示例:(部分)补充性规格说明 82
7.5 注解:补充性规格说明 85
7.6 NextGen示例:(部分)愿景 86
7.7 注解:愿景 88
7.8 NextGen示例:(部分)术语表 91
7.9 注解:术语表(数据字典) 91
7.10 NextGen示例:业务规则(领域规则) 92
7.11 注解:领域规则 92
7.12 过程:迭代方法中的演化式需求 93
7.13 推荐资源 94
第三部分 细化迭代1——基础
第8章 迭代1——基础 96
8.1 迭代1的需求和重点:核心OOA/D技能 96
8.2 过程:初始阶段和细化阶段 98
8.3 过程:计划下一个迭代 101
第9章 领域模型 102
9.1 示例 103
9.2 什么是领域模型 104
9.3 动机:为什么要创建领域模型 107
9.4 准则:如何创建领域模型 108
9.5 准则:如何找到概念类 108
9.6 示例:寻找和描绘概念类 111
9.7 准则:敏捷建模—绘制类图的草图 112
9.8 准则:敏捷建模—是否要使用工具维护模型 112
9.9 准则:报表对象—模型中是否要包括“票据” 112
9.10 准则:像地图绘制者一样思考;使用领域术语 112
9.11 准则:如何对非现实世界建模 113
9.12 准则:属性与类的常见错误 113
9.13 准则:何时使用描述类建模 114
9.14 关联 116
9.15 示例:领域模型中的关联 120
9.16 属性 121
9.17 示例:领域模型中的属性 127
9.18 结论:领域模型是否正确 128
9.19 过程:迭代和演化式领域建模 129
9.20 推荐资源 130
第10章 系统序列图 132
10.1 示例:NextGen SSD 132
10.2 什么是系统序列图 134
10.3 动机:为什么绘制SSD 134
前 言
感谢你阅读本书!我可以提供(OOA/D、UML、建模、迭代和敏捷方法等方面的)问题解答、咨询或培训等服务,欢迎访问我的网站www.craiglarman.com。
本书是OOA/D的实用指南,阐述与迭代开发有关的内容。我很高兴看到本书的第1版和第2版在世界范围内得到了广泛认可。我衷心地感谢所有读者!
阅读本书,你将会有如下收益:
第一,对象技术已获得广泛应用,掌握OOA/D对于成功进行软件开发是至关重要的。
第二,如果你刚刚接触OOA/D,你将会面临如何掌握这个复杂主题的挑战。本书提供了一个良好定义的迭代式路线图(统一过程的敏捷方法),帮助你一步一步地完成从需求确定到编码的全部工作。
第三,UML已成为建模的标准表示法,所以能够熟练应用UML是很有用的。
第四,设计模式表达了面向对象设计专家用于创建系统的“最佳实践”的习惯用法和方案。在本书中,你将学习如何应用设计模式,包括流行的GoF模式和GRASP。学习和应用这些模式将有助于你更快地掌握分析和设计技能。
第五,本书的结构和重点基于作者多年来教授和培训成千上万学生掌握OOA/D的经验,它提供了一个精练的、已得到证明的高效掌握OOA/D的学习方法,使你能够用尽量少的阅读和学习时间掌握OOA/D。
第六,本书详尽地说明了两个案例研究,以便确切了解整个OOA/D过程,并深入讨论棘手的细节问题。
第七,本书说明如何将对象设计制品映射成Java代码,还介绍了测试驱动的开发(TDD)和重构。
第八,本书解释如何设计一个分层架构,以及如何将用户界面层与领域层和技术服务层关联起来。
最后,本书展示有关设计面向对象框架的相关知识,并应用这些知识来创建在数据库中持久化存储的框架。
教学和Web资源
你可以在www.craiglarman.com找到相关文章。
在全球范围内,有成百上千名教师在使用本书,并且本书至少已被翻译为10种语言。在我的网站上有各种教师资源,包括PowerPoint形式的本书所有插图、OOA/D的PowerPoint演示以及其他更多内容。如果你是教师,欢迎与我联系以获取这些资源。
我从使用过本书的教师那里收集了一些资料,以便与其他教师共享。如果你也有可以共享的资料,请与我联系。
读者对象—入门级
本书是一本入门书,主要介绍OOA/D以及相关的需求分析,并以统一过程作为样例过程来阐述迭代开发。本书不是有关OOA/D的高级教材,它适合以下读者阅读:
具有面向对象编程经验但是刚刚接触OOA/D的开发者和学生。
在计算机科学和软件工程课程中学习对象技术的学生。
熟悉OOA/D但希望学习UML表示法、应用模式的读者,或者希望加强和提高自己的分析和设计技能的读者。
预备知识
本书假设读者已具备如下必需的知识:
面向对象程序设计语言(如Java、C#、C++或Python)的知识和经验。
面向对象技术的基本概念和知识,如类、实例、接口、多态性、封装和继承。
本书中没有定义基本的面向对象技术概念。
Java示例,但是……
本书一般用Java语言编写示例代码,这是因为Java使用广泛。但是,本书的观点适用于大多数(即使不是全部)的面向对象程序设计语言,包括C#、Python等。
本书的组织结构
本书按与软件开发项目类似的顺序引入分析和设计的主题,包括“初始阶段”(统一过程中的术语)及后续的三个迭代(见图P-1)。
1)初始阶段的各章节介绍需求分析的基本知识。
2)细化迭代1的各章节介绍OOA/D的基本知识以及如何为对象分配职责。
3)细化迭代2的各章节重点介绍对象设计,特别是一些常用的设计模式。
4)细化迭代3的各章节介绍架构分析和框架设计等中级主题。
关于作者
Craig Larman是Valtech公司的首席科学家。Valtech公司是一家国际性的咨询和技术转让公司,在欧洲、亚洲和北美洲都有分公司。他还是《敏捷迭代开发:管理者指南》(Agile and Iterative Development: A Manager’s Guide)一书的作者,这是一本关于软件工程和迭代、敏捷开发方法的畅销书籍。他在全球各地游历,足迹遍布从美国印第安纳州到印度的很多地方,对开发团队和管理人员进行培训。
20世纪80年代中期以来,Craig帮助了数以千计的开发者,使他们能够应用OOA/D,熟练使用UML建模技术,进行迭代开发实践。
在结束其街头流浪音乐家生涯后,Craig在20世纪70年代开始使用APL、PL/I和CICS建立系统。从20世纪80年代初期开始,他开始对人工智能产生兴趣,并用Lisp机器、Lisp、Prolog和Smalltalk建立过知识系统。他也为使用Java、.NET、C++和Smalltalk建立系统的公司工作过。在大部分业余时间,他担任Changing Requirement乐队(曾经称为Requirement,但是成员上有些变动)的主音吉他手。
他在加拿大温哥华Simon Fraser大学获得计算机科学学士和硕士学位。
联系方式
可以通过[email protected]和www.craiglarman.com 联系Craig。他欢迎广大读者和教师提出问题,并愿意接受演讲、教学和咨询的邀请。
新版本的改进之处
除保留以前版本的核心内容之外,新版本在
本书是OOA/D的实用指南,阐述与迭代开发有关的内容。我很高兴看到本书的第1版和第2版在世界范围内得到了广泛认可。我衷心地感谢所有读者!
阅读本书,你将会有如下收益:
第一,对象技术已获得广泛应用,掌握OOA/D对于成功进行软件开发是至关重要的。
第二,如果你刚刚接触OOA/D,你将会面临如何掌握这个复杂主题的挑战。本书提供了一个良好定义的迭代式路线图(统一过程的敏捷方法),帮助你一步一步地完成从需求确定到编码的全部工作。
第三,UML已成为建模的标准表示法,所以能够熟练应用UML是很有用的。
第四,设计模式表达了面向对象设计专家用于创建系统的“最佳实践”的习惯用法和方案。在本书中,你将学习如何应用设计模式,包括流行的GoF模式和GRASP。学习和应用这些模式将有助于你更快地掌握分析和设计技能。
第五,本书的结构和重点基于作者多年来教授和培训成千上万学生掌握OOA/D的经验,它提供了一个精练的、已得到证明的高效掌握OOA/D的学习方法,使你能够用尽量少的阅读和学习时间掌握OOA/D。
第六,本书详尽地说明了两个案例研究,以便确切了解整个OOA/D过程,并深入讨论棘手的细节问题。
第七,本书说明如何将对象设计制品映射成Java代码,还介绍了测试驱动的开发(TDD)和重构。
第八,本书解释如何设计一个分层架构,以及如何将用户界面层与领域层和技术服务层关联起来。
最后,本书展示有关设计面向对象框架的相关知识,并应用这些知识来创建在数据库中持久化存储的框架。
教学和Web资源
你可以在www.craiglarman.com找到相关文章。
在全球范围内,有成百上千名教师在使用本书,并且本书至少已被翻译为10种语言。在我的网站上有各种教师资源,包括PowerPoint形式的本书所有插图、OOA/D的PowerPoint演示以及其他更多内容。如果你是教师,欢迎与我联系以获取这些资源。
我从使用过本书的教师那里收集了一些资料,以便与其他教师共享。如果你也有可以共享的资料,请与我联系。
读者对象—入门级
本书是一本入门书,主要介绍OOA/D以及相关的需求分析,并以统一过程作为样例过程来阐述迭代开发。本书不是有关OOA/D的高级教材,它适合以下读者阅读:
具有面向对象编程经验但是刚刚接触OOA/D的开发者和学生。
在计算机科学和软件工程课程中学习对象技术的学生。
熟悉OOA/D但希望学习UML表示法、应用模式的读者,或者希望加强和提高自己的分析和设计技能的读者。
预备知识
本书假设读者已具备如下必需的知识:
面向对象程序设计语言(如Java、C#、C++或Python)的知识和经验。
面向对象技术的基本概念和知识,如类、实例、接口、多态性、封装和继承。
本书中没有定义基本的面向对象技术概念。
Java示例,但是……
本书一般用Java语言编写示例代码,这是因为Java使用广泛。但是,本书的观点适用于大多数(即使不是全部)的面向对象程序设计语言,包括C#、Python等。
本书的组织结构
本书按与软件开发项目类似的顺序引入分析和设计的主题,包括“初始阶段”(统一过程中的术语)及后续的三个迭代(见图P-1)。
1)初始阶段的各章节介绍需求分析的基本知识。
2)细化迭代1的各章节介绍OOA/D的基本知识以及如何为对象分配职责。
3)细化迭代2的各章节重点介绍对象设计,特别是一些常用的设计模式。
4)细化迭代3的各章节介绍架构分析和框架设计等中级主题。
关于作者
Craig Larman是Valtech公司的首席科学家。Valtech公司是一家国际性的咨询和技术转让公司,在欧洲、亚洲和北美洲都有分公司。他还是《敏捷迭代开发:管理者指南》(Agile and Iterative Development: A Manager’s Guide)一书的作者,这是一本关于软件工程和迭代、敏捷开发方法的畅销书籍。他在全球各地游历,足迹遍布从美国印第安纳州到印度的很多地方,对开发团队和管理人员进行培训。
20世纪80年代中期以来,Craig帮助了数以千计的开发者,使他们能够应用OOA/D,熟练使用UML建模技术,进行迭代开发实践。
在结束其街头流浪音乐家生涯后,Craig在20世纪70年代开始使用APL、PL/I和CICS建立系统。从20世纪80年代初期开始,他开始对人工智能产生兴趣,并用Lisp机器、Lisp、Prolog和Smalltalk建立过知识系统。他也为使用Java、.NET、C++和Smalltalk建立系统的公司工作过。在大部分业余时间,他担任Changing Requirement乐队(曾经称为Requirement,但是成员上有些变动)的主音吉他手。
他在加拿大温哥华Simon Fraser大学获得计算机科学学士和硕士学位。
联系方式
可以通过[email protected]和www.craiglarman.com 联系Craig。他欢迎广大读者和教师提出问题,并愿意接受演讲、教学和咨询的邀请。
新版本的改进之处
除保留以前版本的核心内容之外,新版本在
评论
还没有评论。