第5章-系统建模.ppt
- 文档编号:18906774
- 上传时间:2024-02-11
- 格式:PPT
- 页数:116
- 大小:2.78MB
第5章-系统建模.ppt
《第5章-系统建模.ppt》由会员分享,可在线阅读,更多相关《第5章-系统建模.ppt(116页珍藏版)》请在冰点文库上搜索。
SoftwareEngineering第五章系统建模目标目标v理解如何用图形模型来表示软件系统v理解为什么需要不同类型的模型以及基本的系统建模角度,如上下文、交互、结构、行为等v介绍统一建模语言中定义的一些图表模型,以及如何在系统建模中使用这些图v理解模型驱动工程中包含的思想,从结构模型和行为模型自动生成系统系统建模系统建模v系统建模就是建立系统抽象模型的过程,每一个模型表示一个系统不同的角度或方面。
v系统建模通常意味着用一些图形符号表示系统。
v统一建模语言,形式化(数学)模型v系统模型可以帮助分析员更好理解系统的功能,易于与用户沟通。
现有和计划建立的模型现有和计划建立的模型v在需求工程中要用到现有系统的模型。
v在需求工程中使用新系统的模型有助于解释其他信息持有者提出的需求。
工程师使用这些模型来讨论设计想法,并为系统实现进行论证。
不同的模型角度不同不同的模型角度不同v从外部来看,对系统上下文或系统环境建模v从交互上看,对系统与环境之间或一个系统各组成部分之间的交互模型v从结构上看,对系统的体系结构和系统处理的数据的结构建模v从行为上看,对系统的动态行为和对事件的响应方式建模UMLUML统一建模语言统一建模语言v公认的面向对象建模语言出现于20世纪70年代中期。
从1989年到1994年,其数量从不到十种增加到了五十多种。
在众多的建模语言中,语言的创造者努力推崇自己的产品,并在实践中不断完善。
但是,OO方法(Object-OrientedMethod,面向对象的方法)的用户并不了解不同建模语言的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模语言,于是爆发了一场“方法大战”。
vUML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。
它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
v在美国,截止1996年10月,UML获得了工业界、科技界和应用界的广泛支持,已有700多个公司表示支持采用UML作为建模语言。
1996年底,UML已稳占面向对象技术市场的85%,成为可视化建模语言事实上的工业标准。
1997年11月17日,OMG采纳UML1.1作为基于面向对象技术的标准建模语言。
UMLUML的发展历史的发展历史UMLUML统一建模语言统一建模语言v面向对象建模的标准建模语言。
v活动图v用例图v时序图v类图v状态图图形建模的用途图形建模的用途v为讨论现有系统或提出新功能的系统提供便利v论证现有系统v作为详细的系统描述,该描述可用来产生系统实现5.15.1上下文模型上下文模型v上下文模型用来描述一个系统的运行环境。
用它来界定系统的边界。
v应该在过程的早期阶段完成这些判断,以便限制系统成本以及分析系统需求和设计中需要花费的时间。
系统边界系统边界v系统边界的界定可以帮助我们确定哪些是系统内部的,哪些是系统外部的。
v系统边界的位置对需求分析有深远的影响。
MHC-PMSMHC-PMS系统的上下文系统的上下文自动柜员机系统自动柜员机系统v上下文分析问题领域和外部元素之间的关系信息安全系统自动柜员机系统维护系统支行柜台系统使用数据库支行账户系统账户数据库过程模型过程模型v上下文模型只是简单的表示了环境中包含的其他模型。
并没有显示即将开发的系统在环境中如何被使用的。
v过程模型可以显示出来即将开发的系统在业务流程中是如何被使用的。
vUML中的活动图可以定义业务流程模型。
非自愿隔离的过程模型非自愿隔离的过程模型5.25.2交互模型交互模型v系统和用户的交互可以帮助我们更好的定义用户需求。
v系统和系统的交互重点放在数据传递时可能出现的问题。
5.2.15.2.1用例模型用例模型v用例模型被用来支持需求导出。
它是UML中的模型图之一。
v用例,参与者,关系每一个用例表示一个具体的任务参与者可能是人,也可能是其他系统传输数据用例传输数据用例AusecaseintheMHC-PMS用例用例“传输数据传输数据”的表格描述的表格描述MHC-PMS:
传输数据数据参与者分诊医生,病人记录系统(PRS)描述分诊医生会将数据从MHC-PMS系统传递给更通用的病人记录数据库,该数据库由卫生主管部分维护。
信息传递也许是更新个人信息,也许是简短记录病人的诊断和诊治数据病人的个人信息,治疗摘要激励由分诊医生发出的用户指令响应来自关于PRS已经更新的确认信息注释分诊医生必须具有适当的信息安全许可以便访问病人的信息和PRS系统分诊医生角色的用例分诊医生角色的用例用例模型用例模型v用例模型用例模型用来记录系统的需求,它提供系统与用户及其他参与者的一种通信手段。
v用例图的4个基本组件参与者(Actor)用例(UseCase)关系(Relationship)系统边界用例模型用例模型-Actor-ActorvActor用例图显示了系统和系统外实体之间的交互。
这些实体被引用为执行者。
执行者代表角色,可以包括:
用户,外部硬件和其他系统。
执行者往往被画成简笔画小人。
也可以用带actor关键字的类矩形表示。
vActor之间的关系执行者可以详细的泛化其他执行者:
用例模型用例模型-执行者执行者v获取执行者(角色)谁使用系统的主要功能(主要使用者)?
谁需要系统支持他们的日常工作?
谁来维护、管理系统使其能正常工作(辅助使用者)?
系统需要控制哪些硬件?
系统需要与其他哪些系统交互?
对系统产生的结果感兴趣的是哪些人?
v角色间的关系一般和特殊用例模型用例模型-UseCase-UseCasevUseCase(用例)用例是有意义的单独工作单元。
它向系统外部的人或事提供一个易于观察的高层次行为视图。
用例的标注符号是一个椭圆。
vActor与UseCase使用用例的符号是带可选择箭头的连接线,箭头显示控制的方向。
用例模型用例模型-用例用例v获取用例识别用例最好的方法就是从分析系统的参与者开始,考虑每一个参与者是如何使用系统的。
v在识别用例的过程中,通过回答以下几个问题,系统分析者可以获得帮助。
特定参与者希望系统提供什么功能。
系统是否存储和检索信息,如是,由哪个参与者触发。
当系统改变状态(内部事件)时,是否通知参与者。
是否存在影响系统的外部事件,哪个参与者通知系统这些事件。
用例模型用例模型-UseCase-UseCasev用途连接器(usesconnector)可以有选择性的在每一个端点有多重性值,如图,显示客户一次可能只执行一次取款交易。
但是银行可以同时执行许多取款交易。
用例模型用例模型-UseCase-UseCasev用例间的关系包含关系(include)扩展关系(extend)泛化关系(generalization)用例模型用例模型-用例图中的关系用例图中的关系v包含关系(include)一个用例可以简单地包含其它用例具有的行为,并把它所包含的用例行为作为自身行为的一部分,这被称作包含关系。
包含关系把几个用例的公共步骤分离成一个单独的被包含用例。
被包含用例称作提供者用例,包含用例称作客户用例,提供者用例提供功能给客户使用。
用例间的包含关系允许包含提供者用例的行为到客户用例的事件中。
用例模型用例模型-用例图中的关系用例图中的关系用例模型用例模型-用例图中的关系用例图中的关系v扩展关系一个用例也可以被定义为基础用例的增量扩展,这被称作扩展关系,扩展关系是把新的行为插入到已有的用例中的方法。
同一个基础用例的几个扩展用例可以在一起应用。
基础用例的扩展增加了原有的语义,此时基础用例而不是扩展用例被作为例子使用。
基础用例不必知道扩展用例的任何细节,它仅为其提供扩展点。
事实上,基础用例即使没有扩展用例也是完整的,这点与包含关系有所不同。
一个用例可能有多个扩展点,每个扩展点可以出现多次。
但是一般情况下,基础用例的执行不和涉及到扩展用例,只有特定的条件发生,扩展用例才被执行。
扩展关系为处理异常或构建灵活的系统框架提供了一种有效的方法。
用例模型用例模型-用例图中的关系用例图中的关系用例模型用例模型-用例图中的关系用例图中的关系v泛化关系(Generalization)一个用例可以被特别列举为一个或多个用例,这被称为用例泛化。
当父用例能够被使用时,任何子用例也可以被使用。
用例模型用例模型-边界边界v系统边界用于界定系统功能范围,描述该系统功能的用例都置于其中,而描述外部实体的执行者都置于其外。
用例模型用例模型-用例图的建立步骤用例图的建立步骤v用例图的建立步骤找出系统外部的活动者和外部系统,确定系统的边界和范围。
确定每一个活动者所希望的系统行为和所有系统事件。
把这些系统行为命名为用例。
把一些公共的系统行为分解为一批新的用例,供其它的用例引用。
把一些变更的行为分解为扩展用例。
绘制用例图。
用例模型用例模型-用例图的建立步骤用例图的建立步骤v用例图的建立步骤(续)区分主业务流和例外情况的事件流。
可以把表达例外的情况的事件流的用例图画成一个单独的子用例图。
细化用例图,解决用例间的重复与冲突问题,简化用例中的对话序列,用例图可以有不同的层次(包),高层次系统的用例可以分解为若干个下属子系统中的子用例。
用例模型用例模型-用例驱动的开发用例驱动的开发v用例驱动的开发在每一次增量或迭代中,可以选择一个或多个用例来实现,直到所有用例都实现,系统完成为止,该方法被称为用例驱动开发。
用例驱动开发首先创建完整的用例集合,确定用例的优先级,基于用例的优先级、成本和时间,把它们安排在不同的开发周期中。
5.2.25.2.2时序图时序图v时序图主要用来为参与者与系统对象之间的交互和对象与对象之间的交互建模v时序图表示在特定用例中的交互发生顺序查看病人信息系统的时序图查看病人信息系统的时序图传输数据的时序图传输数据的时序图顺序图顺序图v顺序图顺序图是交互图的一种形式,它显示对象沿生命线发展,对象之间随时间的交互表示为从源生命线指向目标生命线的消息。
顺序图能很好地显示那些对象与其它那些对象通信,什么消息触发了这些通信,顺序图不能很好显示复杂过程的逻辑。
顺序图顺序图v生命线一条生命线在顺序图中代表一个独立的参与者,表示为包含对象名的矩形。
对象下面延伸的虚线,表示对象的生存时间。
如果它的名字是“self”,则说明该生命线代表控制顺序图的类元。
v有时,顺序图会包含一个顶端是执行者的生命线。
这情况说明掌握这个顺序图的是用例。
边界,控制和实体元素也可以有生命线。
v消息消息显示为箭头。
消息可以完成传输,也可能丢失和找回,它可以是同步的,也可以是异步的,即可以是调用,也可以是信号。
如图,第一条消息是同步消息(标为实箭头)完成传输,并隐含一条返回消息。
第二条消息是异步消息(标为实线箭头),第三条是异步返回消息(标为虚线)。
v执行发生向下延伸的细条状矩形表示执行事件或控制焦点的激活。
在上图中有三个执行事件。
第一个是源对象发送两条消息和收到两条回复。
第二个是目标对象收到一条同步消息并返回一条回复。
第三个是目标对象收到一条异步消息并返回一条回复。
v迷路消息和拾取消息迷路消息是那些发送了却没有到达指定接收者,或者到达的接收者不再当前图中。
拾取消息是收到来自那些未知的发送者,或者来自没有显示在当前图的发送者的消息。
它们都表明是去往或来自一个终点元素。
v生命线开始与结束生命线可以在顺序图时间刻度范围内创建和销毁,图中,生命线被停止符号(叉号)终止。
v时间和期限约束消息默认显示为水平线。
因为生命线显示为沿屏幕向下的时间通道,所以当给实时系统建模,或是有时间约束的业务过程建模,考虑执行动作所需时间长度是很重要的。
因此可以给消息设置一个期限约束,这样的消息显示为下斜线。
v复合片段顺序图不适合表达复杂的过程逻辑。
在一种情况下,有许多机制允许把一定程度的过程逻辑加入到图中,并把它们放到复合片段的标题下。
复合片段是一个或多个处理顺序被包含在一个框架中,并在指定名称的环境下执行。
片段可以是:
选择性片段(显示“alt”)为ifthenelse结构建模。
选项片段(显示“opt”)为switch(开关)结构建模。
中断片段对被处理事件的可选择顺序建模,而不是该图的其他部分。
v复合片段并行片段(显示“par”)为并发处理建模。
弱顺序片段(显示“seq”)包含了一组消息,这组消息必须在后继片段开始之前被处理。
但不会把片段内消息的先后顺序强加到不共享同一条生命线的消息上。
严格顺序片段(显示“strict”)包含了一系列需要按照给定顺序处理的消息。
非片段(显示“neg”)包含了一系列不可用的消息。
关键片段具有关键部分。
忽略片段声明一个没有意义的消息,如果它出现在当前上下文中。
v复合片段考虑片段与忽略片段相反,不包含在考虑片段内的消息都应该被忽略。
断言片段(显示“assert”)标明任何没有显示为声明操作数的顺序都是无效的。
循环片段包含一系列被重复的消息。
v门门是连接片段内消息和片段外消息的连接点。
在EA中,门显示为片段框架上的小正方形。
作用为顺序图与页面外的连接器。
用来表示进来的消息源,或者出去消息的终点。
v内部通信内部消息表现为一个操作的递归调用,或一个方法调用属于同一个对象的其他方法。
显示为生命线上执行事件的嵌套控制焦点。
一个顺序图的实例一个顺序图的实例5.35.3结构模型结构模型v软件的结构模型表示的是系统的构成,表示为构成系统的组件以及组件之间的关系v静态模型表示系统设计的结构;动态模型表示系统执行时的构成。
v当我们讨论和设计体系结构时,我们会去建立系统的结构模型5.3.15.3.1类图类图v类图表示系统中的类和这些类之间的关联。
类图类图v类图类图展示了面向对象系统的构造模块。
描绘了模型或部分模型的静态视图,显示它包含的属性和行为,而不是详细描述操作的功能或完善方法。
类图最常用来表达多个类和接口之间的关系。
泛化(Generalizations)聚合(aggregations)关联(associations)分别是类之间继承,复合或应用,及连接的表现。
v类(Classes)类是定义对象所具有的属性和行为的元素。
行为用类能理解的合适消息和适合每条消息的操作来描述。
类中也可能定义约束,标记值,构造型。
v类的标柱(ClassNotation)类用矩形表示。
除类的名称外,还可以选择性地显示属性和操作。
分栏分别用来显示类的名称,属性和操作。
ConsultationConsultation类类v如何确定类确定实体类。
首先对系统将要存储的信息进行聚类分析,形成实体类。
然后分析实体类间的关系。
构建适当的子系统,确定控制类,通过控制类和实体模型进行交互(协调类)。
建立边界类(UI类、设备接口类、通信接口)。
v接口(Interfaces)是实施者同意满足的行为规范,是一种约定。
实现一个接口,类必需支持其要求的行为,使系统按照同样的方式,即公共的接口,处理不相关的元素。
v关联(Associations)关联表明两个模型元素之间有关系,通常用在一个类中被实现为一个实例变量。
连接符可以包含两端的命名的角色,基数性,方向和约束。
关联是元素之间普通的关系。
如果多于两个元素,也可以使用菱形的关联关系。
当从类图生成代码时,关联末端的对象将变成目标类中实例变量。
示例playsFor将变成Player类中的实例变量。
UMLUML类和关联类和关联MHC-PMSMHC-PMS中的类和关联中的类和关联v泛化(Generalizations)泛化被用来说明继承关系。
连接从特定类元到一般类元。
泛化的含义是源类继承了目标类的特性。
泛化层次结构泛化层次结构添加了细节的泛化层次结构添加了细节的泛化层次结构v关联类(AssociationClasses)关联类是一个允许关联连接有属性和操作的构造。
v聚合(Aggregations)聚合通常被用来描述由更小的组件所构成的元素。
聚合关系表示为白色菱形箭头指向目标类或父类。
聚合的更强形式-组合聚合(强聚合)-显示为黑色菱形箭头,用来组合每次最大化的包含组件。
如果一个组合聚合的父类被删除,通常与他相关的所有部分都会被删除,但是,如果一个部件从组合中去掉,将不用删除整个组合。
组合是可迁,非对称的关系和递归的。
聚合关系聚合关系v嵌套(Nestings)嵌套连接符用来表示源元素嵌套在目标元素中。
图示显示“innerclass”的定义,尽管在EA中,更多地按照着他们在项目层次视图中的位置来显示这种关系。
类图类图v依赖关系(依赖关系(DependencyDependency)v对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
v与关联关系不同的是,依赖关系是以参数变量的形式传入到依赖类中的,依赖是单向的,要避免双向依赖。
一般来说,不应该存在双向依赖。
v依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖。
v依赖关系表现在局部变量,方法的参数,以及对静态方法的调用classCarStaticvoidRUN();classHouse;classPersonvoidbuy(Car&car)Car.RUN;voidbuy(House*pHouse);v关联关系(关联关系(associationassociation)v对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
v表示类与类之间的联接,有双向关联和单向关联,双向关联有两个箭头或者没有箭头,单向关联有一个箭头,表示关联的方向。
v关联关系以实例变量的形式存在,在每一个关联的端点,还可以有一个基数(multiplicity),表明这一端点的类可以有几个实例。
v双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
v关联关系是使用实例变量来实现。
/单向关联classPerson;classFriend/Person*mpPerson;PersonP=newPerson();/双向关联classA;classBA*pA;classAB*pB;/自身关联classCC*pC;v聚合关系图:
v组合关系图:
雁群类:
publicclassGooseGrouppublicGoosegoose;publicGooseGroup(Goosegoose)this.goose=goose;v聚合关系的类里含有另一个类作为参数雁群类(GooseGroup)的构造函数中要用到大雁(Goose)作为参数把值传进来大雁类(Goose)可以脱离雁群类而独立存在大雁类publicclassGoosepublicWingswings;publicGoose()wings=newWings();v组合关系的类里含有另一个类的实例化大雁类(Goose)在实例化之前一定要先实例化翅膀类(Wings)两个类紧密耦合在一起它们有相同的生命周期翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在5.45.4行为模型行为模型v行为模型是描述系统运行时的动态行为的模型,表示当系统响应来自所处环境的刺激时所发生的或有可能发生的事情。
数据事件5.4.15.4.1数据驱动的建模数据驱动的建模v数据驱动模型描述一个动作序列,该动作序列涉及输入数据的处理和相关输出的产生。
vDFDv活动图胰岛素泵操作过程胰岛素泵操作过程活动图活动图v活动图UML中,活动图用来展示活动的顺序。
显示了从起始点到终点的工作流,描述了活动图中存在于事件进程的判断路径。
活动图可以用来详细阐述某些活动执行中发生并行处理的情况。
活动图对业务建模也比较有用,用来详细描述发生在业务活动中的过程。
v活动活动是行为参数化顺序的规范。
活动被表示为圆角矩形,内含全部的动作,工作流和其他组成活动的元素。
v动作一个动作代表活动中的一个步骤。
动作用圆角矩形表示。
v动作约束动作可以附带约束,该图显示了一个带前置条件和后置条件的动作。
v控制流控制流显示一个动作到下一个动作的流。
表示为带箭头实线v初始节点一个开始或起始点用大黑圆点表示v结束节点结束节点有两种类型:
活动结束节点和流结束节点。
活动结束节点表示为中心带黑点的圆环。
流结束节点表示为内部为叉号的圆环。
这两种不同类型节点的区别为:
流结束节点表明单独的控制流的终点。
活动结束终点是活动图内所有控制流的结束。
v对象和对象流对象流是对象和数据转递的通道。
对象显示为矩形。
对象流显示为带箭头的连接器,表明方向和通过的对象。
一个对象流在它的至少一个终端有一个对象。
在上图中,可以采用带输入输出引脚的速记标柱表示。
数据存储显示为带datastore关键字的对象。
v判断节点和合并节点判断节点和合并节点是相同标注:
菱形。
它们可以被命名。
从判断节点出来的控制流有监护条件,当监护条件满足时,可以对流控制。
下图显示了判断节点和合并节点的使用。
v注合并节点直接将控制流传递通过。
如果两个或更多的输入量到达合并节点。
则它的输出流指定的动作会被执行两次或更多次。
v分叉和结合节点分叉和结合节点有同样的标柱:
垂直或水平条(方向取决于工作流从左到右,还是从上到下)。
它们说明了控制的并发线程的起始和终点,下图显示他们的使用示例。
v注:
结合节点同步两个输入量,产生一个单独的输出量。
来自结合节点的输出量要接收到所有的输入量后才能执行。
v扩展域扩展域是会执行多次的结构活动域。
输入输出扩展节点表示为一组“3厢”,代表多个选择项。
关键词iterative,parallel或stream显示在区域的左上角v异常处理器异常处理器在活动图中可以建模。
v可中断活动区可中断活动区环绕一组可以中断的动作。
在下面非常简单的例子中:
当控制被传递到结束订单CloseOrder动作,定单处理ProcessOrder动作会执行直到完成,除非CancelRequest取消请求中断被接受,这会将控制传递给CancelOrder动作。
v分割一个活动分割显示为垂直或水平泳道。
如图中,分割被用来在活动图中分隔动作,有在accountingdepartment中执行的,有在customer中执行的。
5.4.25.4.2事件驱动模型事件驱动模型v事件驱动模型表示系统对内外部事件的响应方式。
微波炉的状态图微波炉的状态图v状态图(statecharts)状态图用来详细描述系统中,对象经历的状态转移和变化。
它们显示一个对象如何从一个状态到另一个状态,以及控制这种变化的规则,通常有一个开始和结束状态。
v状态状态被表示为圆角矩形,状态名写在里面。
v起始和结束状态初始状态表示为实心黑圆环,可以标注名称。
结束状态表示为中心带黑点圆环,也可以被标注名称。
v转移一个状态到下一个状态的转移表示为带箭头实线。
转移可以有一个“Trigger”触发器,一个“Guard”监护条件和一个“effect”效果。
“Trigger”触发器是转移的起因,它可以是某个条件下的一个信号,一个事件,一个变化或一个时间通路。
“Guard”监护是一个条件,而且必须为真,以便于让触发器引起转移。
效果Effect是直接作用到对象上的一个动作,该对象具有做为转移结果的状态机。
v状态活动在上面的状态转移示例中,一个效果与该转移相关联。
如果目标状态有多个转移到达,并且每一个转移都有相同的效果与它相关联,那最好将该效果与目标状态相关联,而不与转移相关联。
你可以通过为这个状态定义初始动作来实现。
下图显示了一个带入口动作和出口动作的状态。
v自转移一个状态可能有一个返回到自身的转移,如下图。
效果与转移关联是十分有帮助。
v复合状态一个状态机图可以有子状态机图,如图所示:
v选择伪状态选择伪状态显示为菱形,有一个转移输入,两个或多个输出。
下图显示不管到达哪一个状态,经过选择伪状态后的去向,取决于在伪状态中执行时所选择的消息格式。
v终止伪状态进入终止伪状态是指状态机生命线已经终止。
终止伪状态表示为叉号。
v并发区一个状态可以被分成几个不同的区,包含同时存在和执行的子状态。
下面的例子显示状态ApplyingBrakes,frontbrake和rearbrakes将同时独立运作。
注意使用了分叉和结合伪状态而不是选择和合并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 建模