图书前言

面向对象方法与技术起源于面向对象的编程语言。自20世纪80年代以来,该方法首先在编程领域取得巨大成功,进而发展到软件生存周期的分析与设计阶段,相继出现了一大批面向对象的分析与设计方法。此后便以不可逆转之势发展为计算机软件领域的主流技术。20世纪90年代出现的统一建模语言(UML)使各种方法在概念和表示法方面走向统一。然而,UML本身只是一种建模语言而不是一种建模方法,它独立于方法而不能取代各种方法。关于面向对象方法的研究仍在继续。

本书是一部研究和介绍面向对象分析与设计的著作。在此之前,作者曾在1998年和2003年先后撰写出版了《面向对象的系统分析》和《面向对象的系统设计》两本学术专著\\,并分别于2006年和2007年再版\\。本书在一定意义上可看成是上述两部著作的第3版,但是将两本书合并为一本,在结构上做了较大的调整,并根据国际上相关理论与技术的最新发展状况及作者的研究心得重新进行了写作。本书在以下几方面继承了其前身的主要特点。

1. 对面向对象基本概念的阐述

以往许多关于面向对象方法与技术的著作都没有花费太多的篇幅对面向对象的基本概念进行解释和论述,其出发点是假设读者已经从其他著作中学到了这些基本知识。然而,这种假设并不符合大多数读者的实际情况;甚至有许多已经用面向对象方法开发过一些软件的读者,对面向对象概念的理解也往往不够深入和准确。为此,本书采用了一章的篇幅来论述面向对象方法的基本思想和主要特点,对其基本概念给出详细的解释,进而在使用这些概念的有关章节进行更深入的论述并给出应用实例。事实证明,这对于读者准确、深入地理解和掌握各种具体的面向对象技术是十分必要的。

2. 充分运用面向对象方法的基本概念,避免概念复杂化

这里所说的基本概念,是指面向对象方法诞生以来经过长期考验被证明必不可少的那些概念,也就是迄今大部分面向对象编程语言能够直接支持的概念。这些概念总量并不很多,却能解决绝大多数面向对象建模问题。然而,以往有不少面向对象分析与设计方法往往为解决某些建模问题而提出许多扩充概念,这些概念明显地增加了方法的复杂性。UML更是从各种方法中吸收了大量的扩充概念,其总量达到了空前的程度,使其学习者和用户不堪重负。多年来这个饱受学术界批评和产业界抱怨的问题并没有随着UML多次修订而得到解决。实际上,只要把面向对象的基本概念理解得更深入些,运用得更充分些,那些采用扩充概念来解决的问题完全可以用基本概念来解决,而且可以使系统模型更为简练和清晰,前言面向对象的分析与设计与实现后的源程序对应得更好。本书的宗旨是:基于一个精练的面向对象概念集合来建立方法体系,限制扩充概念的引入,使书中提出的方法更容易学习和使用。

3. 加强过程指导

保持建模概念简练的一个基本前提是加强过程指导。本书对于如何运用面向对象概念进行系统分析与设计做了详细阐述。对OOA和OOD的每个基本活动给出具体的建模策略和引导开发者思考的启示。对于一些典型的困难问题提供了解决问题的技巧与经验。特别是,对那些在其他方法中运用扩充概念解决的问题,给出了运用最基本的面向对象概念自然而有效地解决问题的方案。总的目标是提供一套概念简练、讲究实效、过程策略明确、可操作性强的面向对象分析与设计方法。

4. 以类图为中心的开放性模型框架

类图是面向对象建模中最重要的模型,因为类图最集中、最完整地体现了面向对象的概念,并为面向对象的编程提供了最直接的依据。本书给出了以类图为中心的开放性OOA模型框架和OOD模型框架。该框架以类图作为面向对象建模中的基本模型,在各种模型图中处于核心地位,提供最重要的模型信息;以用况图作为需求模型,用于描述需求,为开展面向对象的建模提供良好的基础;以其他各种模型图作为辅助模型,从不同的视角加强对面向对象模型的表示。书中重点推荐了包图、顺序图、活动图、状态机图和构件图等辅助模型,然而模型框架是开放的,开发者可以根据不同领域的具体要求采用其他各种模型图。在各种模型图之外,通过模型规约对各种模型和其中的元素给出详细的定义与解释,避免将大量的细节都堆积到图中,从而既保持模型图清晰和简洁,又能提供完整、准确的模型语义。

5. OOA与OOD的关系

