购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

在20世纪90年代,面向对象技术以其显著的优势成为计算机软件领域的主流技术,随后该技术在大多数发达国家的软件开发中得到了相当广泛的运用。在我国的软件产业界,面向对象技术的学习与应用热潮出现于20世纪90年代后期,如今面向对象分析与设计技术也已经得到了广泛的应用。

当前,产业界需要大量掌握面向对象分析与设计技术的高级应用型开发人才。很多计算机学院和软件学院在软件工程教学中开设了相应的课程,旨在使学生不仅会使用一种或者几种面向对象编程语言来编程,更重要的是能运用面向对象方法进行系统建模,即通过面向对象分析(Object-Oriented Analysis,OOA)和面向对象设计(Object-Oriented 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 2.4保持一致。在中文术语方面,本书与我国的行业规范《面向对象的软件系统建模规范》完全一致。作为该规范的主要起草者,本书作者曾经与国内很多专家、学者和企业界的专业人士进行过反复研究讨论,从而对该规范达成共识。

进行软件开发,应该遵循一定的过程指导。过程指导为完成软件系统开发的步骤提供详细指导,其中包括模型、工具和技术。本书所讲述的过程指导的思想来自参考文献[17]和[18],即本书所采用的开发过程,是在借鉴了较为流行的多种开发过程的基础上,根据青鸟工程的成果和作者的科研及工程实践的经验总结出来的。

像使用其他开发方法一样,用面向对象方法进行软件系统建模的目的是要建立相应的模型。总的来讲,本书把模型分为功能需求模型、分析模型和设计模型。针对建立各种模型所使用的图以及其中的一些具体的模型元素,本书还给出了相应的规约。

对于面向对象的软件建模,需要有建模工具的支持。本书对此类工具所应具有的主要功能进行了讲述,并介绍了两款面向对象的软件建模工具。

与第1版相比,本版进行了如下改进:

·对面向对象概念的定义更为准确,对概念的解释更加丰富和深入,对建模指导方面的内容进行了充实。

·第1版中的建模语言采用UML 2.0,然而至本版写作时OMG发布了UML 2.4,其中模型图的种类、图元素的表示法以及一些解释都发生了变化,因此本版的建模语言采用了UML 2.4。

·解决了作者和热心的读者在第1版的使用中发现的一些问题。

·为了加强对分析与设计建模策略和技巧的理解,本版给出了更多的应用实例。

以下简要地介绍本书的概貌,使读者对它有一个提纲挈领的了解。

第1章集中介绍了面向对象方法的基本思想和原则,解释了它的基本概念,论述了它的主要优点,并简单介绍了它的发展历史和现状,以及与本书密切相关的UML 2.4。

第2章首先概述了面向对象分析所面临的问题,然后对其进行了综述,在综述中阐述了面向对象分析模型和过程模型。

第3章全面地讲解了建立功能需求模型所使用的概念与表示法,并详述了如何使用它们来建立功能需求模型。

第4章详细地讲述了类图中所使用的概念与表示法,并详述了如何使用它们来建立类图。

第5章讲述了建立辅助模型所用到的几种图——顺序图、通信图、活动图、状态机图和包图,其中详细地讲述了这些图中所使用的概念与表示法。

第6章说明了面向对象分析与设计的关系,并阐述了面向对象设计模型和过程模型。

第7章详述了如何针对实现条件对分析模型进行补充与调整,完成问题域部分设计。

第8章详述了进行人机交互设计所需要考虑的因素,并从分析和设计两个方面详述了如何进行人机交互设计。

第9章详述了什么是控制流,如何识别与定义控制流,以及如何协调控制流之间的同步。

第10章讲述了数据管理部分的设计。本章首先对数据库进行了简介,然后详细讲解了如何使用关系数据库系统对永久对象及它们之间的关系进行存储与检索。

第11章介绍如何描述与构造系统的构件,详细讲解了构件图及其应用。本章还讲述了制品图和部署图。

第12章讲述了一些在面向对象设计中经常使用的设计模式。

第13章从耦合、内聚和复用等方面讲述了如何评价面向对象的设计模型。

第14章首先讲述如何把一个较为复杂的系统划分成一系列子系统,然后说明了如何对系统或子系统进行可视化建模,以及从那些方面建立系统的模型,此外还阐述了如何保证模型的一致性。

第15章通过一个具体的案例分析,说明如何用面向对象方法进行建模。

最后本书给出了两个附录。附录A讲述了两款面向对象的软件建模工具。附录B给出了对用面向对象方法进行软件系统建模时所生成的文档的主要编制要求。

本书的研究工作和写作得到了北京大学邵维忠教授的大力帮助。邵维忠教授对书稿提出了十分难得的宝贵修改意见,本书的很多内容也来自他作为第一作者的著作 [ 17-18 ] 。邵维忠教授具有严谨的治学态度、深厚的学术功底以及敏锐的洞察力,他的指导使我受益良多。在此致以衷心的感谢!

本书的研究工作和写作得到了杨芙清院士和梅宏院士所领导的学术队伍的支持,也得到了国家自然科学基金项目(61272159)、北京市自然科学基金资助项目(4122036)、国家重点基础研究发展规划项目(2011CB302604)和国家863高技术研究发展计划项目(2012AA011202)的资助。在此谨向上述单位表示衷心的感谢!

对书中存在的错误和疏漏之处,恳请各位读者给予批评指正,并通过电子邮件(mzy@sei.pku.edu.cn)或其他方式进行更有意义的讨论。

麻志毅
2013年1月于北京大学 qKaJtqAR/0t4EUNxbpDGZtp1t5l2YyDekRlzCSKglM6IkyeAScB5RYuRFQxhCYgw

点击中间区域
呼出菜单
上一章
目录
下一章
×