信息系统分析与设计-第5章_第1页
信息系统分析与设计-第5章_第2页
信息系统分析与设计-第5章_第3页
信息系统分析与设计-第5章_第4页
信息系统分析与设计-第5章_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象的系统分析与设计,面向对象的分析与设计方法,面向对象是近20年来国内外IT行业最为关注的技术之一,面向对象技术是一种按照人们对现实世界习惯的认识论和思维方式来研究和模拟客观世界的方法学。 它将现实世界中的任何事物都视为“对象”,将客观世界看成是由许多不同种类的对象构成的,每一个对象都有自己的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了完整的客观世界。,面向对象的方法概念与思想,所谓面向对象技术,顾名思义,就是以对象观点来分析现实世界中的问题。从普通人认识世界的观点出发,把事物归类、综合,提取共性并加以描述。在面向对象的系统中,世界被看成是独立对象的集合,对象之间通过过程

2、(在面向对象术语中称之为“消息”)相互通信。 面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送和多态性等概念来构造系统的软件开发方法。,OO方法的产生和发展,结构化生命周期法难以控制、处理和适应变化的矛盾,因此产生了原型化方法来进行弥补,原型化方法又需要有快速原型生成工具来支持。这两种方法都是从一般系统工程的角度采用计算机语言来描述、处理自然世界,这样必然造成系统分析、设计与其事物管理的差距,使管理信息系统在应用上产生了许多困难和矛盾。 在20世纪80年代初期产生了面向对象的设计方法(OOP),面向对象设计方法既吸取了以前开发方法的优点,同时又正视和顺应了现实世界由物质和意识两部分组

3、成,是近20年来发展起来的基于问题对象的一种自底向上的系统开发方法。 面向对象的思想首先出现在程序设计的语言中,产生了面向对象的程序设计方法(Object-Oriented Programming, OOP),并进而产生面向对象技术和方法。 一般认为,面向对象的概念起源于20世纪70年代挪威的K.Nyguarded等人开发的模拟离散事件的程序设计语言Simula67。 但真正的面向对象设计(OOP)还是来源于Alan Keyz主持设计的Smalltalk语言。 由Xerox Learning Research Group所研制的Smalltalk-80系统,则是较全面地体现了面向对象程序设计语

4、言的特征,标志面向对象程序设计方法得到比较完善实现,从而兴起了面向对象研究的高潮。,面向对象的基本概念,对象 面向对象方法就是以对象为中心、以对象为出发点的方法,所以对象的概念相当重要。在应用领域中有意义的、与所要解决的问题有关系的任何人或事物(即我们说的实体)都可以作为对象,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的事物或东西。 在面向对象方法中,对象是一组数据(属性)和施加于这些数据上的一组操作代码(操作)构成的独立类体。换言之,对象是一个有着各种特殊属性(数据)和行为方式(方法)的逻辑实体。对象是一个封闭体,它向外界提供一组接口界面,外界通过这些接口

5、与对象进行交互,这样对象就具有较强的独立性、自治性和模块性,从而为软件的重用奠定了坚实的基础。 从传统的结构化编程观点来看,数据和处理它们的代码(操作过程)是两个不同的独立实体,它们之间的正确联系、选择与匹配需要应用系统的设计者时刻考虑、操心和进行统一。而在OO中,一个对象则是由私有数据和其上的一组操作代码组成的一个统一体。,消息,对象通过对外提供服务发挥自身作用,对象之间的相互服务是通过消息来连接实现的。 消息是为了实现某一功能而要求某个对象执行其中某个功能操作的规格说明。它一般含有下述信息:提供服务的对象标识、服务标识、输入信息和响应信息。对象接收消息,根据消息及消息参数调用自己的服务,处

6、理并予以响应,从而实现系统功能。 消息是对象之间相互作用和相互协作的一种机制,更通俗地讲,OOP中的术语“消息”只不过是现实世界中的“请求”、“命令”等日常生活用语的同义词。,方法,“方法”对应于对象的能力,它是实现对象所具有的功能操作代码段,是响应消息的“方法”。在C十中,方法即是类中定义的成员函数,它只不过是该类对象所能执行的操作的算法实现。 方法与消息是一一对应的,每当对象收到一个消息,它除了能用其“智能化”的选择机制知道和决定应该去做什么(what to do)外,还要知道和决定该怎样做(how to do)。而方法正是与对象相连决定怎么做的操作执行代码。所以方法是实现每条消息具体功能

