IBMRSAUML2.0建模实例教程曹衍龙汪杰编著第1章初识UML建模1.1软件工程概述1.1.1软件工程的提出1.1.2软件开发模式1.2软件模型概述1.2.1什么是软件模型1.2.2软件建模的目的1.2.3软件建模的重要性1.2.4软件建模的基本原理1.3UML概述1.3.1UML的产生和演变1.3.2UML的应用领域1.3.3UML2的新特性软件开发模式1.瀑布模式瀑布模式将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。从本质来讲,开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么就要返回上一个阶段并进行适当的修改。软件开发模式2.迭代模式迭代模式是RUP(RationalUnifiedProcess,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:产生可发布产品的全部开发活动。所以,一次迭代经历了完整的工作流程:至少包括了需求分析、系统分析与设计、系统实现和测试。实质上,它类似小型的瀑布式项目。所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。一次迭代经历的流程如图1-2所示。软件建模目的(1)直观化:以更直观的形式来表达系统或系统的某个方面。(2)说明功能:模型可以详细说明系统的结构或行为。(3)指导功能:模型可以指导我们构造系统。(4)文档化:模型对我们做出的决策进行文档化。软件建模原理第一,选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响。第二,每一种模型可以在不同级别上表示。最好的模型应该是这样的:它可以让你根据观察的角色以及观察的原因选择它的详细程度。第三,最好的模型是与现实相联系的。在理想状况下,最好是有一个能够清晰地联系实际的模型,而当联系很薄弱时能够精确地知道这些模型怎样与现实相脱离。第四,单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模型去处理。为了理解系统的体系结构,你需要几个互补和连锁的视图。UML概述UML(UnifiedModelingLanguage,统一建模语言),是一种通用的、面向对象的、可视化建模语言。它的主要作用是帮助用户对软件进行面向对象的描述和建模,它可以描述这个软件开发过程从需求分析直到实现和测试的全过程。UML本质上不是一门编程语言,它缺少大多数编程语言提供的语法和语义。但是可以使用代码生成器将UML模型转换为多种程序设计语言代码,或使用反向生成工具将程序代码转换成UML。UML2.0本书中,UML1指的是UML规范1.1至1.5的所有版本,UML2指的是UML2.0规范及更高版本。总的来说,UML2和UML1大部分是相同的,尤其是最常用的核心特征。UML2更改了一些问题区间,增加了一些大的改进,修正了许多小的错误,但是UML1的使用者在使用UML2的时候应该不会有问题。一些明显的改变有:(1)序列图中的元素和表示法主要基于ITU制定的消息序列图标准。从而使其更具面向对象的特性。(2)将活动建模概念从状态机中分离出来,并使用了业务建模领域中通用的符号标记。(3)统一了UML1.5中添加的动作建模和活动建模,从而提供了更加完整的过程模型。(4)为类和协作两者的内部组合添加了上下文建模元素。(5)重新定义了组件代表的是设计构造,而工件代表可部署的物理实体。第2章IBMRSA简介2.1初识RATIONALSOFTWAREARCHITECT2.1.1RationalSoftwareArchitect的新特性2.1.2RationalSoftwareArchitect的运行环境2.1.3RationalSoftwareArchitect的获取2.2建模工具的安装2.2.1IBMInstallationManager的安装2.2.2RationalSoftwareArchitect的安装2.3RATIONALSOFTWAREARCHITECT使用介绍2.3.1RSA的主界面2.3.2RSA的项目结构2.3.3使用RSA建模2.3.4设置全局选项2.3.5打开视图初识RSARationalSoftwareArchitect(RSA)是由IBM公司的RationalSoftware部门开发的产品。RSA是一个基于UML2.1的可视化建模和架构设计工具。RSA构建在Eclipse开源框架之上,它具备了可视化建模和模型驱动开发(Model-DrivenDevelopment)的能力。无论是普通的分布式应用还是WebServices,这个工具都是适用的。IBMRationalSoftware有很悠久的历史,它最初起源于九十年代初UML的提出。RationalSoftware的第一个可视化建模工具是RationalRose。这是一个独立的建模工具,支持多种语言而且可以自动进行模型和代码之间的转换。它包括了如下子工具:(1)RationalSoftwareArchitect(2)RationalSystemsDeveloper(3)RationalApplicationDeveloperRSA新特性1.采用UML2.1规范在RationalSoftwareArchitect中,将UML规范更新为最新的2.1版本。在这一规范的更新中包括全新的对象图以及许多其他图的改进(组件、部署、时序、活动和结构图)。对象图允许我们为类图中的类实例(建模,用来描述系统活动;组件图通过被命名的分组和更新的界面,从而能够理解并应用原型;对于部署图而言,改进了实例建模,并包含了原型可访问性的更新;在时序图中改进了失败生命线的交互操作;结构图改进了端口、部件的符号。2.搜索功能的改进支持更多的“RelationshipTypes”和更多的“Showrelatedelements”查询。3.模型可用性的改进这些改进包括:改进的关联锚点支持,“ChangeMetatype”重构活动,放缩工具,动画缩放,动画布局,画图时的Duplicateelement活动,针对注释和几何图形的连接器助手等。RSA主界面RSA支持十种图名称用途类图(ClassDiagram)类图是使用得最为广泛的UML图之一。它使用类和接口来描述组成系统的实体以及它们之间的静态关系。利用类图可以生成源代码作为搭建系统的框架。组件图(ComponentDiagram)组件图描述了系统实现的组成和相互依赖。它能够将小的事物(例如类)组装成更大的、可以部署的部件。组件图的详细程度取决于你想展现什么。组合结构图(CompositeStructureDiagram)组合结构图是UML2.0中新出现的图。随着系统变得越来越复杂,事物之间的关系也变得复杂了。从概念上讲,组合结构图将类图和组件图连接了起来。它并不强调类的详细设计和系统如何实现。它描述了系统中的事物如何联合起来实现某一个复杂的模式。部署图(DeploymentDiagram)部署图描述了你的系统是如何实际运行的,同时还描述了系统是如何应用到硬件上的。一般情况下,使用部署图说明组件是如何在运行时进行配置的。对象图(ObjectDiagram)对象图使用了和类图一样的语法,同时还展示了在一个特定的时间类的实例。活动图(ActivityDiagram)活动图记录了从一个行为或活动到下一个的转化。通信图(CommunicationDiagram)通信图是一种交互图,它关注的是一个行为中涉及到的事物以及它们之间反复传递的消息。序列图(SequenceDiagram)序列图是一种交互图。它关注的是在执行的时候,在事物之间传递的消息的类型和顺序。状态机图(StateMachineDiagram)状态机图描述的是事物内部状态的转化。这个事物可能是一个单独的类,也可以是整个系统。用例图(UseCaseDiagram)用例图描述了系统的功能性需求。分析模型元素设计模型元素实现模型元素第3章UML与面向对象3.1面向对象开发3.1.1理解面向对象开发3.1.2面向对象的主要概念3.1.3面向对象的要素3.2UML的构成3.2.1视图3.2.2图3.2.3模型元素3.2.4通用机制3.3使用UML建模理解面向对象面向对象的方法启发我们从现实世界中客观存在的事物出发构造软件系统,并在系统构造过程中尽可能运用地运用人的自然思维方式。它强调直接以问题域中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征把它们抽象为解空间中的对象,以对象作为系统的基本构成单位。这样可以使系统直接映射问题域,最大限度地保持问题域中的事物及其相互关系的本质,使得解空间和问题域能够在结构上取得尽可能一致。这样做就向着减少语义断层的方向迈出了一大步,在许多系统中解空间对象都可以直接模拟问题空间的对象,因此,这样的程序易于理解和维护。理解面向对象面向对象方法比以往的方法更接近人类的自然思维方式。虽然结构化开发方法也采用了符合人类思维习惯的原则与策略,但是与传统的结构化开发方法不同,面向对象方法更加强调运用人类在日常生活中的逻辑思维中采用的思想方法,并以其他人也能理解的方式将自己的思想表达出来。面向对象的软件工程方法包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)和面向对象的软件维护(OOSM)等内容。在每一个开发阶段,面向对象的方法都要求对系统建立模型,为系统在本阶段的构建提供蓝图。不同阶段的模型包含的内容是不同的,既可以包括详细的计划,也可以包括从很高的层次考虑系统的总体计划。一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。每个阶段的模型都是一个在语义上闭合的系统抽象。模型可以是结构性的,强调系统的组织,例如系统的静态结构模型;它也可以是行为性的,强调系统的动态方面,例如系统的交互协作模型。面向对象概念面向对象=对象+类+封装+继承+聚合+消息传递1.对象和类。对象是理解面向对象技术的关键。可以发现现实世界中的对象具有共同点:它们都有状态和行为。图中的汽车对象有自己的状态(有速度、油量等)及行为(如发动汽车、关闭发动机、刹车和加速等)。对象封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体可以唯一地标识其名字,而且向外界提供一组服务(即公有的操作)对象中的数据表示对象的状态。一个对象的状态只能由该对象的操作来改变。每当需要改变对象的状态时,只能由其他对象向该对象发送消息。对象响应消息时,按照消息模式找出与之匹配的方法,并执行该方法。图中的汽车对象,它的状态就只能通过暴露出来的方法来修改。面向对象概念面向对象=对象+类+封装+继承+聚合+消息传递2.状态和属性对象集合里的每一个对象都有相似/相同的状态,把它抽象出来就是属性。因此,属性是一组状态值的集合。具有相同的结构和相同的值类型,而每一个状态就是属性的实例。3.行为、操作和方法方法也是对行为或操作的抽象,是对象所能执行的操作,也可以说是一组行为或操作的集合,而每一个行为或操作都是方法的实例。4.消息消息是指对象之间在交互过程中所传递的通信信息。如果说对象是系统中的节点,那么消息就是这些节点相互通信的载体。消息在面向对象的程序中具体表现为函数调用。对于一个顺序系统,不存在并发执行多个任务,因此消息实现主要为函数调用。而在并发程序和分布式应用中,消息则为进程间的通信机制和远程调用。面向对象要素1.继承性继承按照子类与父类的关系,把若干个类组成一个类层次结构。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法)。继承是子类自动地共享父类中定义的数据和方法的机制,一个直观的描述如右图所示。右图中描述了类A和类B之间的继承关系。类B继承了类A,因此它包含了类A中的所有数据结构和方法。同时,类B也定义了自己的附加内容,形成了自己的、不同于父类的数据结构和方法,这是类B对父类的增量定义。当一个类只允许有一