面向对象分析和设计.ppt课件

上传人:桔**** 文档编号:567687335 上传时间:2024-07-22 格式:PPT 页数:231 大小:1.61MB
返回 下载 相关 举报
面向对象分析和设计.ppt课件_第1页
第1页 / 共231页
面向对象分析和设计.ppt课件_第2页
第2页 / 共231页
面向对象分析和设计.ppt课件_第3页
第3页 / 共231页
面向对象分析和设计.ppt课件_第4页
第4页 / 共231页
面向对象分析和设计.ppt课件_第5页
第5页 / 共231页
点击查看更多>>
资源描述

《面向对象分析和设计.ppt课件》由会员分享,可在线阅读,更多相关《面向对象分析和设计.ppt课件(231页珍藏版)》请在金锄头文库上搜索。

1、高级软件工程陈宁江陈宁江2007.102007.10面向对象方法面向对象方法概述面向对象的分析和设计方法基于UML的面向对象分析与设计2什么是面向对象(ObjectOriented,OO)?面向对象是一种面向对象是一种风范(Paradigm),是一种观察是一种观察和分析问题的和分析问题的方法论(Methodology)从本质上来说,面向对象方法是确定从本质上来说,面向对象方法是确定动作的主体在先(先确定系统中的(先确定系统中的对象),),执行动作在后(再确定在这些对象上可能实施的(再确定在这些对象上可能实施的操作)传统的面向过程的程序设计,最关心的是过程传统的面向过程的程序设计,最关心的是过程

2、 面向对象技术:是一种软件系统设计的工程技术,面向对象技术:是一种软件系统设计的工程技术,将将“对象对象”作为软件系统的基本组成单元,将数作为软件系统的基本组成单元,将数据及其上作用的操作一起据及其上作用的操作一起封装封装,以标准的,以标准的接口接口规规范对外提供服务范对外提供服务 3面向对象技术的基本观点面向对象技术的基本观点 客观世界是由客观世界是由对象组成的组成的从动态观点看,对对象施加的从动态观点看,对对象施加的操作就是该对象就是该对象的行为的行为具有相同数据和相同操作的对象可以归并为一具有相同数据和相同操作的对象可以归并为一个个类,对象是类的一个,对象是类的一个实例对象之间通过对象之

3、间通过消息传递相互联系相互联系类具有类具有封装性类可以类可以派生出子类,子类出子类,子类继承父类的全部特性,父类的全部特性,又可以有自己的新特性又可以有自己的新特性4面向对象技术的发展历史面向对象技术的发展历史初始阶段(初始阶段( 60年代末年代末80年代中期)年代中期)挪威,挪威,Simula语言:引入了类的概念和继承机制语言:引入了类的概念和继承机制Xerox,Smalltalk语言语言发展阶段(发展阶段( 80年代中期到年代中期到90年代)年代)面向对象编程语言的繁荣:面向对象编程语言的繁荣: C+、Object Pascal、Java等等成熟阶段(成熟阶段(90年代中期以后)年代中期以

4、后)面向对象分析和设计方法的发展与规范:面向对象分析和设计方法的发展与规范: Booch方法、方法、Rumbaugh的的OMT方法、方法、Coad/Yourdon方法、方法、 Jacobson的的OOSE方方法法 等等形成一整套面向对象软件工程体系形成一整套面向对象软件工程体系5面向对象方法的优点面向对象方法的优点按照人类的自然思维方式建立软件系统模型,有利于理解和交流在整个开发过程中采用统一的概念和模型表示,使开发活动之间平滑过渡对象所具有的封装性和信息隐蔽等特性,容易实现软件复用易于维护,体系结构易于理解、扩充和修改6面向对象的基本概念面向对象的基本概念对象(对象(Object)由一组由一

5、组属性和在这些属性数据上的容许和在这些属性数据上的容许操作对对组成组成类(类(Class)封装(封装(Encapsulation)继承(继承(Inheritance)多态性(多态性(Polymorphism)消息(消息(Message)7面向对象的基本概念1.对象(object)对象是指一组属性以及这组属性上的专用操作的封装体属性(attribute)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改。操作(operation)(也称方法)规定了对象的行为,表示对象所能提供的服务。一个对象通常由对象名、属性

6、和操作三部分组成。82.类(class)类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(instance)。类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为。轿轿 车车型号:字符串型号:字符串颜色:字符串颜色:字符串牌照号:字符串牌照号:字符串张经理的轿车张经理的轿车型号型号= =桑塔纳桑塔纳颜色颜色= =红色红色牌照号牌照号= =沪沪AN2037AN2037类类实例对象实例对象9 封装封装(encapsulation):):一种信息隐蔽技术,一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实用户只能看见对象封装界面上的信息

7、,对象的内部实现对用户是隐蔽的。现对用户是隐蔽的。 封装的目的:使对象的使用者和生产者分离,使封装的目的:使对象的使用者和生产者分离,使对象的定义和实现分开。对象的定义和实现分开。 继承继承(inheritance):): 继承是类间的基本关系,它是基于层次关系的不继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。同类共享数据和操作的一种机制。 父类中定义了其所有子类的公共属性和操作,在父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类其父类(或

8、祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。(或祖先类)中的操作重新定义其实现方法。10 矩形矩形长长宽宽对角线对角线计算面积计算面积计算对角线计算对角线 多边形多边形顶点数顶点数顶点坐标顶点坐标计算面积计算面积旋转旋转交通工具交通工具飞行器飞行器汽汽 车车 船船轿轿 车车货货 车车 一般一般- -特殊关系特殊关系继承的例子11如果一个子类只有唯一一个父类,这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承。水上交通工具水上交通工具 陆上交通工具陆上交通工具 水陆两栖交通工具水陆两栖交通工具多重继承多重继承12多态性(polymorphism

9、)指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。13if 条件条件 then p := t ; else p := r ;area := p.getarea ;getArea abstractpolygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVar p : polygon ;Var t :

10、 triangle := triangle.new ;Var r : rectangle := rectangle.new ; 14面向对象的软件工程面向对象的软件工程面向对象的分析(OOA):分析和理解问题域,找:分析和理解问题域,找出类及对象,分析它们的内部构成和外部关系出类及对象,分析它们的内部构成和外部关系面向对象的设计(OOD):运用面向对象技术进行:运用面向对象技术进行软件设计软件设计面向对象的编程(OOP):用面向对象的编程语言:用面向对象的编程语言将设计模型转换成程序将设计模型转换成程序面向对象的测试(OOT):运用:运用OO技术进行以对象技术进行以对象概念为中心的软件测试,以

11、类作为基本测试单位概念为中心的软件测试,以类作为基本测试单位面向对象的维护面向对象的维护(OOM)15喷泉模型喷泉模型 迭代迭代和和无间隙无间隙特征特征迭代迭代:各开发活动常常:各开发活动常常重复工作多次,相关的重复工作多次,相关的功能在每次迭代中随之功能在每次迭代中随之加入演进的系统加入演进的系统无间隙无间隙:开发活动之间:开发活动之间不存在明显的边界不存在明显的边界16面向对象分析一般步骤如下:1.获 取 客 户 对 系 统 的 需 求 : 包 括 标 识 场 景(scenario)和用例(usecase),建造需求模型2.用基本的需求为指南,选择类和对象(包括属性和操作)3.定义类的结构

12、和层次4.建造对象-关系模型5.建造对象-行为模型6.利用用例/场景来复审分析模型17面向对象设计1.系统设计系统设计子系统划分子系统划分选选择择实实现现数数据据管管理理、界界面面支支持持和和任任务务管管理理的的设设计计策策略略为系统设计合适的控制机制为系统设计合适的控制机制复审并考虑权衡复审并考虑权衡2.对象设计对象设计在过程级别设计每个操作的实现细节在过程级别设计每个操作的实现细节定义内部类定义内部类为类属性设计内部数据结构为类属性设计内部数据结构3.消息设计消息设计 使使用用对对象象间间的的协协作作和和对对象象-关关系系模模型型,设计消息模型设计消息模型4.复审复审 复审设计模型并在需要

13、时迭代复审设计模型并在需要时迭代18代表性的代表性的OO分析与设计方法分析与设计方法Booch方法方法Rumbaugh的对象模型化技术的对象模型化技术(OMT)Coad和和Yourdon方法方法Jacobson的的OOSE(面向对象软件工程面向对象软件工程)19面向对象的建模语言面向对象的建模语言UML统一建模语言(Unified Modeling Language,UML):一种直观化、明确化、构建和文档化软件系统产):一种直观化、明确化、构建和文档化软件系统产物的物的可视化建模语言可视化建模语言 20UML是什么?是什么?UML是是Booch 、OOSE和和OMT方法的结方法的结合,同时吸

14、收了其他方法的思想合,同时吸收了其他方法的思想UML是一种是一种语言UML是一种是一种可视化的建模语言UML是一种可用于是一种可用于详细描述的语言的语言UML是一种是一种构造语言UML是一种是一种文档化语言21UML的主要组成的主要组成视图(视图(View):用于构造系统模型):用于构造系统模型图(图(Diagram):用于描述视图):用于描述视图模型元素:用于表示图的一组符号模型元素:用于表示图的一组符号22UML中的中的视图(视图(View)用例视图(用例视图(Use Case View):描述:描述系统应该具有的功能集系统应该具有的功能集设计视图(设计视图(Design View):描述

15、系统:描述系统功能的内部设计和协作情况,包括功能的内部设计和协作情况,包括静态静态结构结构和和动态行为动态行为进程视图(进程视图(Process View):描述系统的并发工作状况,包含并发:描述系统的并发工作状况,包含并发与同步的线程和进程与同步的线程和进程实现视图(实现视图(Implementation View):描述系统的实现模块(组件或:描述系统的实现模块(组件或者文件)及其之间的关系者文件)及其之间的关系部署视图(部署视图(Deployment View):描述系统的物理架构和硬件拓扑结:描述系统的物理架构和硬件拓扑结构的节点构的节点23UML中的图(图(Diagram)系统功能:

16、用例图静态结构:类图;对象图动态行为:状态图;时序图;协作图;活动图物理架构:组件图;分布图 24视图与图主题域视图(view)图(diagram)结构化结构化静态视图静态视图类图(类图(class)设计视图设计视图内部结构(内部结构(internal structure)协作图(协作图(collaboration)构件图(构件图(component)用例视图用例视图用例图(用例图(use case)动态的动态的状态机视图状态机视图状态机图(状态机图(state machine)活动视图活动视图活动图(活动图(activity)交互视图交互视图顺序图(顺序图(sequence)通信图(通信图(

17、communication)物理的物理的部署视图部署视图部署图(部署图(deployment)模型管理模型管理模型管理视图模型管理视图包图(包图(package)25模型元素模型元素指模型中的实体以及实体间相互连接的关系部分模型元素部分模型元素注解注解类类属性属性操作操作对象:类对象:类属性属性操作操作状态状态用例用例 结点结点供应接口供应接口包包依赖依赖关联关联泛化泛化主动类主动类属性属性操作操作请求接口请求接口构件构件实现实现26UML2.0与1.4的比较对对UML1.4进行了一些扩充。进行了一些扩充。用更为受限的通信图代替了协作图。用更为受限的通信图代替了协作图。 增加了交互综述图、定时

18、图、协议状态图、增加了交互综述图、定时图、协议状态图、组成结构图等新图。组成结构图等新图。27简单的UML例子例子描述:例子描述:在在Web浏览器中,编写浏览器中,编写JAVA程序程序Hello,World! import java.awt.Graphics;class HelloWorld extends java.applet.Applet public void paint (Graphics g) g.drawString(Hello, World!, 10,10);28HelloWorld的UML图HelloWorld类类HelloWorld及其相关类及其相关类HelloWorld的

19、继承层次的继承层次29HelloWorld的UML图(续)HelloWorld包包Paint的顺序图的顺序图HelloWorld构件构件30基于基于UML的分析、设计和实现的分析、设计和实现 描述需求:描述需求:使用用例来确定用户需求和系统必须为用户提供的服务静态建模静态建模:根据需求建立系统的静态模型动态建模动态建模:描述系统的动态行为31一、用例模型和用例图32现代需求实践现代需求实践实践名称践名称描述描述用例用例(Use case)描描绘一个系一个系统外在可外在可见的需求情况,是代表的需求情况,是代表系系统中各个中各个项目相关人目相关人员之之间就系就系统的行的行为所达成的契所达成的契约用

20、用户故事故事(user story)由客由客户参与参与编写,写,说明他明他们需要系需要系统为他他们做什么,一般用客做什么,一般用客户的的术语编写,其写,其长度度约为三句三句话左右左右共性:站在用户的角度看待系统、定义系统共性:站在用户的角度看待系统、定义系统 ;使用用户能够看懂的语言来表述使用用户能够看懂的语言来表述 33需求获取采用场景和用例的技术,是需求获取过程采用场景和用例的技术,是需求获取过程中弥补多个具有不同背景的执行者团队之中弥补多个具有不同背景的执行者团队之间代沟的有力工具间代沟的有力工具场景:表达了用户和系统之间的一系列交场景:表达了用户和系统之间的一系列交互,描述了一个系统实

21、例互,描述了一个系统实例用例:是对一类场景所进行的抽象用例:是对一类场景所进行的抽象场景和用例两者一般均用自然语言描述,场景和用例两者一般均用自然语言描述,这一形式对用户而言是易于理解的这一形式对用户而言是易于理解的34用例用例(usecase)是IvarJacobson发明的.其它的中文译名有:用况、用案等.定义1:用例是对一个活动者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列.定义2:用例是系统、子系统或类和外部参与者交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列.用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约.351)分析员首先标识使

22、用该系统的不同的执行者(执行者,actor),这些执行者代表使用该系统的不同的角色。每个执行者可以叙述他如何使用系统,或者说他需要系统提供什么功能2)执行者提出的每一个使用场景都是系统的一个用例的实例,一个用例描述了系统的一种用法(或一个功能),所有执行者提出的所有用例构成系统的完整的需求注:执行者与用户是不同的两个概念,一个用户可以扮演几个角色(执行者);一个执行者可以是用户,也可以是其他系统(应用程序或设备)采用用例收集客户需求采用用例收集客户需求36需求获取的活动(1)标识执行者标识执行者(2)标识场景)标识场景(3)标识用例标识用例(4)求精用例)求精用例(5)标识用例之间的关系)标识

23、用例之间的关系(6)标识非功能需求)标识非功能需求(7)绘制用例图,编写详细的用例描述)绘制用例图,编写详细的用例描述37用例图用例图用例图包含的模型元素用例图包含的模型元素执行者执行者(actor)(actor):与系统进与系统进行交互的外部实体。可以是人行交互的外部实体。可以是人或者其它系统或者其它系统用例:用例:描述系统提供的功能描述系统提供的功能(从外部视点角度从外部视点角度)模型元素之间的关系模型元素之间的关系执行者之间:继承关系执行者之间:继承关系执行者与用例之间:关联关执行者与用例之间:关联关系系用例之间:继承、扩展和包用例之间:继承、扩展和包含关系含关系38执行者 是是指指与与

24、系系统统交交互互的的人人或或其其他他系系统统,它它代代表表外部实体。外部实体。使使用用用用例例并并且且与与系系统统交交互互的的任任何何人人或或物物都都是执行者。是执行者。执执行行者者代代表表一一种种角角色色,而而不不是是某某个个具具体体的的人或物。人或物。在用例图中用直线连接执行者和用例,表在用例图中用直线连接执行者和用例,表示两者之间交换信息。示两者之间交换信息。39执行者的种类系统用户系统用户与所建造的系统交互的其他系统与所建造的系统交互的其他系统一些可以运行的进程一些可以运行的进程 硬件设备硬件设备时钟时钟执行者是为了完成一个事件而与系统交互的实体,执行者是为了完成一个事件而与系统交互的

25、实体,是用户相对系统而言所演的角色。执行者不仅可以是用户相对系统而言所演的角色。执行者不仅可以由人承担,还可以是事物由人承担,还可以是事物40执行者的例子执行者的例子1)其它软件系统:当系统需要与其它系统交互时,)其它软件系统:当系统需要与其它系统交互时,如如ATM柜员机系统中,柜员机系统中,银行后台系统银行后台系统就是一个就是一个执行者;执行者;2)硬件设备:如果系统需要与硬件设备交互时,)硬件设备:如果系统需要与硬件设备交互时,如在开发如在开发IC卡门禁系统时卡门禁系统时,IC卡读写器卡读写器就是一就是一个执行者;个执行者;3)时钟:当系统需要定时触发时,)时钟:当系统需要定时触发时,时钟

26、时钟就是执行就是执行者者41执行者间的关系在用例图中,使用泛化在用例图中,使用泛化关系来描述多个执行者关系来描述多个执行者之间的公共行为。之间的公共行为。 执行者间的泛化关系执行者间的泛化关系示例:示例:执行者实际上是一个类执行者实际上是一个类, 因此它们之间可以存在一因此它们之间可以存在一定的关系定的关系42如何标识执行者需要注意:需要注意: 大多数执行者在系统开发之前就已经存在大多数执行者在系统开发之前就已经存在执行者是在系统边界之外的,即它们是来自外部的;执行者是在系统边界之外的,即它们是来自外部的;任何要使用未来系统的外部软件系统就是一个执行者。任何要使用未来系统的外部软件系统就是一个

27、执行者。 可通过如下问题的提出获取和确认执行者:可通过如下问题的提出获取和确认执行者: 系统完成工作后,哪一个用户组受益?谁将使用系统系统完成工作后,哪一个用户组受益?谁将使用系统的主要功能?的主要功能?谁需要借助系统的支持来完成日常工作?谁需要借助系统的支持来完成日常工作?次要功能由哪一个用户组完成?次要功能由哪一个用户组完成?谁来维护和管理系统谁来维护和管理系统与该系统进行交互的外部硬件和软件系统是谁?与该系统进行交互的外部硬件和软件系统是谁?哪些人或系统对本系统产生的结果(值)感兴趣?哪些人或系统对本系统产生的结果(值)感兴趣?43例子:学生注册课程系统例子:学生注册课程系统某大学准备开

28、发一个某大学准备开发一个学生课程注册系统:学生使用该系统查询新学期将开设的课程和讲课教师情况,选择自学生使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学习的课程进行登记注册,并可以查询成绩单己要学习的课程进行登记注册,并可以查询成绩单教师使用该系统查询新学期将开设的课程和选课学生情况,并可以教师使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩单登记成绩单注册管理员使用该系统进行注册管理,包括维护教师信息、学生信注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课程信息等息和课程信息等在每个学期的开始,学生获得该学期的课程目录表,课程目录表列在每个学期的开始

29、,学生获得该学期的课程目录表,课程目录表列出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等等新学期开始前两周为选课注册时间,在此期间学生可以选课注册,新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允许改变或取消注册申请,开学两周后注册管理员负责关闭课并且允许改变或取消注册申请,开学两周后注册管理员负责关闭课程注册。每个学生可以选择不超过程注册。每个学生可以选择不超过4门课程,同时指定门课程,同时指定2门侯选课程门侯选课程以备主选课程未选上。每门课程最多不能超过以备主选课程未选上。每门课程最多不能超过10人,最

30、少不能低于人,最少不能低于3人,低于人,低于3人选课的课程将被取消。一旦学生的注册过程完毕,注人选课的课程将被取消。一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便学生付费。如果在实际注册过册系统将有关信息提交收费系统以便学生付费。如果在实际注册过程中名额已满,系统将通知学生在提交课程表之前予以更改程中名额已满,系统将通知学生在提交课程表之前予以更改在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取属于敏感信息,系统必须提供必要的安全措施以防非法存取 44发现执行者发

31、现执行者问题:谁使用系统的功能?谁需要借助系统完成日常工作?谁来维护和管理系统,以保证系统正常工作?系统控制的硬件设备有哪些?系统需要与其他哪些系统交互?谁对系统产生的结果感兴趣?45用例 用例:用例:是能够被执行者感受到的、系统将是能够被执行者感受到的、系统将完成的一系列动作,是一个完整功能完成的一系列动作,是一个完整功能这些动作除了完成系统内部的计算工作外,还这些动作除了完成系统内部的计算工作外,还包括与执行者通信。包括与执行者通信。用例通过用例通过关联关联与执行者连接与执行者连接关联指出一个用例与哪些执行者交互关联指出一个用例与哪些执行者交互46用例的特征用用例例代代表表某某些些用用户户

32、可可见见的的功功能能,以以实实现现一一个个具具体体的用户目标的用户目标用用例例总总是是被被执执行行者者启启动动的的,执执行行者者必必须须直直接接或或间间接接地地指指示示系系统统去去执执行行用用例例,用用例例向向执执行行者者提提供供可可识别的输出识别的输出通过关注谁启动了某一个用例,可标识出前面未注意通过关注谁启动了某一个用例,可标识出前面未注意到的新执行者到的新执行者用用例例必必须须是是完完整整的的,描描述述了了一一系系列列从从初初始始情情况况出出发的相关交互发的相关交互用例是一个类,它代表一类功能而不是使用该功用例是一个类,它代表一类功能而不是使用该功能的某个具体实例。能的某个具体实例。用例

33、的实例称为用例的实例称为“场景场景”47用例图举例用例图举例48用例的命名从执行者的角度出发进行命名(如使用“登录”而不用“身份验证”)使用动宾结构或主谓结构命名.尽量使用行业术语(如用“报销”,而不用“交钱”)例:字处理程序中,“置正文为黑体”和”创建索引”都可以是用例.例:在一个银行业务系统中可能有如右的用例浏览账户余额浏览账户余额列出交易内容列出交易内容划拨资金划拨资金49学生注册课程系统中的学生注册课程系统中的用例用例 50如何标识 用例 执行者需要系统提供哪些功能?执行者需要系统提供哪些功能? 执行者自身需要做什么?执行者自身需要做什么? 执执行行者者是是否否需需要要读读取取、创创建

34、建、删删除除、修修改改或或存存储储系系统统中中的的某类信息?某类信息? 系统中发生的事件需要通知执行者吗?系统中发生的事件需要通知执行者吗? 执行者需要通知系统某些事情吗?执行者需要通知系统某些事情吗? 从功能观点看,这些事件能做什么?从功能观点看,这些事件能做什么?执行者的日常工作是否因为系统的新功能而被简化或提高执行者的日常工作是否因为系统的新功能而被简化或提高了效率?了效率?系统需要哪些输入输出?输入来自何处?输出到哪里去?系统需要哪些输入输出?输入来自何处?输出到哪里去?当前使用的系统(可能是人工系统)存在的主要问题是什当前使用的系统(可能是人工系统)存在的主要问题是什么?么? 51注

35、意事项(1)开发者使用系统的用户手册、过程手册、公司标开发者使用系统的用户手册、过程手册、公司标准、用户日志和计划表,以及与用户和客户交谈准、用户日志和计划表,以及与用户和客户交谈的记录等来回答问题。的记录等来回答问题。开发者应该使用开发者应该使用应用领域应用领域中的词汇而非自己专业中的词汇而非自己专业领域的词汇写出场景。领域的词汇写出场景。当开发者更加深入地了解了应用领域且决定了要当开发者更加深入地了解了应用领域且决定了要采用的可能技术后,可采用迭代和增量方式采用的可能技术后,可采用迭代和增量方式求精求精场景。场景。在标识执行者和标识场景期间,开发者要做的最在标识执行者和标识场景期间,开发者

36、要做的最重要工作是重要工作是理解理解这些应用领域。这些应用领域。52注意事项(2)l不要将所有的需求都以用例的形式表示出来不要将所有的需求都以用例的形式表示出来. .l用例只描述系统功能性方面的需求用例只描述系统功能性方面的需求, , 它只量全部它只量全部需求的一部分需求的一部分. .l本质上用例分析是功能分解技术本质上用例分析是功能分解技术, , 但目前是但目前是OOOO开开发的第一步发的第一步. .l用例是与实现无关的关于系统功能的描述用例是与实现无关的关于系统功能的描述. .53标识用例图中的关系标识用例图中的关系关系说明记号关联关联执行者与他所参与的一个用例之间的通信路径。表示了用例执

37、行期间的信息流扩展扩展扩展的用例到基本用例的一种关系,它指出扩展的用例所定义的行为如何插入到基本用例所定义的行为中包含包含指出包含用例定义的行为被包含在基本用例所定义的行为中继承继承一个一般用例与一个更特殊的用例之间的关系,特殊用例可继承一般用例的特征extendinclude54关联关系表示参与者用例之间进行通信。表示参与者用例之间进行通信。 不同的参与者可以访问相同的用例。不同的参与者可以访问相同的用例。 55包含关系客户用例可以简单地包含提供者用例具有的行为,客户用例可以简单地包含提供者用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。并把它所包含的用例行为作为自身行为的一部分

38、。 56包含关系在对系统进行分析时,通常会发现有些功能在不同的环境下都可以被使用。在编写代码时,我们希望编写可重用的构件,这些构件包括诸如可以从其他代码中调用或参考的类库、子过程以及函数。包含关系包含关系是指一个用例(客户用例)的行为包含了另一个用例(提供者用例)的行为.客户用例可以简单地包含提供者用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。57注意注意: 箭头方向为客户用例到提供者用例箭头方向为客户用例到提供者用例.包含关系的例子包含关系的例子58a.如果有多个用例,并且这些用例如果有多个用例,并且这些用例包含大量类似的行为,应该考虑将这些类似的行为通过包含关系包,应该考虑将

39、这些类似的行为通过包含关系包含到用例中,将这个功能分解到另一个用例中含到用例中,将这个功能分解到另一个用例中b.对两个或多个互相独立的用例建模时做了对两个或多个互相独立的用例建模时做了重复的工作,可以通过包含关系包含这些重复的工作,可以通过包含关系包含这些重复的工作c.如果某个行为可能会引入如果某个行为可能会引入冗余,或者,当行为发生,或者,当行为发生变化时可能导致变化时可能导致不一致性,这时,应该对这种行为,这时,应该对这种行为进行进行孤立建模并将它包含到用例中并将它包含到用例中 使用包含关系的情况59扩展关系当某个新用例在原来的用例基础上增加了新的步骤序列,当某个新用例在原来的用例基础上增

40、加了新的步骤序列,则原用例被称作基用例,这种关系被称为扩展关系则原用例被称作基用例,这种关系被称为扩展关系。扩展用例被定义为基础用例的增量扩展。扩展用例被定义为基础用例的增量扩展。基础用例提供扩展点以添加新的行为。基础用例提供扩展点以添加新的行为。扩展用例提供插入片段以插入到基础用例的扩展点上。扩展用例提供插入片段以插入到基础用例的扩展点上。 60a.两个用例相似但不完全相同时b.当要对多个额外情况逐一建模时,可以使用扩展关系,用一个独立的用例替代每个额外的情况c.如果用例涵盖了所有的情况变化,则该用例将会变得十分复杂,应该考虑使用扩展关系 常见的扩展关系61基本用例基本用例( (扩展关系中扩

41、展关系中) )扩展用例扩展用例( (扩展关系中扩展关系中) )基本用例基本用例( (包含关系中包含关系中) )包含用例包含用例( (包含关系中包含关系中) )网上购物的部分用例网上购物的部分用例扩展关系例子62泛化关系父用例也可以被特别列举为一个或多个子用例。父用例也可以被特别列举为一个或多个子用例。 子用例表示父用例的特殊形式。子用例表示父用例的特殊形式。 子用例从父用例处继承行为和属性,还可以添加子用例从父用例处继承行为和属性,还可以添加行为或覆盖、改变继承的行为。行为或覆盖、改变继承的行为。63泛化关系的例子64用例图举例用例图举例65“扩展”与“包含”的区别(1/2)两种关系都意味着从

42、几个用例中抽取那些公共的行为两种关系都意味着从几个用例中抽取那些公共的行为并放入一个单独的用例中,而这个用例被其他用例包并放入一个单独的用例中,而这个用例被其他用例包含或扩展含或扩展两种关系的目的不同:两种关系的目的不同:通常在描述一般行为的变化时采用扩展关系通常在描述一般行为的变化时采用扩展关系在两个或多个用例中出现重复描述又想避免这种重复时,在两个或多个用例中出现重复描述又想避免这种重复时,可以采用包含关系可以采用包含关系根本区别:在包含关系中,源用例没有目的用例就不能工根本区别:在包含关系中,源用例没有目的用例就不能工作,而被包含用例可以独立存在;在扩展关系中,源用例作,而被包含用例可以

43、独立存在;在扩展关系中,源用例即使没有目的用例也能工作得很好,而目的用例通常只能即使没有目的用例也能工作得很好,而目的用例通常只能作为扩展的用例而存在。作为扩展的用例而存在。泛化和扩展表示用例之间的泛化和扩展表示用例之间的 “isa”, 包含包含关系表示用例之间的关系表示用例之间的“hasa”.66“扩展”与“包含”的区别(2/2)67扩展关系中,基用例可以单独存在,但在一定的条件下,它的行为可以被另一个用例的行为延伸。扩展只能发生在基用例的序列中某个特定的点上,这个点叫扩展点扩展关系的基本含义与泛化关系类似,但对扩展用例有更多限制,即基本用例必须声明若干”扩展点”,扩展用例只能在扩展点上增加

44、行为和含义.扩展关系与泛化关系扩展关系与泛化关系68用例图的绘制流程69记录需求记录需求特性表特性表编号号说明明FEAT01新增新增书籍信息籍信息 FEAT02修改已有的修改已有的书籍信息籍信息 FEAT03书籍信息按籍信息按计算机算机类、非、非计算机算机类分分别建档建档 FEAT04录入新入新书时能能够自自动按按规则生成生成书号号FEAT05计算机算机类与非与非计算机算机类书籍采用不同的籍采用不同的书号号规则FEAT06录入新入新书时如果重名将自如果重名将自动提示提示FEAT07按按书名、作者、名、作者、类别、出版社等关、出版社等关键字字组合合查询书籍籍FEAT08列出所有列出所有书籍信息籍

45、信息FEAT09记录外借情况外借情况FEAT10外借状外借状态能能够自自动反反应在在书籍信息中籍信息中FEAT11按人、按按人、按书查询外借情况外借情况FEAT12列出所有的外借情况列出所有的外借情况FEAT13按特定按特定时间段段统计购买金金额、册数、册数FEAT14所有所有查询、列表、列表、统计功能功能应可以可以单独独对计算机算机类或非或非计算机算机类进行行70合并需求获得用例合并需求获得用例特性特性用例用例FEAT01.新增新增书籍信息籍信息FEAT03.书籍信息按籍信息按计算机算机类、非、非计算机算机类分分别建档建档FEAT04.录入新入新书时能能够自自动按按规则生成生成书号号FEAT

46、05.计算机算机类与非与非计算机算机类书籍采用不同的籍采用不同的书号号规则FEAT06.录入新入新书时如果重名将自如果重名将自动提示提示UC01.新增新增书籍信息籍信息FEAT02.修改已有的修改已有的书籍信息籍信息UC02.修改修改书籍信息籍信息FEAT07.按按书名、作者、名、作者、类别、出版社等关、出版社等关键字字组合合查询书籍籍FEAT08.列出所有列出所有书籍信息籍信息FEAT14.所有所有查询、列表、列表、统计功能功能应可以可以单独独对计算机算机类或非或非计算机算机类进行行UC03.查询书籍信息籍信息FEAT09.记录外借情况外借情况FEAT10.外借状外借状态能能够自自动反反应在

47、在书籍信息中籍信息中UC04.登登记外借信息外借信息FEAT11.按人、按按人、按书查询外借情况外借情况FEAT12.列出所有的外借情况列出所有的外借情况FEAT14.所有所有查询、列表、列表、统计功能功能应可以可以单独独对计算机算机类或非或非计算机算机类进行行UC05.查询外借信息外借信息FEAT13.按特定按特定时间段段统计购买金金额、册数、册数FEAT14.所有所有查询、列表、列表、统计功能功能应可以可以单独独对计算机算机类或非或非计算机算机类进行行UC06.统计金金额和册和册数数71用例分析的基本步骤用例分析的基本步骤找出系统外部的参与者和外部系统找出系统外部的参与者和外部系统, 确定

48、系统边确定系统边界和范围界和范围确定每一个参与者所期望的系统行为确定每一个参与者所期望的系统行为把这些系统行为命名为用例把这些系统行为命名为用例使用泛化、包含、扩展等关系处理系统行为的公使用泛化、包含、扩展等关系处理系统行为的公共或变更部分共或变更部分编制每一个用例的脚本编制每一个用例的脚本绘制用例图绘制用例图区分主要事件流和异常事件流区分主要事件流和异常事件流, 如果需要如果需要, 可以可以把异常事件流处理为单独的用例把异常事件流处理为单独的用例细化用例图细化用例图, 解决用例间重复与冲突的问题解决用例间重复与冲突的问题.72用例的描述(1/2)用例描述是指对一个用例的功能进行的文字描述用例

49、描述是指对一个用例的功能进行的文字描述, 是是参与者与系统交互动作序列的说明参与者与系统交互动作序列的说明.用例描述才是用例的主要部分用例描述才是用例的主要部分, , 是后续的是后续的交互图分析和类图分析必不可少的部分交互图分析和类图分析必不可少的部分. .用例采用自然语言描述参与者与系统的交互行为用例采用自然语言描述参与者与系统的交互行为,要要易于理解易于理解. 其读者是开发人员、用户、项目经理、其读者是开发人员、用户、项目经理、测试人员等测试人员等.73用例的描述(2/2)用例的目标用例的目标用例是怎么启动的用例是怎么启动的参与者与用例之间的消息如何传送参与者与用例之间的消息如何传送用例中

50、除了主路径外用例中除了主路径外, 其它路径是什么其它路径是什么用例结束后系统的状态用例结束后系统的状态其它需要描述的内容其它需要描述的内容用例描述一般包括的内容:用例描述一般包括的内容:描述用例时的原则是尽可能写得描述用例时的原则是尽可能写得“充分充分”, 而不是形式而不是形式化、完整或漂亮化、完整或漂亮.74用例图的描述执行者的简要描述客户:向公司订购商品的人客户代表:公司处理客户请求的雇员库存系统:记录公司库存的软件用例的简要描述订购货物:客户创建一个新的请求商品的订单,并为那些商品付费取消订单:客户取消一个已经存在的订单75 用例的详细描述用例的详细描述用例通常用正文来描述,也可用活动图

51、来描述。用例的正文描述应包括以下内容:用用例例的的目目的的:用例的最终目的是什么?它试图达到什么?用用例例是是如如何何启启动动的的:哪个执行者在什么情况下启动用例的执行?执执行行者者和和用用例例之之间间的的事事件件流流:用例与执行者之间交换什么消息或事件来通知对方改变或恢复信息?描述系统与执行者之间的主事件流是什么?以及系统中哪些实体被使用或修改?用用例例中中可可供供选选择择的的流流:用例中的活动可根据条件或异常(exception)有选择地执行。如何结束用例如何结束用例:描述何时可认为用例已结束。76事件流是用例完成需求行为的事件描述事件流的目的是:建立用例中逻辑流程的文档,详细描述系统用户

52、的工作和系统本身的工作,既包括正常状态下系统完成需求行为的事件,也包括在其他状态下不能完成需求行为的事件用例的事件流77用例的描述模板用例的描述模板用例名称用例名称参与的执行者参与的执行者目标目标:简要描述用例的最终任务和结果简要描述用例的最终任务和结果前置条件前置条件:此用例开始执行的前提条件此用例开始执行的前提条件事件流事件流:是从执行者的角度看,列出用例的各个步骤。:是从执行者的角度看,列出用例的各个步骤。包括基本流程和可选流程包括基本流程和可选流程用例是怎样启动的;用例是怎样启动的;角色和用例之间的信息处理过程角色和用例之间的信息处理过程用例在不同的条件下,可以选择执行的多种方案用例在

53、不同的条件下,可以选择执行的多种方案特殊需求特殊需求后置条件后置条件:此用例执行结束的条件和结果:此用例执行结束的条件和结果78描述用例的例子79事件流可分为两部分:基本路径基本路径是运转正常时的路径,是一系列没有分支和选择的简单陈述句可选路径可选路径是指不同于基本路径而允许不同的事件序列的路径。对于明显有可能随时发生的事情来说,可选路径非常有效。事件流的路径事件流的路径80如订购货物用例的基本路径:事件流:基本路径1.当客户选择订购货物时,用例开始2.客户输入他的姓名和地址3.当客户输入产品代码时a.系统给出产品描述和价格b.系统往客户订单中添加该物品的价格循环结束4.客户输入信用卡支付信息

54、5.客户选择提交6.系统检验输入的信息,把该订单作为未完成的交易保存,同时向记账系统转发支付信息7.当支付确认后,订单就被标记上已经确认,同时返回给客户一个订单ID,用例结束81如果在订购货物用例中,客户可以在提交订单前随时取消订单,其可选路径如下:可选路径:在选择提交前任何时候,客户都可以选择cancel。这次订购没有被保存,用例结束。在基本路径第6步,如果有任何不正确的信息,系统提示客户去修改这些信息。在基本路径第7步,如果支付没有被确认,系统将提示客户改正支付信息或者取消。如果客户选择修改信息,就回到基本路径第4步;如果选择取消,用例结束。82用例写作简单指南 用例应该使用用例应该使用动

55、词短语动词短语命名。用例名字应该说明用户要努命名。用例名字应该说明用户要努力完成什么。力完成什么。 使用使用名词短语名词短语对执行者进行命名。对执行者进行命名。 系系统统的的边边界界是是清清晰晰的的。由由执执行行者者完完成成的的步步骤骤和和由由系系统统完完成成的步骤是可以进行区分的。的步骤是可以进行区分的。事件流中的用例步骤表达成主动语态事件流中的用例步骤表达成主动语态, ,这将直接说明是谁这将直接说明是谁完成了这一步骤。完成了这一步骤。前后步骤之间的因果关系是清晰的。前后步骤之间的因果关系是清晰的。异常情况应该另外描述。异常情况应该另外描述。用例描述不涉及系统的用户接口。用例描述不涉及系统的

56、用户接口。从长度上讲,一个用例不能太长。否则,可使用包含关系从长度上讲,一个用例不能太长。否则,可使用包含关系和扩展关系分解成较小的用例。和扩展关系分解成较小的用例。83描述用例时易出现的错误描述用例时易出现的错误只描述系统的行为只描述系统的行为, 没有描述参与者的行没有描述参与者的行为为只描述参与者的行为只描述参与者的行为, 没有描述系统的行没有描述系统的行为为在用例描述中就设定了对用户界面的设计在用例描述中就设定了对用户界面的设计的要求的要求描述过于冗长描述过于冗长84Use case: Withdraw cashActor: customer主事件流:主事件流:(1)储户插入储户插入AT

57、M卡卡,并输入密并输入密码码(2)储户按储户按“取款取款”按钮按钮,并输并输入取款数目入取款数目(3)储户取走现金储户取走现金/ATM卡卡/收据收据(4)储户离开储户离开Use case: Withdraw cashActor: customer主事件流:主事件流:ATM系统获得系统获得ATM卡和密码卡和密码设置交易类型为设置交易类型为“取款取款”ATM系统获得取款金额系统获得取款金额输出现金、收据和输出现金、收据和ATM卡卡系统复位系统复位用例的描述例子(1/2)ATM系统系统“取款取款”用例的两个错误描用例的两个错误描述:述:只描述了只描述了actor的行为的行为只描述了只描述了Syste

58、m的行为的行为85用例的描述例子(2/2)Use case: Withdraw cashActor: customer主事件流:主事件流:储户通过读卡机插入储户通过读卡机插入ATM卡卡ATM系统从卡上读取银行系统从卡上读取银行ID、账号、加密密码、账号、加密密码, 并通过主银并通过主银行系统验证银行行系统验证银行ID和账号和账号储户输入密码储户输入密码, ATM系统根据加密密码对输入密码进行验证系统根据加密密码对输入密码进行验证储户按储户按 “取款取款”按钮按钮, 并输入取款数目并输入取款数目, 该数目应该为该数目应该为$5的的倍数倍数ATM系统通知主银行系统系统通知主银行系统, 传递账号和金

59、额传递账号和金额, 并接收返回的确并接收返回的确认信息和账户余额认信息和账户余额ATM系统输出现金、系统输出现金、ATM卡和收据卡和收据ATM系统记录交易到日志文件系统记录交易到日志文件ATM系统系统“取款取款”用例的正确描述:用例的正确描述:86用例建模实例实现一个简化的银行储蓄账户管理系统,该系统是在银行的柜台上对客户办理活期储蓄业务。系统的需求陈述如下:一个客户可以在多个银行中开设账户,一个客户也可在同一银行中开设多个不同的账户。客户可以通过银行职员进行开户、存款、取款、转账、注销账户等活动。其中转账指客户将自己的某个账户上的钱款转入同一银行的不同账户(称为银行内转账)或转入不同银行的账

60、户(称为银行间转账)。系统管理员负责系统的账户管理及业务报表的生成。87识别执行者客户:到银行办理储蓄业务的人,负责输入密码银行职员(客户代理):银行工作人员,代表客户进行储蓄业务的操作银行职员(管理人员):银行工作人员,根据客户的储蓄业务更新账户管理员:银行计算机的管理人员,负责账户的管理和业务报表的生成88识别用例从系统的需求陈述可知:银行职员(客户代理)需要系统提供开户、存款、取款、转账、注销账户等功能,这些功能都包含了校验密码的功能。系统管理员需要系统提供账户管理和报表生成功能。银行职员(管理人员)则参与了账户管理中的更新账户的功能。转账功能可分为银行内转账和银行间转账,它们可设计成继

61、承了基本转账用例89银行储蓄账户管理系统银行储蓄账户管理系统包含包含包含包含包含包含银行职员银行职员(用户代理)(用户代理)账户管理账户管理银行间转银行间转账账开户开户取款取款银行内转银行内转账账注销注销存款存款校验密码校验密码转账转账报表生成报表生成其它银行其它银行账户管理系统账户管理系统客户客户系统管理员系统管理员银行职员银行职员(管理人员)(管理人员)90开户用例描述用例名称用例名称:开户参与的执行者参与的执行者:银行职员(客户代理),客户前置条件前置条件:一个合法的银行职员(客户代理)已登录到该系统事件流事件流:1.当选择开户功能时用例开始2.输入客户信息(姓名、地址、身份证号等)3.

62、从账户管理系统获取新的账号4.请客户输入密码5.请客户再次输入密码6.如果两次密码不一致则回到第4步,否则继续7.在账户库中添加新账户8.打印存折,用例结束后置条件后置条件:在账户库中增加了一个新账户,得到一张新存折 91用例名称用例名称:取款参与的执行者参与的执行者:银行职员(客户代理)前置条件前置条件:一个合法的银行职员(客户代理)已登录到该系统事件流事件流:基本路径基本路径:1.当选择取款功能时用例开始2.当输入客户信息(姓名、账号等)后 a)如果客户信息与账户不一致,显示错误信息,可以重新输入或结束用例 b)如果该账户被冻结,显示冻结信息并结束用例3.输入并校验密码4.输入取款金额,如

63、果该账户的余款小于取款金额,显示错误信息,要求重新输入5.打印取款单,交客户签字6.建立取款事件记录,更新账户信息7. 打印存折,用例结束可选路径可选路径:1.在第5步客户签字之前的任何时刻,客户可以取消本次取款,用例结束2.第3步校验密码时,如发现密码不一致,则重新输入密码,或用例结束后置条件后置条件:如果取款成功,客户账户中的余额被更新(减少),否则余额不变。92描述取款用例的活动图客客户户不不确确认认客户确认客户确认余余额额取取款款额额未未冻冻结结不一致不一致一致一致选择重新输入选择重新输入选选择择结结束束冻结冻结余额取款额余额取款额打印取款单打印取款单输入客户信息输入客户信息显示显示错

64、误信息错误信息建立取款记录建立取款记录更新账户信息更新账户信息打印存折打印存折显示显示错误信息错误信息输入取款金额输入取款金额输入并校验密输入并校验密码码显示显示冻结信息冻结信息93用例模型的用处用例模型的用处客户:详细说明系统应有的功能和使用方法客户:详细说明系统应有的功能和使用方法开发人员:理解系统的需求,作为后续工作开发人员:理解系统的需求,作为后续工作的基础的基础测试人员:验证系统实现是否与用例模型说测试人员:验证系统实现是否与用例模型说明的功能一致明的功能一致文档人员:为编写用户手册提供参考文档人员:为编写用户手册提供参考94例子:学生注册课程系统某大学准备开发一个某大学准备开发一个

65、学生课程注册系统:学生使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学习学生使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学习的课程进行登记注册,并可以查询成绩单的课程进行登记注册,并可以查询成绩单教师使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩教师使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩单单注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课程注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课程信息等信息等在每个学期的开始,学生获得该学期的课程目录表,课程目录表列出每门课在每个学期的开始,学生获得该学期

66、的课程目录表,课程目录表列出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等程的所有信息,诸如基本信息、教师、开课系和选课条件等新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允许新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允许改变或取消注册申请,开学两周后注册管理员负责关闭课程注册。每个学生改变或取消注册申请,开学两周后注册管理员负责关闭课程注册。每个学生可以选择不超过可以选择不超过4门课程,同时指定门课程,同时指定2门侯选课程以备主选课程未选上。每门门侯选课程以备主选课程未选上。每门课程最多不能超过课程最多不能超过10人,最少不能低于人,最少不能低

67、于3人,低于人,低于3人选课的课程将被取消。人选课的课程将被取消。一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便学生付费。一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便学生付费。如果在实际注册过程中名额已满,系统将通知学生在提交课程表之前予以更如果在实际注册过程中名额已满,系统将通知学生在提交课程表之前予以更改改在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩属于敏感在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取信息,系统必须提供必要的安全措施以防非法存取 95(1)发现角色)发现角色角色角色是与

68、系统交互交互的人或事问题:谁使用系统的功能?谁需要借助系统完成日常工作?谁来维护和管理系统,以保证系统正常工作?系统控制的硬件设备有哪些?系统需要与其他哪些系统交互?谁对系统产生的结果感兴趣?96(2)发现用例)发现用例 97(3)描述用例)描述用例 基本内容:基本内容:目标:简要描述用例的最终任务和结果:简要描述用例的最终任务和结果事件流:包括基本流程和可选流程:包括基本流程和可选流程 用例是怎样启动的;用例是怎样启动的;角色和用例之间的信息处理过程角色和用例之间的信息处理过程用例在不同的条件下,可以选择执行的多种用例在不同的条件下,可以选择执行的多种方案方案用例在什么情况下才能被视作完成,

69、完成时用例在什么情况下才能被视作完成,完成时结果应传给角色结果应传给角色 特殊需求前提条件:此用例开始执行的前提条件:此用例开始执行的前提条件后置条件:此用例执行结束后,结果应:此用例执行结束后,结果应传给什么角色传给什么角色 98描述用例的例子99常见问题分析(1)(1) 用例的粒度问题用例的粒度问题 对于一个目标系统进行用例分析后得到的用对于一个目标系统进行用例分析后得到的用例数目有多少比较合适例数目有多少比较合适?100常见问题分析(2)(2) 用例的分解用例的分解/合并合并 系统中相似的功能系统中相似的功能, 是合并为一个用例还是是合并为一个用例还是分解为几个用例分解为几个用例?方法方

70、法1 1一个用例一个用例/ /三个脚本三个脚本方法方法2 2 三个用例三个用例101常见问题分析(3)(3) 三层结构如何采用用例表示三层结构如何采用用例表示? (4) 下面哪个用例图正确下面哪个用例图正确? 102实例分析:语音邮箱系统目标:构建一个语音邮箱系统目标:构建一个语音邮箱系统问题描述:问题描述: 语音邮箱系统中语音邮箱系统中,可以为每个系统用户可以为每个系统用户(邮箱主人邮箱主人)分配一个分配一个语音邮箱号码语音邮箱号码. 进行留言时进行留言时, 拨打语音邮箱系统的主号码拨打语音邮箱系统的主号码, 在听到提示音在听到提示音”请输入邮箱号请输入邮箱号”后后,输入要语音邮箱号输入要语

71、音邮箱号,听到主人设定的问候语听到主人设定的问候语后后,进行留言然后挂断电话进行留言然后挂断电话. 邮箱主人拨打语音邮箱系统的主号码邮箱主人拨打语音邮箱系统的主号码,在听到提示音在听到提示音”请输请输入邮箱号入邮箱号”后后,输入要语音邮箱号输入要语音邮箱号,听到主人设定的问候语后听到主人设定的问候语后, 输入密码输入密码+#进行邮箱管理进行邮箱管理. 此时系统提供三种服务此时系统提供三种服务:1.接收信接收信息息; 2.更改问候语更改问候语; 3.更改密码更改密码.其中接收留言包括收听新留言、其中接收留言包括收听新留言、存储留言、删除留言等。存储留言、删除留言等。103实例分析:语音邮箱系统1

72、. 找出找出actor和外部系统和外部系统,确定系统边界确定系统边界.参与者:呼叫者、邮箱用户参与者:呼叫者、邮箱用户2. 主要功能分析主要功能分析(参与者期望的系统行为等参与者期望的系统行为等)(1). 呼叫者保留信息呼叫者保留信息(留言留言).(2). 邮箱用户管理信息邮箱用户管理信息: 收听收听/存储存储/删除删除.(3). 邮箱用户更改问候语邮箱用户更改问候语.(4). 邮箱用户更改密码邮箱用户更改密码.104实例分析:语音邮箱系统3. 初步找到的用例初步找到的用例呼叫者:保留信息呼叫者:保留信息邮箱主人:接收信息、更改问候语、更改密码邮箱主人:接收信息、更改问候语、更改密码4. 进一

73、步寻找用例进一步寻找用例邮箱主人:登录邮箱邮箱主人:登录邮箱呼叫者、邮箱主人:拨打邮箱号码呼叫者、邮箱主人:拨打邮箱号码5. 分析用例之间的关系分析用例之间的关系本例较为简单本例较为简单,只使用只使用“包含关系包含关系”即可即可.105实例分析:语音邮箱系统6. 绘制初步用例图绘制初步用例图106二、类图和对象图107分析活动:从用例导出对象 包括:包括: 标识对象标识对象将用例映射成对象(使用顺序图)将用例映射成对象(使用顺序图)建模对象之间的交互建模对象之间的交互标识对象之间的关系标识对象之间的关系标识对象的属性和行为标识对象的属性和行为分析模型评审分析模型评审108标识对象通常陈述中的名

74、词或名词短语是可能的潜在对象,它们以通常陈述中的名词或名词短语是可能的潜在对象,它们以不同的形式展示出来。一些标识对象的准则:不同的形式展示出来。一些标识对象的准则: 在用例中出现可重复的名词(例如,事件)在用例中出现可重复的名词(例如,事件)如果是系统必须跟踪的现实世界中的实体(例如,工作人员,资如果是系统必须跟踪的现实世界中的实体(例如,工作人员,资源),源),他们生产或消费计算机系统所使用的信息他们生产或消费计算机系统所使用的信息如果是系统必须跟踪的现实世界中的活动、如果是系统必须跟踪的现实世界中的活动、发生的事情或事件发生的事情或事件(例如,危机处理计划)(例如,危机处理计划)如果是用

75、例,应产生一个对应的对象如果是用例,应产生一个对应的对象如果是数据源和数据汇(例如,打印机),应认真分析如果是数据源和数据汇(例如,打印机),应认真分析角色(如:管理者、工程师、销售员),他们由与系统交互的人角色(如:管理者、工程师、销售员),他们由与系统交互的人扮演扮演组织单位(如:部门、小组、小队),他们与一个应用有关;组织单位(如:部门、小组、小队),他们与一个应用有关;场所(如:制造场所、装载码头),它们建立问题和系统所有功场所(如:制造场所、装载码头),它们建立问题和系统所有功能的环境能的环境与用户进行交互的人工制品(例如,工作站)应引起注意与用户进行交互的人工制品(例如,工作站)应

76、引起注意 总是出现在应用域中的术语要特别引起注意总是出现在应用域中的术语要特别引起注意109标识对象(续)Abbott提出的启发式准则:提出的启发式准则:将语言成分(名词、进行时、将语言成分(名词、进行时、be动词和副词)映射动词和副词)映射成模型的成分(对象、操作、继承关系和类)成模型的成分(对象、操作、继承关系和类)语言成分语言成分 模型构件模型构件实例实例 专有名词专有名词实例实例人员乙人员乙 普通名词普通名词类类现场工作人员现场工作人员 DoingDoing动词动词操作操作创建、提交、选择创建、提交、选择 BeingBeing动词动词继承继承是是一种一种, , 是其中的一个是其中的一个

77、 HavingHaving动词动词聚集聚集有有, , 由由组成组成, , 包括包括 情态动词情态动词约束约束必须是必须是形容词形容词属性属性事件描述事件描述 110交叉用例检查参与对象的启发式规则:交叉用例检查参与对象的启发式规则: 哪一个用例创建了这一对象?哪一个用例创建了这一对象?哪一个执行者可以访问这一信息?哪一个执行者可以访问这一信息?哪一个用例可以修改和撤销这一对象?哪一个用例可以修改和撤销这一对象?哪一个执行者可以启动这些对象?哪一个执行者可以启动这些对象?这一对象是必须的吗?这一对象是必须的吗?111三对象模型:实体、边界和控制在分析对象模型中,包括了实体对象、边在分析对象模型中

78、,包括了实体对象、边界对象和控制对象三种类型。界对象和控制对象三种类型。实体对象:实体对象:表示系统将跟踪的持久信息。表示系统将跟踪的持久信息。边界对象:边界对象:表示执行者与系统之间的接口和表示执行者与系统之间的接口和交互。交互。控制对象:控制对象:负责用例实现。负责用例实现。为了区分不同类型的对象,可以使用为了区分不同类型的对象,可以使用UMLUML提供的版类机制描述之,如:提供的版类机制描述之,如: control, entity, boundary112实体对象用例中的连续名词(如事件)用例中的连续名词(如事件)系统需要跟踪的现实世界中的实体(如现出系统需要跟踪的现实世界中的实体(如现

79、出工作人员,调度者等)工作人员,调度者等)系统需要跟踪的现实世界中的活动(如紧急系统需要跟踪的现实世界中的活动(如紧急情况操作预案)情况操作预案)数据源或数据汇(如打印机)数据源或数据汇(如打印机)113边界对象 边界对象:边界对象:表示了系统与执行者之间的接表示了系统与执行者之间的接口。边界对象从执行者处收集信息,将之口。边界对象从执行者处收集信息,将之转换成一种可用于实体对象和控制对象的转换成一种可用于实体对象和控制对象的表示形式表示形式。 边界对象在一个很边界对象在一个很粗略粗略的层面上对用户界的层面上对用户界面进行建模。面进行建模。该模型不描述用户界面可视方面的细节,如该模型不描述用户

80、界面可视方面的细节,如像像“菜单项菜单项”或或“滚动条滚动条”之类的边界对象之类的边界对象就显得太细了。就显得太细了。114边界对象(续)一些准则:一些准则:用户需要的初始用例的用户界面用户需要的初始用例的用户界面用户需要键入系统的数据表格用户需要键入系统的数据表格标识通知和系统用于对用户进行响应的消息标识通知和系统用于对用户进行响应的消息注:注:不要使用边界对象对接口的可视方面进行建模,而不要使用边界对象对接口的可视方面进行建模,而应该使用用户原型建模可视用户界面应该使用用户原型建模可视用户界面为了描述界面,总是使用最终用户的术语为了描述界面,总是使用最终用户的术语115控制对象 控控制制对

81、对象象:负负责责协协调调边边界界对对象象和和实实体体对对象象。在在现现实实世世界界中中,控控制制对对象象通通常常没没有有具具体体的的对应物。对应物。通通常常,控控制制对对象象通通常常在在一一个个实实体体开开始始时时创创建建,并并在在该该实实体体退退出出时时终终止止。从从边边界界对对象象处收集信息,并将这些信息分配给实体。处收集信息,并将这些信息分配给实体。116为类和对象命名时的准则使用标准术语。使用标准术语。使用具有确切含义的名词。使用具有确切含义的名词。必要时使用名词短语。必要时使用名词短语。名字应该是富于描述性的、简洁的而且无名字应该是富于描述性的、简洁的而且无二义性的。二义性的。 11

82、7类图类图 描述系统的结构描述系统的结构, ,用于表示系统中的类以及类用于表示系统中的类以及类与类之间的关系与类之间的关系是创建其它图的基础是创建其它图的基础类的描述主要包括:类的属性和操作类的描述主要包括:类的属性和操作118类图(续)描述类、接口、协作及它们之间关系的图。描述类、接口、协作及它们之间关系的图。显示系统中各个类的静态结构。显示系统中各个类的静态结构。 119接口在没有给出对象的实现和状态的情况下对对象行在没有给出对象的实现和状态的情况下对对象行为的描述为的描述 包含操作但不包含属性包含操作但不包含属性没有对外界可见的关联。没有对外界可见的关联。 一个类可以实现一个或多个接口一

83、个类可以实现一个或多个接口接口类:接口类:120标识关联 一个一个关联关联表示了两个或者多个类之间的关系。表示了两个或者多个类之间的关系。标识关联的好处:标识关联的好处:通过构造对象之间的清晰关系,澄清分析模型通过构造对象之间的清晰关系,澄清分析模型使得开发者去发现相关联的边界用例使得开发者去发现相关联的边界用例关联的属性关联的属性关联的名字:选择性的,无需全局唯一关联的名字:选择性的,无需全局唯一关联的角色:标识了每一个类的功能关联的角色:标识了每一个类的功能关联的重数:标识了可能的对象实例数目关联的重数:标识了可能的对象实例数目通过检查指示状态的动词或动词词组可以标识出关联通过检查指示状态

84、的动词或动词词组可以标识出关联121类图中的关联聚集聚集组合组合关联关联泛化泛化依赖依赖细化(实现)细化(实现)122类间关联关联分为:关联分为:普通关联,限定关联,关联类普通关联,限定关联,关联类。普通关联:普通关联:最常见的关联关系,只要类与类之间最常见的关联关系,只要类与类之间存在连接关系就可以用普通关联表示存在连接关系就可以用普通关联表示普通关联的图示符号是连接两个类之间的直线。普通关联的图示符号是连接两个类之间的直线。关联一般是双向的关联一般是双向的在一个方向上为关联起一个名字,在另一个方向上为在一个方向上为关联起一个名字,在另一个方向上为关联起另一个名字,如果关联清晰的话,也可不起

85、名关联起另一个名字,如果关联清晰的话,也可不起名字。字。为避免混淆,在名字前面(或后面)加一个指示关联为避免混淆,在名字前面(或后面)加一个指示关联方向的黑三角。方向的黑三角。123有首都有首都国家国家城市城市工作于工作于公公 司司员员 工工雇佣雇佣关联通常是双向的关联通常是双向的124关联的重数在表示关联的直线两端可以写上重数(在表示关联的直线两端可以写上重数(multiplicitymultiplicity),),重数重数表示该类有多少个对象与对方的一个对象相连接。表示该类有多少个对象与对方的一个对象相连接。重数的表示方法通常有:重数的表示方法通常有: 0.10.1: 表示表示0 0到到1

86、 1个对象;个对象;0.*0.*或或* *: 表示表示0 0到多个对象;到多个对象;1 1+ +或或1.*1.*:表示:表示1 1到多个对象;到多个对象;1.151.15: 表示表示1 1到到1515个对象;个对象;3 3:表示表示3 3个对象。个对象。如果图中未明确标出关联的重数,则默认重数是如果图中未明确标出关联的重数,则默认重数是1 1。 125关联的角色在任何关联中,都会涉及到关联对象所扮在任何关联中,都会涉及到关联对象所扮演的演的角色角色(即起的作用),显式标明角色(即起的作用),显式标明角色名有助于理解类图名有助于理解类图 如果没有显式标出角色名,则意味着用类如果没有显式标出角色名

87、,则意味着用类名同时作为角色名名同时作为角色名 126关联的例子(1)工作于工作于公公 司司员员 工工雇佣雇佣* 1工作于工作于公公 司司员员 工工雇佣雇佣* * * 雇佣雇佣 *工作于工作于工人工人1.*老板老板0.1管理管理公公 司司员员 工工127一个类的对象在不同的关联中扮演不同的角色一个类的对象在不同的关联中扮演不同的角色保险公司保险公司人人保险合同保险合同保险单保险单0.11表示为表示为表达表达0.*1有有涉及涉及婚姻婚姻丈夫丈夫妻子妻子0.*1.*涉及涉及有有保险客户保险客户关联的例子(2)128限定关联限定关联:限定关联:通常用在一对多或多对多的关通常用在一对多或多对多的关联关

88、系中,可以把模型中的重数从一对多联关系中,可以把模型中的重数从一对多变成一对一,或将多对多简化成多对一变成一对一,或将多对多简化成多对一 在类图中把限定词放在关联关系末端的一在类图中把限定词放在关联关系末端的一个小方框内个小方框内 129关联类为了说明关联的性质,还可以增加一些为了说明关联的性质,还可以增加一些附加信息附加信息引入引入关联类关联类来记录这些信来记录这些信息息关联中的每个连接与关联类的一个对象关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连相联系。关联类通过一条虚线与关联连接。接。 130导航性(navigability)和链接(link) 选课选课 学生学生

89、课程课程(a a) 选课选课 学生学生课程课程(c c) 选课选课 学生学生课程课程(b b)描述一个对象通过链进行导航访问另一个对象。如果说明一描述一个对象通过链进行导航访问另一个对象。如果说明一个对象知道另一个对象在哪里,可以加上箭头个对象知道另一个对象在哪里,可以加上箭头使用导航性可以降低类间的耦合度。使用导航性可以降低类间的耦合度。 ( (可导航的链接在可导航的链接在OOOO语语言中常表示为言中常表示为“指针指针”) )包括:单向关联和双向关联。包括:单向关联和双向关联。131导航性符号 明确的含义隐含的含义未指明双向可导航右边可导航左边未指明只有右边可导航只有右边可导航只有右边可导航

90、右边未指明左边不可导航只有右边可导航双向可导航双向可导航双向不可导航双向不可导航 132聚集 聚聚集集是是关关联联的的特特例例。聚聚集集所所表表示示的的类类之之间间的的关关系系是是整体与部分整体与部分的关系。的关系。在在需需求求陈陈述述中中, “包包含含”、“组组成成”、“分分为为部分部分”等字句,这往往意味着存在聚集关系等字句,这往往意味着存在聚集关系聚聚合合(AggregationAggregation):处处于于部部分分方方的的对对象象可可同同时时参参与多个处于整体方对象的构成与多个处于整体方对象的构成组组合合(composition)(composition):如如果果部部分分类类完完

91、全全隶隶属属于于整整体体类类,部部分分的的存存在在依依赖赖于于整整体体。一一旦旦整整体体类类不不存存在在了了,则则部部分类也会随之消失,或失去存在价值分类也会随之消失,或失去存在价值133134泛化(generalization) 泛化泛化关系(关系(继承继承):通用元素和具体元素):通用元素和具体元素之间的一种分类关系。具体元素完全拥有之间的一种分类关系。具体元素完全拥有通用元素的信息,并且还可以附加一些其通用元素的信息,并且还可以附加一些其他信息。他信息。 135显示显示计算面积计算面积四边形四边形泛化和继承泛化和继承显示显示六边形六边形显示显示三角形三角形多边形多边形显示显示边数边数顶角

92、座标顶角座标长长宽宽矩形矩形计算面积计算面积136抽象类没有具体对象的类称为没有具体对象的类称为抽象(抽象(Abstract)类类。抽象类通常作为父类,用于描述其他类抽象类通常作为父类,用于描述其他类(子类)的公共属性和行为(子类)的公共属性和行为137依赖依赖依赖关系:描述两个模型元素(类、用例等)之间关系:描述两个模型元素(类、用例等)之间的语义连接关系:其中一个模型元素是独立的,另的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它素,如果独立的模型元素改变了,将影

93、响依赖于它的模型元素。被依赖元素的变化会要求或指示依赖的模型元素。被依赖元素的变化会要求或指示依赖元素的改变元素的改变例如,友元依赖关系,该关系使得例如,友元依赖关系,该关系使得B B类的操作可以使用类的操作可以使用A A类类中私有的或保护的成员中私有的或保护的成员。 138依赖关系用一个虚线箭头表示,箭头上可附加含关键字的版型,关键字用来指明依赖的种类。UML2.0中的依赖种类:access(访问)bind(绑定)call(调用)create(创建)instantiate(实例化)realize(实现)send(发送)trace(追踪)use(使用)依赖关系的表示Scheduling Eng

94、ine依赖关系依赖关系Box Officeuse139细化(实现)当对不同抽象层次上的同一个事物进行描当对不同抽象层次上的同一个事物进行描述时,这些层次描述之间具有述时,这些层次描述之间具有细化细化关系。关系。细化用来协调不同阶段模型之间的关系,细化用来协调不同阶段模型之间的关系,常常用于跟踪模型的演变常常用于跟踪模型的演变假设两个模型元素假设两个模型元素A A和和B B描述同一个事物,它们描述同一个事物,它们分属不同的抽象层,如果分属不同的抽象层,如果B B在在A A的基础上进行了的基础上进行了更详细的描述,则称更详细的描述,则称B B 细化细化了了A A(或者(或者B B实现实现了了A A

95、) 140细化关系细化关系interfacechoiceBlocksetDefault(choice:Choice)getChoice()():ChoiceRadioButtonArraysetDefault(choice:Button)getChoice()():ButtonPopUpMenusetDefault(choice:String )getChoice()(): StringButtonChoiceString1.*1.*1.*choicechoicechoice141泛化和细化的区别泛化和细化都可以将一般描述与具体描述联系起来区别是:泛化是同一语义层上的元素之间的连接,通常在同一

96、模型内细化是不同语义层中的元素之间的连接,它通常建立在不同的模型内,如设计类到分析类是一种细化关系142关系的选择会影响设计软件的方式例如:关联和聚合的区别例如:关联和聚合的区别微妙微妙“如果去除一个对象,会发生什么如果去除一个对象,会发生什么”例如例如朋友之间的关系朋友之间的关系电视机中的组件电视机中的组件书架和书书架和书办公室和窗户办公室和窗户街道和房子街道和房子书和书页书和书页143发现和定义对象类发现和定义对象类基于用例模型,以问题域和系统责任为出发点,正确基于用例模型,以问题域和系统责任为出发点,正确地运用抽象原则,发现和定义系统中的对象类地运用抽象原则,发现和定义系统中的对象类 对

97、类的分类对类的分类实体类(实体类( ):表示系统存储和管理的永久):表示系统存储和管理的永久信息信息边界类(边界类( ):表示角色与系统之间的):表示角色与系统之间的交互交互控制类(控制类( ):表示由系统支持和用户执):表示由系统支持和用户执行的任务行的任务144(1)识别实体类)识别实体类识别的启发因素识别的启发因素 :人员,组织:人员,组织 ,物品,物品 ,设备,事件,表格,设备,事件,表格,例子:例子:145(2)识别边界类)识别边界类边界类代表系统与角色的接口。它收集来自角色的信边界类代表系统与角色的接口。它收集来自角色的信息,并将其转换成实体类和控制类可以使用的中间接息,并将其转换

98、成实体类和控制类可以使用的中间接口。可分为:用户接口、系统接口和设备接口口。可分为:用户接口、系统接口和设备接口例子:例子:146(3)识别控制类)识别控制类控制类负责协调边界类和实体类控制类负责协调边界类和实体类负责接收边界类的信息,并将其分发给实体类负责接收边界类的信息,并将其分发给实体类与用例存在着密切的关系,它在用例开始执行与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消时创建,在用例结束时取消例子例子147小结:类图中的建模元素表示148类图举例类图举例银行储蓄业务系统类图银行储蓄业务系统类图149对象图对象图表示类的对象实例,除了在对象图中对表示类的对象实例,除了在

99、对象图中对象名下要加下划线之外,对象图中使用象名下要加下划线之外,对象图中使用的图示标记与类图几乎完全相同的图示标记与类图几乎完全相同 对象名对象名 :类名:类名属性名属性名 = 值值操作操作类名类名属性名属性名 :类型:类型操作操作150类图和对象图举例类图和对象图举例实例实例xL3对象图对象图L4P2lineX1:realY1:realX2:realY2:realpointX: realY: realL1: lineX1=10Y1=10X2= -10Y2= -10L2: lineL3: lineX1=10Y1= 5X2= -10Y2= -5L4: lineX1=9Y1=5X2=9Y2=3X

100、1= -10Y1=10X2=10Y2= -10P1:pointX = 0Y = 0P2:pointX=9Y=4。5P1L1yL2类图类图相交相交2.*0.*151类图和对象图的区别类图类图 对象图对象图 类具有三个分栏:名称、属性和类具有三个分栏:名称、属性和操作操作对象只有两个分栏:名称和属性对象只有两个分栏:名称和属性在类的名称分栏中只有类名在类的名称分栏中只有类名对象的名称形式为对象的名称形式为“对象名:类名对象名:类名”,匿名对象的名称形式为匿名对象的名称形式为“:类名:类名”类中列出了操作类中列出了操作对象图中不包含操作,因为对于属于同对象图中不包含操作,因为对于属于同一个类的对象而

101、言,其操作是相同的一个类的对象而言,其操作是相同的类使用关联连接,关联使用名称、类使用关联连接,关联使用名称、角色、多重性以及约束等特征定角色、多重性以及约束等特征定义。类代表的是对对象的分类,义。类代表的是对对象的分类,所以必须说明可以参与关联的对所以必须说明可以参与关联的对象的数目象的数目对象使用链连接,链拥有名称、角色,对象使用链连接,链拥有名称、角色,但是没有多重性。对象代表的是单独的但是没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因此不实体,所有的链都是一对一的,因此不涉及到多重性涉及到多重性类的属性分栏定义了所有属性的类的属性分栏定义了所有属性的特征特征对象则只定义了

102、属性的当前值,以用于对象则只定义了属性的当前值,以用于测试用例或例子中测试用例或例子中152标识 类(对象)的属性 在标识属性时,仅考虑与系统相关的属性在标识属性时,仅考虑与系统相关的属性属性具有:属性具有: 名字名字类型:描述了对应变量可取的合法值类型:描述了对应变量可取的合法值 对属性的简要描述对属性的简要描述启发式准则:启发式准则:在特定情况下,跟在形容词短语之后的一个名词短语应该进行检查在特定情况下,跟在形容词短语之后的一个名词短语应该进行检查在实体对象的情况下,任何系统中必须进行存储的特征,均是一个在实体对象的情况下,任何系统中必须进行存储的特征,均是一个候选属性候选属性对象的状态表

103、示成为属性对象的状态表示成为属性注意避免混淆属性与对象,在标识属性之前,开发者应该尽可能多注意避免混淆属性与对象,在标识属性之前,开发者应该尽可能多地标识关联。忌将一个属性表示为一个对象,应该使用一个关联替地标识关联。忌将一个属性表示为一个对象,应该使用一个关联替代之代之注意属性表示对象模型中的最不稳定的部分。当确认分析模型或者注意属性表示对象模型中的最不稳定的部分。当确认分析模型或者用户接口框架不会发生改变之后,属性可以在随后加入用户接口框架不会发生改变之后,属性可以在随后加入153标识 类(对象)的操作操作:定义了对象的行为并以某种方式修改对象的属性值。操作可以通过对系统的过程叙述的分析提

104、取出来,通常叙述中的动词动词可作为候选的操作。操作大体可分为:以某种方式操纵数据的操作(如增加、删除、重新格式化、选择)完成某种计算的操作为控制事件的发生而监控对象的操作154分析级别的类图155设计级别的类图156子系统划分为降低问题的复杂性,将一个系统分解成多个子为降低问题的复杂性,将一个系统分解成多个子系统,这些子系统由若干个表示解域的类构成,系统,这些子系统由若干个表示解域的类构成,并在此基础上定义子系统之间的接口并在此基础上定义子系统之间的接口分析模型中紧密相关的类、关系等设计元素将包分析模型中紧密相关的类、关系等设计元素将包装成子系统装成子系统子系统的设计准则子系统的设计准则子系统

105、应具有定义良好的接口,通过接口和系统的其它部分通信除了少数的“通信类” 外,子系统中的类应只和该子系统中的其它类协作子系统的数量适宜可以在子系统内部再次划分,以降低复杂性157n通过将系统分解成多个相对独立的子系统,可通过将系统分解成多个相对独立的子系统,可以使多个团队在各个子系统上并发工作,也减少以使多个团队在各个子系统上并发工作,也减少了彼此交流所产生的管理上的开销。了彼此交流所产生的管理上的开销。158包图包(包(Package):组织相关的类。):组织相关的类。包的内容可以是类或者其它包包的内容可以是类或者其它包159包与子系统160对象与子系统初始子系统分解应该从需求的功能模型中导出

106、。子初始子系统分解应该从需求的功能模型中导出。子系统确认规则要求保持系统确认规则要求保持功能相关功能相关对象的整体性。对象的整体性。将对象分组归入子系统的规则是:将对象分组归入子系统的规则是:在同一用例中明确的对象归入同一个子系统在同一用例中明确的对象归入同一个子系统同一个子系统中的所有对象应该是功能相关的同一个子系统中的所有对象应该是功能相关的减少这些子系统之间的耦合程度减少这些子系统之间的耦合程度尽量减少跨越子系统边界的关联数目尽量减少跨越子系统边界的关联数目为对象创建一个专门的子系统,用来在子系统间移动数为对象创建一个专门的子系统,用来在子系统间移动数据据161面向对象程序的工作原理面向

107、对象的程序在工作时,要创建对象,把它们连接在面向对象的程序在工作时,要创建对象,把它们连接在一起,让它们彼此发送消息,相互协作一起,让它们彼此发送消息,相互协作程序必须有一个入口点(程序必须有一个入口点(main)main中的每个指令都可能创建对象,连接对象,或者给对象中的每个指令都可能创建对象,连接对象,或者给对象发送消息发送消息接收消息的对象会执行特定的操作,或者创建对象,给其它接收消息的对象会执行特定的操作,或者创建对象,给其它对象发送消息对象发送消息162构建动态模型描述系统的动态行为,它们指明系统中的对象如何响应外部的事件,执行任务评估所有的用例,理解系统中交互的序列,标识驱动交互序

108、列的事件,理解这些事件如何和特定的对象相关联为系统建造顺序图顺序图、活动图活动图和通信图通信图为主要对象建造状态机图状态机图复审动态模型,以验证准确性和一致性163顺序图:将用例映射成对象 顺序图顺序图将用例与对象联系在一起。表达了用例行为在将用例与对象联系在一起。表达了用例行为在其参与对象之间是怎样分布的其参与对象之间是怎样分布的建模了对象之间的交互顺序,同时将功能分配给该用例建模了对象之间的交互顺序,同时将功能分配给该用例可帮助开发者标识出新的参与对象、可帮助开发者标识出新的参与对象、发现遗漏的对象或界发现遗漏的对象或界限不明的领域限不明的领域顺序图关注于消息的顺序,给出对象之间发送消息的

109、顺序图关注于消息的顺序,给出对象之间发送消息的先后顺序先后顺序164顺序图的组成顺序图包含了顺序图包含了4种元素:种元素:对象(对象(Object)生命线(生命线(Lifeline)消息(消息(Message)激活(激活(Activation) 165生命线生命线是一条垂直的虚线,表示时序图中的对象生命线是一条垂直的虚线,表示时序图中的对象在一段时间内的存在。每个对象的底部中心的位在一段时间内的存在。每个对象的底部中心的位置都带有生命线。置都带有生命线。生命线是一个时间线,从时序图的顶部一直延伸生命线是一个时间线,从时序图的顶部一直延伸到底部,所用的时间取决于交互持续的时间。到底部,所用的时间

110、取决于交互持续的时间。对象与生命线结合在一起称为对象的生命线,对对象与生命线结合在一起称为对象的生命线,对象的生命线包含矩形的对象图标以及图标下面的象的生命线包含矩形的对象图标以及图标下面的生命线。生命线。 166消息消息定义的是对象之间某种形式的通信,消息定义的是对象之间某种形式的通信,它可以激发某个操作、唤起信号或导致目它可以激发某个操作、唤起信号或导致目标对象的创建或撤销。标对象的创建或撤销。 消息是两个对象之间的单路通信,从发送消息是两个对象之间的单路通信,从发送方到接收方的控制信息流。方到接收方的控制信息流。消息可以用于在对象间传递参数。消息可以用于在对象间传递参数。消息可以是信号,

111、也可以是调用。消息可以是信号,也可以是调用。在在UML中,消息使用箭头来表示,箭头的中,消息使用箭头来表示,箭头的类型表示了消息的类型。类型表示了消息的类型。167消息168激活激活表示该对象被占用以完成某个激活表示该对象被占用以完成某个任务,去激活指的则是对象处于空任务,去激活指的则是对象处于空闲状态、在等待消息。闲状态、在等待消息。在在UML中,为了表示对象是激活的,中,为了表示对象是激活的,可以将该对象的生命线拓宽成为矩可以将该对象的生命线拓宽成为矩形。其中的矩形称为激活条或控制形。其中的矩形称为激活条或控制期,对象就是在激活条的顶部被激期,对象就是在激活条的顶部被激活的,对象在完成自己

112、的工作后被活的,对象在完成自己的工作后被去激活。去激活。 激活条激活条169顺序图例子顺序图例子银行转账业务的顺序图170不同的消息表示对象间不同类型的通信不同的消息表示对象间不同类型的通信简单消息简单消息:消息类型未知或与消息类型无关,:消息类型未知或与消息类型无关,或是一个同步消息的返回或是一个同步消息的返回同步消息同步消息:发送对象必须等接收对象完成消:发送对象必须等接收对象完成消息的处理后才能继续执行息的处理后才能继续执行异步消息异步消息:发送对象在消息发送后立即继续:发送对象在消息发送后立即继续执行,而不必等待接收对象的返回。执行,而不必等待接收对象的返回。传送延迟传送延迟:消息发送

113、后需经历一段延迟时间:消息发送后需经历一段延迟时间才被接收(可用倾斜的箭头表示,可以注明才被接收(可用倾斜的箭头表示,可以注明最大延迟时间)最大延迟时间)顺序图中的消息顺序图中的消息171带条件和分支的顺序图消息上可附加条件,当条件为真时消息才被发送或接收。条件可用于描述分支,当几个消息箭头上的条件互斥时,表示某一时刻只有一个消息被发送。如果条件不是互斥的,则消息会并行地发出。print (file) printer freeprint(file)printer busyStore ( file )Print (file):Computer:Printer Server:Printer:Que

114、ue172顺序图中可以用标记来定义循环和约束Print (ps-file):Computer:Printer Server:Printerab-a5 secbb-b1 secbPrint(ps-file)Print (ps-file)op3 ( )op2 ( )send message op2 untilC1 : CD1 : DD2 : Dop1 ( )op4 ( )173创建对象和对象的消亡一一个个对对象象可可以以通通过过一一条条消消息息创创建建另另一一个个对对象象,被被创创建建的的对对象象可可在在创创建建它它的的地地方方(垂垂直直时时间间轴轴上上)画画一一个个对对象象符符号号。当当对对象象

115、消消亡亡时时,在在图图中中用用一一个个符号表示。此时对象的生命线仅画到消亡的点上符号表示。此时对象的生命线仅画到消亡的点上DeleteCustomer()NewCustomer(Data)Customer(Data):CustomerWindow:Customer174结构化控制结构复杂的控制流可以用组合片段(combinedfragment)来表示一个组合片段包含:一个关键字:指明操作符一或多个子片段(subfragment):指出操作对象175片段中的关键字及其含义片段中的关键字及其含义关键字关键字含义含义ref(引用)对另一交互的引用loop(循环)它有一个子片段,当循环的警戒条件为真时

116、执行子片段alt(选择)它有二个或多个子片段,每个子片段有一个初始的警戒条件,当某子片段的警戒条件为真时,执行该子片段。如果有多个子片段的警戒条件为真,则无确定性地选择它们中的一个执行。如果没有一个子片段的警戒条件为真,则不执行opt(任迭)它是带单个子片段的特殊情况,即警戒条件为假时省略该子片段par(并发)它有二个或多个子片段,处于此片段时,所有子片段都并发地执行,在不同片段中消息的相关顺序是不确定的,当所有子片段完整地并发执行后,控制流又连接到一起成为单一的流176refdebit(cost)reserve (date,count)reject unavailableloopget ex

117、isting customer statusget nex itemaltcreata():order:AccountSd process Order:Ticket DB结构化控制结构结构化控制结构add(seats) available177通信图通信图展示了围绕着组合结构的各部分或协作的各角色而组织的一种交互对包含在交互中的角色和链(link)建模(角色与对象绑定,链与对象间的关联绑定),用附加到关联上的箭头表示角色之间的消息通信通信图与顺序图的区别:顺序图清晰地展示了时间顺序,但不明确显示对象之间的关系通信图清晰地展示了对象间的连接关系,但消息顺序和并发线程必须通过顺序号来指明与顺序图可

118、相互转换与顺序图可相互转换178控制电梯运行的通信图控制电梯运行的通信图179顺序图与通信图的比较相同点相同点规定责任规定责任, 二者均直观地规定了发送对象和接收对二者均直观地规定了发送对象和接收对象的责任象的责任.支持消息支持消息, 二者均支持所有的消息类型二者均支持所有的消息类型.衡量工具衡量工具, 二者均是衡量耦合性的工具二者均是衡量耦合性的工具.不同点不同点协作图强调参与交互的对象的组织结构协作图强调参与交互的对象的组织结构; 顺序图强顺序图强调消息的时间顺序调消息的时间顺序.顺序图可反映对象的创建顺序图可反映对象的创建/激活激活/撤消撤消; 协作图不能协作图不能.协作图能反映动作路径

119、协作图能反映动作路径, 消息必须有顺序号消息必须有顺序号; 顺序顺序图可以没有顺序号图可以没有顺序号.180什么是状态机图用用于于描描述述一一个个对对象象在在其其生生存存周周期期间间的的动动态态行行为为, 表表现现一一个个对对象象所所经经历历的的状状态态序序列列, 引引起起状状态态转转移移的的事事件件(event), 以及因状态转移而伴随的动作以及因状态转移而伴随的动作(action).一个状态图包括一系列的状态及状态之间的转移。一个状态图包括一系列的状态及状态之间的转移。状态是对象执行了一系列活动的结果。状态是对象执行了一系列活动的结果。当当某某个个事事件件发发生生后后,对对象象的的状状态态

120、将将发发生生变变化化,状状态的改变叫做转移。态的改变叫做转移。不不是是每每个个类类都都应应该该有有一一个个状状态态图图。只只对对“感感兴兴趣趣的的”状状态态的的类类(也也就就是是说说,在在系系统统活活动动期期间间具具有有三三个个或或更更多潜在状态的类)才进行状态图描述多潜在状态的类)才进行状态图描述状态图在检查、调试和描述类的动态行为时非常有用状态图在检查、调试和描述类的动态行为时非常有用浸泡洗涤漂洗脱水181为什么要建模状态机图为什么要建模状态机图对象可能会有不同的状态,某些行为依赖于这对象可能会有不同的状态,某些行为依赖于这些状态。例如,按下开关按钮时,电灯将改变些状态。例如,按下开关按钮

121、时,电灯将改变当前的状态(由关变开或由开变关),因此:当前的状态(由关变开或由开变关),因此:需要记录对象需要记录对象当前的状态当前的状态发生了某种发生了某种事件事件才会引起才会引起状态间的转移状态间的转移由一个状态转到另一个状态的过程通常通过由一个状态转到另一个状态的过程通常通过方法方法调用调用实现实现 状态状态机机图通常作为对类图的图通常作为对类图的补充补充 182状态图:电梯状态图主要显示以下状态图主要显示以下3 3种内容:种内容: 对象在生命周期中所经历的状态对象在生命周期中所经历的状态序列;序列; 诱发对象从一个状态转移到另一诱发对象从一个状态转移到另一个状态的事件;个状态的事件;

122、状态改变所导致的动作。状态改变所导致的动作。183状态名状态名状态变量状态变量活动活动状态状态迁移迁移起始状态起始状态结束状态结束状态状态机图的基本符号状态机图的基本符号状态机图状态的组成:状态名状态变量:类的属性,或者是临时变量活动:处于该状态时要执行的事件和动作 184状态图简况起始状态起始状态终止状态终止状态状态状态事件事件185状态图例子状态图例子186主要的标准事件:entry,exit,doentry和exit事件用于指明进入和退出该状态时的特定动作do事件用于指明在该状态中时执行的动作状态的表示loginlogin time=current timeentry/type “log

123、in”do/get use_namedo/get passwordexit/login(use_name,password)login状态状态187一些概念动作:动作:原子行为,在状态机中的特定点上执行,只原子行为,在状态机中的特定点上执行,只需要一小段时间且执行不可中需要一小段时间且执行不可中活动:活动:是对象只有驻留在某些状态上执行的行为是对象只有驻留在某些状态上执行的行为动作与活动的区别:动作与活动的区别:一个动作的执行时间短且是不可中断的一个动作的执行时间短且是不可中断的一个活动的执行需要一段时间且其执行时是可以中断的,其中断一个活动的执行需要一段时间且其执行时是可以中断的,其中断的时

124、机是在一个退出迁移的状态被触发时的时机是在一个退出迁移的状态被触发时内部迁移:内部迁移:是一个未离开该状态的迁移。是一个未离开该状态的迁移。触发内部迁移事件,可以产生与这些事件相关联的活动。触发内部迁移事件,可以产生与这些事件相关联的活动。但一个内部迁移的激活不会导致任何进入或退出活动的但一个内部迁移的激活不会导致任何进入或退出活动的执行。执行。188自动售货机自动售货机状态机图状态机图idleCollecting moneyCoins in(amount)/add to balancetest and computeDo:test item and compute changeDo:disp

125、ense itemDo:make changeSelect(item) change 0change = 0189状态迁移引起状态迁移的原因:(1)当标在迁移箭头上的事件出现时1)首先执行引起迁移的事件中的动作2)迁移到新的状态,执行新状态中的内部动作(包括entry、exit、do以及用户定义的动作)执行do或用户定义的动作时,可以被外部的事件(将导致该状态的迁移)中断entry动作和exit动作不能被中断,并且它们总是要执行完(2)当迁移上未指明事件时,位于迁移箭头源头的状态中的内部动作全部执行完后,该状态迁移被自动触发190组合状态简单状态:没有子结构组合状态:被分解成区域,每个区域中包

126、含一或多个直接子状态正交状态(并发):当该状态活跃时,每个区域中的一个直接子状态并发地活跃非正交状态(非并发):在同一时刻组合状态中只有一个子状态是活跃的例如:汽车中的变速器有中间状态、前进状态和倒退状态,前进状态又有三个排挡子状态:1,2,3档SS191非正交(嵌套)状态非正交(嵌套)状态ForwardStopdown shiftup shiftdown shiftup shiftFirstSecondThirdpush Npush Rpush Npush FNeutralReverseTransmission192正交状态三局二胜比赛的正交状态三局二胜比赛的正交状态Playing rubb

127、erA VulnerabilityA winA winA wins rubberNot vulnerablevulnerableB VulnerabilityB winB winB wins rubberNotvulnerablevulnerable193画状态机图的步骤1)列出对象具有的所有状态状态分为起始状态(一个)、结束状态(若干个)和中间状态状态分为起始状态(一个)、结束状态(若干个)和中间状态2)标识导致状态转换的事件当一个对象接收到某个事件时,会导致从一个状态转换到另一当一个对象接收到某个事件时,会导致从一个状态转换到另一个状态,称为状态迁移(个状态,称为状态迁移(transiti

128、on)3)为状态和迁移定义状态变量和动作在状态迁移和在状态迁移和/或处于某个状态中时都可能需要执行一些相应或处于某个状态中时都可能需要执行一些相应的动作,综合这些动作,使得对象完成相应的功能的动作,综合这些动作,使得对象完成相应的功能194思考与练习手机开机时,处于空闲状态;当用户开始呼叫某人时,手机进入拨号状态;如果呼叫成功,进入通话状态;如果呼叫不成功,重新进入空闲状态。在空闲状态被呼叫,进入响铃状态;如果用户接听,进入通话状态;如果一分钟不接听,重新进入空闲状态。 195Answer:idledialingworkingringingfinish connection 196活动图活动图

129、活动图可看作一种特殊形式的状态机,用于对计算活动图可看作一种特殊形式的状态机,用于对计算流程和工作流建模,流程和工作流建模,描述完成一个操作所需要的活描述完成一个操作所需要的活动,或者是一个用例实例(场景)的活动。动,或者是一个用例实例(场景)的活动。活动图使用状态机图的符号表示活动图使用状态机图的符号表示与状态机图不同的是,活动图中动作状态之间的迁与状态机图不同的是,活动图中动作状态之间的迁移不是靠事件触发的,当动作状态中的活动完成时移不是靠事件触发的,当动作状态中的活动完成时迁移就被触发迁移就被触发 197活动图与状态图的区别活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流

130、程。状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。 198活动图与流程图的区别流程图着重描述处理过程,它的主要控制流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理之间结构是顺序、分支和循环,各个处理之间有严格的顺序和时间关系;而活动图描述有严格的顺序和时间关系;而活动图描述的则是对象活动的顺序关系所遵循的规则,的则是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的它着重表现的是系统的行为,而非系统的处理过程。处理过程。活动图能够表示并发活动的情形,而流程活动图能够表示并发活动的情形,而流程图做不到。图做不到。活动图是面向对象的,而流程

131、图是面向过活动图是面向对象的,而流程图是面向过程的。程的。 199Printer.Print( file )free disk spacedisk fullCustomerWindow.printAllCustomers( )ShowMessageBox“Disk full” onscreenShowMessageBox“Printing” onscreenCreate postscriptfileRemoveMessageBox活动图实例活动图实例1200ATM机“登录”用例的活动图201泳道对于程序设计而言,活动图没有指出每个活动是由哪个类负责。对于程序设计而言,活动图没有指出每个活动是由

132、哪个类负责。而对于建模而言,活动图没有表达出某些活动是由哪些人或哪而对于建模而言,活动图没有表达出某些活动是由哪些人或哪些部门负责。虽然可以在每个活动上标记出其所负责的类或者些部门负责。虽然可以在每个活动上标记出其所负责的类或者部门,但难免带出诸多麻烦。泳道的引用解决了这些问题。部门,但难免带出诸多麻烦。泳道的引用解决了这些问题。泳道将活动图中的活动化分为若干组,并把每一组指定给负责泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织即对象。这组活动的业务组织即对象。泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些

133、对象进行的。对象进行的。每个活动只能明确地属于一个泳道。每个活动只能明确地属于一个泳道。泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。象类)负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。进行,动作流和对象流允许穿越分隔线。 202储蓄交易的活动图储蓄交易的活动图203活动图的适用范

134、围活动图的适用范围对于以下情况可以使用活动图:(1)分析用例,即用图形化的方式描述用例的事件流;(2)理解牵涉多个用例的工作流,即描述系统的业务流程;(3)处理多线程应用。204活动图用来描述用例描述用例的活动图描述用例的活动图未付款未付款已付款已付款*对每一订单项对每一订单项有货有货缺货缺货取消并取消并退回订单退回订单收到订单收到订单付款认可付款认可检查检查订单项订单项制作并发放制作并发放提货单提货单更新库存更新库存制作并发放制作并发放缺货单缺货单制作并发放制作并发放采购单采购单205在在硬件硬件/软件映射软件映射方面,我们要考虑:方面,我们要考虑:系统的硬件配置是什么?系统的硬件配置是什么

135、?哪个结点负责哪个功能?哪个结点负责哪个功能?结点之间的通信是如何实现的?结点之间的通信是如何实现的?哪些服务是否是用现存的软件构件实现的哪些服务是否是用现存的软件构件实现的?这些构件是如何被封装的?这些构件是如何被封装的?206物理体系结构建模显示硬件的结构,包括不同的结点和这些结点之间显示硬件的结构,包括不同的结点和这些结点之间如何连接如何连接图示代码模块的物理结构和依赖关系,并展示对进图示代码模块的物理结构和依赖关系,并展示对进程、程序、构件等软件在运行时的物理分配程、程序、构件等软件在运行时的物理分配物理体系结构应回答以下问题:物理体系结构应回答以下问题:(1)类和对象物理上位于哪个程

136、序或进程?)类和对象物理上位于哪个程序或进程?(2)程序和进程在哪台计算机上执行?)程序和进程在哪台计算机上执行?(3)系统中有哪些计算机和其它硬件设备?它们如何相互连接?)系统中有哪些计算机和其它硬件设备?它们如何相互连接?(4)不不同同的的代代码码文文件件之之间间有有什什么么依依赖赖关关系系?如如果果一一个个指指定定的的文文件件被改变,那么哪些其它文件要重新编译?被改变,那么哪些其它文件要重新编译?用构件图和部署图来描述207构件图构件图构件图给出了组件以及组件之间的依赖关系。这里,构件可以是源代构件图给出了组件以及组件之间的依赖关系。这里,构件可以是源代码文件、二进制代码文件和可执行文件

