面向对象技术以其显著的优势已经成为计算机软件领域的主流技术。按照国家教育部计算机科学与技术专业教学指导委员会发布的计算机科学与技术专业规范(软件工程方向),面向对象方法学是计算机科学优选课程之一。
进行面向对象分析与设计需要一套概念与表示法。本书所采用的概念和表示法与UML 2.1保持一致,但并不是全盘采用。本书提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练。在中文术语方面,本书与我国的行业规范“面向对象的软件建模规范”完全一致。
进行面向对象分析与设计需要一套过程指导。本书所采用的开发过程,是在借鉴了较为流行的多种面向对象开发方法的基础上,根据青鸟工程的成果和作者单位的科研及工程实践的经验总结出来的。该过程指导具有实用性和广泛的适应性。
本书注重理论与实际相结合,既阐述了面向对象的原理、概念与表示法,又给出了实用的应用方法,还用大量例题和一个综合案例分析加以说明。本书涵盖面向对象的分析、设计和实现阶段,叙述深入浅出,便于学以致用。
面向对象技术以其显著的优势成为计算机软件领域的主流技术。
进行面向对象分析与设计需要一套概念与表示法。本书所采用的概念和表示法与UML 2.2保持一致。本书提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练。在中文术语方面,本书与我国的行业规范“面向对象的软件建模规范”完全一致。
进行面向对象分析与设计需要一套过程指导。本书所采用的开发过程,是在借鉴了较为流行的多种面向对象开发方法的基础上,根据青鸟工程的成果和作者参与的科研及工程实践的经验总结出来的,该过程指导具有实用性和广泛的适应性。
本书注重理论与实际相结合,既阐述了面向对象的原理、概念与表示法,又给出了实用的应用方法,还用大量例题和一个综合案例分析加以说明。
作者简介:
麻志毅 博士,任教于北京大学信息科学技术学院计算机系。长期从事面向对象方法和软件工程环境的研究,现已在国内外学报和会议上发表专业学术论文70余篇,主持或参加国家高技术研究发展计划(863)、国家重大基础研究(973)、国家科技支撑计划和国家自然科学基金等20余项国家科研项目,出版著(译)作9部。曾获国家科技进步二等奖及国家部委奖励多项。
在20世纪80年代,大批面向对象编程语言的出现标志着面向对象技术开始走向繁荣。80年代后期到90年代出现了多种面向对象分析和设计方法,在大多数发达国家的软件开发中得到了相当广泛的运用。在我国的软件产业界,对面向对象技术的学习与应用热潮出现于20世纪90年代的后期,特别是随着统一建模语言(Unified Modeling Language,UML)的出现和不断改进以及面向对象方法的不断完善,使得面向对象技术以其显著的优势成为计算机软件领域的主流技术。
当前,产业界需要大量的掌握面向对象方法与技术的高级应用型开发人才,很多院校开设了相应的课程,旨在使这些人才不仅会使用一种或者几种面向对象编程语言来编程,更重要的是能运用面向对象方法进行系统软件开发,即通过面向对象分析(OOA)和面向对象设计(OOD)建立系统的分析模型和设计模型,进而能够进行编程和测试。
软件开发方法通常要给出概念体系和运用其进行开发软件的过程指导,并要有相应建模工具的支持。
1本书概念体系
本书的面向对象概念均遵循UML 22。UML是由国际对象管理组织(OMG)发布的建模语言规范,在软件工业界和学术界已经被广泛接受。但UML的内容是庞大和复杂的,多数工程技术人员和读者反映其学习难度很大,这是UML本身的复杂性造成的。UML中的许多内容是用于构造UML元模型的,对于大多数面向应用的软件开发者来说,这些概念一般用不着。还有一些概念在软件系统的建模中很少使用,这是因为UML是各方面成果融合的产物,它尽量地要适合于各领域。特别是UML不仅仅可用于面向对象的软件建模,还可用于对其他方面的建模,例如可用它在建筑业或机器制造业进行建模。
邵维忠教授和杨芙清院士合著的[17]和[18]两本著作,在广泛借鉴国际上各种OOA与OOD方法的同时,根据作者长期的研究与实践形成了自己的方法特色:一是提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导来保持建模概念的简练;二是对UML 22所采用的与面向对象有关的概念进行了深入的解析,给出了自己的见解;三是其OOD部分更强调用OO概念表达各种全局性的设计决策。
本书选用了UML 22中常用的面向对象建模概念,以控制概念体系的复杂性。本书遵循了[17]和[18]两本著作提出的宗旨,即加强过程指导来运用基本概念解决各种复杂的分析与设计问题,因此所选用的概念体系仍能保持表达能力的完整性。为了使读者能够理解常常遇到的UML概念,尽管这些概念并不是必不可少的,本书也适当地进行了讲解,但是同时也给出了一些运用基本的OO概念代替这些概念的方法。除了所采用的概念和表示法与UML保持一致外,在中文术语方面,本书与我国的行业规范“面向对象的软件建模规范”[14]完全一致。本书作者作为该规范的主要起草者曾经与国内很多专家、学者和企业界的专业人士进行过反复研究讨论,从而对该规范达成共识。
2本书过程指导
过程指导包括开发过程中用到的模型、工具和技术。本书所给出的过程指导,是根据作者单位作为带头承担单位的国家重点科技攻关计划“青鸟工程”的研究成果和国内外的科研及工程实践的经验总结出来的,其中采用了[17]和[18]两本著作中的很多研究成果。像使用其他开发方法一样,用面向对象方法进行软件系统开发的目的是要建立相应的模型,并产生代码。本书讲述了如何建立系统的需求模型、分析模型和设计模型,并针对建立各种模型所使用的图以及其中的一些具体的模型元素,讲述了如何规约。由设计模型产生常见的面向对象编程语言,本书主要通过示例的方式讲述对典型问题的处理技术。此外,基于传统的测试技术,本书讲述了如何针对面向对象软件进行测试。
对于面向对象的软件建模,需要有建模工具的支持。本书从此类工具所应具有的功能上进行了讲述,并介绍了一种具体的面向对象的软件建模工具。
3本书特点
在思想体系上,本书在面向对象分析和设计方面秉承了[17]和[18]所提出的宗旨。但这两部学术专著,作为教材适合于理论性强的研究生教学。本书旨在提供一本针对应用型人才培养的教材。本书与[17]和[18]两本著作相比有以下几点不同:
1)增强了对如何运用概念的讲解,减少了理论阐述和对不同学术观点的讨论。
2)着重讲述了面向对象的应用技术,增加了实现和测试以及体系结构建模技术的讲述
3)在各章的正文部分增加了大量例题,在各章之后给出了习题。
4)通过案例,讲述了如何运用面向对象方法进行分析与设计。
由于以上几个特点,本书具有更强的普及性,适合于更广大的读者群。本书既是一本教材,也可作为从事软件开发的工程技术人员的参考书。
4本书主要内容
以下简要地介绍本书的概貌,使读者对它有一个提纲挈领的了解。
第1章集中介绍面向对象方法的基本思想和原则,论述它的主要优点,并简介它的发展历史和现状。最后,对与本书密切相关的UML 22进行了简介。
第2章首先概述面向对象分析所面临的问题,然后对其进行综述。在综述中阐述了面向对象的分析模型和过程模型。
第3章全面地讲解建立需求模型所需要使用的概念及其表示法,并详述如何使用它们来建立需求模型。
下面的第4章与第5章详述了如何建立面向对象分析部分的结构模型和行为模型。
第4章详细地讲述了类图中所使用的概念与表示法,并详述了如何使用它们来建立类图。
第5章讲述建立辅助模型所用到的几种图:顺序图、通信图、状态机图、活动图和包图。其中详细地讲述这些图中所用的概念与表示法以及运用它们建立辅助模型的技术。
下面的第6章~第12章详述了如何进行面向对象设计。
第6章阐述面向对象的设计模型和过程模型。
第7章详述如何针对实现条件,把分析模型作为问题域进而进行补充与调整。
第8章详述进行人机交互设计所需要考虑的因素,并从分析和设计两个方面详述了如何进行人机交互设计。
第9章详述什么是控制流,如何识别与定义控制流,以及如何协调控制流之间同步。
第10章讲述对数据管理部分的设计。首先对数据库进行简介,然后详细地讲解如何使用关系数据库系统对永久对象及其间的关系进行存储与检索。
第11章首先讲述针对设计模型进一步开发软件所产生的制品以及如何针对典型建立制品图,然后讲述了用于对系统的网络拓扑结构建模的部署图以及制品如何在其上部署的技术。
第12章从耦合、内聚和复用等方面讲述如何评价面向对象的设计模型。
基于所建立的模型,第13章和第14章分别讲述了如何对所开发的系统进行面向对象的编码实现与测试。
第13章为面向对象的编程实现。该章首先对面向对象的编程语言进行简介,然后用大量的例题,阐述了面向对象的概念在面向对象语言中的体现以及典型的编程技术。该章还对数据管理部分和状态机图的实现进行了具体的详述。
第14章基于传统的测试技术,针对面向对象软件的特点,讲述了测试面向对象软件的典型技术。
第15章首先讲述如何把一个较为复杂的系统划分成一组子系统,然后说明了如何对系统或子系统进行建模,以及从哪些方面建立系统的模型。此外还阐述如何保证模型的一致性。
第16章通过一个具体的案例分析,说明如何用面向对象方法进行建模。对于该章给出的综合性习题,建议学生在学完第3章后,根据所选择的习题的难易程度组成3~5人小组,随着课程的进展逐步完成。
最后本书给出了一个附录。该附录给出了对用面向对象方法进行软件系统建模所生成的文档的主要编制要求。
作者长期在北京大学计算机系邵维忠教授领导下开展研究工作,本书的研究工作得到了邵教授的大力支持。邵教授具有严谨的治学态度、深厚的学术功底以及敏锐的洞察力,他的指导使我受益良多。在此致以衷心的感谢!
本书的研究工作和写作得到了杨芙清院士所领导的学术队伍的支持,得到了国家重点基础研究发展规划(2011CB302604)的资助。在此谨向上述单位表示衷心的感谢!
对书中存在的错误和疏漏之处,恳请各位读者给予批评指正。
作者
2011年6月于北京大学
计算机\软件工程
面向对象技术以其显著的优势已经成为计算机软件领域的主流技术。按照国家教育部计算机科学与技术专业教学指导委员会发布的计算机科学与技术专业规范(软件工程方向),面向对象方法学是计算机科学优选课程之一。
进行面向对象分析与设计需要一套概念与表示法。本书所采用的概念和表示法与UML 2.1保持一致,但并不是全盘采用。本书提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练。在中文术语方面,本书与我国的行业规范“面向对象的软件建模规范”完全一致。
进行面向对象分析与设计需要一套过程指导。本书所采用的开发过程,是在借鉴了较为流行的多种面向对象开发方法的基础上,根据青鸟工程的成果和作者单位的科研及工程实践的经验总结出来的。该过程指导具有实用性和广泛的适应性。
本书注重理论与实际相结合,既阐述了面向对象的原理、概念与表示法,又给出了实用的应用方法,还用大量例题和一个综合案例分析加以说明。本书涵盖面向对象的分析、设计和实现阶段,叙述深入浅出,便于学以致用。
麻志毅 编著:麻志毅 博士,任教于北京大学信息科学技术学院计算机系。长期从事面向对象方法和软件工程环境的研究。现已在国内外学报和会议上发表专业学术论文70余篇,主持或参加国家高技术研究发展计划(863)、国家重大基础研究(973)、国家科技支撑计划和国家自然科学基金等20余项国家科研项目,出版著(译)作9部。曾获国家科技进步二等奖及国家部委奖励多项。
前言
教学建议
第1章面向对象方法概论
11面向对象的基本思想
12面向对象的基本原则
13面向对象方法的主要优点
14面向对象方法的发展史及现状简介
15关于统一建模语言UML
习题
第2章什么是面向对象分析
21分析面临的主要问题
22面向对象分析综述
习题
第3章建立需求模型——用况图
31系统边界
32参与者
321概念与表示法
322识别参与者
33用况
331概念与表示法
332用况与参与者之间的关系
333用况之间的关系
334捕获用况
335用况模板
34用况图
35检查与调整
36用况模型和面向对象系统分析模型
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制品设计
112部署设计
1121概念与表示法
1122对系统的部署建模
习题
第12章OOD的评价准则
121耦合
122内聚
123复用
124其他评判准则
习题
第13章面向对象的编程实现
131面向对象程序设计
1311面向对象程序设计语言简介
1312为实现OOD模型选择OO程序设计语言
132用具体的OO程序设计语言实现OO概念和机制
133数据管理部分的实现
134状态机图的实现
135用非OO程序设计语言实现OOD模型
习题
第14章面向对象测试
141面向对象测试的概念
1411面向对象软件带来的测试问题
1412面向对象测试的参考过程模型
142面向对象测试技术
1421面向对象的分析与设计测试
1422面向对象的程序测试
1423面向对象的系统测试
习题
第15章系统与模型
151系统与子系统
1511概念与表示法
1512对体系结构模式建模
1513划分子系统
152模型
1521模型的含义
1522模型和视图
1523模型的抽象层次
1524模型间的一致性检查
习题
第16章案例:网上会议文件审批系统
161系统的功能需求
162需求捕获
1621建立界面原型
1622识别参与者
1623识别用况
1624建立用况模型
163分析
1631寻找类
1632绘制状态机图
1633建立类图
1634建立顺序图
164设计
习题
附录A面向对象的模型文档
编制指南
参考文献