版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UML及其建模工具的使用1内容提要一、软件工程方法学二、UML的基本概念静态建模动态建模物理架构建模步骤三、Rose的使用四、三个实例五、Java代码生成六、Rational统一过程21.瀑布模型(线形顺序模型)可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段一.软件工程方法学按照传统瀑布模型开发软件的特点1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。2.
原型模型(快速原型法)建造/修改原型用户测试运行原型
听取用户意见原型范型采用原型模型的软件生存周期分析定义系统需求生成原型系统设计程序设计编码测试运行和维护原型化含原型化的软件生存期技术发展背景[1]面向对象的含义面向对象技术回顾UML的产生7技术发展背景[2]-面向对象的含义面向对象中有几个非常重要的概念:封装(encapsulation)信息/实现的隐藏(information/implementationhiding)状态保持(stateretention)对象标识(objectidentity)消息(message)类(class)继承(inheritance)多态性(polymorphism)一般性(generality)8技术发展背景[3]-面向对象的含义封装,将属性和操作包装成一个单元,使得对状态的访问和修改只能通过封装提供的接口进行。信息/实现的隐藏,将某些属性或方法限制在封装内部使用,限制外部的可见性。状态保持,对象能够保持状态,可以用于后续的处理。对象标识,每个对象可以作为软件实体被标识和处理,每个对象都有一个对象标识符(objectidentifierOID)。消息,对象间发送请求的载体。9技术发展背景[4]-面向对象的含义类,类是对象的类型(模版),对象是类的实例。继承,子类隐式使用超类(或父类)的属性和操作。多态性,子类覆盖(overriding)父类的方法,它和重载(overloading)的区别在于重载是在同一个类中定义,利用参数的不同来进行动态绑定(dynamicbinding)。一般性,类的定义是参数化的或模版化的,提高了定义的通用性。10技术发展背景[5]-面向对象技术回顾面向对象技术是许多人历经多年研究积累的产物。类的概念,是面向对象的重要组成部分。Smalltalk,提出许多面向对象技术的核心概念,如:消息和继承。Dijkstra的软件正确性理念,提出了用抽象层构造软件的观点。ADT抽象数据类型,奠定面向对象的基础,支持信息的隐藏。Ada语言,提出了一般性和包两个概念。C++语言,最广泛使用的面向对象的语言。Eiffel语言,融合了许多最佳的计算机科学思想和面向对象思想。11为什么对面向对象方法感兴趣?面向对象方法的主要优点:自然性
追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。软件复用
可复用性(可重用性)reusebility可扩展性可管理性12可复用性(可重用性)
面向对象技术允许复用的不仅仅是代码,通过面向对象技术,我们可以复用需求、分析、设计、测试计划、用户界面以及体系结构等等,事实上,软件工程生存期中的每个部分都可以复用。
13
传统系统分析:面向功能,把系统看成一组功能OOA:把问题当作一组相互作用的实体,并确定实体间关系14面向对象技术是一个有全新概念的开发模式,其特点是:
(1)方法是对软件开发过程所有阶段进行综合考虑而得到的;(2)从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性;(3)将OOA(分析)、OOD(设计)、OOP(实现)集成到生存期的相应阶段.15开发方法的组合分析设计编程结构化结构化面向对象结构化面向对象面向对象面向对象结构化第三代或第四代语言面向对象面向对象第三代或第四代语言面向对象面向对象传统编程与面向对象的混合面向对象面向对象面向对象16
OO方法的开发过程
OO方法改进了在生存期各个阶段间的界面,因为生存期各个阶段开发出来的“部件”都是类,在面向对象生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元。17对象模型
对象模型表示静态的、结构的系统数据的性质。对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。
OO方法强调围绕对象而不是功能来构造系统。18对象(object)现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。
对象具有的含义:在现实世界中:是客观世界中的一个实体在面向对象程序中:表达成计算机可理解、可操纵、具有一定属性和行为的对象在计算机世界中:是一个可标识的存储区域19
面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。面向对象=对象+类+继承+消息通信面向对象的主要特征:封装性(Encapsulation)继承性(Inheritance)多态性(Polymorphism)20类(class)具有共同属性和行为的对象的抽象类与对象的关系类是对象的抽象对象是类的实例类对象21对象、实体与类对象实体类抽象数据类计算机世界现实世界计算机逻辑的实现影射抽象实例化抽象概念世界22封装封装是软件开发方法的重要原则,有两个涵义:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。尽可能隐蔽对象的内部细节(信息隐蔽)23传统方法数据与过程是分离的过程1输入输出过程2过程3数据实体属于该对象的数据对象处理数据的方法消息消息对象把数据和处理数据的方法封状成一个单元24传统方法和面向对象方法的比较传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息25继承(继承性inheritance)继承性是父类和子类之间共享数据和方法的机制继承性具有传递性继承性包括单继承和多重继承
子类继承部分增加部分父类共性部分26继承性作用使软件系统具有开放性更好地进行抽象与分类增强代码的重用率27多态(多态性)不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态多态的效果用户发送一个通用的消息,而实现的细节则由接收对象自行决定实现机制:重载(override)28多态性的作用增强了操作的透明性,可理解性和可扩展性增强了软件的灵活性和重用性29消息(message)消息
对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明消息内容
通常包含接收方及请求接收方完成的功能信息发送方
发出消息,请求接收方响应接收方
收到消息后,经过解释,激活方法,予以响应30面向对象的软件工程对传统软件工程的改进:1、快速原型法(试用-反馈-修改,多次反复)2、面向对象的软件工程:面向对象的方法(基本概念:对象、类、消息、继承、多态性、封装)优点:思维一致、稳定性好、可重用性好、可维护性好31两种技术的比较1、这两种途径并不是相互排斥的,相反,它们是相互促进相互补充的。工作要素:确定“做什么”、确定“怎样做”,“实现”,“测试”2、传统的生命周期方法学强调:需求分析的重要性、强调软件文档的重要性,适用于需求模糊或者需求不稳定的系统。3、面向对象方法学:工作重点在分析和设计阶段,阶段的划分是十分模糊的,通常在分析、设计和实现等阶段多次迭代。既适用于线性的瀑布开发模型,也适用于快速原型法。32软件系统的建模及建模原则计算机软件是“产品”,因为它具有产品特征:
1)软件产品为用户提供功能;2)开发者和使用者是脱离的;
3)软件产品具有质量的概念;4)软件产品具备完备的用户手册技术文档;
5)软件产品的生产过程具有工业化生产的特点;6)开发团队协同工作,软件产品需要使用工具,技术可重用,质量必须稳定,不应在不同版本的软件之间产生质量不稳定。33在解决问题之前必须首先理解所要解决的问题。对问题理解得越透彻,就越容易解决它。为了更好地理解问题,人们常常采用建立问题模型的方法。所谓模型,就是为了理解事物而对事物作出的一种抽象。
34软件建模基本目的有四点:规范(specifying)、可视化(visualizing)、建造(constructing)和建档(documentation)。
(1)规范。在分析和设计阶段为软件系统的各个组成部分规定其功能、结构和对外接口。
(2)可视化。有助于软件规范的表达和交流。35(3)建造(生成源代码)。完整定义的软件规范可以实现通过模型向源代码的映射,支持软件系统的建造。
(4)建档。完整定义的软件模型是反映软件系统的结构和实现的重要技术资料,可以作为技术档案保存,以便后续产品或相关产品能有效地重用其中的成熟技术。362.建模的原则
(1)准确的原则模型必须准确地反映软件系统的真实情况。模型必须准确,意味着在软件开发的整个周期内模型必须和产品始终保持一致。
(2)分层的原则在建模的过程中,必须有不同的模型,以不同的抽象程度,反映系统的不同侧面。在软件构筑的不同阶段,不同的开发人员如:投资者、管理者、设计者、程序员、测试者和使用者看待软件的侧重面有所不同。因此,软件系统的建模需要不同的模型以反映系统的不同侧面。如,一类模型描绘系统的外部边界和行为,另一类模型描绘系统的内部逻辑关系。
37(3)分治的原则不可能单独用一个模型来反映整个系统的任何侧面。软件系统是复杂的,对于软件模型的任意一个侧面不可能用一个模型来反映所有内容,需要把问题分解为不同的子模型,分别处理这些模型,相对独立但又互相联系,综合起来构成了此侧面的一个完整的模型。
(4)标准的原则模型必须在某种程度上是通用的。建模的基本目的是交流,一个开发队伍内部的交流,同一软件的不同时期的版本的开发队伍的交流,不同软件的开发队伍之间的交流,以实现最大程度的软件复用。交流需要语言,语言是通用的、标准的。38二、统一的建模语言方法由Rumbaugh、Booch、Jacobson提出的统一建模语言(UnifyModeingLanguage简称UML)UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。
39UML的产生1988年到1992年是面向对象方法学蓬勃发展的时期,人们从各自的经历和软件开发的经验提出了各种面向对象的开发方法,代表的有:SallyShlaer和SteveMellor以信息模型化方法作为基础,并为目标系统增设了状态模型和过程模型;
PeterCoad和EdYourdon则在信息模型化、面向对象的程序设计语言和基于知识的系统的基础上,建立了他们的OOA和OOD,主要工具是类与对象图、对象状态图和服务图;HP公司的Fusion开发方法。40UML的产生Wirfs-Brock的职责驱动设计(Responsibility-DrivenDesign),也称类-职责-协作Class-Responsibility-Collaboration(CRC)cards,用类所承担的责任来描述系统,利用责任把封装的概念带到分析与设计活动中去;GradyBooch在Rational软件公司开发Ada系统作了许多构件(Component),并以此由底向上构筑大型软件系统,即OOD方法;JimRumbaugh在通用电子(GeneralElectric)领导一个研究小组,提出了对象建模技术(OMT)方法,通过面向对象的三种模型:对象模型、动态模型和功能模型,从不同角度对系统进行描述;41UML的产生IvarJacobson和他的Objectory公司开发了OOSE(ObjectOrientedSoftwareEngineering)面向对象的软件工程,利用UseCases来表达系统要求。1994年任职于Rational公司的GradyBooch首先联合JimRumbaugh加盟Rational软件公司开始了统一OO方法学和工具的历程。以融合Booch和OMT方法的UML开发开始。1995年10月UML0.8发布。1995年秋,IvarJacobson和他的Objectory公司加盟Rational,UML中加入了OOSE方法,使其有可能最集中地包容当今最适用的各种OO方法。1996年,UML0.9版本发布,1997年1月,UML1.0被提交给OMG组织,作为软件建模语言的候选,1997年11月7日,UML1.1正式被OMG组织采纳为业界标准。UML经历了1.2,1.3,1.4,目前UML2.0版本正在制定。42Rational三剑客JimRumbaughGradyBoochIvarJacobson43UML的基本概念[1]UML简介UML的目标UML概念范围44UML的基本概念[2]-UML简介UML(UnifiedModelingLanguage)是一种构建软件系统和文档的通用可视化建模语言。UML能与所有的开发方法一同使用,可用于软件开发的整个生命周期。UML能表达系统的静态结构和动态信息,并能管理复杂的系统模型,便于软件团队之间的合作开发。UML不是编程语言,但支持UML语言的工具可以提供从UML到各种编程语言的代码生成,也可以提供从现有程序逆向构建UML模型。45UML的基本概念[3]-UML简介UML并不是万能的,它是一种离散的建模语言,对于特定的领域,比如:GUI、VLSI电路设计或基于规则的人工智能,用特定的语言和工具可能更合适。46UML的基本概念[4]-UML的目标最重要目标:UML是所有建模人员可以使用的通用建模语言。它包含主流建模方法的概念,从而可以替代现有的软件分析和设计方法,比如:OMT,Booch,OOSE等。UML不是完整的开发方法,它不包括逐步的开发流程,但它提供所有必要的概念,具备足够的表达能力。UML的另一个目标是:能尽量简洁地表达系统的模型。47UML的目标是:1.易于使用,表达能力强,进行可视化建模;2.与具体的软件开发过程无关,可应用于任何软件开发的过程;3.简单、可扩展。扩展无需对核心概念进行修改;4.为面向对象的设计和开发过程中涌现出的高级概念(例如协作、框架、组件)提供支持;5.吸收当代最好的软件工程实践经验;6.可升级,具有广阔的适用性和可用性;7.有利于面向对象工具的市场成长。48UML语言包含三方面内容:1.UML基本图素:它是构成UML模型图的基本元素。2.UML模型图:它由UML基本图素按照UML建模规则构成。3.UML建模规则:UML模型图必须按特定的规则有机地组合而成,从而构成一个有机的、完整的UML模型图(well-formedUMLdiagram)。49一、基本图素分为四类:结构模型图素、行为模型图素、成组模型图素、其他模型图素、公用机制。50UML的基本概念[5]-UML概念范围UML概念可以划分为以下范围:系统需求静态结构动态行为交互行为物理实现各种图之间的关系模型组织扩展机制51UML的基本概念[6]-UML概念范围系统需求用例视图(UseCasesView)从外部用户的角度来描述系统的行为,它将系统功能划分为对用户有意义的事务,这些事务被称为用例,用户被称为执行者,用例视图也就是描述活动者在各个用例中的参与情况,它指导所有的行为视图。52UML的基本概念[7]-UML概念范围静态结构:静态视图(StaticView),一个模型必须首先定义各种事物的内部特征和相互之间的关系,应用概念建模成类,类描述事物的属性和以及在这些属性上的操作。类之间可以存在不同的关系,比如泛化(继承)、关联和依赖等,静态视图表示成类图,静态视图在某一时刻的快照称为对象图。53UML的基本概念[8]-UML概念范围动态行为:状态机视图(StateMachineView),通过对每个类的对象的生命周期进行建模,描述了对象时间上的动态行为。状态机是由状态和迁移组成的图,状态机通常附属于类,描述类实例对接受事件的响应。活动视图(ActivityView)是利用状态机对运算和工作流进行建模的特殊形式。活动图的状态代表了运算执行的状态,而非一般对象的状态,活动图和流程图很相似,不过它支持并发。54UML的基本概念[9]-UML概念范围交互行为:交互视图(InteractionView),对象通过交互来实现行为,交互视图通过协作来进行建模,协作具有结构和行为两个方面,结构包含为行为方面而定义的一系列角色和关系,行为方面是绑定于角色的对象间的一系列交换的消息,这些消息在协作中称为交互,消息序列可用两种图来表示:顺序图(重点在消息的时间顺序)和协作图(重点在交换消息的对象间的关系)。55UML的基本概念[10]-UML概念范围物理实现:物理视图(PhysicalView),许多系统模型独立于最终的实现,在实现方面,必须充分考虑系统的重用性和性能。UML有两种视图来表示系统的实现:实现视图和部署视图,实现视图将可重用的系统片段打包成组件,部署视图描述系统运行时资源的物理分布,这些资源称为结点。56UML的基本概念[11]-UML概念范围各种图之间的关系静态视图(类图,对象图),物理视图(实现视图,部署视图)是描述系统的静态结构。用例图是描述系统的外部视图。活动图描述系统的外部/内部视图。交互视图(顺序图,协作图)描述系统的内部视图。状态图描述单个类的动态行为。57UML的基本概念[12]-UML概念范围模型组织模型管理视图(ModelManagementView),任何大系统必须划分为较小的单元,以使人们能在某一时刻只接触有限的信息,不影响团队间的并行工作。模型是利用包(Package)和包的依赖来进行管理的。包是UML模型中通用的层次组织结构,包上的依赖总结了包内容的依赖关系。58UML的基本概念[13]-UML概念范围扩展机制扩展机制(ExtensionMechanisms),UML能满足绝大部分系统建模的需要,但任何语言都不是万能的,它必须考虑一定的扩展机制,UML的扩展机制包括约束、标签值和原型。这些扩展机制可以用来为特定领域剪裁UML的配置,这样带来一些好处:根据自身需要来使用建模语言。59基本图素一个模型必须首先定义各种事物的内部特征和相互之间的关系,下面介绍一些基本的模型元素:分类:共12个类(Class)接口(Interface)包(Package)角色(Actor)用例(UseCases)组件(Component)结点(Node)状态(state)……关系:关联(Association)泛化(Generalization)依赖(Dependency)实现(Realization)约束(Constraint)60基本图素[1]-角色角色是与系统、子系统或类交互的外部人员,进程或事务。在运行时,具体人员会充当系统的多个执行者,不同用户可能会成为一个执行者。StudentProfessorBillingSystemRegistrar根据上下文的不同而具有不同的含义61基本图素[2]-用例用例是系统提供的外部可感知的功能单元,用例的目的是定义清晰的系统行为,但不解释系统的内部结构。用例可以与角色关联,也可以参与其他的多种关系,比如扩展、泛化和包含等。用户的动态部分用交互视图来描述,比如顺序图、协作图。用例用椭圆来表示,用例名标在椭圆下方,用实线与同自身通信的用户相连。求一元二次方程根62基本图素[3]-系统系统也叫做系统边界,用于界定系统功能范围。它用一个矩形框表示。描述该系统功能的用例都置于其中,而描述的与系统交互的角色都置于其外。系统(边界)常常省略不画。63基本图素[4]-类类是具有相同属性、操作和关系的对象集合的总称。通常在UML中类被画成矩形,包括三个部分:名称、属性和操作。下面是可选的。名称:每个类都必须有一个名字,用来区分其它的类。类名是一个字符串,称为简单名字。路径名字是在类名前加包含类的包名为前缀。例如Wall、java::awt::Wall都是合法的类名。属性:类可以有任意多个属性,也可以没有属性。在类图中属性只要写上名字就可以了,也可以在属性名后跟上类型甚至缺省取值。
操作:操作是类的任意一个实例对象都可以调用的,并可能影响该对象行为的实现。
64基本图素[4]-类类名属性操作65基本图素[5]-对象1、对象是类的实例。2、对象图素中对象名的下面加下划线,对象图素所使用的符号与类图素基本相同。二者的区别在于对象图素展示的是类的实例,而不是类本身。3、对象图素除第一格外,其他格是可选的。对象常常出现在活动图、序列图和协作图中。6667基本图素[6]-接口接口是未给出实现的对象行为的描述,接口包含操作,但没有属性,一个或多个类可以实现接口,每个类实现接口的操作。思考:为什么会有接口?StringisEqual(String):BooleanHash():Integer…HashableComparable接口标记68基本图素[7]-协作协作实质代表一组模型元素协同完成对应用例的功能。协作与对应的用例存在着一种所谓的实现关系。协作与对应的用例分离带来的好处是为描述一个用例可以用不同的协作实现提供了可能。69求一元二次方程根求一元二次方程根70基本图素[8]-组件组件是可重用的系统片段,具有良好定义接口的物理实现单元。每个组件包含了系统设计中某些类的实现。组件设计的原则:良好的组件不直接依赖于其它组件,而是依赖于其它组件所支持的接口。这样的好处是系统中的组件可以被支持相同接口的组件所取代。一个组件可能是源代码、可执行程序或动态库。Student71基本图素[9]-结点结点代表系统运行时的物理对象,结点通常拥有运算能力,它可以容纳对象和组件实例。RegistrationDatabaseLibrary客户MainBuilding72基本图素[10]-包任何大系统都必须划分为较小的单元,以便人们在某一时刻可以和有限的信息工作,使团队的工作不相互影响。包可以包含各种模型元素和其它的包,包之间还可能存在一定的依赖。<<package>>Finances<<subsystem>>Credits<<subsystem>>Accounts<<subsystem>>BankInterface73基本图素[10]-包具有独立的说明和实现部分的包,它代表了与系统其它部分具有清晰接口的清晰单元,它通常代表了系统在功能或实现范围上的划分。74基本图素-消息消息代表软件系统内两个对象中一个对象向另一个对象发出的执行某种操作的请求。序列图中的消息有简单、异步、同步之分1、简单消息是一个对象到另一个对象的转移。2、如一个对象发送了同步消息,必须等待对方的回答后才继续自己的操作。3、相反,如一个对象发送了异步消息,不必等待对方的回答就继续自己的操作。7576基本图素[11]-关系-关联关联描述了系统中对象和其它实例之间的离散的连接,关联是有序的,它允许重复,关联的实例是链。关联至对象的连接点称为关联端点,很多信息被附在关联端点上,它拥有角色名、重数(多少个类的实例可以关联于另一个类的实例),可见性等。关联有自己的名称,可以拥有自己的属性,这时关联本身也是类,称为关联类。77基本图素[11]-关系-关联ManagesJobbossworkeremployeeemployer1..***0..1CompanyPersonJobSalary角色名重数关联名称关联类二元关联自关联78基本图素[11]-关系-关联聚集(Aggregation)用来表达整体-部分关系的关联。组合(Composition)是一种聚集,是关联更强的形式。PolygonPoint13..*pointsContainsPolygonWindowSlider12ScrollbarHeader1Title11Panel1Body聚集组合79基本图素[11]-关系-泛化泛化是一般化和具体化之间的一种关系。继承就是一种泛化关系,更一般化的描述称为双亲,双亲的双亲称为祖先,更具体化的描述称为孩子,在类的范畴,双亲对应超类,孩子对应子类。TreeOakElmBirch孩子双亲PersonStudentGraduate祖先80基本图素[11]-关系-泛化多重继承:一个孩子可以从多个双亲继承属性和方法。多重继承可能存在冲突,因为被继承的双亲可能存在相同的类声明,这时,最好显式解决冲突问题。AssistantTeacherStudent81基本图素[11]-关系-依赖依赖指明两个或两个以上模型元素之间的关系。依赖有很多种类,比如:实现(realize)、使用、(usage)、实例化(instantiate)、调用(call),派生(derive)、访问(access)、引入(import)、友元(friend)等等。<<subsystem>>ApplicationServer<<subsystem>>DataBase<<usage>>依赖类型82基本图素[11]-关系-实现实现是依赖的一种,但由于它具有特殊意义,所以将它独立讲述。实现是连接说明和实现之间的关系。StringisEqual(String):BooleanHash():Integer…Comparable<<interface>>ComparableisEqual(String):BooleanHash():Integer…实现特殊的实现标记83基本图素[11]-关系-约束约束用来表示各种限制,如关联路径上的限制,和属性特征检测(存在、所有)。PersonCommitteeMember-of约束Chair-of{subset}84模型图静态视图:类图对象图部署图组件图85静态建模[1]-类图静态视图是UML的基础,静态视图表示为类图,主要是描述类和类之间的关系。继承关联PersonHouseresidence0..*owner0..*Financial
Institutionclientcreditor0..*0..*Mortgageprincipalrateterm关联类{ordered}0..*1BankTrust
Company86静态建模[2]-对象图对象图是系统在某一时刻的快照。Smith:Personcottage:Househome:Housefirst:Mortgagesecond:MortgageRoyalBank:Bank链87静态建模[3]-组件图组件图描述可重用的系统组件以及组件之间的依赖。CourseCourseOfferingStudentProfessorCourse.dllPeople.dllCourseUserRegister.exeBilling.exeBillingSystem88静态建模[3]-部署图部署图描述系统资源在运行时的物理分布,系统资源成为结点。RegistrationDatabaseLibraryDormMainBuilding89动态建模[1]用例图:从外界对系统的感知状态图:对象自身的活动活动图序列图:对象之间的关系协作图90动态建模[1]-用例图用例图描述执行者在各个用例中的参与情况。StudentRegistrarProfessorMaintainScheduleMaintainCurriculumRequestCourseRosterBillingSystem91动态建模[1]-用例图用例图描述各个执行者在各个用例中的参与情况,描述系统为用户所感知的外部视图。用例图的功能:捕获系统用户需求描述系统边界指明系统外部行为指导系统开发者的功能开发系统建模的起点,指导所有的类图和交互图的设计产生测试用例,用户文档估计项目大小和进度。92动态建模[1]-用例图用例可以参与多种关系:关联、扩展、泛化和包含。CustomerSalesmanSupplierSupervisorSaleManagementSupply执行者用例系统边界93动态建模[2]-状态机图状态机图是对单个类的对象的生命周期进行建模,描述了对象时间上的动态行为,每个对象被认为是事件驱动的孤立实体。事件表达对象间的调用、显式信号、值的改变或时间的推移。调用事件、变更事件、信号事件、时间事件状态描述对象生命周期的一段时间,可以是等待其它事件时所处的时间,或是执行某一活动时所处的时间,状态分为简单状态和复合状态。94动态建模[2]-状态机图状态机图是由状态和跃迁组成的图,通常状态机附属于类,描述类实例对接受事件的响应。跃迁定义对象对某一事件发生的反应,通常,迁移具有触发事件、跃迁条件、动作和目标状态。跃迁的种类有外部跃迁和内部跃迁。外部跃迁是最普通的跃迁,会发生状态改变;内部跃迁不发生状态改变。跃迁有两个隐式动作:进入动作和退出动作。无论何时进入和退出时都要执行,这方便进入时进行初始化工作,退出时进行资源的释放工作。95它强调对象行为的事件顺序,强调对象对外部事件的响应及相应的状态变迁。通过状态图可以了解一个对象所能到达的所有状态以及对象涉及的事件(消息、超时、错误、条件满足)对对象状态的影响。96动态建模[2]-状态机图createdreadyHandle
EventInitialize
ObjectTerminate
ObjectWaitfor
Eventstart/^master.ready()poll/^master.ack()stop/初始状态结束状态状态机状态触发事件动作表达式跃迁97动态建模[3]-活动图活动图是用状态机对工作流进行建模的特殊形式,它和流程图很类似,不过它支持并发控制。活动图一般不描述所有的运算细节,它显示活动的流,但不显示执行活动的对象。活动图处于系统的外部和内部视图之间,所以它可以作为设计的起点,为了完成设计,每个活动必须扩展成一个和多个操作,每个操作被指派给特定的对象来实现。带有生命线的活动图和无生命线的活动图。98动态建模[3]-活动图CustomerSalesStockroomRequestServicePayTakeOrderFillOrderDeliverOrderCollectOrder泳道99动态建模[3]-带有对象流的活动图CustomerSalesStockroomRequestServicePayTakeOrderFillOrderDeliverOrderCollectOrder泳道Order[Placed]Order[Entered]Order[Filled]Order[Delivered]对象100动态建模[4]-序列图对象行为是通过交互来实现的,交互是对象间为完成某一目的而进行的一系列消息交换。消息是对象间的单向通信,从发送者到接受者的携带信息的控制流。消息可能带有值参。消息序列可用两种图表示:序列图(重点在消息的时间顺序)和协作图(重点在交换消息的对象间的关系)。对协作图来说,时间顺序可以从顺序号获得。101动态建模[4]-序列图序列图用二维表来表示交互,纵向是时间轴,横向是参与的角色以及它们交换的消息。角色的生命周期表现为生命线,一条垂直的线,在激活的时间段里是双线,在状态保持的时间里是虚线。消息表示为从一条生命线出发到另一条生命线的有向线,从上而下,表示消息的时间顺序。102动态建模[12]-序列图CallerOperatorCallee时间轴callacknumbercallacktalktransfer顺序图生命线激活状态保持角色103动态建模[5]-协作图协作图包含分类角色和关联角色,当它实例化时,对象被绑定到分类角色,链被绑定到关联角色.关联角色还可能被各种暂时性的链来充当,如过程参数和局部过程变量,链可以指定暂时性的原型:<<parameter>>、<<local>>或自身调用<<self>>。协作图对实现协作的对象和链进行建模,而忽略其他对象。104动态建模[5]-协作图StudentRegistrationFormRegistrationManager1:fillininfo2:submit3:add(smith,math)math4:add(smith)105动态建模[5]-协作图通常在一个协作图中每个对象分配一个符号,然而有时不同状态的对象需要显式指出,流将同一个对象的不同状态版本关系在一起,使用<<become>>原型。流的<<copy>>原型不太常用。:Controller:Directory[closed]:Directory[open]1:expand()2:sort()1.1<<become>>流106公用机制注释规范说明修饰扩充机制公共划分107公用机制[1]-注释注释用于解释设计的思路,便于理解。一个好的模型应该有详尽的注释。RepresentsanincorporatedentityCompany…注释108规范说明软件模型必须是完整的,以便于软件系统的建造。也就是说,此模型必须具备足够的详细信息以供软件建造使用。这些构成完整模型的详细信息就是模型的规范说明(简称规范)。所有UML模型成员都有规范说明。
不同的模型成分规范说明的内容不同,这些规范说明的内容一般用属性名和属性值的形式来表达。UML中有许多预定义的属性,比如:文档(documentation)、持续性(persistence)和并发性(Concurrency)等。
属性一般作为模型成分附加说明,比如,用一些文字逐条列举类的功能,这种规范说明方式是非形式化的。
109修饰UML模型图中的图素通常都有一个基本的结构,它描述模型成分最主要的特征。为了表达和建造系统的需要,基本图素表达时,UML提供了有选择地公开相关细节的方式。表示的类的属性和方法的可见性图示出了。UML模型中类的成分带“-”表示私有的(Private),带“+”表示公开的(Public),其他类可以访问,带“#”表示受保护的(Protected)。110扩充机制当使用UML的基本图素难以有效地表达复杂事物时,就需要对UML进行某种形式的扩充,正如同人类的语言需要不断地扩充语汇,以描述各种新出现的事物一样。UML提供了这种扩充机制(extensibilitymechanisms)。111建模规则UML的模型图不是UML基本图素的简单堆砌,它必须按特定的规则有机地组合而成,从而构成一个完整的UML模型图。UML建模规则包括:
(1)命名:任何一个UML基本图素和模型图(统称UML成员)都必须命名。
(2)作用域:UML成员所定义的内容起作用的上下文环境,如类名受所属包的约束。
(3)可见性:UML成员能被其它成员引用的方式。
(4)完整性:UML成员之间互相关联的合法性和一致性。
(5)运行属性:UML成员在运行时的特性,如进程、线程、同步等。
112UML建模五个视图:用例视图设计视图进程视图组件视图部署视图逻辑视图113用例视图用例视图用于描述系统应该具有的功能集。它是从系统的外部用户角度出发,对系统行为的抽象表示。它所描述的系统为用户或另一个系统提供服务。用例视图主要为用户、系统分析人员、系统开发人员和测试人员服务,这些人员利用用例视图交流,以达到各自的目的。用户和系统分析人员通过用例视图达到系统功能上的共识,系统开发人员通过用例视图完成系统逻辑模型的建立,测试人员通过用例视图测试系统是否满足用户要求。
114逻辑视图用例视图只考虑系统应提供什么功能,对这些功能的内部运作情况不予考虑,为了揭示系统内部的设计和协作状况,要使用逻辑视图描述系统。
逻辑视图用来显示系统内部的功能是怎样设计的。逻辑视图通过类图、对象图描述系统类、对象和它们之间的关系。逻辑视图也称为结构模型视图或静态视图或系统结构建模。
原则上软件系统逻辑视图在与软件系统的实现平台无关。逻辑视图包含的模型图有:类图、对象图、交互图。
类图是构成逻辑视图的核心,通常用对象描述客观世界中某个具体的实体。建立类模型时,应尽量与应用领域的概念保持一致,使模型更符合客观实际、易修改、易理解和易交流。对象图、交互图描述系统的动态行为。115组件视图当系统的逻辑视图被定义之后,需要定义逻辑结构的物理实现。这包括:逻辑结构对应的源代码文件、物理文件之间的关系、存放路径等。组件视图主要描述系统部件的配置。通常情况下,组件图看起来似乎是系统物理组件图标的集合。
116
部署视图提供给开发者、部署、集成者和测试者。在网络开发环境中,部署视图是系统模型必不可少的一部分。部署视图用来描述软件产品在计算机硬件系统和网络上的安装、分发和分布。117UML建模UML将软件的体系结构分解为四个不同的层次,分别是:用例视图、逻辑视图、组件视图、部署视图。其中每个视图分别关注软件开发的一个层次。视图由一种或多种模型图构成。用例视图关注系统需求,逻辑视图关注系统的逻辑结构,组件视图关注系统定义逻辑结构的物理实现,部署视图关注系统中软件和硬件之间的物理关系。118建模步骤[1]UML是一种建模语言而不是方法,这是因为UML中没有过程的概念,而过程正是方法的一个重要组成部分。UML本身独立于过程,这意味着用户在使用UML进行建模时,可以选用任何适合的过程。一般采用的建模过程有:瀑布开发模型、迭代递增开发模型。119建模步骤[2]-瀑布开发模型瀑布开发模型需求分析与设计编码测试产品维护120建模步骤[3]-迭代递增开发模型迭代递增开发模型最初需求与分析设计编码测试产品维护请求更多需求与分析121建模步骤[4]-UML建模过程基于UML的系统开发采取增量迭代开发模型。[1]需求最初需求规格说明应当由代表系统最终用户的人员提供,内容包括系统基本功能需求和对计算机系统的要求。[2]分析分析的任务是找出系统的所有需求并加以描述,同时建立模型,以定义系统中的关键领域类,应由系统用户和开发人员合作完成。分析的第一步是定义用例,以描述所开发系统的外部功能需求。用例分析包括阅读和分析需求说明,此时需要与系统的潜在用户进行讨论。122建模步骤[5]-UML建模过程[3]设计设计阶段的任务是通过综合考虑所有的技术限制,以扩展和细化分析阶段的模型。设计阶段可以分为两个部分:结构设计是高层设计,其任务是定义包(子系统),包括包间的依赖性和主要通信机制。我们希望得到尽可能简单和清晰的结构,各部分之间的依赖尽可能的少,并尽可能的减少双向的依赖关系。第二部分是详细设计,细化包的内容,使编程人员得到所有类的一个足够清晰的描述。123建模步骤[6]-UML建模过程结构设计一个设计良好的系统结构是系统可扩充和可变更的基础。包实际上是一些类的集合。类图中包括有助于用户从技术逻辑中分离出应用逻辑(领域类),从而减少它们之间的依赖性。详细设计详细设计的目的是通过创建新的类图、状态图和动态图(顺序图、协作图和活动图),描述新的技术类,并扩展和细化分析阶段的对象类。124建模步骤[7]-UML建模过程[4]实现构造或实现阶段是对类进行编程的过程。可以选择某种面向对象对象编程语言(如Java)作为实现系统的软件环境。Java很容易实现从逻辑视图到代码部件的映射,因为类到Java代码文件之间是一一映射关系。在实现阶段中,可以选取各种图的说明来辅助编程,比如:类图,状态图和动态图等。125建模步骤[8]-UML建模过程[5]测试和配置完成系统编码后,需要对系统进行测试,它通常包括:单元测试、集成测试、系统测试和验收测试。
在单元测试中使用类图和类的规格说明,对单独的类或一组类进行测试;在集成测试中,使用组件图和合作图,对各组件的合作情况进行测试;在系统测试中,使用用例图,以检验所开发的系统是否满足例图所描述的需求。系统的配置是实际地交付系统,包括文档和组成模型等。126
实例:饮料自动售货机系统设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。127步骤:(1)找出对象及其关联(2)赋予类及关联的属性数据(3)组织类的结构对象图128
找出饮料自动售货机系统中的对象设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售
顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。129饮料自动售货机系统对象图贩卖机饮料号码价格投币-接受饮料掉出金额显示按纽退币杆售完显示存量计算器饮料号码存量递减售完显示重置选择钮选择钮状态灯亮灯熄售完灯亮按钮顾客姓名硬币投币-置入拿取饮料退币杆退币杆状态拉动金额计算器金额累加找零重置购买选取被拉动属于属于属于属于130
建立数据字典
为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:成员约束关联、属性、操作131动态模型用来描述系统与时间相关的动态行为即系统的控制逻辑,表现对象彼此间经过相互作用后,随时间改变的不同运算顺序。
动态模型以“事件”(Events)和“状态”(States)为其模型的主要概念。
动态模型以状态图形式呈现。132
事件:
瞬时发生的行为;
引起对象状态转换的控制信息。事件类和属性举例:飞机起飞(航线、航班号、城市)按动鼠标按钮(按钮、位置)……..133
通话(只包括影响电话线的事件)17.打电话者挂断电话16.电话切断15.接电话者挂断电话14.通电话12.接电话者电话停止振铃13.铃声在打电话者电话中消失11.接电话者回答10.铃声在打电话者电话传出9.接电话者的电话开始振铃8.打电话者拨数字(3)7.打电话者拨数字(7)6.打电话者拨数字(3)5.打电话者拨数字(2)4.电话忙音结束3.打电话者拨数字(8)2.电话忙音开始1.打电话者拿起听筒134
状态:对象属性和对象关联的抽象形式状态的特征表示方法举例:状态:闹铃响描述:闹铃响表示预定时间到产生本状态的事件序列:设置闹钟(预定时间)不包括清除闹铃的任何后续操作当前时间=预定时间表征本状态的条件:闹铃=开,从预定时间起没有按键的情况下,目标时间当前时间目标时间=20秒本状态接受的各种时间:
事件
动作
下一个状态当前时间=目标时间+20重新设置闹钟正常按下按钮(任意按钮)重新设置闹钟正常135动态模型表示方法
状态图状态和事件的网络,侧重描述每一类对象的动态行为。136
状态图
例:状态1Do:活动1状态2.…...事件1[条件1]/动作1结束事件初始事件空闲可视菜单左边按钮按下/显示弹出菜单左边按钮弹起/擦除弹出菜单光标移动/高亮菜单项
弹出菜单动作137举例:饮料自动售货机系统的状态图
投入硬币(有效的)按下选择饮料键Do:显示售货机在备用所有灯都关闭
Do:显示金额总数
Do:显示金额已够饮料选择灯亮
取出饮料结算找零扣减存量完成交易
饮料“售完”灯亮
投入硬币金额(1元、5元、10元)金额不足再投币存量为零无效的硬币取消取消回到备用状态回到备用状态138
序列图举例:打电话的序列图挂断电话电话切断挂断电话通话通话停止振铃停止振铃响应电话电话振铃铃声拨号(3)拨号(7拨号(3)拨号(2)电话忙音结束拨号(8)电话忙音开始拿起听筒电话线接电话者打电话者139
存量为零找零扣减存量灯亮余额饮料结算选择键#选择按纽灯亮金额总够显示总额总额累加投入硬币金额计算器存量计算器顾客售货机选择键举例:饮料自动售货机系统的序列图售完灯1403.功能模型用来描述系统中数据的变换。
传统DFD+控制流对象A对象B过程1过程2数据存储区控制流数据流141步骤一寻找类和对象142
问题域描述中的名词,往往是候选的及对象;根据问题域结构可提取候选的类及对象;例:银行储蓄管理系统143与系统发生作用的其它系统和必要的设备可作为候选的类及对象;如:打印机等(分析阶段可不把与实现有关的计算机部件作为候选的类及对象)144系统必须观测、记忆的与时间有关的事件可作为候选的类及对象;
如:建立帐户的日期打开一个帐户等与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象;
如:柜员、储户等这些人所属的组织单位,可作为候选的类及对象;
如:总行、分行等145系统必须记忆、且不在问题域约束中的顺序操作过程可作为候选的类及对象;如:柜员事务、远程事务等。
其中属性是操作过程名,操作特权及操作步骤的描述;系统需了解掌握的物理位置、办公
地点等可作为候选的类及对象;
如:ATM机器、帐户等146(2)审查和筛选,舍弃无用的类对象的精简只有一个属性的对象只有一个服务的对象推迟到OOD考虑的对象
147帐册@上级系统接口供货员销售事件商品特价商品计量商品@收款机商品一览表超市销售管理系统(对象层)148步骤2:定义属性与服务定义属性定义服务对象的状态与状态转换图例:栈的状态/服务对照表空半满满压入可执行可执行不可执行弹出不可执行可执行可执行149例:栈状态转换图空半满满创建压入(未满)弹出(未空)压入(报错)弹出(报错)弹出(已空)压入弹出压入(已满)150定义服务对象行为分类发现服务的策略审查与调整识别对象的主动行为服务的详细说明(服务解释、消息协议、消息发送、约束条件、服务流程图)151帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班@上级系统接口帐目目册@消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款……销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新@收款机本班收款员开始时间结束时间@登录售货结帐商品一览表商品目录检索种类增删超市销售管理系统152
建立数据字典
为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:成员约束关联、属性、操作153对象字典举例:类名父类提供的服务需要的服务帐户………………ATM………………银行………………出纳员……………………154步骤3:定义结构与连接初步确定关联对应于描述性动词或动词短语需求陈述中隐含根据问题域知识得出筛选完善分析标识对象之间的关系对象之间的分类关系:一般-特殊结构对象之间的组成关系:整体-部分结构对象之间的静态联系:实例连接对象之间的动态关系:消息连接155从一般类发现特殊类公司职员股东姓名身分证号码……股份……职员工资……公司职员姓名身分证号码股份工资…………………………??156从特殊类发现一般类公司职员股东姓名身分证号码……股份……职员工资……………………股东姓名身分证号码股份…………职员姓名身分证号码工资…………?157
取消没有特殊属性的特殊类大学生研究生研究方向指导教师……学生姓名学号班级…………研究生研究方向指导教师……学生姓名学号班级…………158
通过增加属性简化一般-特殊结构人员…………男人…………女人……………………美国人…………日本人…………人员性别国籍…………中国人159中央计算机总行通信银行代码ATM拥有分行计算机出纳工作站远程业务现金卡分行帐户储户出纳员出纳业务通信授权存取拥有拥有持有组成拥有拥有雇佣进入被进入修改修改进入ATM系统的初始对象图160步骤4:定义服务及消息连接分析和认识对象之间在行为上的往来关系。161帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班@上级系统接口帐目目册@消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款……销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品一览表商品目录检索种类增删1m(关系层,完整的类图)@收款机本班收款员开始时间结束时间@登录
售货结帐162
范例:移动电话系统
移动电话系统的功能:用手机做移动通讯下载铃声下载图案管理电话簿163移动电话系统的使用用例图
TalktoOthersDownloadIconsManagePhonebookDownloadRingsMobileuserMobileNetwork
定义移动电话系统的对象(简化)
手机包括的对象:手机屏幕手机按钮手机(屏幕、按钮以外的部件)其它对象:基站MButtonMDisplqyMmobileStationMmobileHandset移动电话系统的类图165
移动电话系统对象间的通信
MButtonMDisplqy:MMobileStation:MMobileHandsetMobileuser1:pushDigButton()3:pushSendButton()2:displayButtonNumber()4:connectStation()7:displayConnectSuccess()6:connectSuccess()5:createConnection()移动电话系统的协作图166
移动电话系统的序列图
:MButton:MDisplqy
:MMobileHandsetMobileuserpushSendButton()displayButtonNumber()displayConnectSuccess()connectSuccess()createConnection()pushDigButton()connectStation()
:MMobileStation167
MButtonMDisplqyMmobileStationMmobileHandset移动电话系统的类图之二pushDigButton()pushSendButton()pushDisconnectButton()createConnection()destoryConnection()responseError()displayError()displayButtonNumber()displayConnectSuccess()displayIncomingCall()connectStation()disconnectStation()connectSuccess()Diaconnectsuccess()168三、Rose的使用[1]ROSE是美国Rational公司的面向对象建模工具,利用这个工具,我们可以建立用UML描述的软件系统的模型,而且可以自动生成和维护C++、Java、VB、Oracle等语言和系统的代码。ROSE的界面分为三个部分——Browser窗口、Diagram窗口和Document窗口。Browser窗口用来浏览、创建、删除和修改模型中的模型元素;Diagram窗口用来显示和创作模型的各种图;而Document窗口则是用来显示和书写各个模型元素的文档注释。169Rose的使用[2]Browser窗口Diagram窗口Document窗口Specification对话框工具栏工具箱170Rose的使用[3]Browser窗口有四个视图:UseCaseLogicalComponentDeployment171Rose的使用[4]在UseCase视图的图的类型有:用例图、顺序图、协作图和活动图。172Rose的使用[5]在Logical视图中的类型有:类图和状态图。173Rose的使用[6]在Component视图的图的类型有:组件图。174Rose的使用[7]在Deployment视图的图的类型有:部署图。175Rose的使用[8]-各种图用例图顺序图协作图活动图176Rose的使用[9]-各种图类图状态图177Rose的使用[10]-各种图组件图部署图178四、实例一[1]-HelloWorld很多教科书上的第一个程序就是Helloworld,一个在屏幕上简单地打印出“Helloworld!”语句的例子。在java中一个在浏览器中显示“HelloWorld!”的Applet的代码如下:importjava.awt.Graphics;classHelloWorldextendsjava.applet.Applet{ publicvoidpaint(Graphicsg){g.drawString("HelloWorld!",10,10); }}179实例一[2]-HelloWorld用例图HelloWorld180实例一[3]-HelloWorldHelloWorld类HelloWorldPaint()g.drawString("HelloWorld!",10,10)
注释181实例一[4]-HelloWorld类图HelloWorldPaint()AppletGraphics
继承使用依赖182实例一[5]-HelloWorld顺序图:Thread:Toolkit:ComponentPeertarget:HelloWorldruncallbackLoophandleExposepaint183实例二[1]-图书馆系统-用例图执行者读者图书馆员管理员用例图书馆管理184实例二[2]-图书馆系统-用例图读者用例图185实例二[3]-图书馆系统-用例图图书馆员用例图186实例二[4]-图书馆系统-用例图管理员用例图187实例三[1]-超市进销存超市进销存管理系统按其业务功能分成订货、销售、库存和统计四部分,这些职能往往对应于系统不同组织部门。
188实例三[2]-超市进销存超市进销存管理系统顶层用例图189实例三[3]-销售管理子系统用例图190实例三[4]订货管理子系统用例图191实例三[5]库存管理子系统用例图192实例三[6]统计分析子系统用例图193身份验证子系统用例图194身份验证用例的活动图195196身份验证序列图197订货管理序列图198统计分析管理序列图199销售管理序列图200超市进销存管理系统的逻辑视图
(1)身份验证类图201订货管理子系统类图202统计分析管理子系统类图203第五、Java代码生成Rose工具可以将系统模型生成相应的应用程序框架下的代码,也可以把应用程序框架下的代码逆向生成其相应的Rose模型(UML类图),这种工程技术叫软件的正逆向工程技术。准确地说,Rose工具将系统模型生成应用程序代码的框架,例如它可以生成类的方法的首部,方法体需要程序员编写。尽管如此,Rose工具生成统一的应用程序代码框架也有助于整个系统开发小组人员的协同编程和开发。204一个程序员要把系统模型成功地生成相应的应用程序框架,必须有两个前提:第一,程序员必须保证模型是正确的;第二,程序员必须熟悉相应的应用程序框架下的语法。只有这样,程序员才能正确设置系统模型生成代码时需要的各种控制属性,完成代码生成或Rose模型生成。205Java的语法单元与Rose模型图素的对应206设置属性1、与项目有关Java代码生成控制属性2、与类有关Java代码生成控制属性3、类特征生成Java代码有关的属性4、类操作生成代码的有关属性5、关联作用生成代码有关的属性207逆向工程Rose从Java代码读取类、类之间的关系、类成员变量(特征)、类成员方法、包及组件的信息生成相应的模型或更新当前的Rose模型。208第六Rational统一过程UML的模型成分和建模规则能够用来为系统进行面向对象的建模,但并没有指定应用UML的过程和方法。尽管如此,要想成功地使用UML,科学的过程是完全必要的,尤其在一些需要团队合作的大型系统时,此时必须协调所有人的工作,确保大家向同一方向努力。合理的过程能够有效地计划工作进程,控制和改进工作效率,保证软件的质量和软件的重用。Rational的统一过程的核心体现在下列几方面:迭代地开发软件、管理需求、使用基于组件的架构、为软件可视化建模、验证软件质量、控制对软件的变更,为软件开发团队提供指南、文档模板和工具。209如何在过程中使用UML以架构为中心使用UML的过程是以架构为中心的一个过程。也就是说,确定系统基本架构是非常重要的,并且在过程的早期就要建立这个架构。系统架构是由一组视图表达的,一般包括逻辑视图、并发视图、组件视图和展开视图,而用例视图则把这四种视图联系在一起。架构定义了系统的不同组成部分、它们之间的关系、交互、通信机制。
210用例驱动在进行一个大型面向对象项目时,典型地是从收集需求开始的用例技术开始,然后分析和设计,最后主要的工作是编写代码。过程的每个小步骤都是迭代的,但总体来看又遵循需求、分析、设计和编码这几个主要步骤。由于UML包含对系统功能的描述,所以它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业管理-报表管理制度
- 江苏省高邮市重点名校2025-2026学年初三第一次阶段考试数学试题含解析
- 湖南省汨罗市弼时片区市级名校2026年初三下学期期末考试(二模)数学试题含解析
- 江西南昌市心远中学度2025-2026学年初三5月月考(数学试题文)试题含解析
- 扬州地区部分县2026届初三暑假末结业考试数学试题含解析
- 江西省赣州市南康区唐西片区2026届初三下学期第二次大联考物理试题含解析
- 娄底市重点中学2026届初三下学期第一次诊断性考试物理试题试卷含解析
- 2026年朔州市重点中学初三七校联合体考前冲刺交流考试物理试题含解析
- 艾灸护理安全注意事项
- 老年患者压疮护理的伦理问题
- 2026广东深圳医学科学院科研职能岗位招聘笔试备考试题及答案解析
- 山东大众报业集团有限公司招聘笔试题库2026
- 2026年国网江苏省电力有限公司高校毕业生招聘约825人(第二批)笔试模拟试题及答案解析
- 2026上半年新疆维吾尔自治区招聘事业单位工作人员分类考试4474人笔试备考题库及答案解析
- GB/T 20151-2026光度学CIE物理光度系统
- GB/T 18570.9-2025涂覆涂料前钢材表面处理表面清洁度的评定试验第9部分:水溶性盐的现场电导率测定法
- 高中实验室安全教育课件
- 2026年甘肃省交通运输厅所属事业单位招聘笔试易考易错模拟试题(共500题)试卷后附参考答案
- 管致中信号与线性系统第5版答案
- 一汽大众汽车公司介绍
- 4.2《产生气体的变化》课件
评论
0/150
提交评论