版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UML系统分析与设计SystemAnalysis&Design
第二章面向对象分析与设计方法OOA/OOD方法OMT方法Booch方法OOSE方法Fusion方法UML系统分析与设计第2版ZhenyanJi2面向对象分析与设计方法20世纪90年代,一批新的面向对象的方法出现了,其中最引人注目的是Booch方法、OOSE方法和OMT方法等GrandyBooch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念Rumbaugh等人采用了面向对象的概念,引入各种独立于语言的表示符,用对象模型、动态模型和功能模型来共同完成对整个系统的建模UML系统分析与设计第2版ZhenyanJi3OOA/OOD方法OOA/OOD(Object-OrientedAnalysis/Object-OrientedDesign,面向对象分析/面向对象设计)方法是由Coad和Yourdon于1991年提出来的。与传统分析方法相比,OOA/OOD方法的优势:可以处理更有挑战性的问题域。改善了分析人员与问题领域专家的交流。通过分析、设计和编程增加内部的一致性。显式地表示类和对象间的共性。可以建立有弹性的规范。OOA(面向对象分析)、OOD(面向对象开发)和OOP(面向对象编程)的结果可重用。为分析、设计和编程提供一致的基本表示。UML系统分析与设计第2版ZhenyanJi4OOA/OOD方法在分析阶段建立的OOA模型由5层组成:主题层(ASubjectLayer) 类和对象层(AClass&ObjectLayer)结构层(AStructureLayer)属性层(AnAttributeLayer)服务层(AServiceLayer)OOD部分为上述五层添加了4个不同的组件:人机交互组件(HumanInteractionComponent)问题域组件(ProblemDomainComponent)任务管理组件(TaskManagementComponent)数据管理组件(DataManagementComponent)UML系统分析与设计第2版ZhenyanJi5OOA/OOD方法OOD阶段扩充了OOA阶段创建的5层,将OOA阶段产生的结果在OOD阶段放入组件中,如图所示。UML系统分析与设计第2版ZhenyanJi6OOAOOA的过程如下:1.识别问题域中的类和对象在这个步骤中,分析人员通过对问题域深入地分析和理解,识别出组成系统核心的、相关的、稳定的类和对象。识别类和对象的第1步是研究问题域,可以通过审视下列选项来发现可能的类和对象。▪结构。 ▪其他系统。▪设备。 ▪被记住的事情或事件。▪所扮演的角色。 ▪操作的程序。▪地点(物理位置)。 ▪有组织的单元。UML系统分析与设计第2版ZhenyanJi7OOA2.确定结构结构可以分为两种,即“一般-特殊”结构(Gen-SpecStructures)和“整体-部分”结构(Whole-PartStructures)。在找出“一般-特殊”结构和“整体-部分”结构后,就可以识别出多重结构,因为多重结构是“一般-特殊”结构和“整体-部分”结构的各种组合。识别出多重结构后,将结构添加到OOA图中。UML系统分析与设计第2版ZhenyanJi8OOA3.确定主题在这个步骤中,将模型分解为更易管理和理解的主题域,可降低所产生模型的复杂性。4.定义属性在识别出属性后,就可以识别出对象间的实例连接(InstanceConnections)。首先对识别出的属性和实例连接进行检查,然后规定其属性,最后将属性和实例连接添加到OOA图中。UML系统分析与设计第2版ZhenyanJi9OOA5.定义服务在识别出服务后,可以识别出消息连接(MessageConnections),然后规定服务,并将服务和消息连接添加到OOA图中。6.准备文档OOA部分的最后一步是整理OOA文档。主要文档包括:完整的OOA图。类和对象的规格定义。UML系统分析与设计第2版ZhenyanJi10OODOOD的过程如下:1.设计问题域组件设计问题域组件的步骤如下:寻找可以被重用的、以前的设计和类。添加根类,并将特定于问题域的类分组。抽象出公共服务,建立并添加父类。改变问题域模型以改善性能。审查添加到OOA模型中的细节。UML系统分析与设计第2版ZhenyanJi11OOD2.设计人机交互组件设计人机交互组件需要使用原型开发。在完成原型开发后,通过原型来检查人机交互组件是否满足下述标准。人机交互作用的一致性。操作步骤的最少化。及时地给予用户有意义的反馈。提供撤销功能。不要依赖用户的记忆力去记住某些东西。掌握软件所花费的学习时间尽量少。对用户来说,软件的乐趣和吸引力也是很重要的。UML系统分析与设计第2版ZhenyanJi12OOD3.设计任务管理组件首先,需要确定系统是否需要任务。如果不需要,就不必设计任务,因为任务会增加系统的复杂性。任务可以分为以下4种:由事件触发的事件驱动任务(Event-DrivenTasks)。由特定的时间间隔触发的时钟驱动任务(Clock-DrivenTasks)。优先级任务(PriorityTasks)。关键任务(CriticalTasks)。UML系统分析与设计第2版ZhenyanJi13OOD4.设计数据管理组件首先,要确定数据管理的途径,即采用平面文件(FlatFile)、关系型数据库管理系统(RelationalDatabaseManagementSystem)还是面向对象数据库管理系统(Object-OrientedDatabaseManagementSystem)。其次,根据所选途径,应用一系列标准进行评价并选择可能的数据管理工具。最后,根据所选的途径和工具设计数据管理组件,包括设计数据格式和相应的方法。UML系统分析与设计第2版ZhenyanJi14OMT方法对象模型技术(ObjectModelingTechnique,OMT)是由Rumbaugh等提出的,是一种现今非常流行的面向对象开发技术。其目的是构造一系列模型,并用这些模型不断地对系统设计进行细化,直到找到最后适合实现的模型。UML系统分析与设计第2版ZhenyanJi15OMT方法使用OMT方法的面向对象开发过程可分为5步,如图所示。UML系统分析与设计第2版ZhenyanJi16(1)分析。分析问题域并进行建模。(2)系统设计。设计系统的整体体系结构。(3)对象设计。为了有效地实现系统,对对象结构进行细化,并为对象添加细节。(4)编码。用目标编程语言实现对象和类。(5)测试。验证系统是否正确。OMT方法—分析分析过程可分为下述5个步骤:1.编写问题陈述(ProblemStatement)构造分析模型是从为问题域编写问题陈述开始的。2.建立对象模型(ObjectModel)建立对象模型的步骤如下:(1)识别出类和对象。(2)丢弃不必要和不正确的类。(3)准备数据词典。(4)识别出类之间的关联关系。(5)丢弃不必要的和不正确的关联。UML系统分析与设计第2版ZhenyanJi17OMT方法—分析建立对象模型的步骤如下:(接上页)(6)抽象出类和对象的属性。(7)丢弃不必要或不正确的属性。(8)使用继承关系来建立类之间的层次关系。(9)遍历访问路径,找出不足。3.建立动态模型(DynamicModel)动态模型主要描述了随着时间的变化而变化的对象及对象间的关系,动态模型对于具有重要动态行为的系统(例如,交互式系统和实时系统)尤其重要。动态模型描述了系统的可能控制流,而对象模型描述了可能的信息流。UML系统分析与设计第2版ZhenyanJi18OMT方法—分析4.建立功能模型(FunctionalModel)功能模型完全由数据流图和约束组成,而数据流图由过程、数据流、参与者和数据存储组成。其中,一个过程将输入数据值转变为输出数据值。5.细化对象模型、动态模型和功能模型,并建立文档当分析完成后,要验证分析模型是否满足系统最初的需求,这个活动需要该问题领域的专家参与,以检验产生的分析模型。UML系统分析与设计第2版ZhenyanJi19OMT方法—系统设计在系统设计阶段,主要确定系统的高层次结构。在系统设计阶段,需要做出如下决策:1.将系统划分为子系统对于每个子系统,都必须建立该子系统与其他子系统之间的定义良好的接口,接口的建立使得不同子系统的设计可以独立进行。如果必要,还可以不断地将子系统进一步分解为更小的子系统,直到将子系统分解为模块。UML系统分析与设计第2版ZhenyanJi20OMT方法—系统设计2.识别并发首先要识别出系统固有的并发,可以通过分析状态图来完成这个任务。为了定义并发任务,需要检查系统中不同的、可能的控制线程,并将这几个控制线程合并为一个。3.将子系统和任务分配给处理器将子系统分配给处理器是从估计所需要的硬件资源开始的,同时设计者还必须决策哪个子系统由硬件实现,哪个子系统由软件实现。UML系统分析与设计第2版ZhenyanJi21OMT方法—系统设计4.选择实现数据存储的策略在设计的这个阶段,必须完成关于数据库的决策,即决定是使用文件还是数据库管理系统存储数据。5.识别出全局资源,并确定控制访问全局资源的机制必须明确定义对全局资源(如物理单元、逻辑名和共享数据等)的使用和访问。UML系统分析与设计第2版ZhenyanJi22OMT方法—系统设计6.选择实现软件控制的方法用软件实现控制又分为外部控制和内部控制两种。外部控制(ExternalControl)是系统中对象间的外部可见的事件流。内部控制(InternalControl)是进程内的控制流,可以被看作是程序语言中的过程调用。7.考虑边界条件描述各种边界条件也是很重要的,包括如下内容:▪系统的初始化。
▪系统的结束。▪系统的失败。UML系统分析与设计第2版ZhenyanJi23OMT方法—系统设计8.建立折中的优先级系统的所有目标并不是都可以达到,所以要分析系统的所有目标,然后进行折中,为不同的目标设置不同的优先级。UML系统分析与设计第2版ZhenyanJi24OMT方法—对象设计在对象设计(ObjectDesign)阶段,要对类、关联、属性和操作进行充分、详细的规定。对象设计的步骤如下:1.对象模型可以从其他模型获取操作对于获得对象模型的操作,必须结合3个模型,为功能模型中的每个过程和动态模型中的每个事件定义操作。UML系统分析与设计第2版ZhenyanJi25OMT方法—对象设计2.设计算法实现操作步骤如下:(1)选择使实现操作的代价最小的算法。(2)选择适合该算法的数据结构。(3)如果必要,定义新的内部类和操作。(4)将没有明确与某个类相关的操作分配给正确的类。3.优化访问数据的路径UML系统分析与设计第2版ZhenyanJi26OMT方法—对象设计4.控制的实现使用系统设计阶段选择的策略实现状态图。5.调整类结构,并增加继承6.设计关联的实现首先要分析怎样使用关联,然后确定关联的实现策略。7.确定对象属性的准确表达8.用模块封装类和关联UML系统分析与设计第2版ZhenyanJi27OMT方法—实现实现(Implementation)是将设计模型转变为代码的过程。由于较困难的决策都已在设计阶段完成,所以将设计模型转变为代码的实现是直接的、简单的。UML系统分析与设计第2版ZhenyanJi28OMT方法—测试测试(Testing)用来验证系统是否被正确实现。在分析和设计阶段也部分涉及实现和测试活动,也就是说,分析、设计、实现和测试在增量式的开发中是交错进行的活动。测试可能会在不同的层次上进行,例如,可以有单元测试、集成测试和系统测试。UML系统分析与设计第2版ZhenyanJi29OMT方法—模型OMT方法通过3个模型——对象模型、动态模型和功能模型来可视化地定义一个系统。1.对象模型(ObjectModel)对象模型描述了系统的静态结构,还描述了系统中的类以及类间的关系、类的属性和操作。2.动态模型(DynamicModel)动态模型描述了系统的主要行为,它主要描述了问题域中发生了什么、什么时候发生的以及有什么结果。3.功能模型(FunctionalModel)功能模型描述了如何实现系统功能。UML系统分析与设计第2版ZhenyanJi30Booch方法UML系统分析与设计第2版ZhenyanJi31Booch方法是最早被承认的面向对象设计方法之一。提出了面向对象开发的4个模型描述逻辑结构的逻辑模型(LogicalModel)描述物理结构的物理模型(PhysicalModel)描述静态语义的静态模型(StaticModel)描述动态语义的动态模型(DynamicModel)Booch方法Booch方法区分了系统的逻辑结构和物理结构,不但描述了静态语义,还描述了动态语义。Booch方法的开发过程是一个迭代的、渐进式的系统开发过程。Booch方法的面向对象开发过程可以分为宏过程(MacroProcess)和微过程(MicroProcess)。UML系统分析与设计第2版ZhenyanJi32Booch方法宏过程充当微过程的控制框架,它代表了整个开发队伍几个月或几个星期所进行的活动。宏过程包含如下5个活动:1.概念化(Conceptualization)概念化的目的是试图建立系统的核心需求。概念化是个非常有创造性的过程,所以没有严格的开发规则。原型是概念化的主要产品。UML系统分析与设计第2版ZhenyanJi33Booch方法2.分析(Analysis)分析的目的是通过识别出构成问题域词汇表的类和对象来为系统建立模型,它强调系统的行为。3.设计(Design)设计的目的是建立系统的体系结构。设计可以被分为体系结构规划、战术设计和版本规划。体系结构规划的目的是在生命周期的早期创建一个特定于域的应用程序框架,这个框架可以被不断地细化,它包括设计整个系统的层次和划分。UML系统分析与设计第2版ZhenyanJi34Booch方法4.进化(Evolution)进化由微过程的应用和变化管理组成。微过程的应用是从对下一个版本的需求分析开始的,然后设计系统体系结构,实现类和对象。进化的主要产品是一系列的软件可执行版本,这些版本是对体系结构第一个版本的不断细化而产生的。5.维护(Maintenance)维护阶段的目的是管理软件的交付使用,这个阶段是进化阶段的继续。在这个阶段,需要进行系统的本地化以及消除错误等工作。UML系统分析与设计第2版ZhenyanJi35Booch方法微过程由4个重要的、无时间顺序的活动组成,它故意模糊了传统的分析与设计方法中的阶段,过程是由时机来控制的。1.在给定的抽象层次上识别出类和对象这一步要对问题域和系统需求进行分析以识别出类和对象,这依赖于适当的需求分析。可以通过面向对象分析、行为分析、用例分析等分析方法来识别类和对象。这个步骤产生了候选类和对象的数据词典,以及描述对象行为的文档。UML系统分析与设计第2版ZhenyanJi36Booch方法2.识别出这些类和对象的语义这一步的目的是为从前一阶段中识别出的每个抽象设立状态和行为。在这个阶段要执行3个动作,即编制故事板(Storyboarding)、孤立类设计(IsolatedClassDesign)和模式抽取(PatternScavenging)。3.识别出类间和对象间的关系识别出类间和对象间关系的目的是确定每个抽象的边界,并识别出协作的类和对象。UML系统分析与设计第2版ZhenyanJi37Booch方法4.实现类和对象在分析阶段,实现类和对象的目的是细化已存在的抽象,并在下一个抽象层次上找出新的类和对象。通过上述步骤,设计者可以得到如下产物。类图(ClassDiagram)。对象图(ObjectDiagram)。状态跃迁图(StateTransitionDiagram)。交互作用图(InteractionDiagram)。模块图(ModuleDiagram)。进程图(ProcessDiagram)。UML系统分析与设计第2版ZhenyanJi38OOSE方法OOSE方法是由Jacobson于1994年提出的,它组合了3种已经被使用了很长时间的技术。OOSE方法是所谓的用例驱动的方法(UseCaseDrivenApproach),在这个方法中,用例模型充当可以导出所有其他模型的中心模型。OOSE方法的一个很大贡献是引入了用例的概念。OOSE过程可以分为3个阶段:分析阶段构造阶段测试阶段UML系统分析与设计第2版ZhenyanJi39OOSE方法—分析阶段在分析阶段产生两种模型,即需求模型(RequirementsModel)和分析模型(AnalysisModel)。需求模型从用户的角度描述了系统的所有功能需求,以及系统被最终用户使用的方式。需求模型为系统确定了边界,定义了功能。需求模型由下述3个部分组成。1.用例模型2.问题域对象模型(ProblemDomainObjectModel)问题域对象模型描述了系统的逻辑视图。3.接口描述(InterfaceDescriptions)UML系统分析与设计第2版ZhenyanJi40OOSE方法—构造阶段构造阶段可以分为两步,即设计(Design)和实现(Implementation)。1.设计在这个阶段,设计模型细化分析模型,使模型适合于实现环境。设计模型由交互作用图(InteractionDiagram)和状态跃迁图(StateTransitionGraphs)组成。2.实现在这一阶段,用编程语言实现每个对象。通常,使用者不必等到整个设计模型都完成后再进行系统实现,可以在设计模型部分完成的情况下就开始实现系统。UML系统分析与设计第2版ZhenyanJi41OOSE方法—测试阶段测试用来验证开发完成的软件系统是否满足要求。测试有自己的生命周期,一般是从测试计划开始,以测试报告结束。测试的步骤如下:1.测试计划制定测试计划是为了使测试活动的规划变得容易,并为测试提供参考2.测试规范测试规范确定要进行哪种测试以及测试例子。3.测试报告根据测试规范进行测试,如果测试通过就不用再进行更多的测试;如果测试失败,则对失败原因进行分析。在测试阶段,先进行单元测试,再进行系统测试。UML系统分析与设计第2版ZhenyanJi42Fusion方法Fusion方法受到了下面的方法或技术影响:OMTFusion方法中的对象模型与OMT方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论