《系统分析状态图.pptx》由会员分享,可在线阅读,更多相关《系统分析状态图.pptx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1系统分析状态图系统分析状态图2023/5/222 状态图的构成状态图的构成n n状态图由一组表示状态和迁移组成。w一个简单的编辑器可以被看作为一个有限状态机,它具有状态一个简单的编辑器可以被看作为一个有限状态机,它具有状态Empty,Waiting for a command,Empty,Waiting for a command,和和Waiting for text.Waiting for text.事件事件Load file,Insert Load file,Insert text,Insert character,Save and quit text,Insert charact
2、er,Save and quit 引发状态机中的状态的迁移引发状态机中的状态的迁移第1页/共34页2023/5/233什么是状态?什么是状态?n n状态表示的是一个对象或交互过程中的一个特定阶段:满足了某一个条件,进行某项活动或等待某个事件的发生,状态对应一段有限的时间。状态对应于一组对象属性的值n n状态由一个带圆角的矩形表示n n两个特殊状态:n n初始状态:一个小实心黑圆初始状态:一个小实心黑圆n n终止状态:一个套有小实心黑圆得圆终止状态:一个套有小实心黑圆得圆第2页/共34页2023/5/244 什么是迁移?什么是迁移?n n一个迁移表示由事件、条件或事件触发后状态的改变n n状态间
3、的迁移用一根带箭头的直线来表示。第3页/共34页2023/5/25第4页/共34页5.动作动作n n可以在状态内使用动作表示其行为n n动作是选取一段输入且产生一组输出并最终可改变系统的状态n n动作的执行只需要一小段时间且执行不可中断n n动作可发生在以下3个位置:n n当一条迁移被选中时当一条迁移被选中时n n当进入一个状态时(当进入一个状态时(entryentry)n n当退出一个状态时(当退出一个状态时(exitexit)2023/5/26第5页/共34页2023/5/27第6页/共34页6.活动活动n n一个状态可关联到一个活动,该活动的执行与驻留在这一状态上的对象的生命周期一样长n
4、 n动作与活动的区别:动作的执行时间短且不可中断,而一个活动的执行需要一段时间且其执行是可以中断的,其中断的时机就是该状态的一个迁移被时n n活动使用“do 标识”2023/5/28第7页/共34页2023/5/29第8页/共34页2023/5/210第9页/共34页2023/5/211第10页/共34页2023/5/212第11页/共34页7.内部迁移内部迁移n n内部迁移指一个未离开该状态的迁移。n n通过事件触发内部迁移,并可出现与这些事件相关联的动作2023/5/213第12页/共34页8.嵌套状态图嵌套状态图n n嵌套简化了复杂性,可用于取代内部迁移2023/5/214第13页/共3
5、4页2023/5/215打电话的状态图打电话的状态图第14页/共34页2023/5/2169.建模技巧建模技巧/1n n状态机最经常被用以对一个对象的生命周期中的行为进行建模,特别是在对象具有依赖于状态的行为的时候n n可以具有状态机的包括类,子系统,用例和接口(确定实现接口的对象必须满足的状态)第15页/共34页2023/5/2179.建模技巧建模技巧/2n n在实时系统中,状态机可以用于进程(在实时系统中,状态机可以用于进程(capsulescapsules)和协议)和协议 (确定实现协议的对确定实现协议的对象需要满足的状态象需要满足的状态)n n并不是所有的对象都需要状态机并不是所有的对
6、象都需要状态机.如果对象的行为是简单的,比如说它只是简如果对象的行为是简单的,比如说它只是简单的存储和获取数据,对象的行为是状态不变的(单的存储和获取数据,对象的行为是状态不变的(state-invariant state-invariant),那么其状),那么其状态机就没有多少意义态机就没有多少意义n n对对象的生命周期的建模涉及到三件事情对对象的生命周期的建模涉及到三件事情:n n描述对象需要响应的事件描述对象需要响应的事件n n对这些事件的响应对这些事件的响应n n过去对当前行为的影响过去对当前行为的影响n n对对象的生命周期的建模也涉及到决定对象响应事件的次序,这种响应始于对对象的生命
7、周期的建模也涉及到决定对象响应事件的次序,这种响应始于对象的创建时刻,继续直到其销毁对象的创建时刻,继续直到其销毁第16页/共34页2023/5/2189.建模技巧建模技巧/3n n为了对对象的生命周期进行建模:n n确定状态机的确定状态机的背景背景,是类,用例,还是整个系是类,用例,还是整个系统统 n n如果背景是类或者是一个用例,收集邻近的类,如果背景是类或者是一个用例,收集邻近的类,包括父类或者通过关联或依赖关系能够到达的包括父类或者通过关联或依赖关系能够到达的类,这些邻居是动作的可能的目标,或者是保类,这些邻居是动作的可能的目标,或者是保安条件中包含的内容安条件中包含的内容n n如果背
8、景是整个系统,将焦点放在系统的如果背景是整个系统,将焦点放在系统的某一某一个行为个行为上,然后考虑对象在该方面的生命周期。上,然后考虑对象在该方面的生命周期。整个系统的生命周期太大了。整个系统的生命周期太大了。n n建立对象的初始和最终状态,如果对于初始和建立对象的初始和最终状态,如果对于初始和最终状态有前置条件或后置条件,也要定义它最终状态有前置条件或后置条件,也要定义它们们第17页/共34页2023/5/219n n确定对象能够响应的事件,它们可以从对象的确定对象能够响应的事件,它们可以从对象的接口中找到,在实时系统中,它们可以从对象接口中找到,在实时系统中,它们可以从对象的协议中找到的协
9、议中找到n n从初始状态到最终状态,画出对象的最高层的从初始状态到最终状态,画出对象的最高层的状态,将这些状态用转移连接起来,这些连接状态,将这些状态用转移连接起来,这些连接由特定的事件触发由特定的事件触发n n确定进入和退出动作确定进入和退出动作n n通过使用子状态能够扩展和简化状态机通过使用子状态能够扩展和简化状态机第18页/共34页2023/5/2209.建模技巧建模技巧/4n n检查n n是否状态机中所有的是否状态机中所有的事件触发转换事件触发转换与与由对象实由对象实现的接口所期望的事件现的接口所期望的事件匹配匹配 n n所有的所有的对象接口期望的事件对象接口期望的事件都包含在状态机中
10、都包含在状态机中n n在实时系统中,对进程的协议进行同样的检查。在实时系统中,对进程的协议进行同样的检查。n n确定那些明确希望忽略事件的地方确定那些明确希望忽略事件的地方 (例如延迟(例如延迟事件)事件)第19页/共34页2023/5/221是否状态机中的是否状态机中的所有的动作所有的动作得到了包含的对象得到了包含的对象的关系、方法和操作支持的关系、方法和操作支持 在状态图中进行跟踪检查,将它与期待的事件在状态图中进行跟踪检查,将它与期待的事件和响应的顺序进行比较,搜索那些到达不了的和响应的顺序进行比较,搜索那些到达不了的状态和状态和“死锁死锁”状态状态 在调整状态机图时,确保语义不变在调整
11、状态机图时,确保语义不变第20页/共34页2023/5/2229.建模技巧建模技巧/5n n在有选择的情形下,尽量使用状态机的在有选择的情形下,尽量使用状态机的可视化语义可视化语义而不是写详细的转移说明。而不是写详细的转移说明。例如,不要在一个转移上列出多个信号,然后用文字说明依据不同的信号来例如,不要在一个转移上列出多个信号,然后用文字说明依据不同的信号来管理不同的控制流;代之以管理不同的控制流;代之以单独的转移单独的转移,由单独的信号触发。,由单独的信号触发。第21页/共34页2023/5/2239.建模技巧建模技巧/6n n状态命名状态命名根据在一个状态中根据在一个状态中等待或发生的情况
12、等待或发生的情况来确定。记住,状态不是一个来确定。记住,状态不是一个“时间点时间点”,它是状态机等待什么事发生的一段时间。例如,它是状态机等待什么事发生的一段时间。例如 waitingForEndwaitingForEnd 就比就比 endend 好好;timingSomeActivitytimingSomeActivity 就比就比 timeouttimeout 好好.不要把状态命名成动作不要把状态命名成动作第22页/共34页2023/5/2249.建模技巧建模技巧/7n n一致性命名。给状态机中的每一个状态和转换一个唯一的名字;这将使源代码级的调试更容易n n小心使用状态变量(控制行为的属
13、性)第23页/共34页2023/5/2259.建模技巧建模技巧/8n n如果一个图上如果一个图上5 25 2状态,考虑使用子状态。状态,考虑使用子状态。一般而言,在通常的情况下十个一般而言,在通常的情况下十个状态可能没有问题,但是两个状态之间却有四十个转换肯定需要重新考虑。状态可能没有问题,但是两个状态之间却有四十个转换肯定需要重新考虑。我们需要保证状态图是容易理解的我们需要保证状态图是容易理解的n n根据触发事件和根据触发事件和/或在转换上发生的情况来命名或在转换上发生的情况来命名转换转换。在选择名字时,也需要。在选择名字时,也需要从可理解性的角度出发从可理解性的角度出发第24页/共34页2
14、023/5/2269.建模技巧建模技巧/9n n当你看到一个选择点,你需要问一下是否能够将当你看到一个选择点,你需要问一下是否能够将选择条件的责任选择条件的责任分配给另外分配给另外一个组件。在这种情况下,发送者或者其它活动者进行决策,并将带有决策一个组件。在这种情况下,发送者或者其它活动者进行决策,并将带有决策信息的信号发送给另外一个对象,该信号的名字要带有决策信息,例如信号信息的信号发送给另外一个对象,该信号的名字要带有决策信息,例如信号的名字为的名字为isFullisFull和和isEmptyisEmpty,而不应该是,而不应该是 value value 和和checking messag
15、e data)checking message data)第25页/共34页2023/5/2279.建模技巧建模技巧/10n n选择点选择点的命名:在选择点处的回答问题的命名要采用描述性的方法例如,的命名:在选择点处的回答问题的命名要采用描述性的方法例如,isThereStillLifeisThereStillLife 或者或者isItTimeToComplainisItTimeToComplainn n选择点名字是唯一的:对任何对象,尽力保证选择点的名字是唯一的选择点名字是唯一的:对任何对象,尽力保证选择点的名字是唯一的 (同样,同样,保持转换的名字是唯一的保持转换的名字是唯一的)n n转换
16、的表达不能过长:如果过长,需要考虑用函数,或者将公共的代码片断转换的表达不能过长:如果过长,需要考虑用函数,或者将公共的代码片断用函数表示,转换必须读起来象高层的伪代码,例如,如果转换上的代码长用函数表示,转换必须读起来象高层的伪代码,例如,如果转换上的代码长于于2525行,可能就太长了行,可能就太长了第26页/共34页2023/5/2289.建模技巧建模技巧/11n n动作根据它们的任务命名n n注意entry和exit动作,很容易发生修改后,忘了修改它们n n退出动作可以提供安全特性,例如从heaterOn到heater off状态之间的退出动作,该动作就用以确保状态转换第27页/共34页
17、2023/5/2299.建模技巧建模技巧/12n n子状态必须包含两个或以上状态,除非状态机是抽象的并将被包含的元素的子类所修饰 n n选择点必须被用于在动作或转换的条件逻辑的场合。选择点容易被看到,而在代码中表达的条件逻辑是隐藏的,容易被忽略第28页/共34页2023/5/2309.建模技巧建模技巧/13n n避免下列保安条件:n n如果一个事件能触发多个转换,没有一个控制如果一个事件能触发多个转换,没有一个控制确定对哪一个保安条件首先进行判断,这样的确定对哪一个保安条件首先进行判断,这样的情况下,结果是不可预测的情况下,结果是不可预测的n n多个保安条件都可能是真的,但是只有一个转多个保安
18、条件都可能是真的,但是只有一个转换可以遵循,路径的选择可能是无法预测的换可以遵循,路径的选择可能是无法预测的n n保安条件不是可视化的,很难看到它们的存在保安条件不是可视化的,很难看到它们的存在第29页/共34页2023/5/2319.建模技巧建模技巧/14n n不要使状态机象流程图 n n这种状态可能意味着你对一个可能实际上不存这种状态可能意味着你对一个可能实际上不存在的抽象情形进行了建模在的抽象情形进行了建模:使用了一个主动类对最好采用被动(或数据)类的使用了一个主动类对最好采用被动(或数据)类的行为进行建模行为进行建模采用紧密耦合的数据类和主动类对一个数据类进行采用紧密耦合的数据类和主动
19、类对一个数据类进行建模建模 (例如,数据类被用于传递类型信息,但是主动例如,数据类被用于传递类型信息,但是主动类包含了绝大部分的数据,这些数据本来应该是与类包含了绝大部分的数据,这些数据本来应该是与数据类相联系的数据类相联系的).).第30页/共34页2023/5/232n n这种对状态机错误的应用可以通过以下症状来判断这种对状态机错误的应用可以通过以下症状来判断:消息发送给自己只是为了重用代码消息发送给自己只是为了重用代码非常少的状态,很多的选择点非常少的状态,很多的选择点在状态机中没有一个循环,这种状态机在过程控制应用或者控制事件序列是有效的;在分析在状态机中没有一个循环,这种状态机在过程
20、控制应用或者控制事件序列是有效的;在分析阶段中,它们的出现代表了状态机被弱化成流程图阶段中,它们的出现代表了状态机被弱化成流程图n n当问题找到后当问题找到后:使主动类变小从而将职责分得更清楚使主动类变小从而将职责分得更清楚将更多的行为移到与问题主动类相关的数据类中将更多的行为移到与问题主动类相关的数据类中将更多的行为移到主动类功能中将更多的行为移到主动类功能中 构造更富有意义的信号而不是依赖于数据构造更富有意义的信号而不是依赖于数据第31页/共34页2023/5/233小组作业小组作业n n航班从航班从Tentative(Tentative(暂定暂定)开始。有人制定时刻表,确定是否包含这个航
21、班。开始。有人制定时刻表,确定是否包含这个航班。n n如果计划批准,则航班转入如果计划批准,则航班转入ScheduledScheduled状态。航班时刻表发布到状态。航班时刻表发布到InternetInternet上上n n离起飞时间小于离起飞时间小于6060天,该航班开始开始售票,进入天,该航班开始开始售票,进入OpenOpen状态状态n n可以从航班中可以从航班中 增加和删除旅客,但售出最后一张票,航班就满了。如果有人退票,则再次开增加和删除旅客,但售出最后一张票,航班就满了。如果有人退票,则再次开始售票始售票n n飞机起飞飞机起飞1010分钟前,航班停止售票分钟前,航班停止售票n n如果
22、飞机还没有到达,则航班延迟。如果飞机还没有到达,则航班延迟。n n若延迟超过若延迟超过4 4小时,则航班取消。若乘客不足小时,则航班取消。若乘客不足5050人,则也把航班取消。人,则也把航班取消。n n如果航班取消,则航空公司要为乘客寻找另一航班。如果航班取消,则航空公司要为乘客寻找另一航班。n n如果飞机到达,则其起飞和着陆,完成这个航班如果飞机到达,则其起飞和着陆,完成这个航班第32页/共34页1.航班从Tentative(暂定)开始。有人制定时刻表,确定是否包含这个航班。2.如果计划批准,则航班转入Scheduled状态。航班时刻表发布到Internet上3.离起飞时间小于60天,该航班开始开始售票,进入Open状态4.可以从航班中 增加和删除旅客,但售出最后一张票,航班就满了。如果有人退票,则再次开始售票5.飞机起飞10分钟点,航班停止售票6.如果飞机还没有到达,则航班延迟。7.若延迟超过4小时,则航班取消。若乘客不足50人,则也把航班取消。8.如果航班取消,则航空公司要为乘客寻找另一航班。9.如果飞机到达,则其起飞和着陆,完成这个航班状态状态迁移迁移状态:进入动作状态:进入动作状态:活动状态:活动迁移:保证条件迁移:保证条件第33页/共34页