定 价:44.5 元
丛书名:
- 作者:邵维忠 ,杨芙清 著
- 出版时间:2013/1/1
- ISBN:9787302301202
- 出 版 社:清华大学出版社
适用读者:可供计算机软件领域的研究人员和工程技术人员, 计算机软件专业的教师、研究生和高年级本科生阅读参考
- 中图法分类:TP312
- 页码:391
- 纸张:胶版纸
- 版次:1
- 开本:16开
- 字数:(单位:千字)
《面向对象的分析与设计》是一本全面论述面向对象分析与设计方法的专著。全书分为3部分。第一部分为基础篇,论述面向对象方法的基本思想和主要概念,对不同的分析与设计方法进行综述,对统一建模语言(UML)和《面向对象的分析与设计》提出的方法做概要介绍。第二部分为分析篇,详细介绍面向对象分析的全过程,围绕面向对象建模中的需求模型(用况图)、基本模型(类图)、辅助模型(包图、顺序图、活动图以及其他各种UML模型图)和模型规约,对面向对象的分析进行深入讨论,给出详细的过程指导和工程策略,并对相关的UML内容做较详细的介绍。第三部分为设计篇,介绍如何在面向对象分析模型基础上,针对具体的实现条件进行面向对象的系统设计,包括问题域部分、人机交互部分、控制驱动部分和数据接口部分4个主要部分的设计,最后介绍如何进行构件化与系统部署。
《面向对象的分析与设计》是作者多年来在面向对象技术领域长期从事科研、教学和工程实践的总结,在广泛借鉴该领域的经典理论和当前最新研究成果的基础上,坚持独立思考、实事求是的科学态度,对该领域的诸多问题提出了新的学术观点和解决方案。
《面向对象的分析与设计》可供计算机软件领域的研究人员和工程技术人员,计算机软件专业的教师、研究生和高年级本科生阅读参考。
面向对象方法与技术起源于面向对象的编程语言。自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)的支持。高可信软件技术教育部重点实验室和北京大学信息学院为本书开展的研究工作提供了良好的条件。在写作过程中,我们曾就书中的学术思想与许多校内的同事和校外的同行进行了讨论、交流和印证,从中受益良多。许多博士生和硕士生帮助我们查阅、收集了大量文献资料。北京大学软件研究所建模工具研究小组研制的面向对象建模工具为本书提出的建模方法提供了强有力的支持。在此,我们谨向上述单位和个人致以衷心的感谢!最后,我们恳切希望各位读者对本书可能存在的错误与疏漏给予批评指正。
作者联系信息
联系人: 邵维忠
邵维忠,北京大学信息科学技术学院教授、博士生导师。1970年毕业于北京大学数学力学系,1979-1983年在计算机科学技术系任教并攻读硕士学位。早期主要从事操作系统和软件工程领域的研究。1987-1989年在新加坡国立大学参加科技合作。回国后在杨芙清院士主持的国家“八五”、“九五”重点科技攻关课题中担任主要技术负责人。自1991年起注重于面向对象建模方法的研究,开设了研究生课程和本科生课程,组织研制了一系列面向对象建模工具。撰写和翻译了多部关于面向对象方法的学术著作。在软件工程环境、面向对象方法、建模语言、软件复用、构件技术和中间件技术等领域承担了多项国家高技术研究发展计划(863)项目、国家重大基础研究(973)项目和国家自然科学基金项目。曾获国家科技进步二等奖及国家部委级奖励多项。
杨芙清,中国科学院院士,计算机软件科学家、教育家。北京大学信息科学技术学院教授、博士生导师。现任北京大学信息与工程科学学部主任、软件工程国家工程研究中心首席科学家、软件与微电子学院理事长。1958年北京大学数学力学系研究生毕业。1957-1959年在前苏联学习程序设计和计算机软件。1962-1964年任莫斯科杜勃纳联合核子物理研究所计算中心中国专家。20世纪70年代主持研制了我国第一台百万次集成电路计算机多道运行操作系统和第一个全部用高级语言书写的操作系统。1983-1999年担任北京大学计算机系系主任期间,将该系建成国内一流和国际知名的计算机科学技术研究和人才培养基地。在国内率先倡导开展软件工程研究,创办了国内第一个软件工程学科,主持了历经多个五年计划的国家重点科技攻关项目——青鸟工程和国家863计划若干重点课题的研究。创建了软件工程国家工程研究中心,提出“人才培养与产业建设互动”的理念,创建了以新机制、新模式办学的示范性软件学院。曾多次获得各种荣誉称号和奖励,如全国科学大会奖、国家科技进步二等奖、电子工业部科技进步特等奖、国家级教学成果奖一等奖等十六项国家及部委级的奖励,以及全国“三八”红旗手、全国高等学校先进科技工作者、“光华科技基金”一等奖、何梁何利科学与技术进步奖、中国计算机学会终身成就奖等。发表论文150余篇、著作10余部,培养了百余名硕士、博士和博士后。
第一部分基础篇
第1章 面向对象方法概论
1.1 什么是面向对象
1.2 从认识论看面向对象方法的形成
1.2.1 软件开发——对事物的认识和描述
1.2.2 语言的鸿沟
1.2.3 编程语言的发展使鸿沟变窄
1.2.4 软件工程学的作用
1.2.5 面向对象是软件方法学的返璞归真
1.3 面向对象方法的基本概念
1.3.1 对象
1.3.2 类
1.3.3 封装
1.3.4 继承
1.3.5 聚合
1.3.6 关联
1.3.7 消息
1.3.8 多态性
1.3.9 其他
1.3.10 术语对照
1.4 面向对象方法的历史及现状
1.4.1 历史
1.4.2 发展到软件生存周期全过程
1.4.3 渗透到计算机软件的各个领域
第2章 不同的分析与设计方法
2.1 功能分解法
2.2 结构化方法
2.3 信息建模法
2.4 面向对象方法
2.4.1 什么是OOA
2.4.2 什么是OOD
2.4.3 面向对象方法的主要优点
2.4.4 几种典型的面向对象方法
2.4.4.1 Booch方法
2.4.4.2 Coad/Yourdon方法
2.4.4.3 Jacobson方法
2.4.4.4 Rumbaugh方法
第3章 统一建模语言UML简介
3.1 UML的背景与发展历史
3.2 UML1概况
3.2.1 UML1规范的主要组成部分
3.2.2 语言体系结构和定义方式
3.2.3 UML1的各种图和扩展机制
3.3 UML2概况
3.3.1 从UML1到UML2
3.3.2 UML2的4个规范
3.3.2.1 UML基础结构
3.3.2.2 UML上层结构
3.3.2.3 对象约束语言
3.3.2.4 UML图交换
3.3.3 UML2的各种图
第4章 本书的OOA&D方法概貌
4.1 引言
4.2 主要概念
4.2.1 主要模型元素
4.2.2 面向对象建模的主要原则
4.3 模型及其规约
4.3.1 基本模型——类图
4.3.2 需求模型——用况图
4.3.3 辅助模型——其他各种图
4.3.4 模型规约
4.3.5 OOA模型框架
4.3.6 OOD模型框架
4.4 建模过程
4.4.1 OOA过程
……
第二部分 分析篇
第三部分 设计篇
索引
参考文献
2.几条建议
在基于用况的需求模型开发中,有几个特别值得注意的问题需要强调指出,作为对应用者的建议。
(1)最重要的工作是对用况的描述。
尽管用况图可以带来良好的视觉效果,让人一目了然地看到被开发系统的全部用况和全部参与者以及它们之间的关系,但是用况图所能提供的信息是很有限的。真正有价值的东西是对每个用况的描述,即通过其内容所刻画的对一项系统功能的具体使用情况。只有对每个用况做了具体而恰当的描述,才算确切地定义了这项功能。仅靠用况图中的几个圈圈提供不了太多信息,只是给出了几个功能名称罢了。开发者应该花大力气来描述每个用况,这才是真正的需求分析。当你试图这样做时便会发现,这需要深入问题域,向用户和领域专家做大量的调查研究,而原先在图中画出几个圈圈只是对需求略知皮毛而已。如果你是一位高层管理者,当你的部下展开一幅用况图来报告已经做完了需求分析时,你一定要看看是否对每个用况做出了具体描述,并且选择几个关键的用况仔细阅读一下。
(2)不要过分深入地描述系统内部的行为细节。
用况的根本作用是定义系统应该提供什么功能,而不是详细地刻画系统如何完成这些功能。因此,这种描述只限于从系统边界以外所能够观察到的系统行为。至于系统内部如何具体地完成这项功能,则不是需求分析所要关心的事。用况之间的延伸关系和包含关系提供了这样一种机制:它可以把一个用况所描述的功能无节制地层层分解下去,直到计算机可实现的最终细节。分析员在使用这种机制时应该把握适当的分寸。过分深入的描述不但极大地增加了开发用况的工作量,而且混淆了软件生存周期中不同阶段的任务,还可能使开发工作走向功能分解法的老路——将功能层层分解,直到其可编程的细节。
防止出现上述问题的关键是记住这一点:用况只须描述一个系统(或者子系统)外部可见的行为,即使在延伸用况或者被包含用况中也是这样。判断一个用况的描述是否过分深入的一个简单办法是:看这个用况是否还包含参与者的行为。如果已经不再包含参与者的行为,而纯粹是描述系统的行为,那就不需要定义这个用况了,只须在原先的基用况的调用点上以概括性的语言简单地描述系统的行为即可。
……