5.1 DBAS建模
考点1 方 法
(1)Booch是最早的面向对象的方法之一,提出了面向对象的软件工程的概念,比较适合于系统的设计和构造。
(2)OMT方法,采用了面向对象的概念,并引入各种独立于语言的表示符。
这种方法用对象模型、动态模型、功能模型和用例模型,共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。
OMT特别适用于分析和描述以数据为中心的信息系统。
(3)OOSE方法,其最大特点是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要武器,但用例贯穿于整个开发过程,包括对系统的测试和验证。OOSE比较适合支持商业工程和需求分析。
(4)统一建模语言(UML)是一种定义良好、易于表达、功能强大、通用的可视化建模语言,为软件开发的各阶段提供模型化与可视化支持。UML适用于各种软件、应用领域以及开发工具的开发。UML已逐渐成为主流的建模语言。
考点2 UML
(1)组成
UML的定义由语义和表示法两部分组成。语义用自然语言描述,而表示法定义了UML的可视化标准表示符号,这决定了UML是一种可视化的建模语言。
(2)语义的概念框架
①元元模型(Meta—Meta Model)层,组成了UML的最基本的元素“事物”,代表要定义的所有事物。
②元模型(Meta Model)层,组成了UML的基本元素,包括面向对象和面向组件的概念。这一层的每个概念都是元元模型中“事物”概念的实例。
③模型(Model)层,组成了UML的模型,这一层中的每个概念都是元模型层中概念的一个实例,这一层的模型通常叫作类模型或类型模型。
④用户模型(User Model)层,这层中的所有元素都是UML模型的实例。这层中的每个概念都是模型层的一个实例(通过分类)也是元模型层的一个实例。这一层的模型通常叫作对象模型(Object Model)或实例模型(Instance Model)。
(3)视图
①定义:视图是对系统的模型在某方面的投影,注重于系统的某个方面。
②分类:结构视图、实现视图、行为视图、环境视图和用例视图。
③组成:每一种UML的视图都是由一个或多个图组成的,一个图就是系统架构的某个侧面的展示,所有的图一起组成了系统的完整视图。
UML 2.0提供了13种不同的图,分为两类:一类是结构图,主要用于对系统的静态结构建模,包括类图、对象图、复合结构图、包图、组件图、部署图;另一类是行为图,主要用于对系统的动态行为建模,包括用例图、交互图(顺序图、通信图、交互概述图、时间图)、状态图和活动图。
行为图:用例图、交互图状态图和活动图。(用例,交互,状态,活动)
用例图描述系统功能,其他描述系统活动
5.2 DBAS业务流程与需求表达
在UML中,对于业务流程支持的主要图形是活动图,活动图主要的目的在于陈述活动与活动之间的流程控制的转移。在软件需求的领域中,用于捕捉需求的工具,就是用例图。
考点1 业务流程与活动图
(1)活动图的定义
活动图是用于描述系统、用例和程序模块中逻辑流程的先后执行次序,并行次序的图。
(2)活动图的功能
①当活动图用于描述系统功能时,主要侧重于系统多个用例活动之间相互制约的执行顺序,同时,识别出系统中存在的可以并行的用例,此时,活动表示系统要完成的任务。
②当活动图用于描述用例时,用于描述用例中的操作执行次序和操作完成的结果,显示多个对象的操作是如何相互结合起来共同完成用例的一个脚本,揭示出操作之间的并行性。此时,活动表示类中的方法,即操作。
活动图用于低层次程序模块的作用类似于流程图,但活动图还可以描述并行操作,而流程图只能描述串行操作。一般来说,活动图最适合用于描述系统或子系统的主要工作流程。
(3)活动图的描述法
①起始点:指一连串活动的开始点。在一张活动图中,必须有且只能有一个起始点,用●表示。
②结束点:指一连串活动的终结点。在一张活动图中,可以有多个结束点,用表示。
③分区:在整个活动表达上,是一个非常重要的概念。可以利用分区来将活动分配给对应的角色。
活动之间的转换由箭头表示,箭头表示执行方向,其标注为执行下一个活动的条件,如果箭头线上没有条件,表示执行完该活动后自动执行箭头所指向的活动;加粗直线为同步条,表示这之后的活动执行路线可以并行进行,或在其上的所有并行活动执行完毕后,到此转为顺序执行;菱形代表分支,表示判断。
考点2 系统需求与用例图
(1)用例模型
①定义
用例模型是把满足用户需求的所有功能表示出来的工具。对于正在构造的新系统,用例模型描述系统应该做什么;对于已构造完毕的系统,用例模型则反映了系统能够完成什么样的功能。
②构成
用例模型由用例图构成。用例图由系统、角色和用例三种模型元素以及元素之间的各种关系组成。根据“商场经营管理系统”各个模块的业务流程图,即可以得到系统的企业级用例图以及系统级用例图,如图5-1和图5-2所示。
(2)系统
在用例图中系统用一个长方框来表示,系统的名字写在方框上或方框里面,方框内部还可以包含该系统中用符号表示的用例。
(3)角色
角色是与系统交互的人或其他实体(外部实体)。“与系统交互”指的是角色从系统中接收消息,或是向系统提交信息。一个角色可以执行多个用例,相反亦可。角色是类,所以它拥有与类相同的关系描述。在用例图中,用通用化关系来描述角色之间的行为。
通用化关系是指把某些角色的共同行为抽取出来作为通用行为,这些通用行为构成它们的超类。在定义某一具体角色时,仅仅需定义其不同的行为。角色之间的通用化关系用带空心三角形(作为箭头)的直线表示,箭头的方向指向超类。如图5-1所示,员工是销售人员和销售部经理等的超类。
(4)用例
①概述
用例代表的是一个完整的功能,是所有动作的集合。动作是系统的一次操作,如与角色通信、进行计算,在系统内进行的工作都可以称作动作。
在UML中,用例用椭圆形表示,并位于系统边界的内部。用例与角色之间的连接关系属于关联(通信关联)。这种关联表明哪种角色能与该用例通信。关联关系是双向的一对一关系,表示不仅角色可以与用例通信,用例也可以与角色通信,表示方法是一条连接角色和用例的带箭头直线,如图5-2所示。
②用例间的关系
用例之间的关系包括扩展、使用、组合三种。扩展和使用是继承关系,即通用化关系的另一种体现形式。组合则是把相关的用例打成包,当作一个整体看待。
a.扩展关系
如果已有一个用例,在这个用例的基础上加入新的动作形成了另一个用例,则前者常称为通用化用例,后者常称为扩展用例。扩展用例可以根据需要有选择的继承通用用例的部分行为。引入扩展用例便于处理通用化用例中不易描述的某些具体情况;便于扩展系统,提高系统性能。
用例之间的扩展关系可以图示为带有构造型<<extend>>标志的通用化关系,如图5-2所示。
b.使用关系
一个用例使用另一个用例时,这两个用例之间就构成了使用关系。用例之间的使用关系被图示为具有构造型<<uses>>标志的通用化关系。
③具体用例流程
描述具体的用例的流程时,除了活动图,还要附上文档说明即用例叙述来描述参与者和用例之间应该如何交互才能达到需求。
例叙述的前置条件表示用例的触发条件,即当库存商品数量低于预先设定的最小库存量,用例生成采购单就会触发。后置条件是用例结束后,必须达到的目标,否则用例执行有误。通过活动图和用例叙述的搭配使用,可以使对特定用例的描述更加清楚、洋细,有利于开发人员之间的沟通和交流。
5.3 DBAS系统内部结构的表达
考点1 DBAS系统内部结构分类
系统内部结构一般分为静态结构和动态结构。在UML中,用类图来描述系统的静态结构,而用顺序图和通信图来表示系统的动态结构。
考点2 系统结构与类图
(1)概述
①系统结构
软件系统的结构就是将所要解决的问题领域中的重要概念抽象出来,并用概念模型来表示。
②类图
类图展现了一组类、接口和协作以及它们间的关系。系统可以有多个类图,单个类图仅表达了系统的一个方面。
a.类图技术
类图技术是面向对象方法的核心技术。在面向对象的建模技术中,类、对象和它们之间的关系是最基本的建模元素。对于一个被描述的系统,其类模型、对象模型以及它们之间的关系揭示了系统的结构。
b.类的表示
类的表示如图5-5所示,在高层给出类的主要职责,在底层给出类的属性和操作。
(2)属性
属性包括属性的名称、类型和缺省值。UML规定其语法为:
可见性 名称:类型=缺省值{约束性}
①可见性
表示该属性对类外的元素是否可见。不同属性具有不同的可见性。常用的有公有(Public)、受保护(Protected)和私有(Private)三种,在UML中分别用“+”、“#”、“-”表示。
②名称
是一个字符串,表示属性的名称。
③类型
定义属性的种类。它可以是一个基本数据类型,也可以是用户自定义的类型。
④缺省值
属性的初始值。
⑤约束性
列出该属性所有可能的取值,在定义枚举类型的属性时经常使用,每个枚举值之间用逗号分隔,此外,也可以用来说明该属性的其他信息,比如属性的持久性(Persistent)等。
(3)操作
操作描述了类的动态行为,在UML中,操作的语法定义如下:
可见性 名称(参数表):返回类型表达式{约束性}
①可见性
“+”表示公有操作,“#”表示受保护的操作,“-”表示私有操作。
②名称
是一个字符串,表示操作的名称。
③参数表
其语法与属性的参数相同,参数的个数是任意的。
④返回类型表达式
依赖于语言的描述,此项为可选项。
⑤约束性
用以描述对此操作的约束。
这里,可见性和约束性与属性中的含义一样。
(4)关系
类与类之间通常有关联、通用化(继承)、依赖和精化四种关系。
①关联关系
表示两个类之间存在某种语义上的联系。例如,一个人为一家公司工作,一家公司有很多办公室。就认为人和公司、公司和办公室之间存在某种语义上的联系。
a.双向关联
通常情况下关联是双向的,其图示是连接两个类之间的直线,可以在直线的一个方向上为关联起一个名字,而在另一个方向上起另一个名字(也可不起名字),名字通常紧挨着直线书写。
b.单向关联(导航关联)
导航关联采用实线箭头连接两个类,只有箭头所指的方向上才有这种关联关系。如图5-6所示,图中只表示某人可以拥有汽车,但汽车被人拥有的情况没有表示出来。其实双向的普通关联可以看作导航关联的特例,只不过省略了表示两个关联方向的箭头。
c.单向和双向关联的案例
如图5-7所示,“公司”以“雇主”的角色,“人”以“雇员”的角色所参与的“工作合同”关联。“雇主”和“雇员”称为角色名。如果在关联上没有角色名,则隐含地用类的名称作为角色名。角色还具有多重性,表示可以有多少个对象参与该关联。如图5-7中,雇主(公司)可以雇用多个雇员,表示为“*”;雇员只能与一家雇主签订工作合同,表示为“l”。
第一,多重性
多重性表示参与对象的数目的上下界限制。“*”代表0~∞,“1”是1..1的简写。可以用一个单个数字表示,也可以用范围表示,或者是数字和范围不连续的组合表示。例如:“0..1”表示零到1个对象,“0..*”。如果图中没有明确标识关联的重数,就意味着是1。重数标识在表示关联关系的直线某一方向上的末端。
第二,关联类
关联类通过一根虚线与关联连接,用于描述一个关联可能需要记录的一些信息。
d.聚集
聚集是一种特殊形式的关联。它表示类之间的关系是整体与部分的关系。在需求分析中,“包含”、“组成”、“分为……部分”等经常设计成聚集关系。
聚集可以进一步划分成共享聚集和组成。例如,课题组包含很多成员,而每个成员又可以是另一个课题组的成员,即部分可以参加多个整体,称为共享聚集。
另一种情况是整体拥有各部分,部分与整体共存,如整体不存在了,部分也会消失,称为组成。
e.聚集的案例
打开一个窗口,它由标题、外框和显示区所组成。窗口一旦关闭则各部分同时消失。在UML中,共享聚集表示为空心菱形,组成为实心菱形。
②继承关系
人们将具有共同特性的元素抽象成类别,并通过增加其内涵而进一步分类。在面向对象方法中将前者称为一般元素、基类元素或父元素,将后者称为特殊元素或子元素。继承定义了一般元素和特殊元素之间的分类关系。在UML中,它表示为一头为空心三角形的连线。
③依赖关系
有两个元素X、Y,如果修改元素X的定义可能会引起元素Y的定义的修改,称元素Y依赖于元素X。
④精化关系
a.用于表示同一事物的两种描述之间的关系。对同一事物的两种描述建立在不同的抽象层上。比如,定义了某种数据类型,然后将其实现为某种语言中的类,那么抽象定义的类型与用语言实现的类之间就是精化关系,这种情况称为实现。
b.用于模型化表示同一个事物的不同实现。例如,一个是简单实现,一个是复杂而高效的实现。
精化关系的图示方法与继承关系相似,用带空心三角形的虚线表示。
(5)实例
在“商场经营管理系统”中,可以根据系统功能进行业务模块划分,如分为顾客管理模块、商品采购业务模块、商品销售业务模块、人力资源管理模块、财务管理模块等。若系统结构比较复杂,可根据功能模块的划分,针对每个功能模块绘制类图。这里对商品销售业务模块绘制其类图,如图5-12所示。
(6)类图的目的
在进行软件开发前,先对软件所需面对问题领域的本质做一个通盘性的了解;了解设计人员对其所面对的领域的想象,也是表达设计想法的一种方式,并且可以作为开发人员对系统想法的一种沟通交流的标准方式,无论是何种系统的开发,类图是UML图中最有必要保存的图。
【真题演练】
1.用数字表示类与类之间关联的多重性,如果图中没有明确标示关联的重数,则意味着关联的重数是( )。
B.1
C.*
D.0..l
【答案】B
考点3 系统结构与顺序图
(1)概述
顺序图的目的在于说明对象的协作如何达到系统的目标。每一张顺序图所表达的,是每一个用例是如何通过对象交互来完成的。由于类模型(类图)揭示了系统的结构,所以对象间的协作关系,必须符合类图中的定义。
(2)顺序图的作用
①主要用于描述系统内对象之间的消息发送和接收序列。顺序图有两个坐标轴:纵向表示时间的持续过程,横向表示对象,每一个对象用矩形框表示,纵向的虚线表示对象在序列中的执行情况,称为对象的“生命线”。
a.对象间的通信用对象生命线之间的水平消息线表示,消息线的箭头说明消息的类型,如同步、异步或简单。消息/方法名字标注在消息线上面。顺序图的第一个消息一般在左边第一个对象的生命线顶端,然后其他消息按时间顺序相继加入顺序图中,后面发生的消息的线应比前面发生的消息的线画得低一些。浏览顺序图的方法是从上到下查看对象间交换的信息。
这里对商品销售模块中的顾客购买商品用例绘制其顺序图,来进一步说明在这个用例中,对象之间是怎样协作并达到系统目标的,如图5-13所示。
b.消息也可以附加条件,这时规定只有当条件为真时才可以发送和接收消息。用条件来描述分支时,如果各分支的条件不互相排斥,则消息可能会并行发出,如图5-14所示。如果条件之间是互斥的,则一次只能发送一条消息,如图5-15所示。
c.在对象图的左边和右边可以有标签和注释。标签可以是任何类型的,例如可以用标签来描述定时约束。如图5-16所示,a与b之间的时间间隔不能大于5秒。
d.循环过程就可以用边缘注释来描述
②可以描述对象是如何被创建和销毁的。通过一条消息,一个对象可以创建另一个对象。被创建对象的表示符号直接放置在创建它的地方。创建和销毁对象的消息一般是同步消息。当一个对象被销毁时,用一个大“×”来标记。同时,被销毁对象的生命线也停止于被销毁的位置。
③可以表示递归过程,当一个操作调用它本身时,消息总是同步的,因而,在顺序图中用同步消息来表示,并用一条简单消息来表示返回。
【真题演练】
1.浏览顺序图的方法是( )。
A.从左到右查看对象间交换的信息
B.从上到下查看对象间交换的信息
C.从右到左查看对象间交换的信息
D.从下到上查看对象问交换的信息
【答案】B
2.下列关于顺序图的说法中,正确的是( )。
A.消息线的箭头说明消息的类型,如同步、异步或简单。画一条线指向接收对象,包括一个箭头,实心表示异步信号;棍形箭头表示同步调用操作
B.当一个操作调用它本身时,消息总是异步的
C.在顺序图中可以描述如何创建和破坏对象,并把它作为描述情节的一部分。一个对象可能通过一条消息来创建另一个对象。被创建对象的对象符号在创建它的地方(在纵坐标时间轴上)
D.消息也可以有条件。只有条件为真时才可以发送和接收消息。条件被用来抽象分支或决定是否发送一条消息。如果用条件来抽象分支,则各分支是互斥的
【答案】C
考点4 系统结构与通信图
(1)通信图的定义
通信图(协作图)是交互图的一种,它包含一组对象,并在图中展示这些对象之间的联系以及对象间发送和接收的消息。在开发过程中设计人员可利用通信图和顺序图来确定对象的角色以及对象所执行的事件。这些事件是确定类的职责和接口的主要的信息来源。
(2)顺序图与通信图的关系
顺序图和通信图都描述交互,但是顺序图强调的是时间,而通信图强调的是空间。通信图显不了在交互过程中各个对象之间的组织交互关系以及对象彼此之间的链接,但它能显示对象之间的关系,它使用序列号来确定消息及并发线程的顺序。针对上小节顾客购买商品顺序图的用例,在此将它以通信图的方式描述
通信图中的主要元素基本和顺序图相同,只是在消息的传递上要特别表达消息的传递是由哪一个对象到另外一个对象。
【真题演练】
下列各图中显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息的图是( )
A.通信图
B.状态图
C.顺序图
D.部署图
【答案】A