找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 1096|回复: 0

浅谈面向对象系统分析与设计方法-急切需加分!

[复制链接]
发表于 2004-3-7 00:00:00 | 显示全部楼层 |阅读模式
0 引言
随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当计算机硬件有了飞速发展之后,各种应用领域对软件系统提出了更高的要求。而传统系统分析与设计方法—结构化分析法,它从系统的功能入手,用它开发的系统是实现模块功能的函数和过程的集合。由于用户的需求和软、硬件技术的不断发展变化,按照功能划分设计的系统模块必然是易变的和不稳定的。这样开发出来的模块可重用性不高。因而,结构化系统分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发周期,发展软件可靠性、可扩充性和可重用性迫使软件界人士不断研究新方法、新技术,探索新途径。面向对象技术是目前流行的系统分析与设计技术。它的提出,主要是为了解决结构化系统分析与设计所不能解决的代码重用问题。它从所处理的数据入手,以数据为中心,把编程问题视为一个数据集合,数据相对于功能而言,更具稳定性。面向对象技术最初是从面向对象的程序设计开始的,它的出现以20世纪60年代simula语言为标志。面向对象语言smalltalk的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象也和开发方法开始结合,出现了面向对象的开发方法。20世纪80年代中后期,面向对象系统分析与设计逐渐成熟,被计算机界理解和接受。
1 面向对象系统分析与设计方法的原理
面向对象方法学基本思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。
2 面向对象方法的特征
面向对象的方法具有四个基本特征:
1)抽象:抽象就是忽略一个主题中与当前目标无关的方面,注意与当前目标有关的方面。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个实体。数据抽象定义了数据类型和施加于该类型对象上的操作。
2)继承:继承是一种联结类的层次模型,并且允许和鼓励类重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,新类继承原始类的特性。派生类可以从它的基类继承方法和实例变量,并且新类可以修改或增加新的方法使之更适合特殊需要。继承性很好地解决了软件的可重用性问题。
3)封装:是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。
4)多态性:指允许不同类的对象对同一消息作出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了函数同名问题。
面向对象程序设计的四大特性,使得软件开发时间缩短,效率高,可靠性好,所开发的程序更强壮,应用程序更易于维护、更新和升级。
3  面向对象方法与结构化方法的比较
3.1问题抽象方面
分析是问题抽象(做什么),设计是问题求解(怎么做),实现是问题的解(结果)。在问题抽象阶段,结构化方法面向过程,按照数据变换的过程寻找问题的结点,对问题进行分解。由于不同人对过程的理解不同,故面向过程的功能,所分割出的功能模块会因人而异。对象是对现实世界实体的模拟,因而能更容易理解需求,即使用户和分析者之间具有不同的教育背景和工作特点,也可很好地沟通。而且,面向对象的对象细分,从同一问题领域的对象出发,不同人得出相同结论的比率较高。
3.2设计方面
在设计上,结构化方法产生自顶向下、结构清晰的系统结构。每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。如果数据结构复杂,模块独立性很难保证。面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据
3.3形式化语言表述
在软件工程基本原则中有一条“形式化原则”,即对问题世界的抽象结论应该以形式化语言(图形语言、伪码语言等)表述出来。结构化方法可以用数据流图、系统结构图、数据辞典、状态转移图、实体关系图来进行系统逻辑模型的描述;而面向对象方法可以使用对象模型图、数据辞典、动态模型图、功能模型图。其中对象模型图近似系统结构图与实体关系图的结合,动态模型图类似状态迁移图,功能模型图类似数据流图。
3.4着重点不同
结构化程序设计从系统的功能入手,按照工程的标准和严格的规范将系统分解为若干功能模块, 系统是实现模块功能的函数和过程的集合。由于用户的需求不断变化,按功能设计的系统模块必然是易变的和不稳定的。面向对象程序设计以数据为中心而不是以服务(功能)为中心来描述系统。它把编程问题视为一个数据集合,更具稳定性。
4  面向对象方法
4.1几种典型的面向对象方法
4.1.1 OMT/Rumbaugh
OMT(Object modeling Technique)方法最早是由Loomis,shan和Rumbaugh在1987年提出的。这个方法是在实体关系模型上扩展了类、继承和行为而得到的。OMT覆盖了分析、设计和实现三个阶段,包含分析、系统设计、对象设计和实现四个步骤,它定义了对象模型、动态模型和功能模型三种模型,这些模型贯穿于每个步骤,并在每个步骤中被不断地精化和扩充。
4.1.2 OOD/Booch
OOD(Object Oriented Design)方法是Grady Booch从1983年开始研究,1991年后走向成熟的一种方法。Booch方法在面向对象的设计中主要强调多次重复和开发者的创造性。方法本身是一组启发性的过程式建议。OOD的一般过程如下:1)在一定抽象层次上标识类与对象;2)标识类与对象的语义;3)标识类与对象之间的关系(如继承、实例化、使用等);4)实现类与对象。
4.1.3 RDD/Wirfs Brock
RDD(Responsibility Drive Design)方法是Wirfs Brock在1990年提出的。这是一个按照类、责任以及合作关系对应用进行建模的方法。首先定义系统的类与对象,然后确定系统的责任并划分给类,最后确定对象类之间的合作来完成类的责任。这些设计将进一步按照类层次、子系统和协议来完善。RDD分探索阶段和精化阶段,按照类层次图、合作图、类规范、子系统规范、合同规范等设计规范来完成实现。
4.1.4 OOAD/Coad Yourdon
OOAD(Object Oriented Analysisand Design)和EwardYourdon在1991年提出的。这是一种逐步进阶的面向对象建模方法。
在OOA中,分析模型用来描述系统的功能,它使用了基本的结构化原则,并把它们同面向对象的观点结合起来。OOA完成系统分析,包括以下五个OOA本质上是一种面向对象的方法,适用于小型系统的开发。
OOD负责系统设计,包括以下四个步骤:1)设计问题域(细化分析结果);2)设计人机交互部分(设计用户界面);3)设计任务管理部分(确定系统资源的分配);4)设计数据管理部分(确定持久对象的存储)。
4.1.5 OOSE/Jacobson
Oose(Object OrientedSoftwareEngineering)是IvarJacobson在1992年提出的一种使用事例驱动的面向对象开发方法。OOSE开发过程中有以下五种模型,这些模型是自然过渡和紧密耦合的:1)需求模型从用户的观点上完整地刻画系统的功能需求。2)分析模型是在需求模型的基础上建立的。主要目的是要建立在系统生命期中可维护、有逻辑性、健壮的结构。3)设计模型进一步精化分析模型并考虑了当前的实现环境。4)实现模型主要包括实现块的代码。5)测试模型包括不同程度的保证。
4.1.6 VMT/IBM
VMT(VisualModelingTechnique)方法是IBM公司于1996年公布的。VMT方法结合了OMT、OOSE、RDD等方法的优点,并且结合了可视化编程和原型技术。VMT方法选择OMT方法作为整个方法的框架,并且在表示上也采用了OMT方法的表示。VMT方法用RDD方法中的CRC(Class ResponsibilityCollaboration)卡片来定义各个对象的责任(操作)以及对象间的合作(关系)。此外,VMTT方法引入了OOSE方法中的使用事例概念,用以描述用户与系统之间的相互作用,确定系统为用户提供的服务,从而得到准确的需求模型。
4.2 几种面向对象方法比较
1)OMT方法覆盖了应用开发的全过程,是一种比较成熟的方法,用几种不同的观念来适应不同的建模场合,它在许多重要观念上受到关系数据库设计的影响,适合于数据密集型的信息系统的开发,是一种比较完善和有效的分析与设计方法。
2)Booch方法并不是一个开发过程,只是在开发面向对象系统时应遵循的一些技术和原则。Booch方法是从外部开始,逐步求精每个类,直到系统被实现。因此,它是一种分治法,支持循环开发,它的缺点在于不能有效地找出每个对象和类的操作。
3)RDD是一种用非形式的技术和指导原则开发合适的设计方案的设计技术。它用交互填写CRC卡片的方法完成设计,对大型系统设计不太适用。RDD采用传统的方法确定对象类,有一定的局限性。另外,均匀地把行为分配给类也十分困难。
4)在OOAD方法中,OOA把系统横向划分为五个层次,OOD把系统纵向划分为四个部分,从而形成一个清晰的系统模型。OOAD适用于小型系统的开发。
5)OOSE能够较好地描述系统的需求,是一种实用的面向对象的系统开发方法,适合于商务处理方面的应用开发。
6)VMT基于现有面向对象方法中的成熟技术,采用这些方法中最好的思想、特色、观点以及技术,并把它们融合成一个完整的开发过程。因此VMT是一种扬长避短的方法,它提供了一种实用的能够处理复杂问题的建模方法和技术。
5 面向对象系统分析与设计建模语言———UML
UML是一种用于软件系统制品制约的、可视化的构造及建模语言。UML最初仅仅是OMT方法、Booch方法的统一。1995年10月,GradyBooch和JimRumbaugh联合推出了UnifiedMethod08版本。这个方法力图实现OMT方法和Booch方法的统一。同年秋天,IvarJacobson加入了Booch和Rumbaugh所在的Rational软件公司,于是OOSE方法也加入了统一的过程中。1997年9月1日产生了UML1.1,并被提交到了OMG(ObjectManagementGroup),同年11月被OMG采纳。
从系统模型级别上看,UML表示法由9种图构成,它们是:静态结构图(StaticStructureDiagram),其中包括类图(Class Diagram)和对象图(ObjectDiagram);使用事例图(UseCaseDiagram);顺序图(SequenceDiagram);协作图(Collaboration);状态图(StatechartDiagram);活动图(ActivityDiagram);实现图(ImplementationDiagram),其中包括成分图(ComponentDiagram)和展开图(DeploymentDiagram)。UML的通用表示还有:串(String)、名字(Name)、标签(Label)、关键字(Keyword)、表达式(Expression)、注释(Note)等。
UML作为一种建模语言,具有以下特点:1)UML结合了Booch方法、OMT方法和OOSE方法的概念,是一个单一的通用的建模语言;2)UML的建模能力比其他面向对象方法更强,不仅适合于一般系统的开发,更擅长于并行、分布式系统的建模;3)UML是一种标准的建模语言,而不是一个标准的开发过程,它完全独立于开发过程。
6 结束语
1)没有放之四海而皆准的方法学,任何方法学都有其局限性,所以软件开发人员大可不必拘泥于某种特定的方法学。例如,面向对象方法的对象模型图,这种形式化语言远不如结构化方法的结构图和数据流图简单明了。
2)面向对象方法确实比结构化方法更能自然地抽象现实世界,而且一些面向对象工具已相当成熟。相反,结构化方法虽不能说止步不前,但其近年来的进步很有限。
3)要想实现软件生产自动化,实现开发方法的统一化、标准化是基本条件。UML是一种表达能力丰富的建模语言,目前,虽然它还不能取代现有的各种面向对象的分析方法,但是,随着UML工作的进一步展开,必将有助于实现软件自动化。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-12-23 17:12 , Processed in 0.151926 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表