137、码文件、二进制代码文件和可执行文件构件:构件:是自含的实体,可为其他构件或执行者提供服务是自含的实体,可为其他构件或执行者提供服务包中可包含组件,并且可在包之间定义依赖关系包中可包含组件,并且可在包之间定义依赖关系208209构件与类的区别(构件与类的区别(1/2)构件与类的相同点两者都有名称;都可以实现一组接口;都可以参与依赖关系;都可以被嵌套;都可以有实例;都可以参与交互210构件与类的区别(构件与类的区别(2/2)类是逻辑抽象,描述了软件设计的逻辑组织和意图;而构件则描述软件设计的物理实现,即每个构件体现了系统设计中特定类的实现,可以位于结点上构件是对其他逻辑元素,如类、协作等的物理实现

138、类包括属性和方法,构件通常只有操作,而且这些操作只能通过构件的接口才能使用211(1) 对源代码文件之间的关系建模对源代码文件之间的关系建模212(2) 对可执行文件之间的关系建模对可执行文件之间的关系建模213构件的接口构件图显示构件类型的定义、内部结构和依赖。构件是系统设计的模块化部分,它给出一组外部的接口,而隐藏了它的实现。在系统中满足相同接口的构件可以自由地替换。构件的接口:供应接口(providedinterface):供应接口声明该构件为其它请求者提供某种服务请求接口(requiredinterface):请求接口声明该构件请求其它供应者为其提供某种服务,以完成其功能需求。214构

139、件及其接口构件及其接口信用卡代理信用卡代理应用收费应用收费管理管理营业员访问营业员访问顾客访问顾客访问请求接口请求接口供应接口供应接口215构件的内部结构用内部结构图定义应用收费应用收费管理管理信用卡代理构件的内部结构图信用卡代理构件的内部结构图信用卡代理信用卡代理状况状况购买购买预购销售预购销售团体销售团体销售:售票员:售票员:营业员界面:营业员界面:销售亭界面:销售亭界面:管理员界面:管理员界面:票:票:信用卡收费:信用卡收费个体销售个体销售收费收费顾客访问顾客访问营业员访问营业员访问216构件图显示了系统中的构件(来自应用的软件单元)及其依赖关系信用卡代理信用卡代理顾客访问顾客访问营业员

140、访问营业员访问管理管理应用收费应用收费:信用卡收费:信用卡收费收费收费应用收费应用收费:营业员界面:营业员界面团体销售团体销售个体个体预订销售预订销售营业员访问营业员访问销售销售构件图构件图:票:票:管理员界面:管理员界面购买购买状况状况状况状况管理管理:售票员:售票员:销售亭界面:销售亭界面团体销售团体销售个体销售个体销售预订销售预订销售顾客访问顾客访问预订销售预订销售收费收费购买购买个体销售个体销售217组件图与类图、包图的关系组件在很多方面与类相同:二者都有名称和依赖关系、可以被嵌套、可以参与交互、同样可以实现一组接口。但是组件和类之间也存在着区别:组件可以是一个或几个类在文件中的存在。

141、组件表示物理上的模块。类是逻辑上的抽象,组件是客观上存在的物理抽象,所以组件可以存在于节点上,而类不能。类可以直接拥有属性和操作,而组件通常只拥有必须通过接口访问的操作。218组件图与类图、包图的关系基于类与组件之间的区别,也可以看到,类图侧重于系统的逻辑设计,而组件图更侧重于系统的物理设计及实现。包的设计主要是为了创建方便他人重用的包,因为人们通常不重用一个类,一般总是重用一组类。绝大多数系统都是由许多个包建立的,这些包相互依赖,建立了一个庞大的依赖关系图,根据发生变化的敏感度将类分组,基于同一个原因发生变化的类放在同一个包中。 219部署图部署图部署图描述了处理器、设备和软件构件运行时的体

142、系结构。在这个体系结构上可以看到某个结点上在执行哪个构件,在构件中实现了哪些逻辑元素(类、对象、协作等),最终可以从这些元素追踪到系统的需求分析(用况图)220DecNetTCP/IPTCP/IPClientA:Compaq Pro PCApplicationServer;Silicon GraphicsO2DatabaseServer:VAXClientB:Compaq Pro PC结点是运行时的计算资源,通常计算资源至少有一个存储器和良好的处理能力,如计算机、设备(如打印机,读卡机,通信设备)等结点既可看作类型,也可看作实例结点通过版型来区分不同种类的资源,如computer结点之间的关联

143、表示通信路径,可用版型来区分不同种类的通信路径,如TCP/IP221artifactTransaction.jardatabaseaccount DBServer:Bank serverClient:ATM KioskartifactATM-GUI.jarTransactionmanifestupdate部署图部署图制品(artifact)是一个物理实现单元,如文件。可以用版型来区分不同种类的制品。如果一个制品实现了一个构件或其它类,可以从制品到实现它的构件之间画一个虚线箭头,并在箭头上附加关键词manifest,这种关系称为“体现”222面向对象设计的基本过程面向对象设计的基本过程(1)设计

144、对象和类)设计对象和类(2)设计系统结构)设计系统结构(3)设计问题域部分)设计问题域部分(4)设计人机交互界面)设计人机交互界面(5)设计数据管理部分)设计数据管理部分(6)设计系统内部的运行管理机制)设计系统内部的运行管理机制(7)优化设计)优化设计223类类/对象设计的方针对象设计的方针信息隐蔽信息隐蔽消息限制消息限制狭窄界面狭窄界面强内聚强内聚弱耦合弱耦合显式信息传递显式信息传递派生类的使用派生类的使用抽象类抽象类224管理管理对象象设计在在对对象象设设计计中中,管管理理要要解解决决的的两两个个主主要要问问题是:题是:1)处理不断增加的沟通复杂度。)处理不断增加的沟通复杂度。2)保持决

