《系统分析与点设计6过程建模》由会员分享,可在线阅读,更多相关《系统分析与点设计6过程建模(159页珍藏版)》请在金锄头文库上搜索。
1、北方民族大学计算机学院软件工程系北方民族大学计算机学院软件工程系第六章第六章过程建模过程建模5 - 2PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 2学习目标学习目标过程模型描述了业务过程,即人们所做出的活动,它是为现有系统或待开发系统而开发的模型。最常用的过程建模技术是数据流图。 学习目标理解数据流图的使用规则和设计原则理解创建数据流图
2、的过程能够创建数据流图掌握UML鲁棒图、时序图、通信图、活动图 3 提纲提纲6.16.1引言引言6.2数据流图6.3创建数据流图6.4将方案应用到CDSelections项目6.5UML动态建模 4 过程模型过程模型1.过程模型是表示业务系统运行的一种形式化方法,它演示了系系统执行的行的过程或活程或活动,以及数据在它数据在它们之之间是如何流是如何流动的的,过程模型可以用来描述现有系统或待开发系统,不管它们是否能被计算机化。2.有许多不同的过程建模技术3.数据流图是以图形的方式描述系统业务流程以及系统内数据传递的一种技术。4.数据流图主要关注的是过程和所执行的活动5.独立于任何实现技术来描述系统
3、的逻辑过程模型 5 逻辑过程模型和物理过程模型逻辑过程模型和物理过程模型逻辑过程模型描述了在没有提示的情况下业务过程是这样被执行的物理过程模型提供了在建立系统时所需的必要信息首先通过关注逻辑过程模型,系统分析员将重点关注业务怎么执行 6 提纲提纲6.1引言6.26.2数据流数据流图6.3创建数据流图6.4将方案应用到CDSelections项目6.5UML动态建模5 - 7PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wi
4、ley & Sons, Inc. All rights reserved.6 - 7医生办公系统医生办公系统DFD的一部分的一部分5 - 8PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 86.2.2数据流图的基本元素数据流图的基本元素DFD语言中有4中符号(过程、数据流、数据存储、和外部实体),每个符号用不同的图形表示。5 - 9Powe
5、rPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 9数据流图元素的命名和表示图形数据流图元素的命名和表示图形ProcessData flowData storeExternalentity5 - 10PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Desig
6、n, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 10DFD 元素元素-过程过程是为特定业务原因而执行的活动或功能可以是人工或计算机化每个过程应该是以“动词开头和名词结尾”的形式进行命名每个过程一般只执行一个活动每个过程必须至少有一个输入数据流和一个输出数据流复杂的过程需要用正规的技术进行描述,例如:结构化语句、决策表或决策树5 - 11PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design,
7、 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 11DFD 元素元素-数据流数据流单个数据或是一些信息的逻辑集合总是和过程一起出现,从一个过程流出或是流入一个过程,总是在过程开始在过程结束5 - 12PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.
8、6 - 12DFD 元素元素-数据存储数据存储以某种方式存储的数据集合数据存储是数据模型的起始点,是过程模型和数据模型的主要连接点从数据存储流出的数据流显示的是从数据存储检索信息流入数据存储的数据流代表的是把数据存储到数据存储中或是修改在数据存储中的数据每个数据存储必须至少有一个输入数据流数据存储在某一层的DFD中至少要有一个输出数据流5 - 13PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, I
9、nc. All rights reserved.6 - 13DFD 元素元素-外部实体外部实体是位于系统范围之外与正在被研究的系统交互的人、组织部门或是其他系统.对外部实体理解的关键点是:外部实体位于系统范围之外,可能是组织的一部分,也可能不是一个常犯的错误是把“过程执行人”作为外部实体对待过程执行人通常在过程中描述,而不是在DFD中描述5 - 14过程执行人过程执行人5 - 15PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 Joh
10、n Wiley & Sons, Inc. All rights reserved.6 - 15DFDDFD的性质的性质(1)DFD(1)DFD中的箭头仅表示系统中数据的流动,中的箭头仅表示系统中数据的流动,不表示实物,为代表实物的信息。不表示实物,为代表实物的信息。(2)DFD(2)DFD不能表示程序的控制结构,不包含不能表示程序的控制结构,不包含“控制流控制流”、“控制结构控制结构”、“激发条件激发条件”之之类的信息。类的信息。(3)DFD(3)DFD表现范围具有很大的灵活性,常用一表现范围具有很大的灵活性,常用一组组DFDDFD由粗到细表示一软件在不同抽象级别上由粗到细表示一软件在不同抽象
11、级别上的逻辑性质。的逻辑性质。5 - 16PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 166.2.3用数据流图定义业务过程用数据流图定义业务过程大部分业务过程由于太复杂而不能在一个DFD中描述,因此大部分过程模型由一系列的DFD构成。第一个DFD 给出了整个系统的概要,其他DFD对系统的每个业务过程进行更为详细地描述。用DFD进行过程建
12、模最重要的一点就是把业务过程分解成一系列的DFD,每个DFD代表更低层次的细节。5 - 17PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 17上下文图上下文图每个业务过程模型的第一个数据流图显示的是整个系统的交互环境,所有的过程模型都有一个上下文图显示的是整个业务过程仅仅作为一个过程并与外部实体间进行的数据流入流出的情况图中不包括数据存储
13、,除非不是系统或过程“自有的”而是外部的。5 - 18PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 18Level 0 图图0层DFD显示第一层数据流图,即过程13的所有过程、数据存储、外部实体及它们之间的数据流0层DFD的目的是显示系统主要的高层过程及它们之间是如何交互的,所有过程模型有且只有一个0层。在创建一系列DFD时,另外一个关键
14、原则是平衡。平衡意味着保证在一层数据流图中出现的所有信息都必须准确地出现在下一层数据流图中,必须都以恰当的方式显示出来。添加数据存储5 - 19PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 19Relationship among Levels of DFDsContext diagramLevel 0 diagram Level 1 d
15、iagram Level 2 diagram 5 - 20层次数据流图层次数据流图5 - 21PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 21Level 1 图图每个0层DFD的过程还能被分解为更加清晰的DFD,即1层DFD或1层图。通常在所有过程模型中1层DFD数和0层DFD中的过程数是一样的,0层DFD中的每个过程分解成其自己的1层
16、DFD显示了信息是怎样从0层移动到1层子过程集和父过程是一样的,它们仅仅是从不同角度来看待同一事件 5 - 22PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 22Level 2 图图显示了在1层中一个过程被分解成的所有过程显示了每个过程之间信息的流入和流出2层图可以不必是所有1层的过程可以借助DFD过程编号中点的数量来判断DFD所处的层。
17、5 - 23PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 23可选数据流可选数据流根据不同的条件,一个过程可以产生不同的数据流在DFD中如何表示这些可选的路径呢?我们将在过程描述里面解释这些可选的数据流DFD本身不能解释那些互相排斥的数据流5 - 24 数据流图数据流图TABC*TA*CBTABC+数据数据A和和B同时输入同时输入才能变换
18、成数据才能变换成数据C数据数据A变换成数据变换成数据B和和C数据数据A或或B,或数据,或数据A和和B同时输入变换成同时输入变换成C数据数据A变换成变换成B或或C,或或B和和CTA*CB只有数据只有数据A或或B(但不能(但不能A、B同时)输入变换成同时)输入变换成C数据数据A变换成变换成B或或C,但,但不能变换成不能变换成B和和CTABCTACB5 - 25PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Son
19、s, Inc. All rights reserved.6 - 25过程描述过程描述过程描述的目的是解释过程做什么,以及提供数据流图不能提供的附加信息。SDLC中我们所做的其实就是将常规的文本需求描述渐渐转化为越来越精确的描述,并最终将其转化为程序代码。对于特别复杂的过程,可以通过更为详尽的过程描述来解释发生在过程内部的逻辑,有3种技术结构化英语:使用简短的句子描述过程的执行情况;决策树:通过一系列节点和分支显示决策逻辑;决策表:是连接不同条件和行动的复杂决策规则这些技术通常在编码阶段讨论5 - 26PowerPoint Presentation for Dennis, Wixom, & Ro
20、th Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 26注意注意1 1数据流程图上所有图形符号只限于前述四数据流程图上所有图形符号只限于前述四种基本图形元素。种基本图形元素。数据流程图上所有图形符号只限于前述四数据流程图上所有图形符号只限于前述四种基本图形元素。种基本图形元素。数据流程图上的数据流必须封闭在外部实数据流程图上的数据流必须封闭在外部实体之间。体之间。每个过程至少有一个输入数据流和一个输每个过程至少有一个输入数据流和一个输出
21、数据流。出数据流。5 - 27PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 27注意注意2 2在数据流程图中,需按层给加工框编号,在数据流程图中,需按层给加工框编号,编号表明该加工所处层次及上下层的亲子编号表明该加工所处层次及上下层的亲子关系。关系。一个数据流子图必须与它上一层的一个加一个数据流子图必须与它上一层的一个加工对应,两者的输入
22、数据流和输出数据流工对应,两者的输入数据流和输出数据流必须一致。必须一致。数据流程图上每个元素都必须有名字和编数据流程图上每个元素都必须有名字和编号。号。数据流图中不可夹带控制流。数据流图中不可夹带控制流。 28 提纲提纲6.1引言6.2数据流图6.36.3创建数据流建数据流图6.4将方案应用到CDSelections项目6.5UML动态建模5 - 29PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons
23、, Inc. All rights reserved.6 - 296.3创建数据流图创建数据流图DFDs 始于需求定义和用例信息。尽管用例是由项目团队和用户一起来创建,但是DFD通常是由项目团队创建,然后由用户查看。通常,构成过程模型的DFD集只是简单地集成独立的用例。项目团队把用例重新将它们转化为DFD,不得不修改用例信息以符合DFD的规则。最常见的修改规则是:将用例的名称改为过程和数据流的输入和输出。将用例中几个小的输入和输出合并为数据流图中的大的数据流。项目团队通常使用过程建模工具或CASE工具来构建过程模型。5 - 30PowerPoint Presentation for Denni
24、s, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 30创建数据流图步骤创建数据流图步骤1.创建上下文图2.创建数据流图段3.创建0层数据流图4.团队基于每个用例的内部步骤开发1层DFD以便更好地解释它们是如何执行的。在某种情况下,1层DFD需要进一步分解为2层DFD、3层和4层DFD; etc.5.团队验证DFD集以保证它们的完整性和正确性。5 - 31PowerPoint Presentation for
25、 Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 316.3.1创建上下文图创建上下文图上下文图定义了业务过程或计算机系统是如何与其所处环境进行交互的。(主要是外部实体)创建上下文图时只需要为业务过程或建模的系统绘制一个过程符号(编号为0并为这个过程或系统命名)通过阅读用例图,给上下文图添加顶层表格列出的输入和输出,以及它们的来源和去向。所有的输入和输出都来自或流向外部实体,如人、组织或其他信息
26、系统。如果有输入输出与外部系统的数据存储直接相连,那么最佳实践的方式是创建一个外部实体并将其定义为拥有该数据存储的系统。5 - 32PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 32创建上下文图示例创建上下文图示例5 - 33PowerPoint Presentation for Dennis, Wixom, & Roth Systems
27、 Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 336.3.2创建数据流图段创建数据流图段DFD度是数据流图的一部分,最终与其他的DFD段一起合并成一个完整的DFD每个用例被转化为一个DFD段。获得每个用例并根据用例顶部提供的信息绘制DFD段,包括:名称、ID号以及主要的输入和输出。在转化过程中还要做两个重要的修改修改过程名称和增加数据流。所有过程的名称必须是动宾格式必须由动词开头并包含一个名称。5 - 34PowerPoint Presentatio
28、n for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 34创建数据流图段创建数据流图段增加数据流用例没有描述系统时怎样获取数据,所以用例经常遗漏从数据存储中读取数据的数据流。最简单的做法用用例顶部列出的主要输入和输出来创建DFD段验证所有的输出都具有足够的输入来创建它们5 - 35PowerPoint Presentation for Dennis, Wixom, & Roth Syste
29、ms Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 35创建数据流图段创建数据流图段DFD中的布局是没有正式规则的DFD段尽量把过程放在中间输入放在左边或上面输出放在右边或底部数据存储放在过程下面5 - 36PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons,
30、Inc. All rights reserved.6 - 36A DFD Fragment Example5 - 37PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 37创建创建0层数据流图层数据流图一旦有了DFD段集合,只要简单合并它们便是一个0层DFD。系统分析员总是把第一个过程放在图的左上角并按照过程的顺序自顶向下、从左往右排列。减少
31、数据流交叉的次数迭代是设计良好DFD的基础5 - 38PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 38创建创建0层数据流图层数据流图5 - 39PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyrig
32、ht 2006 John Wiley & Sons, Inc. All rights reserved.6 - 39创建创建1层数据流图(及下层)层数据流图(及下层)为为0层层DFD中需要中需要1层层DFD的每个过程创建低层的每个过程创建低层DFD。创建创建1层层DFD的过程所采取的步骤与之前所讲的的过程所采取的步骤与之前所讲的将用例转变为将用例转变为0层层DFD的步骤基本是一样的的步骤基本是一样的用例中每个带有输入和输出的步骤都转变成用例中每个带有输入和输出的步骤都转变成1层层DFD中带有输入数据流和输出数据流的过程中带有输入数据流和输出数据流的过程但是有时需要做细微的修改才能将用例中描述的
33、但是有时需要做细微的修改才能将用例中描述的非正式信息转变为更加正式的过程模型。非正式信息转变为更加正式的过程模型。也可以包括外部实体也可以包括外部实体5 - 40PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 40创建创建1层数据流图(及下层)层数据流图(及下层)何时停止分解 DFDs层次?在每个DFD中应该至少有3个过程,至多有79个过程
34、.5 - 415 - 425 - 435 - 445 - 455 - 46PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 46验证数据流图验证数据流图语法错误指DFD的结构以及DFD是否遵循他的语言规则。假设正确DFD 结构 For each DFD: Check each process for: A unique name: actio
35、n verb phrase; number; descriptionAt least one input data flowAt least one output data flowOutput data flow names usually different thaninput data flow namesBetween 3 and 7 processes per DFD5 - 47PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006
36、 John Wiley & Sons, Inc. All rights reserved.6 - 47验证数据流图验证数据流图For each DFD:Check each data flow for:A unique name: noun; descriptionConnects to at least one processShown in only one direction (no two-headed arrows)A minimum number of crossed linesCheck each data store for:A unique name: noun; descr
37、iptionAt least one input data flowAt least one output data flow Check each external entity for:A unique name: noun; descriptionAt least one input or output data flow5 - 48PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc.
38、All rights reserved.6 - 48验证数据流图验证数据流图Across DFDs:Context Diagram:Every set of DFDs must have one Context Diagram 每一组每一组DFD必须有一个上下文图必须有一个上下文图Viewpoint:There is a consistent viewpoint for the entire set of DFDs 整个整个DFD的实体名称必须一致的实体名称必须一致Decomposition:Every process is wholly and complete described by t
39、he processes on its children DFDs 每个过程所对应的子每个过程所对应的子DFD中的所有过程应能完整描述该过程中的所有过程应能完整描述该过程Balance:Every data flow, data store, and external entity on a higher level DFD is shown on the lower level DFD that decomposes it No data stores or data flows appear on lower-lever DFDs that do not appear on their p
40、arent DFD 在高层在高层DFD中的每个数据流、数据存储和实体,在分解后的低中的每个数据流、数据存储和实体,在分解后的低层层DFD中都要被显示出来中都要被显示出来 5 - 49PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 49验证数据流图验证数据流图语义是指DFD的含义以及它是否准确描述了创建的业务过程建模确保模型表述确切, 让用户
41、对模型走查验证角色扮演过程确保模型的最底层可以提供一致的细节层次保证整个建模过程中的术语一致性5 - 50PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 50常见错误常见错误一个过程只有输入,没有输出(黑洞错误)一个过程只有输出,没有输入(奇迹错误)数据流从实体到实体数据流从实体到数据存储数据存储只有输入或输出数据流有双向箭头 51 提纲提
42、纲6.1引言6.2数据流图6.3创建数据流图6.46.4将方案将方案应用到用到CD SelectionsCD Selections项目目6.5UML动态建模5 - 52PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 52创建上下文图创建上下文图5 - 53PowerPoint Presentation for Dennis, Wixom,
43、& Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 53创建创建0层数据流图层数据流图5 - 54PowerPoint Presentation for Dennis, Wixom, & Roth Systems Analysis and Design, 3rd EditionCopyright 2006 John Wiley & Sons, Inc. All rights reserved.6 - 54创建创建1层数据流图层数
44、据流图 55 提纲提纲6.1引言6.2数据流图6.3创建数据流图6.4将方案应用到CDSelections项目6.56.5UMLUML动态建模建模56Were here to answer the question. 57CodeLets assume that weve done a little prototyping, and started to write some use cases.But code is our desired destination.58Before we get to code, though.We need a complete set of classe
45、s, with accompanying attributes and methods.We show this information on design-level class diagrams.59Design-Level Class Diagramsur design-level class diagrams serve as the structure for our code.60Before we have classes with attributes and methods, though.We have only enough information to make goo
46、d decisions about which classes are responsible for which methods while we are drawing sequence diagrams.So, we need to draw a sequence diagram for each use case.61Sequence DiagramsWe allocate methods to classes as we draw sequence diagrams.62Before we do sequence diagrams, though.We need to have a
47、good idea about what objects will be performing in which use case, and what functions the system will perform as a result of user actions.We get this information from robustness diagrams, the result of robustness analysis.63Robustness AnalysisDone for each use caseCloses gap between “what” and “how”
48、GUI, Logic, Repository Boundary, Control, EntityUseful in client/server and N-tier modelingHelps domain model evolve into detailed static model 64 三种分析类三种分析类 65 三种分析类与三种分析类与MVCMVC的相似与不同的相似与不同 66 67 销户用例的鲁棒图销户用例的鲁棒图 68 ATMATM系统的用例图系统的用例图 69 ATMATM系统的用例描述系统的用例描述-用户登录用户登录 70 ATMATM系统的用例描述系统的用例描述-用户登录用户
49、登录 71 ATMATM系统的鲁棒图系统的鲁棒图-用户登录用户登录 72 73 ATMATM系统的用例描述系统的用例描述-取钱取钱 74 ATMATM系统的用例描述系统的用例描述-取钱取钱 75 ATMATM系统的鲁棒图系统的鲁棒图-取钱取钱 76 77 作业和第一次实验报告评价作业和第一次实验报告评价 78 鲁棒图建模的十条经验鲁棒图建模的十条经验 79 鲁棒图建模规则鲁棒图建模规则 80 鲁棒图的语法鲁棒图的语法 81 不能墨守成规不能墨守成规 82 鲁棒图的优点:够用,好用鲁棒图的优点:够用,好用 83 动态建模的重要性动态建模的重要性应用系统开发中,分析设计人员通过建立系统的静态模型,
50、能够获得系统中的有关组成及结构、各个部分之间的关联关系等信息。但是如果此时就急于进行系统的编码实现,则往往会很困难。因为大部分软件的功能实现程序都是由复杂的交互过程组成的,仅了解系统的结构和关系不足以进行系统功能的实现,还必须对应用系统建立完善的动态模型和了解系统中各个组件的消息的传递过程以及组件之间的交互关系。通过为系统建立动态模型,从而产生体现系统动态行为的可视化分析结果-包括对象的时间特性和对象为完成目标任务而相互进行通信的机制、对象行为的改变和状态变化情况,以及对象可能出现的各种活动状况等信息。 84 动态模型受静态模型的限制动态模型受静态模型的限制动态建模是在系统静态模型的基础上建立
51、相应的动态模型。在建好系统静态模型的基础上,分析和设计系统的动态结构,并且建立相应的动态建模。动态模型受静态模型的限制,并且必须与静态模型保持一致,因为动态模型中的许多模型元素都是来源于静态模型的。动态模型描述了系统随时间变化的行为,这些行为是用从静态模型视图中抽取的系统瞬间值的变化来描述的。动态模型分为交互模型和活动状态模型,其中的交互模型主要由顺序图和协作图构成,活动状态模型主要由活动图和状态图构成。 85 利用交互图可以利用交互图可以对共同工作的对象群体的行为进行建模对共同工作的对象群体的行为进行建模系统中功能的具体实现是通过程序类中方法之间的调用完成的,而软件系统的分析和设计人员想了解
52、某个功能或者用例的具体实现过程,则必须了解该功能实现过程中涉及的对象、对象之间是如何进行消息的发送和接收的。交互交互图(interactiondiagram)(interactiondiagram)主要用于定主要用于定义软件系件系统如何如何实现特定功能,并能特定功能,并能够按照按照时间流程流程显示用例的示用例的实现过程程,包括包括:在信息流中需要什么:在信息流中需要什么对象、象、对象相互象相互发送送什么消息、什么角色启什么消息、什么角色启动消息流、消息按什么消息流、消息按什么时序序发送、送、对象的状象的状态是如何改是如何改变的的交互图中交互的含义:描述了一描述了一组对象和它象和它们之之间的的相
53、互操作,也包括在相互操作,也包括在对象象间传递的消息。的消息。对象之象之间的交互的交互是指是指一个一个对象象访问另外一个另外一个对象中的象中的方法或由于事件的触方法或由于事件的触发而而产生的生的对象之象之间的合作关系的合作关系交互图以图示的形式表示方法调用的具体过程,有两种形式:顺序图和通信图。 86 对象之间进行交互时的消息对象之间进行交互时的消息1.消息包括发送者、接收者和动作发送者送者:发送者是发送消息的类元角色。接收者:接收者:接收者是接受消息的类元角色。动作:作:动作为调用、信号、发送者的局部操作或简单动作,如创建和销毁。动作带有参量表、接收者表达式已经对激活的操作或信号的引用。它还
54、包括消息执行的迭代和条件说明。2.2.简单消息消息(SimpleMessage)(SimpleMessage):消息在单个控制线程中运行。用于描述控制如何在对象间进行传递,不考虑通信的细节。3.简单消息的UML图示 87 对象之间进行交互时的消息对象之间进行交互时的消息1.消息包括发送者、接收者和动作发送者送者:发送者是发送消息的类元角色。接收者:接收者:接收者是接受消息的类元角色。动作:作:动作为调用、信号、发送者的局部操作或简单动作,如创建和销毁。动作带有参量表、接收者表达式已经对激活的操作或信号的引用。它还包括消息执行的迭代和条件说明。2.消息的类型简单消息消息(SimpleMessag
55、e)(SimpleMessage):消息在单个控制线程中运行。用于描述控制如何在对象间进行传递,不考虑通信的细节。同步消息同步消息(SynchronousMessage)(SynchronousMessage):表示等待的语义。异步消息异步消息(AsynchronousMessage)(AsynchronousMessage):主要用于描述实时系统中的并发行为。由于是异步的控制流,其中没有显示的到调用者的返回消息。表示不等待的语义 88 顺序图和通信图的异同顺序图和通信图的异同顺序序图(sequencediagram)(sequencediagram):按照时间顺序来描述对象的交互,将交互建模
56、成消息交换,主要强调在交互过程中产生的各个消息的时间顺序从计算机的角度描述用例。协作作图( (collaborationdiagramcollaborationdiagram) ):围绕着对象和对象之间的链接来描述对象的交互,强调接收和发送消息的对象的组织结构。协作作图不能体不能体现消息的先后消息的先后顺序序( (协作作图在在UML2.xUML2.x中也称中也称通信通信图communicationsdiagram)communicationsdiagram)这两种图在语言上是对等的,表达的消息内容是相同的顺序图中对象之间的链接是隐含的,对象顺序信息不够明显;协作作图中对象之间的链接是显式的,而
57、且协作作图显示了不同信息流的视图,更容易看出对象之间的关系。尽管两者作用相同,包含相同的信息,但视图体现出的表达问题的内涵有所不同。在应用方面的侧重点不同。用顺序表示图赤壁之战的执行过程用顺序表示图赤壁之战的执行过程 89 90 90顺序图示例顺序图示例1 1图15-1 顺序图public class Aprivate B myB = new B();public void doOne() myB.doTwo(); myB.doThree();/对象名对象名:类名:类名对象名:类名对象名:类名 91 91图15-3 顺序图public class Saleprivate Payment pay
58、ment;Public void makePayment(Money cashTendered) payment =new Payment(cashTendered);/顺序图示例2 92 顺序图中的各个组成模型元素及其作用顺序图中的各个组成模型元素及其作用顺序图中包含的模型元素有:对象、消息、生命线、激活期(点)。1.对象类角色2.生命线生命线代表对象的名字放置在方格内,按时间从上到下的顺序,生命线显示了消息的顺序。在生命线上的消息比在其下的消息先发。3.当收到消息时,接收对象立即开始执行活动,即对象被激活.生命线上的细长矩形表示对象被激活。 93 顺序图中的激活期顺序图中的激活期1.什么是
59、激活期激活期表示对象执行一个动作的周期,即对象激活的时间段。当收到消息时,接收对象立即开始执行活动,即对象被激活了。2.应用要点当一个对象在激活期时,该对象在激活状态,能够响应或发送消息,执行动作、活动;当一个对象不在激活期时,该对象在休眠状态,但它仍然存在,等待新的消息来激活它。 94 95 96 97 登录用例的协作图登录用例的协作图 98 取款用例的协作图取款用例的协作图协作图不能体现消息的先后顺序? 99 登录用例的协作图登录用例的协作图 100 取款用例的协作图取款用例的协作图协作图不能体现消息的先后顺序? 101 顺序图和通信图的优点和缺点顺序图和通信图的优点和缺点每种图都有其优点
60、,建模者也各有偏好,因此没有绝对“正确”的选择。UML规范更多是以顺序图为核心,对其表示法和语义投入了更多的精力,因此顺序图对工具的支持更好,并且有更多有效的表示法选项。在墙上绘制“UML草图”时利用通信图更具有优越性,因为其更具有空间效用(可以在任何位置方便地放置或擦除框图),采用顺序图可以更方便地表示调用流的顺序,仅需要从左到右阅读即可。 102 UMLUML初学者没有对交互图给予足够重视初学者没有对交互图给予足够重视大部分UML初学者知道类图,并且通常认为类图是OO设计中唯一重要的图形,但实际上并非如此!尽管类图确实重要,但动态建模的交互图(更确切地说是动态交互建模中的动作)的价值更高。
61、准则应该花费时间使用交互图进行动态对象建模,而不仅是使用类图进行静态对象建模UMLUML活动图活动图活动图的组成元素:u活动u转移u判定点u同步条u泳道 103 104 105 UMLUML中的活动图中的活动图1.活动图本质上是结构化开发实现中的流程图2.活动图中的各个活动是在完成某个特定业务功能的实现过程中产生的。3.用例模型描述和采用活动模型描述之间的区别描述问题的角度不同用例模型描述是从外部参与者的角度来编写的,更多地是体现系统具有的功能项目;活动模型描述采用内部系统的观点来描述,更多地是体现参与者在系统中可能从事的各项活动项目;应用的目的不同用例描述没有表达出实现某个用例时系统处理的顺
62、序(描述了系统执行的功能类型,但没有明确地表达用例可能发生的顺序);活动图可以表示由内部生产的动作(即描述具体的活动),也可以为参与者对系统的操作行为建模(即描述具体的行为) 106 UMLUML中的活动图中的活动图4.活动图中的动作特性:原子性、不可中断性、瞬时性5.活动图的主要应用既可以用来描述操作(类的方法)的行为,也可以描述用例和对象内部工作过程的活动。由状态图变化而来,但各用于不同目的:活动图侧重于描述行为和活动,状态图侧重于描述状态和转换。活动图依据对象状态的变化来捕获动作与动作的结果,一个动作结束后将立即进入下一个活动,而在状态图中,状态的变迁可能需要事件的触发。6.在什么应用场
63、合中应该使用活动图对用例的扩展 107 UMLUML中的活动图中的活动图7.活动图的建模步骤定义活动的范围。添加活动的起始和结束点。添加各个具体的活动项目。添加在活动期间行为的转变。找出系统中各种并行的活动。排版和整理,使活动图整洁。8.活动图中各种模型元素主要模型元素有:活动状态、分支、合并、条件表达式、泳道、对象流状态、状态类、信号发送和信号接收等。活动图中的活动(Activity)Actionwithmultipleincomingandoutgoingedgesandimplicitfork/join 108 109 computer hardware sales 110 UMLUML
64、中的活动图中的活动图8.活动图中各种模型元素活动图中的条件关系和分支活动图中的并发行为 111 UMLUML中的活动图中的活动图8.活动图中各种模型元素活动图中的对象Objectnodesconnectedpinsstand-alonenotation活动图中的对象流对象流对应于一个对象经过整个活动的不同状态,对象流采用虚箭头线表示,控制流采用实虚箭头线 112 113 114 computer hardware sales 115 6.1.2 6.1.2 带泳道的活动图带泳道的活动图1.活动可以被分成几个区域,每个区域在图中用泳道分开2.为什么要采用泳道来描述活动?活动图能够帮助分析设计人员
65、了解发生了什么,但没有体现或者表达该项活动是由谁来完成的。这在程序设计中意味着活动图没有描述各个活动由哪个具体的类来完成。泳道能够解决这一问题。3.泳道的作用能够将活动图的逻辑描述与顺序图、协作图的责任描述结合起来加以说明;通过设计带泳道的活动图,不仅可以描述各个活动的项目,而且能够描述完成某个用例实现过程中的各项活动过程,同时通过泳道还能够明确各个活动涉及的目标对象。可用于建模某些复杂的活动状态每一个泳道都可以对应于一个协同的目标对象,其中的活动可以由一个或多个相互连接的类的对象来实现 116 Simple organizational structures and swim lanesSi
66、mple organizational structures and swim lanes 117 Simple organizational structures and swim lanesSimple organizational structures and swim lanes 118 119 120 SaleSale仓储与物流仓储与物流销售与客服销售与客服财务财务 121 computer hardware sales 122 提问提问1.谈谈顺序图和通信图的异同2.谈谈顺序图和通信图的优缺点3.谈谈用例模型描述和采用活动模型描述之间的区别4.活动图中的动作有哪三个特性?状态图 1
67、23 124 125 状态及状态表示法状态及状态表示法状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况 一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成状态机是计算机科学理论的一部分,但UML中的状态机模型主要是基于David Harel所做的扩展,是用来展示状态与状态之间转换的图 126 何时使用状态图何时使用状态图 127 阅读最简单的状态图阅读最简单的状态图最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换 128 转换的五要素转换
68、的五要素1.源状态:即受转换影响的状态 2.目标状态:当转换完成后对象的状态 3.触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件4.监护条件:布尔表达式,决定是否激活转换5.动作:转换激活时的操作 129 转接的三个组成部分:触发事件、监护条件、动作转接的三个组成部分:触发事件、监护条件、动作 130 读图小结读图小结与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否有水;如果没水,则仍然处于off状态;如果有水则转为on状态,并执行“烧水”动作 而与状态on相关的转换也有两个,如果“水开了”就
69、执行turnOff,关掉开关;如果烧坏了,就进入了终态了 自转换自转换 131 132 count() while(true) if (i10) i=i+1; sum=sum+I; else System.out.println(“compute complete”); break; 133 图书管理系统中图书管理系统中“图书图书”的状态图的状态图 134 135 提问提问1.UML状态图中,最为核心的元素是哪两个?2.UML状态图中,关于转换,有哪五个要素? 136 复杂转换复杂转换转换类型描述语法外部转换 对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引
70、发进入转换、离开转换事件(参数)监护条件/动作内部转换 对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换事件(参数)监护条件/动作进入转换 当进入某一状态时,执行相应活动entry/活动退出转换 当离开某一状态时,执行相应活动exit/活动 137 各种转换的区别各种转换的区别进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示内部转换:用来处理一些不离开该状态的事件 思考:内部活动和自转换有何区别?思考:内部活动和自转换有何区别? 138 活动状态与延迟事件活动状态与延迟事件活动状态:当对象处于一个状
71、态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,你可能希望描述某个正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个事件中断。延迟事件:延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件。 139 一个活动状态的例子一个活动状态的例子 140 复合状态(超态)复合状态(超态) 141 142 阅读带复杂转换的状态图阅读带复杂转换的状态图发送成功发送成功发送
72、失败发送失败 143 历史历史“一个圆圈中加上字母H”,用来表示历史状态的。它的含义是:当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物车或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。 144 145 顺序复合状态图顺序复合状态图 146 并发复合状态图并发复合状态图状态图的实现状态图的实现 147 148 状态图的实现状态图的实现-嵌套开关法嵌套开关法 149 状态图的实现状态图的实现-状态模式法状态模式法 150 状态图的实现状态图的实现-状态模式法状态模式法 151 状态图的实现状态图的实现-
73、状态表法状态表法 152 状态图的实现状态图的实现-状态表法状态表法 153 绘制状态图的步骤绘制状态图的步骤绘制状态机图的理想步骤是:1.寻找主要的状态2.确定状态之间的转换3.细化状态内的活动与转换4.用复合状态来展开细节 154 绘制航班机票预订系统的状态图绘制航班机票预订系统的状态图1.寻找主要状态对于航班机票预订系统而言,显然包括的状态主要有: 在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都处于这种“无预订”状态对订座而言显然有“部分预订”和“预订完”两种状态 而当航班快要起飞时,显然要“预订关闭”总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭 2
74、.确定状态间转换源目标无预订部分预订预订完预订关闭无预订预订( )不直接转换关闭( )部分预订退订( ),使预订人=0预订( ),无空座关闭( )预订完不直接转换退订( )关闭( )预订关闭无转换无转换无转换 155 绘制航班机票预订系统的状态图绘制航班机票预订系统的状态图 156 绘制航班机票预订系统的状态图绘制航班机票预订系统的状态图3.细化状态内的活动与转换 157 绘制航班机票预订系统的状态图绘制航班机票预订系统的状态图4.使用复合状态 158 状态图应用说明状态图应用说明1.对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响以及过去对当前行为的影响 2.对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作 3.状态机图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁。 159作业作业l课本课本P179之你来做之你来做7-3,P179之实战场景之实战场景7-A, P155之练习之练习1,2