收藏 分享(赏)

uml第6章-功能模型.ppt

上传人:天天快乐 文档编号:766118 上传时间:2018-04-22 格式:PPT 页数:78 大小:745.50KB
下载 相关 举报
uml第6章-功能模型.ppt_第1页
第1页 / 共78页
uml第6章-功能模型.ppt_第2页
第2页 / 共78页
uml第6章-功能模型.ppt_第3页
第3页 / 共78页
uml第6章-功能模型.ppt_第4页
第4页 / 共78页
uml第6章-功能模型.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、第6章 功能模型,6.1 功能模型 6.2 数据流图 6.3 指定的操作 6.4 约束 6.5 数据库应用中的功能模型 6.6 功能模型的实例6.7 功能模型与对象模型和动态模型 的关系,功能模型描述系统内的计算。它和对象模型、动态模型共同构成系统模型结构的三大支柱。功能模型说明发生了什么,动态模型说明什么时候发生,而对象模型说明对象本身是什么。,6.1 功能模型,功能模型不仅说明了在对象模型中操作的意义和在动态模型中的动作,而且说明了对对象模型的约束。 虽然对象模型对所有基本数据结构的任一问题都很重要,但是许多交互程序也有一个有意义的功能模型。,6.2 数据流图,一个数据流图(DFD,Dat

2、a Flow Diagram)表示系统中被计算值之间的功能关系,包括输入值、输出值和内部数据存储。,数据流图包含了以下处理:数据转换的处理,转移数据的数据流,产生和使用数据的施动者(actor)对象以及数据存储(datastore)对象。图6-1显示了窗口系统的图标的显示数据流图。,图6-1,6.2.1 处理,处理就是将数据值转换,最底层的处理是不受影响的纯功能性的。 处理用包含转换描述(通常是它的名字)的椭圆表示。图6-2给出了两种处理。,图6-2,处理是在对象类上操作的方法(或方法片段)的实现。通常目标对象是一个输入流,特别是当同类对象作为输出流的情况下。但是在某种情况下,目标对象是隐含的

3、。,6.2.2 数据流,数据流连接对象的输出,或者另一对象输入的处理,或是连接一个处理。 数据流在数据值的产生者和使用者之间画一个箭头,该箭头上标有数据的描述,通常有其名字和类型。,聚合的数据值能分裂成许多分量,每个分量用作不同的处理。 每个数据流表示计算中某一点的值。 数据流图的边界流是它的输入和输出,这些可能不被连接,或它们也可能与对象相连接。,6.2.3 施动者,施动者(actor)是一个主动的对象,其对象是用产生或使用值的数据流图驱动的。 施动者用矩形框表示,表示它是一个对象。施动者和图之间的箭头是图的输入和输出。,6.2.4 数据存储,数据存储(data store)是数据流图中用来

4、存取和存储的被动对象。它与施动者不同,一个数据存储本身不产生任何操作,但至少对存储数据和访问数据请求作出响应。,数据存储用包含存储名的一对黑粗平行线表示。输入箭头表示修改已存数据的信息或操作,输出箭头表示从存储中检索信息 。把对象视为单个数据和视为多值的数据存储之间是不同的。,在图6-3中,可用顾客名从银行选择一个储户账户,这个操作的结果是账户对象本身,即它作为在修改操作中用作数据存储。图6-4表示在银行里一个新储户的账户建立,建立账户处理的结果是存入银行中的一个新账户。,图6-3,图6-4,6.2.5 嵌套数据流图,数据流图可以嵌套任意层次,所有嵌套图的集合构成一棵树。数据流图的嵌套允许各层

5、是相关的并且是可理解的,而整个功能可以是任意复杂的。 数据流图嵌套到最后以简单功能为终结。这些功能必须作为操作来指定。,6.2.6 控制流,控制流是影响处理是否有效的布尔值,它本身不是处理的输入值。控制流用虚点线表示从产生布尔值的一个处理到该处理的控制。,6.3 指定的操作,数据流图中的处理最终必须用对象上的操作来实现。每个底层的原子处理是一个操作,高层处理也可以考虑为操作 。,每种操作可以指定为不同的方式,包括以下几种: (1)数学函数,如三角几何函数。 (2)小型有限集合的输入输出值表(如枚举)。 (3)根据输入方程指定输出。,(4)前置或后置条件(公理定义)。 (5)决策表。 (6)伪码

