资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,软件建模与UML,软件建模与UML,1,为什么要进行软件建模?,软件系统越来越大,任何个人都不可能单独管理这些代码;,没有参加开发的人员无法直接理解程序代码;,我们需要一种描述复杂系统的简单方法。,为什么要进行软件建模?软件系统越来越大,任何个人都不可能单独,2,软件建模的概念,软件建模(Modeling),:将所要设计的结构和系统的行为融汇贯通,对系统的体系结构进行可视化和控制,化解复杂性的问题,有效地管理开发风险,从而开发出高品质的软件。,面向对象的建模方法:,人们在问题空间或解空间中识别各种对象,并对其进行抽象化描述,从不同的视角建立模型,形成系统的不同视图,并以对象或类作为软件系统的主要构造块。始于80年代初。,软件建模的概念软件建模(Modeling):将所要设计的结构,3,UML的发展历史,UML的发展历史,4,什么是UML?(1),统一建模语言(Unified Modeling Language,UML),:一种直观化、明确化、构建和文档化软件系统产物的通用可视化建模语言,从企业信息系统到基于Web的分布式应用,甚至严格的实时嵌入式系统都适合于用UML来建模。,它是一种富有表达力的语言,可以描述开发所需要的各种视图,并以此为基础组建系统。,什么是UML?(1)统一建模语言(Unified Model,5,什么是UML?(2),UML是一种语言,UML是一种可视化的建模语言,UML提供一组具有明确语义的图形符号,可以建立清晰的模型便于交流,同时所有开发人员都可以无歧义地解释这个模型。,UML是一种可用于详细描述的语言,UML为所有重要的分析、设计和实现决策提供了精确的、无歧义的和完整的描述。,UML是一种构造语言,UML不是一种可视化的编程语言,但它所描述的模型可以映射(正向工程/逆向工程)成不同的编程语言,如JAVA、C+和Visual Basic等。,UML是一种文档化语言,UML不是过程,也不是方法,但允许任何一种过程和方法使用它。它可以建立系统体系结构及其详细文档。,什么是UML?(2)UML是一种语言,6,UML的概念模型:视图(1),视图(Views):,每个视图代表系统的一个抽象,反映了系统中的一个特定方面,从而使不同的人员关注系统的不同方面。,UML的概念模型:视图(1)视图(Views):每个视图代表,7,UML的概念模型:视图(2),用例视图(Use Case View),描述系统应该具有的功能集,它从系统外部用户的角度出发,实现对系统的抽象表示。,角色(Actor),代表外部用户或其他系统,,用例(Use-case),表示系统能够提供的功能,通过列举角色和用例,显示角色在每个用例中的参与情况。,其他视图的核心和基础,其他视图的构造和发展依赖于用例视图所描述的内容。,静态地描述系统功能,主要为用户、设计人员、开发人员和测试人员而设置。,设计视图(Design View),用来揭示系统功能的内部设计和协作情况。,利用,静态结构,和,动态行为,描述系统的功能。,静态结构描述类、对象及其关系等,动态行为主要描述对象之间发送消息时产生的动态协作、一致性和并发性等。,进程视图(Process View),进程视图描述系统的并发工作状况,它包含形成系统并发与同步机制的,线程,和,进程,,主要提供给系统开发商和集成商。,实现视图(Implementation View),实现视图由一些独立的构件和文件组成,显示实现模块及其之间的依赖关系。,分布视图(Deployment View),分布视图主要描述系统的物理架构,显示系统硬件拓扑结构的节点,提供给开发人员、集成人员和测试人员。,UML的概念模型:视图(2)用例视图(Use Case Vi,8,UML的概念模型:图(1),图(Diagrams):,系统模型中每一个视图的内容是由一些图来描述的,UML中包含,九种图,。,对整个系统而言,其,功能,由用例图描述,,静态结构,由类图和对象图描述,,动态行为,由状态图、时序图、协作图和活动图描述,而,物理架构,则是由组件图和分布图描述。,UML的概念模型:图(1)图(Diagrams):系统模型中,9,UML的概念模型:图(2),用例图,用例图定义了系统的功能需求,它完全是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。,类图,类图描述系统的静态结构,表示系统中的类以及类与类之间的关系。,对象图,对象图描述了一组对象以及它们之间的关系,表示类的对象实例。,状态图,状态图表示一个状态机,强调对象行为的事件顺序。,时序图和协作图,时序图和协作图均表示一组对象之间的动态协作关系,两者之间可以相互转换。,时序图,反映对象之间发送消息的时间顺序,协作图,反映收发消息对象的结构组织。,活动图,活动图反映系统中从一个活动到另一个活动的流程,强调对象间的控制流程。,组件图,组件图描述组件以及它们之间的关系,表示系统的静态实现视图。,分布图,分布图反映了系统中软件和硬件的物理架构,表示系统运行时的处理节点以及节点中组件的配置。,UML的概念模型:图(2)用例图,10,售票系统的用例图,软件建模与UMLppt课件,11,售票系统的类图,软件建模与UMLppt课件,12,包图,软件建模与UMLppt课件,13,顺序图,软件建模与UMLppt课件,14,协作图,软件建模与UMLppt课件,15,状态图,软件建模与UMLppt课件,16,活动图,软件建模与UMLppt课件,17,构件组件图,软件建模与UMLppt课件,18,部署分布图(描述层),软件建模与UMLppt课件,19,部署分布图(实例层),软件建模与UMLppt课件,20,UML的概念模型:模型元素(1),模型元素(Model Elements):,由一些基本的构造元素以及它们之间的连接关系组成。,UML的概念模型:模型元素(1)模型元素(Model El,21,UML的概念模型:模型元素(2),类:,对一组具有相同属性、相同操作、相同关系和相同语义的对象的描述。,对象:,类的实例。,接口:,描述一个类或组件的服务的操作集。,用例,:对一组动作序列的描述。,状态机:,描述了一个对象响应事件所经历的状态序列。,组件,:系统中物理的、可替代的部件。,节点,:在运行时存在的物理元素。,包,:把元素组织成组的机制。,注解:,依附于一个或一组元素之上,对其进行约束或解释。,依赖,:一种使用关系,它描述了一个事物的变化会影响到另一个使用它的事物。,关联,:一种结构关系,说明一个事物的对象与另一个事物的对象间的联系。,泛化,:一种一般事物(父类)和特殊事物(子类)之间的关系。,实现,:一个类元指定了由另一个类元保证执行的契约,例如接口和实现它们的类或组件之间的关系。,UML的概念模型:模型元素(2)类:对一组具有相同属性、相,22,类表示法,软件建模与UMLppt课件,23,用例之间的关系,软件建模与UMLppt课件,24,状态机,软件建模与UMLppt课件,25,带接口的构件,构件图中的构件,软件建模与UMLppt课件,26,部署图中的节点,软件建模与UMLppt课件,27,包和包间的关系,软件建模与UMLppt课件,28,关联表示法 限定关联,关联的设计特性 关联类,软件建模与UMLppt课件,29,泛化表示法 多重继承,软件建模与UMLppt课件,30,实现关系,接口和实现图标,软件建模与UMLppt课件,31,依赖关系,软件建模与UMLppt课件,32,约束关系,软件建模与UMLppt课件,33,UML的概念模型:语义规则,语义规则(Rules):,用于建立语义一致、与其他模型协调的良好模型。,命名(Name):,为事物、关系和图起名;,范围(Scope):,给一个名称以特定含义的语境;,可见性(Visibility):,如何使一个名字被外部识别和使用,它包括,public,(公共)、,protected,(保护)、,private,(私有)三种可见性,分别用“+”、“#”和“-”表示;,完整性(Integrity):,事物如何正确地、一致地相互联系;,可执行性(Execution):,运行或模拟动态模型的含义是什么。,UML的概念模型:语义规则 语义规则(Rules):用于建立,34,UML的概念模型:公共机制,说明(Specification):,规定了对于每一个UML图形的文字说明的语法和语义。,修饰(Adornment):,对UML元素加上各种修饰,说明该元素最重要特征之外的其他方面的细节特征。,通用划分(Common Division):,UML的模型元素有两种划分,即型-实例、接口-实现。,型-实例:,是一个通用描述符与单个元素项之间的对应关系,如类与对象的划分、数据类型与数据值的划分;,接口-实现:,接口声明了一个约定,而实现则负责执行接口的全部语义。,扩展机制(Extensibility):,允许UML的使用人员根据需要在不用改变基本建模语言的情况下自定义一些构造型语言成分。,约束(constraint),扩展了UML构造元素的语义,它是用文字表达式表示的语义限制。,标记值(tagged value),扩展了UML构造元素的特性,它是附加到任何模型元素上的命名的信息块。,构造型(stereotype),扩展了UML的语汇,它是在一个已定义的模型元素的基础上构造的一种新的模型元素。,UML的概念模型:公共机制 说明(Specification,35,UML的概念模型:扩展机制示例,UML的概念模型:扩展机制示例,36,UML建模示例(1),import java.awt.Graphics;class HelloWorld extends java.applet.Applet public void paint(Graphics g)g.drawString(Hello,World!,10,10);,HelloWorld抽象模型,UML建模示例(1)import java.awt.Grap,37,UML建模示例(2),与HelloWorld直接相关的类,UML建模示例(2)与HelloWorld直接相关的类,38,UML建模示例(3),HelloWorld的继承层次,UML建模示例(3)HelloWorld的继承层次,39,UML建模示例(4),HelloWorld包,UML建模示例(4)HelloWorld包,40,UML建模示例(5),painting机制,UML建模示例(5)painting机制,41,UML建模示例(6),HelloWorld构件,UML建模示例(6)HelloWorld构件,42,UML的应用,支持用例驱动,用例成为系统分析、设计、测试、编写文档的基础。,以体系结构为中心,在开发过程中对系统进行抽象、构造、管理和改进。,迭代的或增量的开发过程,软件开发人员渐进地开发和逐步完善软件系统,每一次迭代都产生比上一次发布有所改善的新发布,而每一次发布都努力处理和降低项目风险。,UML的应用 支持用例驱动,43,
展开阅读全文