7、的手段。,类,在面向对象的软件技术中,类可以定义为由数据结构及相关操作所形成的集合,或所有相似对象的状态变量和行为构成的模板。 类是对一组对象的抽象归纳与概括,更确切地说,类是对一组具有相同数据成员和相同操作成员的对象的定义或说明。而每个对象都是某个类的一个具体实例。 在OOP中,每个对象由一个类来定义或说明,类可以看作生产具有相同属性和行为方式对象的模板。与成语“物以类聚,人以群分”的意思一样,“类”就是具有相似性质的事物的同类特征的集中。在面向对象系统中,我们一般就是根据对象的相似性(包括相似的存储特征和相似的操作特征)来组织类的。简而言之,按照对象的相似性,我们把对象分成一些类和子类,将

8、相似对象的集合即称为“类”。对 c十程序员而言,类实际只是一种对象类型、它描述属于该类型的具有相同结构和功能的对象的一般性质。,继承,继承是对象类间的一种相关关系,指对象继承它所在类的结构、操作和约束,也指一个类继承另外一个类的结构、操作和约束。继承体现了一种共享机制。 继承机制既是一个对象类获得另一对象类特征的过程,也是一个以分层分级结构组织、构造和重用类的工具。它是解决客观对象“相似但又不同”的妙法。 继承机制具有能清晰体现相似类间的层次结构关系;能减小代码和数据的重复冗余度,大大增强程序的重用性;能通过增强一致性来减少模块间的接口和界面,大大增强程序的易维护性等特点。 如果没有继承概念的

9、支持,则OOP中所有的类就象一盘各自为阵、彼此独立的散沙,每次软件开发都要从“一无所有”开始。,封装,封装(encapsulation)即信息隐藏。它保证软件部件具有较好的模块性,可以说封装是所有主流信息系统方法学中的共同特征,它对于提高软件清晰度和可维护性,以及软件的分工有重要的意义。我们从两个方面来理解封装的含义。 (1)当设计一个程序的总体结构时,程序的每个成分应该封装或隐藏为一个独立的模块,定义每一模块时应主要考虑其实现的功能,而尽可能少地显露其内部处理逻辑。 (2)封装表现在对象概念上。对象是一个很好的封装体,它把数据和服务封装于一个内在的整体。对象向外提供某种界面(接口),可能包括

10、一组数据(属性)和一组操作(服务),而把内部的实现细节(如函数体)隐藏起来,外部需要该对象时,只需要了解它的界面就可以,即只能通过特定方式才能使用对象的属性或对象。这样既提供了服务,又保护自己不轻易受外界的影响。,多态性,多态性(polymorphism)指相同的操作(或函数,过程)可作用于多种类型的对象并获得不同的结果。在面向对象方法中,可给不同类型的对象发送相同的消息,而不同的对象分别做出不同的处理。例如给整数对象和复数对象定义不同的数据结构和加法运算,但可以给它们发送相同的消息“做加法运算”,整数对象接收此消息后做整数加法运算,复数对象则做复数加法运算,产生不同的结果。多态性增强了软件的

11、灵活性、重用性、可理解性。,面向对象的思想,按设计思想来分,传统的软件系统开发可分为自顶向下和自底向上两种。流行的结构化方法采用自顶向下的设计思想。但是,面向对象方法既不是自顶向下方法也不是自底向上方法。尽管它兼有这两者的一些特点。 一方面,面向对象方法鼓励人们从问题的基本的、简单的方面入手,用对象来考虑如何描述问题的解决,然后抽象并确定类,得到具有一般性的解决问题的方法,这正是自底向上的本质; 另一方面,面向对象的方法又要求人们面向目标,考虑为达到这一目标如何建立这些基本的对象,这正体现了自顶向下的思想。 面向对象方法从一开始就强调结构与代码的共享与重用 。它与传统的结构化设计思想比起来,有

12、着明显的优点。 代码的可重用性好:随着开发平台以及应用要求越来越复杂,应用程序的规模变得越来越庞大,代码重用成了提高程序设计效率的关键。 可维护性和可扩充性好:用传统的面向过程语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,也是软件危机的突出表现 稳定性好: 结构化程序设计也存在模块的独立性,因此结构化软件也有一定的稳定性。但结构化设计是通过过程(函数、子程序)的概念来实现的 。,对象模型技术,模型是为了在构造事物前理解事物而对事物作出的一种抽象,它忽略事物的非本质内容。 对象模型技术(Object Modeling Technique,OMT)是建立系统模型的方法学,它由三种模型组

13、成。对象模型表示系统的静态的、结构化的数据,描述一个根据对象和相对实体关系的系统的静态结构;动态模型表示系统的动态的、行为的控制方式,是根据事件和状态描述系统的控制结构;功能模型则表示了系统的转换功能,是根据属性值和功能来描述系统的计算结构。软件过程是三方面的结合:使用数据结构(对象模型),按时间调整操作顺序(动态模型)和转换属性值(功能模型)。,对象模型,对象模型描述了系统中对象结构,包括对象的标识、与其他对象的关系、属性和操作。对象模型提供了动态模型和功能模型都适用的基本框架,对象是现实世界划分事件的单元,是模型中的组成成分。 对象模型用包含对象类的对象图来表示。类按层次排列,并共享公共结