书中关于OOA和OOD的内容构成了一个完整的方法体系。二者采用一致的概念、原则和表示法,但是各有不同的内容、策略和侧重点。OOA只针对问题域和系统责任,不涉及与具体实现技术有关的问题,目标是建立一个能直接映射问题域、充分体现系统责任、独立于实现的OOA模型;OOD则是在OOA模型基础上针对具体的实现条件进行设计,目标是建立一个可在特定平台上实现的OOD模型。这种分工观点在对象管理组织(OMG)倡导的模型驱动的体系结构(MDA)中获得了新的生命力。从MDA观点来看,OOA模型是一个平台无关模型,OOD模型则是一个平台专用模型。有了一个平台无关的OOA模型,可以针对多种实现平台分别进行面向对象的设计,从而产生多个平台专用的OOD模型。这意味着,OOA模型可以作为一个整体在OOD阶段得到复用。

6. 对UML的介绍

本书的主要目标是介绍面向对象的分析与设计方法,有关UML的内容则是围绕这一主要目标来组织的。书中对UML的主要内容进行了详细介绍,对读者在学习中常常感到困惑的概念进行了较为清晰的解释,对UML自身存在的一些问题进行了分析和研究,提出了作者的观点。特别是,对于工程实践中如何克服UML的复杂内容所带来的困难给出了作者的建议。

本书与2006年和2007年再版的两部著作\\相比,在以下几个方面做出了较大的改进:

 将以往两本著作的内容合并后,对全书的内容和结构进行了统一布局,避免了某些内容的重复,使布局更为合理,结构更为紧凑。

 根据国际上面向对象技术和相关标准规范的最新发展以及作者近几年的研究心得,对书中的内容进行了增补和修订。

 对UML的介绍以近期较新而又相对稳定的版本UML 2.2\\为基准,对其中某些问题参照了UML 2.3和正在修订中的版本UML 2.4进行了核实。

 对以往两部著作的内容进行了全面的审核、订正和重新写作。减少了若干学术讨论的内容,增加了对一些实际问题的处理策略;删除了关于软件复用的整章内容,增加了构件化和系统部署的内容。在文字表述方面力求“瘦身”,总篇幅缩减至以往两部著作的70%,使其表达更为准确和精练。

全书共包括15章,分为3个部分。

第一部分为基础篇。其中第1章论述面向对象方法的基本思想,定义和解释其中的基本概念,并介绍其历史与现状。这些基本知识是学习面向对象分析与设计方法的重要基础。第2章首先介绍历史上出现的几种经典的分析与设计方法,并与面向对象方法进行比较,然后介绍4种影响较大而风格不同的面向对象分析与设计方法。第3章对UML规范进行简要介绍,包括其背景及发展历史,以及UML1与UML2先后两个版本系列的基本内容与概况。第4章对本书的OOA与OOD方法进行了提纲挈领式的介绍,是分析篇和设计篇各章内容的总纲。

第二部分为分析篇,详细介绍面向对象分析的全过程。其中第5章介绍如何进行需求分析,建立系统的需求模型,即用况图。第6章~第8章是面向对象系统分析的核心内容,从对象、对象的特征层以及对象之间关系3个层次介绍如何建立系统的基本模型,即类图。对如何运用面向对象概念进行类图中每个层次的建模给出详细的过程指导。第9章介绍如何根据实际需要有选择地建立系统的各种辅助模型,重点介绍UML的包图、顺序图、活动图、状态机图和构件图,对其他各种图只做简要介绍。第10章介绍模型规约,讨论如何通过模型规约对系统模型图进行详细而准确的描述,给出一种便于计算机理解(从而提高代码自动生成的比例)并有利于复用的规约组织格式。

第三部分为设计篇,介绍如何将平台无关的OOA模型设计为平台专用的OOD模型。OOD模型包括4个主要部分。第11章介绍问题域部分的设计,根据编程语言、复用支持和硬件性能等实现条件,对来自问题域的类进行修改和调整,使之适用于选定的实现平台并满足性能等方面的要求。第12章介绍人机交互部分的设计,主要解决人机交互过程的提取、交互命令组织和人机界面的设计问题。第13章介绍控制驱动部分的设计,主要解决并发系统和分布式系统中的对象分布和控制流的设计问题。第14章介绍数据接口部分的设计,主要解决对象的持久存储问题,针对文件系统、关系数据库管理系统和面向对象数据库管理系统给出不同的设计策略。第15章介绍如何将OOD模型构件化以及如何进行系统部署。

本书的研究和写作得到国家重点基础研究发展计划(973计划)课题“领域特定的虚拟计算环境程序设计”(编号 2011CB302604)的支持。高可信软件技术教育部重点实验室和北京大学信息学院为本书开展的研究工作提供了良好的条件。在写作过程中,我们曾就书中的学术思想与许多校内的同事和校外的同行进行了讨论、交流和印证,从中受益良多。许多博士生和硕士生帮助我们查阅、收集了大量文献资料。北京大学软件研究所建模工具研究小组研制的面向对象建模工具为本书提出的建模方法提供了强有力的支持。在此,我们谨向上述单位和个人致以衷心的感谢!最后,我们恳切希望各位读者对本书可能存在的错误与疏漏给予批评指正。

作者联系信息

联系人: 邵维忠