本书是一本关于面向对象分析和设计的教材,讲述了面向对象的基本思想、主要概念以及相应的表示法,并给出了建模过程指导。本书注重于理论与实践相结合,通过给出大量的例题和内容较为详尽的案例分析以及详述对建模概念的运用,阐述了如何进行面向对象建模。
面向对象技术以其显著的优势已经成为计算机软件领域的主流技术。本书是一本适合应用型人才培养的关于面向对象分析与设计的教材。
进行面向对象分析与设计需要一套概念与表示法。本书所采用的概念和表示法与UML 2.4保持一致,但并不是全盘采用。本书提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练。
进行面向对象分析与设计需要一套过程指导。本书所采用的开发过程,是在借鉴了较为流行的多种面向对象开发方法的基础上,根据青鸟工程的成果和作者参与的科研及工程实践的经验总结出来的,该过程指导具有实用性和广泛的适应性。
与第1版相比,新版有如下改进:
对面向对象概念的定义更为准确,对概念的解释也更加丰富和深入,对建模指导方面的内容进行了充实。
内容上更加与时俱进,本书第1版中的建模语言采用的是UML 2.0,本版写作时OMG发布了UML 2.4,其中模型图的种类、图元素的表示法以及一些解释都发生了变化,本版的建模语言遵循了UML 2.4。
作者和热心的读者在第1版的使用中发现了一些问题,本次再版对这些问题进行了修正。
本版给出了更多的应用实例,帮助读者加强对分析与设计建模策略和技巧的理解。
作者简介
麻志毅?博士,任教于北京大学信息科学技术学院计算机系,目前还担任国家软件行业协会软件工程分会秘书长。长期从事软件工程方面的教学与科研工作。在国内外学报或会议上发表学术论文100余篇,主持或参加国家高技术研究发展计划(863)、国家重大基础研究(973)、国家科技支撑计划和国家自然科学基金等20余项国家科研项目,出版著(译)作11部。主要研究领域为软件工程支撑环境、面向对象技术和面向服务计算技术等。曾获国家科技进步二等奖和国家科技攻关优秀成果奖等国家部委奖励多项。
在20世纪90年代,面向对象技术以其显著的优势成为计算机软件领域的主流技术,随后该技术在大多数发达国家的软件开发中得到了相当广泛的运用。在我国的软件产业界,面向对象技术的学习与应用热潮出现于20世纪90年代后期,如今面向对象分析与设计技术也已经得到了广泛的应用。
当前,产业界需要大量掌握面向对象分析与设计技术的高级应用型开发人才。很多计算机学院和软件学院在软件工程教学中开设了相应的课程,旨在使学生不仅会使用一种或者几种面向对象编程语言来编程,更重要的是能运用面向对象方法进行系统建模,即通过面向对象分析(ObjectOriented Analysis, OOA)和面向对象设计(ObjectOriented Design, OOD)建立系统的分析模型和设计模型。
邵维忠教授和杨芙清院士合著的两本著作[17]~[18]在广泛借鉴国际上各种OOA与OOD方法的同时,根据作者长期的研究与实践形成了自己的方法特色。其中最主要的特色有三条:一是提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练;二是对UML(Unified Modeling Language, 统一建模语言)所采用的与面向对象有关的概念进行了深入的解析,给出了自己的见解;三是其OOD部分比以往的著作内容更为详细,并且更强调用OO概念表达各种全局性的设计决策。这两部学术专著作为教材适合于理论性强的研究生教学。
本书旨在提供一本更适合应用型人才培养的教材。在思想体系上,本书继承了参考文献[17]和[18]所提出的理论和方法。但是作为一本适合应用型人才培养的教材,本书与它们相比有以下不同:
减少了理论阐述和对不同学术观点的讨论,增加了对如何运用概念的讲解。
着重讲述了面向对象的应用技术。
在各章的正文部分增加了例题,在各章之后给出了习题。
通过案例讲述了如何运用面向对象方法进行分析与设计。
本书既是一本教材,也可作为从事软件开发的工程技术人员的参考书。由于以上几个特点,本书与参考文献[17]和[18]相比具有更强的普及性,适用于更广大的读者群。
UML是一个由国际对象管理组织(Object Management Group, OMG)采纳的建模语言规范,目前在软件工业界已经被广泛接受。但UML的内容过于庞大和复杂(这是UML本身的复杂性造成的),多数工程技术人员和读者反映其学习难度很大。UML中的许多内容是用于构造UML元模型的,对于大多数面向应用的软件开发者来说,这些概念是用不着的。还有一些概念在软件系统的建模中很少使用,这是因为UML是各方面成果融合的产物,它要尽量地适合各领域。特别是UML不仅仅是用于面向对象开发的软件建模语言,它还可用于其他方面的建模,例如建筑业或机器制造业也可用它进行建模。基于上述因素,本书选用了UML中常用的概念来控制技术的复杂性。由于本书加强了运用基本概念解决各种复杂的分析与设计问题的过程指导,因此所选用的概念和表示法仍能保持表达能力的完整性。对本书而言,有些概念并非必不可少的,但为了方便读者理解这些常见概念,本书也适当地进行了讲解,同时也给出了一些运用基本的OO概念代替这些概念的方法。
本书所采用的概念和表示法与UML 24保持一致。在中文术语方面,本书与我国的行业规范《面向对象的软件建模规范》完全一致。作为该规范的主要起草者,本书作者曾经与国内很多专家、学者和企业界的专业人士进行过反复研究讨论,从而对该规范达成共识。
进行软件开发,应该遵循一定的过程指导。过程指导为完成软件系统开发的步骤提供详细指导,其中包括模型、工具和技术。本书所讲述的过程指导的思想来自参考文献[17]和[18],即本书所采用的开发过程,是在借鉴了较为流行的多种开发过程的基础上,根据青鸟工程的成果和作者的科研及工程实践的经验总结出来的。
像使用其他开发方法一样,用面向对象方法进行软件系统建模的目的是要建立相应的模型。总的来讲,本书把模型分为功能需求模型、分析模型和设计模型。针对建立各种模型所使用的图以及其中的一些具体的模型元素,本书还给出了相应的规约。
对于面向对象的软件建模,需要有建模工具的支持。本书对此类工具所应具有的主要功能进行了讲述,并介绍了两款面向对象的软件建模工具。
与第1版相比,本版进行了如下改进:
对面向对象概念的定义更为准确,对概念的解释更加丰富和深入,对建模指导方面的内容进行了充实。
第1版中的建模语言采用UML 20,然而至本版写作时OMG发布了UML 24,其中模型图的种类、图元素的表示法以及一些解释都发生了变化,因此本版的建模语言采用了UML 24。
解决了作者和热心的读者在第1版的使用中发现的一些问题。
为了加强对分析与设计建模策略和技巧的理解,本版给出了更多的应用实例。
以下简要地介绍本书的概貌,使读者对它有一个提纲挈领的了解。
第1章集中介绍了面向对象方法的基本思想和原则,解释了它的基本概念,论述了它的主要优点,并简单介绍了它的发展历史和现状,以及与本书密切相关的UML 24。
第2章首先概述了面向对象分析所面临的问题,然后对其进行了综述,在综述中阐述了面向对象分析模型和过程模型。
第3章全面地讲解了建立功能需求模型所需要使用的概念及其表示法,并详述了如何使用它们来建立功能需求模型。
第4章详细地讲述了类图中所使用的概念与表示法,并详述了如何使用它们来建立类图。
第5章讲述了建立辅助模型所用到的几种图:顺序图、通信图、活动图、状态机图和包图,其中详细地讲述了这些图中所使用的概念与表示法。
第6章说明了面向对象分析与设计的关系,并阐述了面向对象设计模型和过程模型。
第7章详述了如何针对实现条件对分析模型进行补充与调整,完成问题域部分设计。
第8章详述了进行人机交互设计所需要考虑的因素,并从分析和设计两个方面详述了如何进行人机交互设计。
第9章详述了什么是控制流,如何识别与定义控制流,以及如何协调控制流之间的同步。
第10章讲述了数据管理部分的设计。本章首先对数据库进行了简介,然后详细讲解了如何使用关系数据库系统对永久对象及它们之间的关系进行存储与检索。
第11章针对如何描述与构造系统的构件,详细讲解了构件图及其应用。本章还讲述了制品图和部署图。
第12章讲述了一些在面向对象设计中经常使用的设计模式。
第13章从耦合、内聚和复用等方面讲述了如何评价面向对象的设计模型。
第14章首先讲述如何把一个较为复杂的系统划分成一系列子系统,然后说明了如何对系统或子系统进行可视化建模,以及从那些方面建立系统的模型,此外还阐述了如何保证模型的一致性。
第15章通过一个具体的案例分析,说明如何用面向对象方法进行建模。
最后本书给出了两个附录。附录A讲述了两款面向对象的软件建模工具。附录B给出了对用面向对象方法进行软件系统建模所生成的文档的主要编制要求。
本书的研究工作和写作得到了北京大学邵维忠教授的大力帮助。邵维忠教授对书稿提出了十分难得的宝贵修改意见,本书的很多内容也来自他作为第一作者的著作[17,18]。邵维忠教授具有严谨的治学态度、深厚的学术功底以及敏锐的洞察力,他的指导使我受益良多。在此致以衷心的感谢!
本书的研究工作和写作得到了杨芙清院士和梅宏院士所领导的学术队伍的支持,也得到了国家自然科学基金(61272159)、北京市自然科学基金资助项目(4122036)、国家重点基础研究发展规划(2011CB302604)和国家863高技术研究发展计划项目(2012AA011202)的资助。在此谨向上述单位表示衷心的感谢!
对书中存在的错误和疏漏之处,恳请各位读者给予批评指正,并通过电子邮件(mzy@seipkueducn)或其他方式进行更有意义的讨论。
麻志毅
2013年1月于北京大学
计算机\软件工程
面向对象技术以其显著的优势已经成为计算机软件领域的主流技术。本书是一本适合应用型人才培养的关于面向对象分析与设计的教材。
进行面向对象分析与设计需要一套概念与表示法。本书所采用的概念和表示法与UML 2.4保持一致,但并不是全盘采用。本书提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练。
进行面向对象分析与设计需要一套过程指导。本书所采用的开发过程,是在借鉴了较为流行的多种面向对象开发方法的基础上,根据青岛工程的成果和作者参与的科研及工程实践的经验总结出来的,该过程指导具有实用性和广泛的适应性。
与第一版相比,本次再版有了如下改进:
对面向对象概念的定义更为准确,对概念的解释也更加丰富和深入,对建模指导方面的内容进行了充实。
内容上更加与时俱进,本书第一版中的建模语言采用的UML 2.0,本版写作时OMG发布了UML 2.4,其中模型图的种类、图元素的表示法以及一些解释都发生了变化,本版的建模语言遵循了UML 2.4。
作者和热心的读者在第一版的使用中发现了一些问题,本次再版对这些问题进行了修正。
本版给了更多的应用实例,帮助读者加强对分析与设计建模策略和技巧的理解。
麻志毅 编著:麻志毅 博士,任教于北京大学信息科学技术学院计算机系。长期从事面向对象方法和软件工程环境的研究。现已在国内外学报和会议上发表专业学术论文70余篇,主持或参加国家高技术研究发展计划(863)、国家重大基础研究(973)、国家科技支撑计划和国家自然科学基金等20余项国家科研项目,出版著(译)作9部。曾获国家科技进步二等奖及国家部委奖励多项。
前言
教学建议
第一部分概述
第1章面向对象方法概论
11传统软件开发方法中存在的问题
12面向对象的基本思想
13面向对象的基本原则
14面向对象方法的主要优点
15面向对象方法的发展史及现状简介
16关于统一建模语言UML
习题
第二部分面向对象分析
第2章什么是面向对象分析
21分析面临的主要问题
22面向对象分析综述
习题
第3章建立需求模型——用况图
31系统边界
32参与者
321概念与表示法
322识别参与者
33用况
331概念与表示法
332用况与参与者之间的关系
333用况之间的关系
334捕获用况
335用况模板
34用况图
35检查与调整
36用况模型与OOA模型
37例题
习题
第4章建立基本模型——类图
41对象与类
411概念与表示法
412识别对象与类
413审查与筛选
414抽象出类并进行调整
415认识对象的主动行为并识别主动对象
416类的命名
417建立类图的对象层
42属性与操作
421属性
422操作
43关系
431继承
432关联
433聚合
434依赖
44接口
习题
第5章建立辅助模型
51顺序图
511概念与表示法
512顺序图中的结构化控制
513建立顺序图
52通信图
521概念与表示法
522建立通信图
53活动图
531概念与表示法
532建立活动图
54状态机图
541概念与表示法
542建立状态机图
55包图
551概念与表示法
552如何划分与组织包
习题
第三部分面向对象设计
第6章什么是面向对象设计
61OOA与OOD的关系
62面向对象设计模型和过程
习题
第7章问题域部分的设计
71复用类
72增加一般类以建立共同协议
73提高性能
74按编程语言调整继承
75转化复杂关联并决定关联的实现方式
76调整与完善属性
77构造及优化算法
78决定对象间的可访问性
79定义对象实例
710其他
习题
第8章人机交互部分的设计
81什么是人机交互部分
82如何分析人机交互部分
83如何设计人机交互部分
831设计输入与输出
832命令的组织
833用OO概念表达所有的界面成分
834衔接界面模型和问题域模型
84人机交互部分的设计准则
习题
第9章控制驱动部分的设计
91什么是控制驱动部分
92控制流
93如何设计控制驱动部分
931识别控制流
932审查
933定义控制流
934进程间和线程间的通信
935控制流间的同步
习题
第10章数据管理部分的设计
101什么是数据管理部分
102数据库和数据库管理系统
1021关系数据库
1022面向对象数据库
103如何设计数据管理部分
1031针对关系数据库系统的数据存取设计
1032针对面向对象数据库系统的数据存取设计
1033针对文件系统的数据存取设计
习题
第11章构件及部署部分的设计
111构件设计
1111概念与表示法
1112构件的内部结构
1113对构件的行为建模
1114对构件的实现建模
112部署设计
1121概念与表示法
1122对系统的部署建模
习题
第12章若干典型的设计模式
121引言
122外观模式
123适配器模式
124策略模式
125观察者模式
126抽象工厂模式
127工厂方法模式
习题
第13章OOD的评价准则
131耦合
132内聚
133复用
134其他评价准则
习题
第四部分系统与模型
第14章系统与模型
141系统与子系统
1411概念与表示法
1412对体系结构模式建模
1413划分子系统
142模型
1421模型的含义
1422模型和视图
1423模型的抽象层次
1424模型间的一致性检查
习题
第五部分建模实例
第15章案例:教学管理系统
151系统的功能需求
152建立需求模型
1521划分子系统
1522识别参与者
1523识别用况
1524对需求进行捕获与描述
153系统分析
1531寻找类
1532建立状态机图
1533建立类图
1534建立顺序图
154系统设计
1541问题域部分设计
1542界面部分设计
1543数据管理部分设计
习题
附录A面向对象的软件建模工具
附录B文档编制指南
参考文献