14、构和行为特征,类与其他类相关联。类定义了每个对象实例所取的属性值和每个对象执行的操作。,动态模型,动态模型描述了系统中与时间和操作序列有关的内容,即标志改变的事件、事件序列、定义事件上下文状态以及事件和状态的组织。动态模型眼于控制,即描述系统中发生的操作序列。 动态模型用状态图表示。每个状态图展示了系统中对象类所允许的状态和事件序列。状态图中的动作对应于功能模型中的功能,状态图中的事件为对象模型中对对象的操作。,功能模型,功能模型描述了系统与值转换有关的诸方面内容,即功能、映像、约束和功能性依赖。功能模型只着眼于系统做什么,而不考虑如何做、什么时候做。 功能模型用数据流图表示。数据流图表示根据

15、输入值和函数进行的输出值的计算与值之间的相关性,而不考虑功能是否执行和什么时候执行。在动态模型中,功能作为动作被唤醒,而在对象模型中则作为对对象的操作。,三种模型的联系,对象模型描述了动态模型和功能模型操作的数据结构。对象模型中的操作对应于动态模型中的事件和功能模型中的功能。 动态模型描述对象的控制结构,它展示了依赖于对象值并导致改变对象值和唤醒功能的动作的决策。 功能模型描述由对象模型中的操作和动态模型的动作唤醒的功能,功能是对象模型指定的数据值上的操作,功能模型给出对象值上的约束。,面向对象的分析方法,面向对象分析(OOA)是面向对象(OO)方法的一个组成部分,它利用面向对象的方法进行系统

16、分析,即在明确的用户需求的基础上,通过对问题空间的分析,把问题分解成一些类或对象,找出这些对象的特点(即属性和服务),以及对象间的关系(一般/特殊,整体/部分关系),并由此产生一个规格说明,建立以对象为单元的信息系统逻辑模型,为面向对象设计(OOD)和面向对象程序设计(OOP)提供指导。 到目前为止,面向对象分析方法有许多种,有Booch方法(OOD)、Coad和Yourdon方法(OOA&D)、Jacobson方法(OOSE)、Rumbauph方法(OMT)、Wassman-Pircher方法(OOSD)等,这些方法从不同角度进行分析,各有特色,但距问题的全面解决还有一定的距离。,OOA的系

17、统模型,OOA的主要目标是利用面向对象的方法,站在对象的角度对所要研究的问题空间及系统进行深刻的理解,正确认识问题空间中的事务及其事务之间的关系,识别描述问题空间及系统所需的对象、类,定义对象及类的属性与服务,建立与问题空间相映射、相对应的系统对象模型。 OOA的系统模型包括三大部分,即基本模型、补充模型及系统的详细说明。,OOA的系统模型-基本模型,基本模型是以类图的形式来表达系统最重要的信息,而类图则由类、属性、服务、泛化特化结构、整体部分结构、实例连接和消息连接等主要成分所构成。这些成分所表达的模型信息可分为三个层次,即对象层、特征层和关系层。,OOA的系统模型-补充模型,补充模型是基本

18、模型之外的用于帮助理解并延伸基本模型的模型,补充模型由主题图、使用实例和交互图组成。 (1)主题图是具有较强联系的类组织的集合体,它是对系统类图的进一步抽象,是较高层次上的系统视图。主题图描述了系统的主题构成,它简明直观,无论是对开发者还是对使用者都有很大帮助。 (2)使用实例(Use Case)是对系统功能使用情况的文字描述,每个使用实例对应着系统的一个功能,它描述系统的外实体与系统之间的信息交互关系,。 (3)交互图(Interaction Diagram)是一个使用实例与完成相应功能的系统成分之间的对照图,它具体表明了使用实例中陈述的事件是由系统中的哪个服务来响应和完成,以及这个服务在执

19、行过程中又进一步用到哪些其它对象中的服务。,OOA的系统模型-系统的详细说明,系统的详细说明 详细说明是按照面向对象方法的要求格式对系统模型作出的进一步解释,它主要由类描述模板构成。对于OOA系统模型的每一类,一般都要建立一个类描述模板。类描述模板的构成有:对整个类及其对象的进一步说明、对每个属性和服务的进一步说明和其他必要的说明。 OOA的系统模型给出了对OOA分析结果的完整表达和精确描述,在这3个组成部分中,基本模型是描述表达OOA的核心,补充模型是对基本模型的必要补充和辅助说明,而详细说明则给出了系统模型中类、对象、属性和服务的详细定义与进一步解释。这三个部分组合起来,构成OOA分析文档

