
第4章(构件+配置图)4知识讲解.ppt
113页l用例图显示一组用例,参与者以及它们之间的关系用于需求分析阶段,即确定“谁使用系统以及做什么”l画好用例图是由软件需求到最终实现的第一步l用例图包括以下3方面内容1)用例(Use Case)(2)参与者(Actor)(3)关系(依赖、泛化以及关联)l用例图的主要元素是用例和参与者:所谓用例是指对系统提供的功能(或系统的用途)的描述;参与者是指可能使用用例的人或外部系统两者的关系是“谁使用了哪个用例”.l用例图着重于从系统外部参与者的角度来描述系统需要提供哪些功能,并且指明这些功能的参与者是谁一、用例图(Use Case Diagrams)1、参与者(Actor) l参与者(Actor)是系统外部的一个实体(可以是任何的事物或人),它以某种方式参与了用例的执行过程l参与者通过向系统输入或请求系统输入某些事件来触发系统的执行参与者是系统之外,透过系统边界与系统进行有意义交互的任何事物(人或事物)l在处理参与者时,应考虑其参与系统的身份,而不是人名或工作名l在UML中,参与者用人形图符表示l但参与者未必是人,可以是一个外部系统 参与者识别思路l谁使用该系统l谁改变系统的数据l谁从系统获取信息l谁需要系统的支持以完成日常工作任务l谁负责维护、管理并保持系统正常运行l系统需要应付那些硬件设备l系统需要和那些外部系统交互l谁对系统运行产生的结果感兴趣识别思路:l谁使用该系统l谁改变系统的数据 l谁从系统获取信息 l谁需要系统的支持以完成日常工作任务 l谁负责维护、管理并保持系统正常运行l系统需要应付那些硬件设备l系统需要和那些外部系统交互 l谁对系统运行产生的结果感兴趣 操作员,管理员操作员,管理员操作员,管理员领料员,退料员,操作员,管理员,供应商管理员生产系统, 供应商系统操作员,管理员,领料员,退料员库存管理系统的参与者2、用例(Use Case) 用例描述了系统的功能需求,是系统的一组动作序列的描述.用例的本质是用户与计算机之间的一次交互作用。
在UML的概念中用例是系统作出的一系列动作,而参与者能够察觉到这一系列动作的结果UML中用例用一个椭圆来表示,用例的名字可以写在椭圆的内部或下方用例的特点识别用例 l识别用例最好的办法就是从分析系统的参与者开始,先列出所有的参与者,在根据每个参与者列出与它有关的用例在识别用例的过程中,通过以下的几个问题可以帮助识别用例:(1)参与者希望系统提供什么功能?(2)系统是否存储和检索信息?如果是,这个行为由哪个参与者触发?(3)当系统改变状态时,通知参与者吗?(4)存在影响系统的外部事件吗?(5)是哪个参与者通知系统这些事件?用例分析l用例分析是处于系统的需求分析阶段,这个阶段应该尽量的避免去考虑系统实现的细节问题也就是说,用例描述的是一个系统做什么,而不是怎么做案例2:零件销售系统案例2:零件销售系统的参与者案例2:零件销售系统的用例注册会员登录管理订单检索零件购物结帐修改个人资料查询历史纪录货管员登录管理价格管理库存打印报表开放帐户经理登录检索会员检查帐户潜在会员会员货管员经理时间案例2:零件销售系统注册会员登录管理订单检索零件购物结帐修改个人资料查询历史纪录货管员登录管理价格管理库存打印报表开放帐户经理登录检索会员检查帐户潜在会员会员货管员经理时间3、关系l参与者与用例之间关联关系l用例与用例之间包含关系 (include)扩展关系 (extend)泛化关系 (generalization)l参与者与参与者之间泛化关系 (generalization)关系参与者与用例之间l关联关系 描述参与者与使用用例之间的关系。
在UML中,关系用实线表示,实线可以有箭头,也可以没有箭头l例:参与者与用例通过关联相连1)包含关系(include) 包含关系中一个用例总是使用另一个用例的功能* 如果两个以上用例有大量一致的功能,则可以将这个功能分解到另一个用例中 * 一个用例的功能太多时,可以用包含关系建模两个小用例 包含关系中基用例本身是不完整的l例1:本例中,用例“Check Credit” 检查输入的信用卡号是否有效,信用卡是否有足够的资金Purchase Ticket Check Credit用例间的关系包含关系2)扩展关系(extend)l扩展关系允许一个用例(可选)扩展另一个用例的功能l当某个新用例在原来的用例基础上增加了新的步骤序列,则原用例被称作基用例,这种关系被称为扩展关系l基用例可以单独存在,但在一定的条件下,他的行为可以被另一个用例的行为延伸扩展只能发生在基用例的序列中某个特定的点上,这个点叫扩展点l扩展关系中基用例本身是完整的用例间的关系扩展关系包含关系与扩展关系的区别用例间的关系泛化关系3)泛化关系(也称类属或概括关系) l泛化关系其实是子类与父类的关系象类之间的泛化关系一样,用例和参与者也可以继承另一个用例和参与者。
关系参与者与参与者之间l泛化关系CustomerCompany Personal关系类型说明表示符号关联(association)Actor和use case之间的关系泛化(generalization) Actor之间或use case之间的关系包含(include)use case之间的关系 扩展(extend)use case之间的关系 参与者、用例间的关系类型 用例的描述事件流建立实际的系统,还需要更多的细节,这些细节写在事件流文档中事件流是通过文字描述一个用例的行为,说明用例的逻辑流程发起用例的参与者是谁,用例的前置条件是什么,主事件流,其他事件流和完成后的后置条件是什么,从用例中获益的参与者是谁事件流包括:简要说明、前置条件、主事件流、其他事件流和后置条件用例事件流l简要说明:每个用例应有一个相关说明,描述该用例的作用l前置条件(前提条件):列出开始用例之前必须满足的条件l主事件流:显示用例从开始到结束的完整的正常流程l其他事件流:显示异常条件或错误l后置条件(事后条件):用例结束后系统应具备的状态用例 “取钱”的事件流 简要说明:客户可以从ATM机上取出自己帐目上的部分或者全部存款。
前提条件:无 主事件流: (见下页)用例 “取钱”的事件流1.客户将卡插入ATM机,开始用例2.ATM显示欢迎消息并提示客户输入密码3.客户输入密码4.ATM确认密码有效如果无效则执行其他事件流A1如果与主机联接有问题,则执行异常事件流E15.ATM提供以下选项:存钱,取钱,查询 6.用户选择取钱选项 7.ATM提示输入所取金额8.用户输入所取金额 9.ATM确定该帐户是否有足够的金额如果余额不够,则执行其他事件流A2,如果与主机联接有问题,则执行异常事件流E1 10.ATM从客户帐户中减去所取金额 11.ATM向客户提供要取的钱 12.ATM打印清单 13.ATM退出客户的卡,用例结束用例 “取钱”的事件流其他事件流A1:输入无效密码 1.ATM告诉客户该密码错误 2.ATM退出客户的卡,用例结束其他事件流A2:余额不足1. ATM告诉客户该帐户余额不足2.ATM退出客户的卡,用例结束 异常事件流E1:连接主机出现错误1. ATM告诉客户连接主机出现错误2. ATM在错误日志记下错误3.ATM退出客户的卡,用例结束 事后条件:无用例图的创建l例:网上选课系统二、 类图l 类图(class diagram)描述了类与类之间的静态关系。
它不仅定义系统中的类,表示类之间的联系(关联、依赖、聚合等),还包括类的内部结构(类的属性和操作)l类图描述的是一种静态关系,在系统的整个生命周期都是有效的类的类型l类分为3种类型:实体类(entity)、边界类(boundary)和控制类(control)类的类型(版型)boundarycontrolentity类的版型实体类(entity)l实体类保存要放入永久存储体的信息l每个实体类在数据库中有相应的表正常情况下,我们们把每个实体类类映射为为一个表,每个属性映射为为一个列 l例:定义实体类Student标签形式(Label)图标形式(Icon)类的版型边界类(boundary)l边界类位于系统与外界的交界处直接与外部设备交互的类直接与外部系统交互的类l包括窗体、对话框、报表,还有打印机和扫描仪等硬件接口以及与外部系统的接口l通常,一个参与者与一个用例之间的交互对应一个边界类边界类接受来自参与者的信息,这些信息可以被实体类和控制类使用l例:类的版型控制类(control)l控制类负责协调边界类和实体类的工作,通常在现实世界中没有对应的事物,它负责接收边界类的信息,并将其分发给实体类。
l一般,一个用例对应一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用l控制类是可选的,本身没有任何业务功能,但可以向其他的类发消息,控制总体逻辑流程类的创建l例:网上选课系统中的类类的关系类的关系有:l泛化 Generalizationl关联 Association连接 Link聚合 Aggregation组合 Compositionl依赖 Dependency类的关系泛化(见课程设计书P97)l是一般和特殊的关系 Is a kind ofl泛化即类的继承,子类继承父类属性和操作l子类可以应用在父类对象可能出现的地方类的关系泛化泛化关系的实例l例:选课系统的泛化关系的分析类的关系关联l关联是一种结构关系,它描述了给定类之间的语义连接,是两个类或多个类之间的一个关系 类的关系关联l如果两个类都彼此知道对方,则应该 使用实线来表示关联关系;如果只有其中一个类知道该关联关系,则使用开箭头表示 l l在上图中,我们同时看到了继承关系和两个关联关系CDSalesReport类继承自Report类一个CDSalesReport类与一个CD类关联,但是CD类并不知道关于CDSalesReport类的任何信息。
CD类和Band类都彼此知道对方,两个类彼此都可以与一个或者多个对方类相关联 类的关系关联l双向连接代码类的关系关联l单向连接代码类的关联-聚合、组合类的关联的实例l例:选课系统的关联关系的分析类的关系依赖l表示类之间的使用关系当客户类的操作需要提供者类的参数客户类的操作返回提供者类的值客户类的操作在实现中使用提供者类的对象客户类提供者类案例1:零件销售系统的类图案例2:学校信息管理系统的类图类图l一个系统通常要创建几个类框图:有些要显示类及其关系;有些显示类的子集,包括属性和操作;还有些显示类包及包之间的关系,把概念上或语义上相近的模型元素纳入一个包 l默认情况下,有一个主类框图,直接放在逻辑视图(Logic View)下面,在复杂的系统中,这个类框图显示模型中的类包及其关系,即包图包中存放语义上相近的多个类l在大型系统中,包图是一种重要的工具有些专家建议,当整个系统的类图不能压缩到一张A4纸时,就应该用包图例:例:Java程序 “HelloWorld”的 UML建模import java.awt.Graphics;public class HelloWorld extends java.applet.Applet public void paint(Graphics g) g.drawString(“Hello World!”,20,30); 在UML中,对上述程序的建模如右图:练习:用Rose画出零件销售系统的类图三、 对象图l在UML中,对象图(Object Diagram)是表示在某一时刻一组对象以及它们之间的关系的图。
l对象图可以被看作是类图在系统某一时刻的实例l对象之间的连接(link)是类之间关联关系的实例l对象图标和类图基本一样,但对象名下面要带下划线,对象名位于冒号的左边,该对象所属的类名位于冒号的右边Rose不支持对象图,需要用其他的图来代替l例:类图和对象图的区别:Haier Washer:Washing Machine:Washin。
