感谢你阅读本书!我可以提供(OOA/D、UML、建模、迭代和敏捷方法等方面的)问题解答、咨询或培训等服务,欢迎访问我的网站www.craiglarman.com(中文站点是www.craiglarman.cn)。
本书是面向对象分析和设计(OOA/D)的实用指南,并且阐述与迭代开发相关的内容。我很高兴地看到本书的第1版和第2版在全世界范围内得到了广泛认可。我衷心地感谢所有读者!
通过阅读本书,你将会有如下收益:
设计优秀
第一,对象技术已获得广泛应用,掌握OOA/D对于成功进行软件开发是至关重要的。
学习一个过程路线图
第二,如果你刚刚接触OOA/D,你将会面临如何掌握这个复杂主题的挑战。本书提供了一个良好定义的迭代式路线图(统一过程的敏捷方法),帮助你一步一步地完成从需求到编码的全部工作。
学习UML建模
第三,统一建模语言(UML)已成为建模的标准表示法,所以能够熟练应用UML是很有用的。
学习设计模式
第四,设计模式表达了面向对象设计专家用于创建系统的“最佳实践”的习惯用法和方案。在本书中,你将学习如何应用设计模式,包括流行的GoF模式和GRASP模式。学习和应用这些模式将有助于你更快地掌握分析和设计技能。
吸取经验和教训
第五,本书的结构和重点基于作者多年来教授和培训成千上万学生掌握OOA/D的经验,它提供了一个精炼的、已证明的和高效的掌握OOA/D的学习方法,使你能够用尽量少的阅读和学习时间掌握OOA/D。
从一个实际案例中学习
第六,本书详尽地说明两个案例研究,以便实际地说明整个OOA/D过程,并深入讨论棘手的细节问题。
设计到编码、TDD和重构
第七,本书说明如何将对象设计制品映射成Java代码,还介绍了测试驱动开发和重构。
分层架构
第八,本书解释如何设计一个分层架构,以及如何将用户界面层与领域层和技术服务层关联起来。
设计框架
最后,本书展示如何设计一个面向对象框架的相关知识,并应用这些知识来创建一个在数据库中持久化存储的框架。
你可以在www.craiglarman.com找到相关文章。
在全球范围内,有成百上千名教师在使用本书,并且本书至少已被翻译为10种语言。在我的网站上有各种教师资源,包括PowerPoint形式的本书所有插图、OOA/D的PowerPoint演示以及其他更多内容。如果你是教师,欢迎与我联系以获取这些资源。
我从使用过本书的教师那里收集了一些资料,以便与其他教师共享。如果你也有可以共享的资料,请与我联系。
本书是一本入门书,主要介绍OOA/D以及相关的需求分析,并以统一过程作为样例过程来阐述迭代开发。本书不是有关OOA/D的高级教材。它适合以下读者阅读:
·具有面向对象编程经验但是刚刚接触OOA/D的开发者和学生。
·在计算机科学和软件工程课程中学习对象技术的学生。
·熟悉OOA/D但希望学习UML表示法、应用模式的读者,或者希望加强和提高自己的分析和设计技能的读者。
本书假设读者已具备如下必需的知识:
·面向对象程序设计语言(如Java、C#、C++或Python)的知识和经验。
·面向对象技术的基本概念和知识,如类、实例、接口、多态、封装和继承。
在本书中没有定义基本的面向对象技术概念。
本书一般用Java语言编写示例代码,这是因为Java使用广泛。然而,本书的观点适用于大多数(即使不是全部)的面向对象程序设计语言,包括C#、Python等。
本书按与软件开发项目类似的顺序引入分析和设计的主题,包括“初始”阶段(统一过程中的术语)及后续的三个迭代(见图P-1)。
1)初始阶段的各章介绍需求分析的基本知识。
2)迭代1介绍OOA/D的基本知识以及如何为对象分配职责。
3)迭代2重点介绍对象设计,特别是介绍一些常用的“设计模式”。
4)迭代3介绍多个不同的主题,如架构分析和框架设计。
图P-1 本书的组织结构遵循项目的开发过程
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大学获得计算机科学学士和硕士学位。
可以通过craig@craiglarman.com和www.craiglarman.com联系Craig。他欢迎广大读者和教师提出问题,并愿意接受演讲、教学和咨询的邀请。
除保留以前版本的核心内容之外,新版本在许多方面进行了精化,包括:
·UML 2。
·第二个案例研究。
·更多结合OOA/D进行迭代和进化式开发的技巧。
·为方便学习,再次编写了新的学习工具和图形。
·新的大学教师资源。
·敏捷建模、测试驱动开发和重构。
·更多UML活动图建模过程。
·以轻量和敏捷思维,并辅以诸如XP和Scrum等其他迭代方法来应用UP的指导。
·应用UML对架构进行文档化。
·增加了一章内容以阐述进化式需求。
·使用了[Cockburn01]中最为流行的方法精化用例章节。
首先,非常感谢我的朋友们以及我在Valtech公司的同事,他们是世界一流的对象开发和迭代开发专家,他们以各种方式促成、支持或评审了本书,他们是Chris Tarr、Tim Snyder、Curtis Hite、Celso Gonzalez、Pascal Roques、Ken DeLong、Brett Schuchert、Ashley Johnson、Chris Jones、Thomas Liou、Darryl Gebert,还有许多我叫不出名字的人。
感谢Philippe Kruchten为本书撰写了序言,对本书进行了评审,并以多种方式提供了帮助。
感谢Martin Fowler和Alistair Cockburn在有关设计和过程方面的真知灼见。感谢同意我引用他们的观点,并对本书提供了评审意见。
感谢Oystein Haugen、Cris Kobryn、Jim Rumbaugh和Bran Selic对UML 2内容的评审。
感谢John Vlissides和Cris Kobryn,本书引用了他们的观点。
感谢Chelsea Systems和John Gray,他们使用Java技术的ChelseaStore POS系统启发了一些需求,为本书提供了帮助。
感谢Pete Coad和Dave Astels对本书的支持。
感谢其他的评审者,他们是Steve Adolph、Bruce Anderson、Len Bass、Gary K. Evans、Al Goerner、Luke Hohmann、Eric Lefebvre、David Nunn和Robert J. White。
感谢Prentice-Hall出版公司的Paul Becker,正是他深信本书的第1版是一个有价值的项目,同时感谢Paul Petralia对后续版本的指导。
最后,特别感谢Graham Glass提供的一切便利。
统一过程制品和时限样例(s:开始时间,r:精化时间)
通用职责分配软件模式或原则(GRASP)
UML表示法示例