面向对象的系统设计
基本信息
- 作者: 邵维忠 杨芙清 [作译者介绍]
- 丛书名: 中国计算机学会学术著作丛书
- 出版社:清华大学出版社
- ISBN:7302061858
- 上架时间:2003-3-22
- 出版日期:2003 年2月
- 开本:16开
- 页码:236
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 面向对象
内容简介回到顶部↑
本书是我社1998年12月出版的《面向对象的系统分析》的妹妹篇,二者构成了完整的面向对象的分析与设计(OOA&.OOD)方法体系。本书主要论述了如何在面向对象的分析(OOA)的基础上进行面向对象的设计(OOD)。全书分为7章。第1章介绍OOD的发展历史、现状和几种典型的OOA和OOD方法,论述OOA和OOD的关系。第2章介绍本书的OOD方法概貌。第3—6章分别介绍OOD模型各个组成部分的设计方法。第7章介绍统一建模语言UML,并分析和讨论其优点与缺点。
作者长期从事软件工程和面向对象方法等领域的科研、教学及工程实践。本书是他们参阅国内外大量文献,收集工程实践中提出的问题,总结自己多年研究的精心之作。本书内容详实、立论严谨、实例丰富、图文并茂,论述深入浅出。
本书的读者对象是:高等院校计算机软件专业的教师、研究生和高年级本科生,从事软件开发的工程技术人员,以及软件工程和面向对象方法等领域的研究工作者。
作者长期从事软件工程和面向对象方法等领域的科研、教学及工程实践。本书是他们参阅国内外大量文献,收集工程实践中提出的问题,总结自己多年研究的精心之作。本书内容详实、立论严谨、实例丰富、图文并茂,论述深入浅出。
本书的读者对象是:高等院校计算机软件专业的教师、研究生和高年级本科生,从事软件开发的工程技术人员,以及软件工程和面向对象方法等领域的研究工作者。
作译者回到顶部↑
本书提供作译者介绍
邵维忠北京大学计算机科学技术系教授、博士生导师、中国计算机学会理事。1979年至1983年在计算机科学技术系任教并攻读硕士学位。早期主要从事操作系统和软件工程领域的研究与开发。1987年至1989年在新加坡国立大学参加科技合作,主要从人工智能研究。回国后在他的导师杨芙清院士主持的国家“八五”、“九五”重点科技攻关课题(“大型软件开发环境青鸟系统”和“软件工程工业化生产技术及系统”)中担任主要技术负责人。近十余年注重于面向对象方法与技术研究。自1991年起,先后开设了关于面向对象方法.. << 查看详细
目录回到顶部↑
第1章 什么是ood
1.1 早期的ood
1.2 基于ooa的ood
1.2.1 booch方法
1.2.2 coad/yourdon方法
1.2.3 jacobson方法(oose)
1.2.4 rumbaugh方法(omt)
1.3 ood在软件生命周期的位置
1.4 ooa与ood的关系
1.4.1 "做什么"和"怎么做"
1.4.2 分析--需求分析和系统分析
1.4.3 "问题空间"和"解空间"
1.4.4 一致的概念与表示法
1.4.5 不同的目标、内容和抽象层次
第2章 本书的ood方法概貌
2.1 概念与表示法
2.1.1 建模元素
2.1.2 表示法
2.1.3 建模原则
2.2 ood模型
1.1 早期的ood
1.2 基于ooa的ood
1.2.1 booch方法
1.2.2 coad/yourdon方法
1.2.3 jacobson方法(oose)
1.2.4 rumbaugh方法(omt)
1.3 ood在软件生命周期的位置
1.4 ooa与ood的关系
1.4.1 "做什么"和"怎么做"
1.4.2 分析--需求分析和系统分析
1.4.3 "问题空间"和"解空间"
1.4.4 一致的概念与表示法
1.4.5 不同的目标、内容和抽象层次
第2章 本书的ood方法概貌
2.1 概念与表示法
2.1.1 建模元素
2.1.2 表示法
2.1.3 建模原则
2.2 ood模型
前言回到顶部↑
本书是介绍面向对象设计方法的著作,是我们的前一本著作《面向对象的系统分析》[30]的姊妹篇,二者构成一个完整的面向对象的分析与设计方法体系。
面向对象的设计(OOD)是在面向对象的分析(OOA)的基础上继续运用面向对象(OO)方法解决软件生命周期中设计阶段的问题,产生一个满足用户需求,并且完全可实现的系统模型,即OOD模型。在面向对象的软件开发中,通过OOA建立的系统分析模型(OOA模型)离实现的要求还有很大的距离,因为还有很多设计问题尚未解决,需要在设计阶段运用OOD方法去解决这些问题,并且把设计结果在OOD模型中表达出来,使模型成为可实现的,不再存在悬而未决的建模问题。这就是OOD所要解决的问题。尽管OOD的出现早于OOA。但是迄今为止关于OOD的理论与技术却远不如OOA成熟,内容也不如OOA充实,其中主要存在以下问题:
对什么是OOD,各种著作和论文缺乏统一认识。主要原因是,早期的(即OOA出现之前的)OOD和现今的(即基于OOA的)OOD在内容上有很大的不同,而迄今大部分文献在讨论OOD时没有清晰地对二者加以区别,所以对OOD的概念、过程以及它应该包含哪些内容没有形成准确、一致的见解。
以往大部分论述面向对象的分析与设计(OOA&OOD)的著作都是以论述OOA为主,对OOD的论述则偏于简略。对软件生命周期的设计阶段需要解决的大量实际问题缺乏全面、深入的讨论和切实可行的面向对象设计策略。有些方法(例如Rumbaugh的OMT[16]对面向对象概念在设计阶段的运用基本上局限于对OOA结果进行细化,对许多全局性的设计问题没有给出与面向对象方法密切相关的设计策略,与在结构化设计中所采用的策略没有什么不同。
对OOA和OOD的关系,特别是对它们之间的界限和分工缺乏统一认识。一种基本一致的意见是:OOA和OOD属于软件生命周期的两个不同阶段,它们之间的界限不像结构化分析和结构化设计之间那样严格和清晰;但是除了这种原则性的共同见解之外,没有更进一步的一致意见。对于OOA和OOD之间的关系,特别是对二者之间既存 在界限,同时又允许一定程度的模糊这个问题,大部分著作没有深入地加以讨论,并具体指出哪些建模问题应该明确地属于OOA或者OOD,哪些建模问题允许模糊二者之间的界限。
在众多的面向对象分析与设计方法中,Coad/Yourdon方法是对OOD讨论最多的一种,对OOA和OOD之间关系的处理也较为得当[5,6]。但是由于历史条件的限制,一些在20世纪90年代出现的理论与技术没有在其方法和著作中得以体现。对有些设计问题,例如一个用面向对象方法开发的系统如何用关系数据库或文件系统存储其对象的问题,该方法虽然提出了正确的解决方案,但是理论上的论述和技术策略的介绍都不够详细,因此一般读者在学习之后仍然不知道如何实施。
本书作为在当前科学技术背景下出版的OOD著作,在学习和借鉴前人研究成果的基础上,力求在以下方面取得进步。
1.系统地阐述OOA与OOD的理论体系
本书从区别早期的OOD和基于OOA的OOD人手,通过讨论二者在内容和特点上的不同,在概念上澄清了关于什么是OOD的问题;把面向对象的观点运用于整个软件生命周期,在此前提下对什么是OOD给出了更确切的定义;详细地论述了OOA和OOD之间的关系;对与此相关的一些观点进行了分析和讨论。
2.充实和完善OOD的内容
在面向对象的软件开发中,OOD是软件生命周期中的一个大的阶段。在这个阶段中有大量的技术问题需要解决,需要建立一个可实现的系统模型。从工作量和技术难度来看,OOD的分量绝不比OOA小。作为一种OOD方法,如果只是注意到设计阶段的一部分问题,或者对大量的设计问题只是给出一些原则性的意见,甚至只是简单地罗列出来,那么读者就很难学会怎样实际进行面向对象的设计。目前从事实际系统开发的读者反应最强烈的一个问题就是,做完OOA之后不知道OOD到底该做些什么,因此对设计阶段的许多问题不得不继续采用非OO的设计技术去解决。本书的目标是向读者提供一种内容比较完善、策略具体、可操作性强的OOD方法,其中包含了普通应用系统的设计阶段需要解决的大部分问题,并且包括全局性设计决策和局部的模型细化两个方面的问题。
3.充分运用OO基本概念解决设计问题
我们在《面向对象的系统分析》[30]中提出,在OOA中应该充分运用面向对象的基本概念(即目前大部分面向对象编程语言能够直接支持的概念)解决各种复杂的建模问题,限制扩充概念的引入。本书依然坚持这一宗旨,没有采用比OOA更多的面向对象建模概念,更没有采用诸如“模块”、“块”等非OO的建模元素。此外,本书对所有的设计问题都是运用面向对象的观点给出设计策略,使读者能够在软件开发中完全采用面向对象的概念和表示法来建立系统的设计模型。这意味着本书运用了尽可能少的建模概念解决了较多的设计问题。建模概念的简练使本书提出的方法更容易学习、掌握和使用,并使得OOA、OOD和OOP在概念上保持高度一致,使模型与实现后的程序具有良好的映射关系。当然,为了做到这一点,本书给出了更强的过程指导,告诉读者如何运用一个精练的OO基本概念集合去解决各种复杂的建模问题。
4.适应当前计算机科学技术的新发展
迄今在国际上影响较大的大多数OOA与OOD方法都是在20世纪80年代末和90年代初问世的。在此之后的近十年中,计算机科学技术在很多方面取得了新的进步。例如软件复用技术的新发展、可视化编程环境的流行、软件体系结构的研究、网络与分布式系统的普及等,大量的新技术已被广泛地运用到当前的系统开发中。在这种形势下,必然要求OOD方法不断向前发展。我们的目标是力求在OOD方法中体现计算机科学技术的新进展。本书的OOD方法是根据当前的技术背景提出的。针对在当前软件开发中被广泛采用的几种主要技术,分别给出相应的设计策略,并且用OO概念表达其设计决策。
5.解决工程实践中提出的问题
在本书的写作过程中,我们曾经以技术培训、工程指导、项目合作等多种方式与软件企业界的人士进行接触和交流。他们在运用面向对象方法进行软件开发时,常常在OOD阶段遇到某些疑难问题,其中有些问题在以往的著作中找不到现成的答案。他们把这些问题反映给我们,希望我们进行研究和解决。这些来自工程实践的问题对于OOD方法的研究和发展具有很强的促进作用,本书的很多内容都是针对这些问题开展研究并进行总结提炼的结果。
全书共分7章,其内容安排如下:
第1章讨论什么是OOD。通过区分早期的OOD和基于OOA的OOD,论述了OOD在不同历史时期的不同特点及内容,简要地介绍了几种典型的OOA和OOD方法,重点介绍了各种方法中的OOD部分。这一章的最后对OOA与OOD之间的关系进行了较深入的讨论。
第2章概括地介绍了本书提出的OOD方法的概貌,包括它所采用的概念、表示法、原则、模型及过程。这一章的内容是整个OOD方法的总纲。
面向对象的设计(OOD)是在面向对象的分析(OOA)的基础上继续运用面向对象(OO)方法解决软件生命周期中设计阶段的问题,产生一个满足用户需求,并且完全可实现的系统模型,即OOD模型。在面向对象的软件开发中,通过OOA建立的系统分析模型(OOA模型)离实现的要求还有很大的距离,因为还有很多设计问题尚未解决,需要在设计阶段运用OOD方法去解决这些问题,并且把设计结果在OOD模型中表达出来,使模型成为可实现的,不再存在悬而未决的建模问题。这就是OOD所要解决的问题。尽管OOD的出现早于OOA。但是迄今为止关于OOD的理论与技术却远不如OOA成熟,内容也不如OOA充实,其中主要存在以下问题:
对什么是OOD,各种著作和论文缺乏统一认识。主要原因是,早期的(即OOA出现之前的)OOD和现今的(即基于OOA的)OOD在内容上有很大的不同,而迄今大部分文献在讨论OOD时没有清晰地对二者加以区别,所以对OOD的概念、过程以及它应该包含哪些内容没有形成准确、一致的见解。
以往大部分论述面向对象的分析与设计(OOA&OOD)的著作都是以论述OOA为主,对OOD的论述则偏于简略。对软件生命周期的设计阶段需要解决的大量实际问题缺乏全面、深入的讨论和切实可行的面向对象设计策略。有些方法(例如Rumbaugh的OMT[16]对面向对象概念在设计阶段的运用基本上局限于对OOA结果进行细化,对许多全局性的设计问题没有给出与面向对象方法密切相关的设计策略,与在结构化设计中所采用的策略没有什么不同。
对OOA和OOD的关系,特别是对它们之间的界限和分工缺乏统一认识。一种基本一致的意见是:OOA和OOD属于软件生命周期的两个不同阶段,它们之间的界限不像结构化分析和结构化设计之间那样严格和清晰;但是除了这种原则性的共同见解之外,没有更进一步的一致意见。对于OOA和OOD之间的关系,特别是对二者之间既存 在界限,同时又允许一定程度的模糊这个问题,大部分著作没有深入地加以讨论,并具体指出哪些建模问题应该明确地属于OOA或者OOD,哪些建模问题允许模糊二者之间的界限。
在众多的面向对象分析与设计方法中,Coad/Yourdon方法是对OOD讨论最多的一种,对OOA和OOD之间关系的处理也较为得当[5,6]。但是由于历史条件的限制,一些在20世纪90年代出现的理论与技术没有在其方法和著作中得以体现。对有些设计问题,例如一个用面向对象方法开发的系统如何用关系数据库或文件系统存储其对象的问题,该方法虽然提出了正确的解决方案,但是理论上的论述和技术策略的介绍都不够详细,因此一般读者在学习之后仍然不知道如何实施。
本书作为在当前科学技术背景下出版的OOD著作,在学习和借鉴前人研究成果的基础上,力求在以下方面取得进步。
1.系统地阐述OOA与OOD的理论体系
本书从区别早期的OOD和基于OOA的OOD人手,通过讨论二者在内容和特点上的不同,在概念上澄清了关于什么是OOD的问题;把面向对象的观点运用于整个软件生命周期,在此前提下对什么是OOD给出了更确切的定义;详细地论述了OOA和OOD之间的关系;对与此相关的一些观点进行了分析和讨论。
2.充实和完善OOD的内容
在面向对象的软件开发中,OOD是软件生命周期中的一个大的阶段。在这个阶段中有大量的技术问题需要解决,需要建立一个可实现的系统模型。从工作量和技术难度来看,OOD的分量绝不比OOA小。作为一种OOD方法,如果只是注意到设计阶段的一部分问题,或者对大量的设计问题只是给出一些原则性的意见,甚至只是简单地罗列出来,那么读者就很难学会怎样实际进行面向对象的设计。目前从事实际系统开发的读者反应最强烈的一个问题就是,做完OOA之后不知道OOD到底该做些什么,因此对设计阶段的许多问题不得不继续采用非OO的设计技术去解决。本书的目标是向读者提供一种内容比较完善、策略具体、可操作性强的OOD方法,其中包含了普通应用系统的设计阶段需要解决的大部分问题,并且包括全局性设计决策和局部的模型细化两个方面的问题。
3.充分运用OO基本概念解决设计问题
我们在《面向对象的系统分析》[30]中提出,在OOA中应该充分运用面向对象的基本概念(即目前大部分面向对象编程语言能够直接支持的概念)解决各种复杂的建模问题,限制扩充概念的引入。本书依然坚持这一宗旨,没有采用比OOA更多的面向对象建模概念,更没有采用诸如“模块”、“块”等非OO的建模元素。此外,本书对所有的设计问题都是运用面向对象的观点给出设计策略,使读者能够在软件开发中完全采用面向对象的概念和表示法来建立系统的设计模型。这意味着本书运用了尽可能少的建模概念解决了较多的设计问题。建模概念的简练使本书提出的方法更容易学习、掌握和使用,并使得OOA、OOD和OOP在概念上保持高度一致,使模型与实现后的程序具有良好的映射关系。当然,为了做到这一点,本书给出了更强的过程指导,告诉读者如何运用一个精练的OO基本概念集合去解决各种复杂的建模问题。
4.适应当前计算机科学技术的新发展
迄今在国际上影响较大的大多数OOA与OOD方法都是在20世纪80年代末和90年代初问世的。在此之后的近十年中,计算机科学技术在很多方面取得了新的进步。例如软件复用技术的新发展、可视化编程环境的流行、软件体系结构的研究、网络与分布式系统的普及等,大量的新技术已被广泛地运用到当前的系统开发中。在这种形势下,必然要求OOD方法不断向前发展。我们的目标是力求在OOD方法中体现计算机科学技术的新进展。本书的OOD方法是根据当前的技术背景提出的。针对在当前软件开发中被广泛采用的几种主要技术,分别给出相应的设计策略,并且用OO概念表达其设计决策。
5.解决工程实践中提出的问题
在本书的写作过程中,我们曾经以技术培训、工程指导、项目合作等多种方式与软件企业界的人士进行接触和交流。他们在运用面向对象方法进行软件开发时,常常在OOD阶段遇到某些疑难问题,其中有些问题在以往的著作中找不到现成的答案。他们把这些问题反映给我们,希望我们进行研究和解决。这些来自工程实践的问题对于OOD方法的研究和发展具有很强的促进作用,本书的很多内容都是针对这些问题开展研究并进行总结提炼的结果。
全书共分7章,其内容安排如下:
第1章讨论什么是OOD。通过区分早期的OOD和基于OOA的OOD,论述了OOD在不同历史时期的不同特点及内容,简要地介绍了几种典型的OOA和OOD方法,重点介绍了各种方法中的OOD部分。这一章的最后对OOA与OOD之间的关系进行了较深入的讨论。
第2章概括地介绍了本书提出的OOD方法的概貌,包括它所采用的概念、表示法、原则、模型及过程。这一章的内容是整个OOD方法的总纲。
序言回到顶部↑
第一台电子计算机诞生于20世纪40年代。到目前为止,计算机的发展已远远超出了其创始者的想象。计算机的处理能力越来越强,应用面越来越广,应用领域也从单纯的科学计算渗透到社会生活的方方面面:从工业、国防、医疗、教育、娱乐直至人们的日常生活,计算机的影响可谓无处不在。
计算机之所以能取得上述地位并成为全球最具活力的产业,原因在于其高速的计算能力、庞大的存储能力以及友好灵活的用户界面。而这些新技术及其应用有赖研究人员多年不懈的努力。学术研究是应用研究的基础,也是技术发展的动力。
自1992年起,清华大学出版社与广西科学技术出版社为促进我国计算机科学技术与产业的发展,推动计算机科技著作的出版,设立了“计算机学术著作出版基金”,并将资助出版的著作列为中国计算机学会的学术著作丛书。时至今日,本套丛书已出版学术专著近50种,产生了很好的社会影响,有的专著具有很高的学术水平,有的则奠定了一类学术研究的基础。中国计算机学会一直将学术著作的出版作为学会的一项主要工作。本届理事会将秉承这一传统,继续大力支持本套丛书的出版,鼓励科技工作者写出更多的优秀学术著作,多出好书,多出精品,为提高我国的知识创新和技术创新能力,促进计算机科学技术的发展和进步做出更大的贡献。
中国计算机学会
2002年6月14日
计算机之所以能取得上述地位并成为全球最具活力的产业,原因在于其高速的计算能力、庞大的存储能力以及友好灵活的用户界面。而这些新技术及其应用有赖研究人员多年不懈的努力。学术研究是应用研究的基础,也是技术发展的动力。
自1992年起,清华大学出版社与广西科学技术出版社为促进我国计算机科学技术与产业的发展,推动计算机科技著作的出版,设立了“计算机学术著作出版基金”,并将资助出版的著作列为中国计算机学会的学术著作丛书。时至今日,本套丛书已出版学术专著近50种,产生了很好的社会影响,有的专著具有很高的学术水平,有的则奠定了一类学术研究的基础。中国计算机学会一直将学术著作的出版作为学会的一项主要工作。本届理事会将秉承这一传统,继续大力支持本套丛书的出版,鼓励科技工作者写出更多的优秀学术著作,多出好书,多出精品,为提高我国的知识创新和技术创新能力,促进计算机科学技术的发展和进步做出更大的贡献。
中国计算机学会
2002年6月14日








点击看大图







加载中...