20、的主要内容,也是OOA的主要工具,OOA就是根据这一框架来展开工作的。,OOA分析过程,在一个系统开发过程中进行了系统业务调查以后,就可以按照面向对象的思想来分析问题了。 OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行归类分析和整理.OOA强调如下基本观点: 分析规格说明的总体框架贯穿结构化方法,如整体和局部,类和成员,对象和属性等; 用消息进行用户和系统之间以及系统中实例之间的相互通讯; OOA大致上遵循如下五个基本步骤: (以Coad与Yourdon方法讨论 ) 1、确定类(class)和对象(object)。 2、确定结构(structure)。 3、定义主题(su

21、bject)。 4、定义属性(attribute)。 5、确定服务(service)。,面向对象的设计方法,面向对象设计(OOD)是对面向对象分析产生的逻辑结果进行设计,从面向对象的分析转到面向对象的设计是一个累进的模型扩充过程。 面向对象分析的各个层次(如对象、结构、主题、属性和服务)是对“问题空间”进行了模型化,而面向对象的设计则需要对一个特定的“实现空间”进行模型化,通过抽象、封装、继承性、消息通信、通用的组织法则、粒度和行为分类等途径控制设计的复杂性。 OOD的基本目标是改进设计、增进软件生产效率、提高软件质量以及加强可维护性。,OOD系统模型,下列面向对象设计模型是由Coad和You

22、rdon提出的。该模型由四个部分和五个层次组成。 四个部件对应目标系统的四个子系统,在不同的软件中,这四个部件的大小和重要程度可能差异较大,可以根据需要做出进一步的合并和分解。 PDC是针对总体进行的设计。HIC给出实现人机交互需要的对象。TMC提供协调和管理目标系统软件各个任务的对象。DMC定义专用对象。,OOD设计,1、问题空间部分的设计(PDC) 在面向对象设计中,面向对象分析(OOA)的结果恰好符合面向对象设计(OOD)的问题空间部分,因此,OOA的结果就是OOD部分模型中的一个完整部分。但是,为了解决一些特定设计所需要考虑的实际变化,可能要对OOA结果进行一些改进和增补。 复用设计:

23、根据问题解决的需要,把从类库或其他来源得到的既存类增加到问题解决方案中去。 把问题论域相关的类关联起来:在设计时,从类库中引进一个根类,做为包容类,把所有与问题论域有关的类关联到一起,建立类的层次。把同一问题论域的一些类集合起来,存于类库中。 加入一般化类以建立类间协议:有时,某些特殊类要求一组类似的服务。在这种情况下,应加入一个一般化的类,定义为所有这些特殊类共用的一组服务名,这些服务都是虚函数。在特殊类中定义其实现。 调整继承支持级别:在OOA阶段建立的对象模型中可能包括有多继承关系,但实现时使用的程序设计语言可能只有单继承,甚至没有继承机制,这样就需对分析的结果进行修改。 改进性能:提高

24、执行效率和速度是系统设计的主要指标之一。增加某些属性到原来的类中,或增加低层的类,以保存暂时结果,避免每次都要重复计算造成速度损失。 加入较低层的构件:在做面向对象分析时,分析员往往专注于较高层的类和对象,避免考虑太多低层的实现细节。但在做面向对象设计时,设计师在找出高层的类和对象时,必须考虑到底需要用到哪些较低层的类和对象。,2、人机交互部分的设计(HIC),通常在OOA阶段给出了所需的属性和操作,在设计阶段必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必需的实际显式和输入。如Windows、Pane、Selector等。人机交互部分的设计决策影响到人的感情和精神感受,

25、设计HIC的策略由以下几点构成: 用户分类; 描述人及其任务的脚本; 设计命令层; 设计详细的交互; 继续做原型; 设计HIC类; 根据图形用户界面(GUI)进行设计。,3、任务管理部分的设计(TMC),在OOD中,任务是指系统为了达到某一设定目标而进行的一连串的数据操作(或服务),若干任务的并发执行叫做多任务。任务能简化并发行为的设计和编码,TMC的设计就是针对任务项,对一连串的数据操作进行定义和封装,对于多任务要确定任务协调部分,以达到系统在运行中对各项任务进行合理组织与管理。,(1)TMC设计策略,识别事件驱动任务。 事件驱动任务是指睡眠任务(不占用CPU),当某个事件发生时,任务被此事件触发,任务醒来做相应处理,然后又回到睡眠状态。 识别时钟驱动任务。按特定的时间间隔去触发任务进行处理,如某些设备需要周期性的数据采集和控制。 识别优先任务和关键任务。把它们分离开来进行细致的设计和编码,保证时间约束或安全性。 识别协调者。增加一个任务来协调诸任

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论