《结构化建模.ppt》由会员分享,可在线阅读,更多相关《结构化建模.ppt(114页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、结构化建模结构化建模内容概要1 UML的产生与发展的产生与发展 3 UML的视图和图的视图和图 4 用用UML建模建模 2 UML的基本概念的基本概念 学习目标了解UML的起源及发展理解什么是UML掌握UML的视图和图了解UML的建模过程4.1 UML产生与发展UML及其起源 UML的发展UML及其起源oUML(Unified Modeling Language,统一建模语言)是一种建模语言,它可以为面面向向对对象象(OO,Object-Oriented)开发系统的产品进行说明、可视化和编制文档。o提 出 UML的 三 位 著 名 的 方 法 学 家 Grady Booch,James Rum
2、baugh和 Ivar Jcobson oOMG(Object Management Group,对象管理组织)采纳UML成为业界的标准。Rational三剑客Jim RumbaughGrady BoochIvar JacobsonUML的著名人物UML的起源历程1996Nov.1997Mar.1999UML演化三阶段o第 一 阶 段 是 3位 面 向 对 象 方 法 学 家 Booch、Rumbaugh和Jacobson共同努力,形成了UML0.9;o第二阶段是公司的联合行动,由十几家公司组成了UML成员协会,将各自意见加入UML,以完善和促进UML的定义工作,形成了UML1.0和1.1,并
3、向OMG申请成为建模语言规范的提案;o第三阶段是在OMG控制下对版本的不断修订和改进,其中UML1.3是较为重要的修订版。4.2 UML的基本概念oUML(Unified Modeling Language)是一种构建软件系统和文档的通用可视化建模语言。oUML能与所有的开发方法一同使用,可用于软件开发的整个生命周期。oUML能表达系统的静态结构和动态信息,并能管理复杂的系统模型,便于软件团队之间的合作开发。oUML不是编程语言,但支持UML语言的工具可以提供从UML到各种编程语言的代码生成,也可以提供从现有程序逆向构建UML模型。什么是UMLoUML并不是万能的,它是一种离散的建模语言,不适
4、用于一些特定的领域,比如:GUI、VLSI电路设计或基于规则的人工智能。UML的特点o统一的标准o面向对象o可视化、表示能力强大o独立于过程(UML不依赖于特定的软件开发过程)o概念明确,建模表示法简洁,图形结构清晰,容易掌握和使用。UML的目标o最重要目标:UML是所有建模人员可以使用的通用建模语言。它包含主流建模方法的概念,从而可以替代旧的软件分析和设计方法,比如:OMT,Booch,OOSE等。oUML不是完整的开发方法,它不包括逐步的开发流程,但它提供所有必要的概念,具备足够的表达能力。oUML的另一个目标是:能尽量简洁地表达系统的模型。4.3 UML的视图和图o1.视图o2.图o3.
5、图的模型元素和符号o4.通用机制UML视图和图的体系视图(视图(view)视图作用视图作用包含的图(包含的图(diagram)用例视图(用例视图(Use Case View)从用户角度看到的或需要的系统功能用例图用例图逻辑视图(逻辑视图(Logical View)展现系统的静态或结构组成特征类图、对象图类图、对象图并发视图并发视图(Concurrent View)体现系统的动态或行为特征顺序图、协作图、状态图、顺序图、协作图、状态图、活动图活动图组件视图(组件视图(Component View)体现了系统组件间的结构和交互特征组件图组件图部署部署视图视图(Deployment View)体现了
6、系统的部署配置环境部署图部署图4.3.1 UML视图o视图代表完整的系统描述中一个特定方面的抽象:按照特定的目的,从某一特定角度来进行的建模。o视图主要有用例视图、逻辑视图、并发视图、组件视图和部署视图。o每个视图由一系列图构成。o注意:虽然从不同的目的和角度出发所建立的视图各不相同,但各个视图之间是互相关联的,所有视图一起构成了整个系统的完整模型。用例视图 Use Case Viewo用例视图从系统外部用户出发,抽象地描述系统的功能需求集合,反映出系统最终需要满足的功能需求集。o用例视图是其他视图的核心和基础。o用例视图主要为用户、系统分析员、设计开发人员和测试人员使用。用例视图 Use C
7、ase View用例用例视图逻辑视图 Logical Viewo逻辑视图用来显示系统内部的功能是怎样设计的,它通过系统的静态结构和组成来刻画系统功能。静态结构包括:类、对象以及它们之间的关系。o逻辑视图由类图和对象图组成。o逻辑视图主要为系统分析员与用户交流使用,也经常为系统分析员与设计开发人员交流使用。并发视图 Concurrent Viewo并发视图用来描述系统并发工作的情况,主要反映系统内的动态行为特征。o并发视图主要由动态图构成,具体包括:状态图、顺序图、协作图、活动图。o并发视图主要供系统设计人员、系统开发人员和系统集成人员使用。组件视图 Component Viewo组件视图用来显
8、示代码组件的组织方式,它描述了实现模块(implementation module)和它们之间的依赖关系。o组件视图由组件图构成 o组件视图主要为系统开发者使用。部署视图 Deployment Viewo部署视图用来显示系统的物理架构,关注系统的实际配置。o部署视图由部署图组成 o部署视图提供给开发人员、系统集成人员和测试人员使用。4.3.2 图o图(diagram)由图片(graph)组成,图片把模型元素符号化。o图(diagram)包含用例图、类图、对象图、状态图、顺序图、协作图、活动图、组件图、部署图等九种。常用的九种模型图o用例图(Use Case Diagram)o类图(Class
9、Diagram)o对象图(Object Diagram)o协作图(Collaboration Diagram)o顺序图(Sequence Diagram)o状态图(State Machine Diagram)o活动图(Activity Diagram)o组件图(Component Diagram)o部署图(Deployment Diagram)常用的九种模型图o各个模型图各有侧重,如用例图侧重描述用户需求,类图侧重描述系统的静态结构;o各个模型图描述的角度都不相同,如类图描述的是系统的结构,顺序图描述的是系统的行为;o各个模型图抽象的层次也不同,如组件图描述系统的模块结构,抽象层次较高,类图描
10、述具体模块内部的结构,抽象层次较低。模型图的分类方式结构分类用例图、类图、对象图、组件图和部署图动态行为状态图、活动图、顺序图和协作图模型管理类图静态建模用例图、类图、对象图、组件图、部署图动态建模协作图、顺序图、状态图、活动图我们将对图与视图具体讲解静态建模静态建模动态建模动态建模物理架构物理架构静态建模1o一个模型必须首先定义各种事物的内部静态特征和相互之间的关系,下面介绍一些基本的模型元素:分类:n类(Class)n接口(Interface)n子系统(Sub System)n执行者(Actor)n用例(Use Cases)n组件(Component)n结点(Node)n注释(Commen
11、t)关系:n关联(Association)n泛化(Generalization)n依赖(Dependency)n实现(Realization)n约束(Constraint)静态图:n用例图n类图n对象图静态建模2类Classo类类是具有相同属性、操作和关系的对象集合的总称。通常在UML中类被画成矩形,包括三个部分:名称、属性和操作。n名称名称:每个类都必须有一个名字,用来区分其它的类。类名是一个字符串,称为简单名字。路径名字是在类名前加包含类的包名为前缀。例如Wall、java:awt:Wall都是合法的类名。n属性属性:类可以有任意多个属性,也可以没有属性。在类图中属性只要写上名字就可以了,
12、也可以在属性名后跟上类型甚至缺省取值。n操作操作:操作是类的任意一个实例对象都可以调用的,并可能影响该对象属性的实现。静态建模3类类名属性操作静态建模4接口Interfaceo接口是一种特殊的“类”:包含操作(但没有操作内容),没有属性,一个或多个类可以实现接口,每个类实现接口的操作。StringisEqual(String):BooleanHash():IntegerHashableComparable接口标记静态建模5子系统(包Package)o任何大系统都必须划分为较小的单元,以便人们在某一时刻可以围绕有限的信息工作,使团队的工作不相互影响。o包可以包含各种模型元素和其它的包,包之间还可
13、能存在一定的依赖。FinancesCreditsAccountsBankInterface静态建模6子系统(包)o子系统子系统是具有独立的说明和实现部分的包,它代表了与系统其它部分具有清晰接口的单元,它通常代表了系统在功能或实现范围上的划分。静态建模7执行者Actoro执行者执行者是与系统、子系统或类交互的外部人员、进程或系统。在运行时,具体人员可能会充当系统的多个执行者,不同用户可能会成为一个执行者。StudentProfessorBilling SystemRegistrar静态建模8用例 Use caseo用例用例是系统提供的外部可感知的功能单元,用例的目的是定义清晰的系统需求,但不解释
14、系统的内部结构。o用例可以与执行者关联,也可以参与其他的多种关系,比如扩展、泛化和包含等。o用例的动态部分用并发视图来描述,比如顺序图、协作图。o用例用椭圆来表示,用例名标在椭圆下方(或中间),用实线与同自身通信的用户相连。Maintain Curriculum静态建模9用例oRegistrar-maintain the curriculumoProfessor-request rosteroStudent-maintain scheduleoBilling System-receive billing information from registrationMaintain Schedul
15、eMaintain CurriculumRequest Course Roster静态建模10组件 componento组件组件是可重用的系统片段,具有良好定义接口的物理实现单元。每个组件包含了系统设计中某些类的实现。o组件设计的原则组件设计的原则:良好的组件不直接依赖于其它组件,而是依赖于其它组件所支持的接口。这样的好处是系统中的组件可以被支持相同接口的组件所取代。o一个组件可能是源代码、可执行程序或动态库。Student静态建模11结点 nodeo结点结点代表系统运行时的物理对象,结点通常拥有运算能力,它可以容纳对象和组件实例。静态建模12注释 commento注释注释用于解释设计的思路,
16、便于理解。o一个好的模型应该有详尽的注释。Representsan incorporated entityCompany注释静态建模13关系关联associationo关联关联描述了系统中不同类的对象之间的结构关系。由“常识”、“规则”、“法律”等因素决定。o关联至对象的连接点称为关联端点,很多信息被附在关联端点上,它拥有角色名、重数(多少个类的对象可以关联于另一个类的对象),可见性等。o关联有自己的名称,可以拥有自己的属性,这时关联本身也是类,称为关联类。静态建模14关系关联ManagesJobbossworkeremployeeemployer1.*0.1CompanyPersonJobS
17、alary角色名重数关联名称关联类二元关联自关联关联的重数表示静态建模15关系关联o聚集聚集(Aggregation)用来表达整体部分关系的关联。组合组合(Composition)是一种聚集,是关联更强的形式。PolygonPoint13.*pointsContainsPolygonWindowSlider12ScrollbarHeader1 Title11Panel1Body聚集组合静态建模16关系泛化generalizationo泛化泛化是一般化和具体化之间的一种关系。o继承继承就是一种泛化关系,更一般化的描述称为双亲,双亲的双亲称为祖先,更具体化的描述称为孩子,在类的范畴,双亲对应超类,
18、孩子对应子类。TreeOakElmBirch孩子双亲PersonStudentGraduate祖先静态建模17关系泛化generalization静态建模18关系泛化o多重继承多重继承:一个孩子可以从多个双亲继承属性和方法。多重继承可能存在冲突,因为被继承的双亲可能存在相同的类声明,这时,最好显式解决冲突问题。AssistantTeacherStudent静态建模18关系依赖dependencyo依赖依赖:假设两个模型元素X和Y,如果修改X的定义可能导致Y的定义改变,则称元素Y依赖于元素X。o依赖有很多种类,比如:实现(realize)、使用、(usage)、实例化(instantiate)、
19、调用(call),派生(derive)、访问(access)、引入(import)、友元(friend)等等。Application ServerDataBase依赖类型静态建模19关系实现realizeo实现实现是依赖的一种,由于它具有特殊意义,所以单独讲述。实现是连接说明和实现之间的关系。StringisEqual(String):BooleanHash():IntegerComparableComparableisEqual(String):BooleanHash():Integer实现特殊的实现标记静态建模20关系约束constrainto约束约束用来表示各种限制,如关联路径上的限制,
20、和属性特征检测(存在、所有)。PersonCommitteeMember-of约束Chair-ofsubset静态建模20关系扩展和包含o扩展(扩展(extend)特别用于用例模型中,说明向基本用例中的某个扩展点插入扩展用例。表示用例场景中的某一个支流,是可选的,而不是必需的。o包含(包含(include)特别用于用例模型中,说明在执行基本用例的过程中插入一个用例。如果有包含用例,那就一定是必需的,而不是可选的。基本用例扩展用例基本用例包含用例静态建模20关系扩展和包含静态建模21用例图o用例图描述执行者在各个用例中的参与情况,描述系统为用户所感知的外部视图。CustomerSalesmanS
21、upplierSupervisorSaleManagementSupply执行者用例系统边界用例图的功能u捕获系统用户需求u描述系统边界u指明系统外部行为u指导系统开发者的功能开发u系统建模的起点,指导所有的类图和交互图的设计u产生测试用例,用户文档u估计项目大小和进度。用例图说明o用例图从用户的角度来描述系统的功能,一般用来进行系统的需求分析。o用例图中要明确的概念是执行者和用例。用例是系统的一个功能单元,描述了参与者与系统发生的一次交互行为。o用例图是UML中最简单也是最复杂的一种图。说它简单是因为它简单的图形表示让人一看就懂。说它复杂是因为用例图往往不容易控制,要么画得过于庞杂,要么又过
22、于简单。o用例可以参与多种关系:关联、扩展、泛化和包含。用例图中的关系关联:泛化:用例图中的关系扩展:包含:用例图建模步骤o找出使用系统的用户或者其他系统o找出系统中的比较主要的功能点o找出系统边界,排除非系统内部的元素o按照规则画出用例图o如果用例太多,可以考虑拆分成多个图来表示,每个图侧重一个方面o检查、修改、重组、优化、美化静态建模22类图o类图主要描述类和类之间的关系。继承关联Houseresidence 0.*owner0.*clientcreditor0.*0.*Mortgageprincipalrateterm关联类ordered0.*1BankTrustCompany场景:购房
23、贷款PersonFinancialInstitution类图o类图描述的是类和类之间的相互关系。它可以帮助我们更直观的了解一个系统的内部体系结构。o类之间的相互关系主要包括:n关联(Association)n依赖(Dependency)n泛化(Generalization)n实现(Realize)类图建模步骤o按照面向对象的原则,分析系统的需求,找出系统中的各个对象个体o从对象个体中抽象出描述一类对象的类o为每个类确定属性和方法o分析各个类之间的关系,看能否进一步抽象,得到抽象类或者接口o画出每个类的图型和类之间关系的图形o检查、修改、重组、优化、美化静态建模23对象图o对象图是系统在某一时刻
24、的快照。Smith:Personcottage:Househome:Housefirst:Mortgagesecond:MortgageRoyalBank:Bank对象图o对象图描述的是对象之间的关系,由于对象存在生命周期,因此对象图只能在系统某一时间段存在。o对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点在于对象图显示类的多个对象实例,而不是类。对象图建模步骤o分析在某个特定时间点、或者时间段之内所涉及到的所有对象实例o确定每个对象当时的属性值o画出每个对象的图型和对象之间联系o检查、修改、重组、优化、美化动态建模1o活动图o状态图o顺序图o协作图动态建模2活动图o活动图活动
25、图描述了为了满足某一个目标需求要做的活动,以及这些活动的执行顺序。o活动图处于系统的外部和内部视图之间,所以它可以作为设计的起点,为了完成设计,每个活动必须扩展成一个和多个操作,每个操作被指派给特定的对象来实现。o活动图可被用来描述业务流程(但不是主要目的),并借此来发现对象,这是它的重要作用。o将商业组织控制的活动划分在一起,这类划分可以通过分隔的区域来表达,由于它们的外观,每个区域称为泳道(swimlane)。动态建模3活动图CustomerSalesStockroomRequestServicePayTake OrderFill OrderDeliver OrderCollect Ord
26、er泳道动态建模4带有对象流的活动图CustomerSalesStockroomRequestServicePayTake OrderFill OrderDeliver OrderCollect Order泳道OrderPlacedOrderEnteredOrderFilledOrderDelivered对象动态建模4活动图中的其他元素起点和终点判断活动动态建模4带有判断的活动图活动图建模步骤o选择比较复杂的用例、业务场景为研究对象o分析研究对象所执行的各种任务及业务流程的发生过程o找出整个过程里所有出现的活动o按照顺序画出每个活动,以及各个活动之间的逻辑联系o检查、修改、重组、优化、美化动态
27、建模5状态图o状态图状态图是对单个对象的生命周期进行建模,描述了对象在时间上的状态变化。每个对象被认为是事件驱动的孤立实体。o状态状态描述对象生命周期的一段时间,可以是等待其它事件时所处的时间,或是执行某一活动时所处的时间,状态分为简单状态和复合状态。o初始状态表示状态图的起始位置,它不需要事件的触发。动态建模6状态图动态建模7状态图o转移是由一种状态到另一种状态的迁移。当某一事件发生并且满足指定条件时,转移被触发。o事件表达对象间的调用、显式信号、值的改变或时间的推移。n调用事件、变更事件、信号事件、时间事件o条件是一个判断表达式,事件发生时可以检查表达式(如果有)的结果,可能决定转移的分支
28、或拒绝转移。o最终状态表示状态图的结束,或者对象生命周期结束。状态图建模步骤o选择以某个关键业务对象:参与了一个或多个用例场景中的多个活动。o分析从对象开始创建到对象消亡的过程中间可能出现的所有状态o分析出现每一种状态的前提条件,以及在某种条件下状态之间的转化o按照逻辑顺序画出各个状态的变化过程o检查、修改、重组、优化、美化动态建模8交互o对象的行为是通过交互来实现的,交互是对象间为完成某一目的而进行的一系列消息交换。o消息是对象间的单向通信,从发送者到接受者的携带信息的控制流。消息可能带有值参。o消息序列可用两种图表示:顺序图(重点在消息的时间顺序)和协作图(重点在交换消息的对象之间的协作关
29、系)。对协作图来说,时间顺序可以从顺序号获得。动态建模9顺序图o顺序图顺序图用二维表来表示交互,纵向是时间轴,横向是参与的角色(主要是对象,也可以是执行者)以及它们交换的消息。o角色的生命周期表现为生命线,是一条垂直的虚线。角色可以在某个时刻被激活参与消息会话。o消息表示为从一条生命线出发到另一条生命线的有向线,从上而下,表示消息的时间顺序。动态建模10顺序图CallerOperatorCallee时间轴时间轴callacknumbercallacktalktransfer顺序图生命线激活状态保持角色顺序图示例顺序图示例顺序图建模步骤o找出实现某个功能要求所需要的所有参与角色(执行者或对象)o
30、按照逻辑顺序排列每个角色o从第一个角色开始,分析每个角色的生命周期;按照时间的先后顺序,画出向其后每个角色发出的消息,以及消息的走向。o检查、修改、重组、优化、美化动态建模11协作图o协作图协作图强调的是发送和接收消息的对象之间的关系结构,描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息。o用线条来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间o箭头指示消息的流向,从消息的发出者指向接收者。标签对消息作说明,其中,顺序号指出消息的发生顺序,并且指明了消息的嵌套关系;冒号后面是消息的名字。动态建模13协作图StudentRegistration F
31、ormRegistration Manager1:fill in info2:submit3:add(smith,math)math4:add(smith)协作图建模步骤o找出实现某个功能要求所需要的所有类的对象实例o按照逻辑顺序排列每个对象o从第一个对象开始,依次画出向后面每个对象的消息传递过程o检查、修改、重组、优化、美化物理架构1静态o组件视图o部署视图物理架构2组件图o组件图描述可重用的系统组件以及组件之间的依赖。CourseCourseOfferingStudentProfessorCourse.dllPeople.dllCourseUserRegister.exeBilling.e
32、xeBillingSystem组件图o组件图用来反映代码的物理结构,这是UML的静态图之一。组件图建模步骤o明确所需要表示的组件的内容o按照一定的颗粒度来划分组件的层次o把同一个层次的组件组织在一起来表示o分析每个组件的接口,及组件之间的关联o画出各个层次组件之间的相互关系o检查、修改、重组、优化、美化物理架构3部署图o部署图部署图描述系统资源在运行时的物理分布,系统资源成为结点。RegistrationDatabaseLibraryDormMain Building部署图o用来显示系统中软件和硬件的物理架构,描述环境元素的配置,并把实现系统的元素映射到配置上。部署图建模步骤o明确所需要表示的
33、节点的内容o按照一定的颗粒度来划分节点的层次o把同一个层次的节点组织在一起来表示o画出各个层次节点之间的相互关系o画出节点与参与者之间的相互关系o检查、修改、重组、优化、美化实例演示(对各种图的理解)我的一个朋友结婚了o月老牵线搭桥,介绍小伙和姑娘认识;o姑娘和小伙一见钟情,成为一对恋人;o一对恋人开始拍拖;o小伙追求献花,表达对姑娘的爱意;o姑娘收到999火红玫瑰,激动得头晕目眩;o小伙真心求婚,姑娘以身相许;o一对恋人终于走入婚姻殿堂。用例图类图活动图状态图状态图顺序图顺序图协作图俗语对术语的映射俗语术语例子有一件事用例我的一个朋友结了婚。成事过程用例实现相识,相恋,结婚具体事物对象我的一
34、个朋友,他未婚妻事物类型类小伙,姑娘,玫瑰,月老属性属性年龄,体格,性情能力方法牵线,追求,结婚位置部署软件园,情侣路整-部关系聚集关系恋人-小伙,恋人-姑娘笼-具关系继承关系人-小伙,人-姑娘伙伴关系关联关系小伙-姑娘,小伙-玫瑰4.4 建模的工具支持Rational Rose工具 o绘图支持 o模型积累 图的一致性检索;鉴定;报告图的一致性检索;鉴定;报告;重用元素或图;重用元素或图 o导航o多用户支持o代码生成o反向工程o集成Rose的使用1oROSE是美国Rational公司的面向对象建模工具,利用这个工具,我们可以建立用UML描述的软件系统的模型,而且可以自动生成和维护C+、Java
35、等语言和系统的代码。oROSE的界面分为三个部分Browser窗口、Diagram窗口和Document窗口。Browser窗口用来浏览、创建、删除和修改模型中的模型元素;Diagram窗口用来显示和创作模型的各种图;而Document窗口则是用来显示和书写各个模型元素的文档注释。Rose的使用2Browser窗口Diagram窗口Document窗口Specification对话框工具栏工具箱Rose的使用3oBrowser窗口有四个视图:nUse CasenLogicalnComponentnDeploymentRose的使用4o在Use Case视图的图的类型有:用例图、顺序图、协作图和活动图。Rose的使用5o在Logical视图中的类型有:类图和状态图。Rose的使用7o在Deployment视图的图的类型有:部署图。Rose的使用8各种图用例图顺序图协作图活动图Rose的使用9各种图类图状态图Rose的使用10各种图组件图部署图本章小结oUML是一种建模语言 oUML的架构oUML视图主要有用例视图、逻辑视图、并发视图、组件视图和部署视图 oUML中图主要有用例图、类图、对象图、状态图、顺序图、协作图、活动图、组件图、部署图等oUML的建模过程结束结束