6、。 (7)自然语言。,主要的操作分为三大类:查询、动作和活动。查询是一个操作,它不受任何对象的外部可视状态的影响,它是一个单纯的功能。,动作是一种变换,对目标对象有副作用,或者从目标对象对系统中可触及的另一些对象有副作用。 一种活动是对象具有持久性的一种操作,而查询和动作是瞬间的。,6.4 约束,约束表示两个对象在相同时间的关系,或者表示同样对象在不同时间的不同值的关系。对象约束则指定某些对象完全地或部分地依赖另一对象。,动态约束指定了不同对象状态、事件之间的联系。功能约束指定了操作上的限制。,6.5 数据库应用中的功能模型,本节将介绍功能模型中可选择的表示法,包括增强的伪码、决策表和方程式。

7、这些表示法对数据库有较大的帮助。,6.5.1 伪码,顺序一系列伪码语句本身有一顺序,通常用分号将一连串的语句分隔开。 条件条件成立时为true(真),条件不成立时用false(假)。条件语句有单个语句和多个语句。,其格式为: if then else if then else end if,迭代循环有两种迭代循环。一种是通过集合进行迭代;另一种是通过固定的循次数进行迭代。, for each in end for each for to increment by end for,方法签名一种方法是类操作的实现。用以下代码来指定方法签名: 类名:操作名 (参数表) 返回 域,方法引用用“对象名#

8、方法名(参数表)”表示方法的引用。要避免在程序设计语言以及值引用和参照引用之间的低层区分中使用此种表示法 。,功能返回保留字return是一个方法执行的终结,并返回一个值。局部变量如果要保持方法简单,就应少用局部变量,隐含定义局部变量并且不用显式声明。 内含方法参数根据面向对象语言的习惯,一个方法有执行该方法的对象的内含参数。,6.5.2 ONN的伪代码,用导航对象模型表示扩展伪码,这种表示称为对象导航表示ONN。 ONN的伪码能够详细说明要做什么,而不是如何实现什么。因此,可以很方便地实现具有许多数据库语言的ONN。,ONN有以下几个优点: (1)能把功能模型和对象模型紧紧系在一起。 (2)

9、提高软件生产率。 (3)便于检查。 (4)促进面向对象的思维能力。,6.5.3 ONN的构造,简单二元关联遍历 1)ObjectOrSet.targetRole这种构造按照目标角色来遍历关联。该目标角色可以是一个角色名,或者当无二义性时,可以是一个类名。在图6-5中用aCity.Airport表示机场为城市服务。 ONN构造有以下含义:,(1)在objectOrSet中对每个对象进行迭代。 (2)对每个对象寻找关联对象。 (3)返回关联对象关联共用体(union)。,图6-5,2)objectOrSet.sourceRole 用“.”两个操作符组合从源角色开始遍历二元关联。这种源角色可以是一个

10、角色名,或当无二义性时,可以是一个类名。例如,图6-6中用aCity.City表示机场为城市服务 。,图6-6,资格关联遍历 1)objectOrSet.role 在图6-7中anAirline.FlightDescription表示一条航线有多个航班描述。,图6-7,2)objectOrSet.rolequalifiervalue 资格符不仅改善对象模型的结构,而且使得导航该模型变得容易。可以指定较小的,比没有资格符更精确的对象关联集合。,概括遍历 1)objectOrSet:superclass 例如,在图6-8中aTravelAgent:Agent从TravelAgent子类开始,导航到

11、Agent超类。,图6-8,2)objectOrSet:subclass 也可以从超类到子类向下遍历概括,称之为“向下计算”。用隐含迭代的方法既可以“向下计算”单个对象,也可以“向下计算”对象集合。,“.”操作符的第三种用法是用链接遍历对象,这个链接可以是二元的、三元的或n元的关联。可以用链接遍历一相关对象。在定义的一个链接内内含每个角色的一个对象,所以单链接总是为给定的角色给出单个对象。,从对象遍历到链接 1)rolel=objectOrSetl, rol2=objectOrSet2, , associationName 这个结构用多个角色寻找到链接,对二元关联 可指定两个对象,如果对象是相