145、策与文档的一致性。)保持决策与文档的一致性。225问题域设计问题域设计将面向对象分析产生的类图直接变成设计,根据将面向对象分析产生的类图直接变成设计,根据具体的实现环境,对其进行调整、增补和改进具体的实现环境,对其进行调整、增补和改进在类库中查找已有的可复用的类在类库中查找已有的可复用的类引入一个附加的公共服务集合类引入一个附加的公共服务集合类根据编程语言的特点,对于多继承关系进行调整根据编程语言的特点,对于多继承关系进行调整确定各种关系的实现方式确定各种关系的实现方式为了达到实用,可以考虑一些用于为其他类服务的类,为了达到实用,可以考虑一些用于为其他类服务的类,如进行输入数据验证的类如进行输

146、入数据验证的类226用户界面设计根据用户要求和具体的根据用户要求和具体的GUI,设计系统的,设计系统的人机交互界面人机交互界面建立初始命令层,如菜单条、菜单项和快捷键建立初始命令层,如菜单条、菜单项和快捷键等等设计需要生成的报表和报告格式,每一种报表设计需要生成的报表和报告格式,每一种报表或报告应该对应一个类或报告应该对应一个类设计安全、登录、设置和业务功能等的窗口,设计安全、登录、设置和业务功能等的窗口,每一种窗口对应一个类每一种窗口对应一个类根据所选择的编程语言,建立上述设计的界面根据所选择的编程语言,建立上述设计的界面交互类交互类227将用例行为分配到对象类通过建立交互图(顺序图和协作图),将用例的行为分布通过建立交互图(顺序图和协作图),将用例的行为分布到对象类中到对象类中 以学生课程注册系统中的用例以学生课程注册系统中的用例“注册课程注册课程”为例为例228229“ “注册课注册课注册课注册课程程程程” ”顺序图顺序图顺序图顺序图230“注册课程”协作图231

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号