12、关的,则该结 构产生一个链接。否则为空值(null)。,从对象遍历链接可以帮助遍历关联类,或者寻找到链接属性。例如,在图6-9中表达式granteeaUser,TableaTable产生一个权限,然后使用此权限去查找谁是授予者的用户。,图6-9,2)objectOrSetrole 也可以仅指定一个角色和使用符号操作来检索链接。,过滤器 1)objectOrSetfilter 过滤器filter可以是任一布尔表达式(其值用真或假判定)。 2)linkOrSetfilter 这个过滤器filter可以是任何布尔表达式,其值用真或假来判定。,从对象遍历到值 可以用“.”操作符去查找一个对象的属性值。

13、从链接遍历到值 这种结构也可以使用“.”操作符查找链接的属性值 。,6.5.4 组合ONN构造,ONN的真正能力来自于将组合基本构造加进表达式中。可以替代表达式,但对objectOrSet不管它在任何地方出现都要判断是一个对象,还是一个对象集合。,ONN表达式的例子 1)theStMaoAirport.origin.destination 2)theStMaoAirport.origin.Destination.origin.destination,3)aFrequentFlyerAccountAirline.accountNumber 4)aFlight.FlightDescription.

14、AircraftDescription.modelNumber5)aTripReservation.FlightReservation.Flight.FlightDescription.Airline,与伪码组合的ONN例子 1)Airport:findZeroOneStops2)TripReservation:hasOnlyAisleSeats,6.5.5 添加ONN特性,数学特性 (1)ONN表达式不是可交换的 (2)ONN表达式不是联合的 (3)ONN表达式遵循闭包特性,空值(Null)。如果在ONN构造中有一个null参数,那么所有ONN构造都用空值来判断。因为在遍历关联中能够碰到空值

15、,所以ONN允许空值。,属性存取。ONN可直接地存取属性。可以选择实现一个ONN表达式,使之具有关系DBMS或OODBMS查询;或者可以把ONN表达式分解成一系列方法,小心地封装存取一些对象。,资格符和关联类。缺少资格符表示的模型仅能找到有歧义的对象集合,找不到所要找的那个对象。关联类也可遍历一个特定对象。,6.5.6 其他范型,数据流图。数据流图的使用恰好与数据库应用独特的方法是对立的。没有理由用这种重点在于处理和显示数据的方法来设计数据库。,决策表。决策表对离散逻辑提供了有用的表示。在决策表中,行是专用规则,而列是依附于规则的属性(前提和推断)。图6-10表示了对应于决策表的对象模型。,图

16、6-10,数学方程式。数学方程式提供了一个对一些应用表达功能性的媒介。在分析阶段,方程式说明描述了需求是什么;在设计阶段,如果这个软件是可用的,那么方程式能够直接地求出解来。,6.5.7 实践技巧,考虑多个范型避免过程分解小心使用伪码不要编写含糊的伪码避免歧义的决策表为功能模型提供文件,6.6 功能模型的实例(飞行模拟机装置),这节描述飞行模拟机装置(f1ight simulator)的功能模型。图6-11表示了飞行模拟机装置的顶层数据流图。,图6-11,调整控制处理的扩充如图6-12所示,可以看到三种不同的控制比较:升降、副翼和风门(油门)。,图6-12,力的计算处理综合了几何和空气动力学的

17、计算,扩充如图6-13所示。主合力是由牵引力、提升力、推冲力和重力的向量之和计算而得到的。,图6-13,6.7 功能模型与对象模型和动态模型的关系,功能模型表示了系统“必须要做什么”。底层(相当于叶子部分)处理是在对象上操作。对象模型表示“执行者”对象本身,每个处理是用某个对象的方法来实现的。,与功能模型的关系:对象模型表示在功能模型中的施动者、数据存储和流的结构,而动态模型表示了执行这一处理的序列。与对象模型的关系:功能模型表示在类上的操作和每个操作的参数,因此它表示了在类之间的供应者与客户的关系。动态模型表示了每个对象的状态,以及接受事件和改变状态时执行的操作。,与动态模型的关系:功能模型表示了底层动作和动态模型未定义的底层动作以及在动态模型中未定义的活动的定义。对象模型表示改变了什么状态和经历了什么操作。,小结,本章主要论述了面向对象的功能模型,介绍了功能模型的定义以及数据流图的概念,分辨处理和数据流、施动者之间的关系,确定数据存储,掌握控制流等,以及约束,数据库应用中的功能模型。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报