正文内容
UML活动图范文
来源:文库
作者:开心麻花
2025-09-19
1

UML活动图范文(精选4篇)

UML活动图 第1篇

关键词:测试场景,活动流图,深度优先搜索,独立路径,自动生成

1引言(Introduction)

基于场景的测试用例设计方法[1]是一种重要的黑盒测试技术,其核心思想是通过分析软件需求,构建各种测试场景,并寻找测试场景与系统输入参数、特征状态的关联关系进行测试用例的设计。测试场景的构建是场景法的关键环节,传统的从软件需求规格说明中提取基本流、备选流进行测试场景构建的方法存在效率低下、执行困难等问题。因此,探索测试场景自动生成策略成为运用场景法设计测试用例的重要研究点之一。基于UML模型驱动测试用例自动生成是一种基于模型的软件测试技术,在自动生成测试用例方面有广泛的研究[2,3]。其中UML活动图用于表示系统业务的工作流程,被认为是最适合描述软件过程的模型,因此众多研究者在使用UML活动图生成测试场景方面做了一定的研究。周飞等提出将活动图转化为有向图,通过构建图的搜索树生成测试场景[4];苏翠翠等提出了一种基于路径覆盖的测试场景生成算法[5];Jena等提出了活动流图(Activity Flow Graph,AFG)的概念,设计了测试场景模型,并采用遗传算法生成测试场景[6]。这些研究为基于UML活动图构建测试场景提供了良好的思路,但是存在着以下问题:一是构建的模型在形式化定义上有所欠缺;二是未能实现测试场景的自动化生成;三是未考虑复杂测试场景中的循环工作流的执行与优化。

本文通过对活动流图进行形式化定义,给出了测试场景的自动生成策略,针对系统需求中存在循环工作流的情况提出了一种测试场景优化算法,显著降低了测试场景的冗余性,提高了测试设计效率。

2基于活动流图的测试场景生成策略(Test scene generation based on activity flow graph)

2.1活动流图的元素定义

由于UML是一种半形式化的建模语言,因此需要采用一种更好的可形式化表示的图来构造测试场景模型。活动流图由活动图转化而来,通过把活动图中的各种元素按照一定的规则映射而成[7],其本质是一个有向图。图1表示了一个活动图与活动流图的映射关系。

根据活动图与活动流图的映射关系,一条路径表示系统用例从开始到结束的执行流程,对应着一个测试场景,路径集合则对应测试场景集合,构建测试场景的问题就转化为获取活动流图路径集合的问题。对于较复杂的系统需求,所构建的活动图往往包含循环工作流;循环会导致路径的组合爆炸,对活动图中所有可能的路径进行穷尽测试是无法达到的[8]。为了得到所有路径集合,需要对循环工作流进行合理处理。循环可展开成为无限长的路径序列,为了控制路径序列的长度,限定测试场景中每个循环只展开一次[9]。同时,路径集合中的路径之间存在大量相同的边,使其对应的测试场景之间存在较多相同的测试工作流,从而导致设计出的测试用例存在冗余,因此需要对路径集合进行优化,降低冗余度。

2.2测试场景生成策略的设计

根据独立路径的定义,独立路径集合能够覆盖活动流图中所有的边,且保证每条路径中循环回路至多执行一次;对应的测试场景集合即为优化的测试场景集合,实现了采用较少的测试场景覆盖全部的工作流,同时解决了循环回路的执行问题。基于活动流图的测试场景生成策略如下:

(1)根据系统需求创建活动图。

(2)将活动图转化为活动流图。

(3)基于改进的深度优先搜索算法获取活动流图的路径集合。

(4)采用路径优化算法获取活动流图的独立路径集合。

(5)根据独立路径集合生成测试场景。

3关键算法的设计与实现(Design and implementation of the key algorithm)

3.1基于深度优先策略的路径搜索算法

深度优先搜索算法(Depth First Search,DFS)是一种经典的图遍历算法,可以用于获取图的路径集合。在基于UML活动图生成测试场景的研究中,多为面向有向无环图的获取路径集合的DFS算法[10,11]。但有向无环图不包含循环回路,因此针对本文的研究内容,提出了一种改进的深度优先搜索算法,以解决循环回路的问题,具体思想如下:

(1)起始结点设置为已访问,将其入栈。

(2)获取栈顶元素v的相邻结点集合W。

(4)对于已入栈且已访问的相邻结点,说明存在循环回路,判断w在栈中出现的次数是否小于该结点的出度;如果出现次数小于出度,则说明当前循环回路为第一次执行,将w入栈,同时将w作为栈顶元素,重新执行第(2)步;否则,则访问下一相邻结点。

(5)如果W集合中不存在步骤(3)(4)中的两类相邻结点,则将W集合中的每个结点标记为未访问,将栈顶元素v出栈。

(6)当栈顶元素为终结结点,即W为空时,将栈中的结点按照逆序排列构成的路径加入路径集合P(AFG)中,并弹出栈顶元素。

改进的深度优先搜索算法的具体实现如下:

3.2独立路径集合获取算法

在路径集合中根据独立路径的定义进行路径筛选,可以得到独立路径集合。独立路径集合的获取算法思想如下:

(1)任选一条路径作为独立路径,初始化独立路径集合。

(2)对剩余路径进行遍历,逐条验证其是否为独立路径,将独立路径加入独立路径集合。

(3)对第(1)步中得到的独立路径集合中的每条路径再次进行遍历,移除不满足独立路径条件的路径。

独立路径集合的获取算法具体实现如下:

4应用实例(Examples of application)

供应商协同平台是一个将企业采购管理系统与供应链管理系统对接形成线上流程的一体化平台,为企业拉动与上游客户之间在订货协作、商品推介、库存查看、资金支付、物流查询、渠道沟通等业务环节的紧密协作。平台中包含众多业务流程,其中“采购物资”流程是一个较为复杂的系统需求,包含若干审批环节。以该流程为测试对象验证本文提出的测试场景自动生成策略的有效性。根据系统需求,构建“采购物资”流程的活动图如图2所示。

将活动图中的各元素映射为活动流图中的结点与边,得到活动流图如图3所示。

根据独立路径集合的获取算法,得到独立路径集合如表2所示。将独立路径表示的结点序列映射至图1中,生成的测试场景如下:

测试场景1:Start—生成询价单—采购组审批未通过—修改询价单—生成询价单—采购组审批通过—部门审批未通过—记录问题询价单—End。

测试场景2:Start—生成询价单—采购组审批通过—部门审批通过—生成采购单—审批采购单未通过—评审问题采购单(可以解决)—修改采购单—审批采购单未通过—评审问题采购单(不可解决)—关闭采购单—End。

测试场景3:Start—生成询价单—采购组审批通过—部门审批通过—生成采购单—审批采购单通过—生成发货单—审批发货单未通过—修改发货单—审批发货单通过—发货—End。

通过对实例的应用结果进行分析,提出的测试场景生成策略解决了以下问题:

(1)实现了根据活动流图自动化获取路径集合。

(2)解决了循环回路带来的复杂性问题;图2中包含的三个循环回路在路径中仅执行一次。

(3)通过路径优化,将14个测试场景优化为三个测试场景,降低了测试冗余性。

(4)优化后的测试场景能够使系统工作流达到100%的测试覆盖率,具有较好的测试充分性。

5结论(Conclusion)

本文提出了一种测试场景的自动生成策略,根据UML活动图,给出了活动流图的严格定义,通过改进的深度优先搜索算法及路径优化算法,解决了测试场景中的循环回路问题与测试冗余问题。同时该策略能够实现测试场景的自动生成,并在一个商业系统测试过程中成功应用,证明了测试结果具有较好的充分性,测试效率得到了显著提高。

参考文献

[1]Anand S,et al.An Orchestrated Survey of Methodologies for Automated Software Test Case Generation[J].Journal of Systems and Software,2013,86(8):1978-2001.

[2]Utting M,Pretschner A,Legeard B.A Taxonomy of Modelbased Testing Approaches[J].Software Testing Verification and Reliability,2012,22(5):297-312.

[3]Shirole M,Kumar R.UML Behavioral Model Based Test Case Generation:a Survey[J].ACM SIGSOFT Software Engineering Notes,2013,38(4):1-13.

[4]周飞,杨根兴,蔡立志.基于UML的测试用例生成方法研究[J].计算机应用与软件,2009,26(2):107-110.

[5]苏翠翠,王晓军.基于UML活动图的测试用例生成方法研究[J].计算机技术与发展,2010,20(8):49-51.

[6]Jena A K,Swain S K,Mohapatra D P.A Novel Approach for Test Case Generation from UML Activity Diagram[C].Issues and Challenges in Intelligent Computing Techniques(ICICT),2014International Conference on.IEEE,2014:621-629.

[7]Kundu D,Samanta D.A Novel Approach to Generate Test Cases from UML Activity Diagrams[J].Journal of Object Technology,2009,8(3):65-83.

[8]杨鹤标,李云平.基于UML活动图的功能测试场景生成方法[J].计算机工程,2011,37(2):55-57.

[9]陈鑫,等.一种面向列车控制系统中安全攸关场景的测试用例自动生成方法[J].软件学报,2015,26(2):269-278.

[10]Sharma C,Sabharwal S,Sibal R.A Survey on Software Testing Techniques Using Genetic Algorithm[J].International Journal of Computer Science Issues,2014,10(1):381-393.

UML活动图 第2篇

基于扩展的UML活动图的质量工作流建模

为满足2000版ISO9000过程管理模式的要求,使用工作流技术解决过程控制问题成了企业质量管理的一种需要.本课题用UML类图表达了工作流参考模型,统一了UML活动图与工作流过程模型的概念,并根据工作流的概念扩展了UML活动图.文末,利用扩展的活动图表达了质量管理中一个典型的`过程--不合格品的控制过程.

作 者:曾清华 李青 Zeng Qinghua Li Qing  作者单位:北京航空航天大学机械学院 刊 名:航空制造技术  ISTIC英文刊名:AERONAUTICAL MANUFACTURING TECHNOLOGY 年,卷(期):2006 “”(9) 分类号:V26 关键词:工作流   过程模型   扩展的UML活动   图   质量管理  

人脑活动图将解开思维奥秘 第3篇

投入产出比极高

2013年2月18日,美国政府宣布,将启动人脑活动图计划,这个计划的目的是要构建一个大脑活动时的全面图谱,或一个广阔的人类精神活动图谱,从而弄清人的大脑是如何工作的。由于任务的艰巨性,初步设想这个计划需要10年时间,这个计划的意义可与已经完成的人类基因组计划媲美。

美国政府初步确定在2013年3月出台这一计划,全球的许多顶级科学家,包括神经和纳米领域的科学家都将参与这个计划。同时,除了美国一些联邦科研机构外,一些私人基金会也会积极支持该项计划。研究人员希望通过合作和努力,在了解大脑的上千亿个神经元的基础上来解读人的认知、智能以及最终了解人的意识。

当然,研究人员还对BAM抱有更高的期望,通过该计划除了能理解大脑的全面功能外,还能帮助人们发现各类神经精神疾病,如阿尔茨海默氏症、帕金森氏症等疾病的病因,同时找到治疗这些疾病的新方法。不仅如此,这个计划还有望为研究人工智能提供线索,并为实现人工智能铺平道路。

虽然美国政府预算经费并不充裕,但是此计划的预算额度至少30亿美元。奥巴马在其2013年2月13日的国情咨文中提出,BAM应当是政府最有创意的投资之一。他说,“过去我们投资人类基因组每1美元获得了140美元回报。今天我们的科学家正要描绘人的大脑图谱以便弄清阿尔茨海默氏症的原因。他们正在发明的药物可让受损的器官再生,用新材料设计的电池能提高电量10倍。现在,不是砍掉科技革新领域可创造就业方面的投资的时候。我们需要进行这些投资”。

人类基因组计划始于1990年,耗资38亿美元。该计划在2003年4月完成,至2010年,该计划已经获得8000亿美元的回报。

参与BAM规划的科学家表示,他们希望美国联邦政府每年提供超过3亿美元的资金。这与人类基因组计划的经费差距不大,不过BAM能带来更多的经济增长。曾帮助创建人类基因组计划的哈佛大学分子生物学家乔治·丘奇也正在帮助规划人脑活动图计划,他认为,与BAM相关的神经科学和纳米科学的研究总开支或许会超过人类基因组计划所花的钱,但是,对BAM的投入会得到更多回报。

人脑活动图研究的内容

人脑约有1000亿个神经元(神经细胞),每个神经元不仅有自己的活动,而且要通过突触把神经冲动(生物电流)传导到其他神经元,从而产生、获取和交流信息、指令,以指挥人的各种行为,并产生思想和意识。

过去的研究初步探明,神经元是靠突触来构筑神经元与神经元之间的相互联系并传递信息的。根据大脑解剖的结果,研究人员发现,突触有多种类型,可分为轴突-胞体突触、轴突-树突突触、轴突-轴突突触三类,这些突触类型可以执行不同的神经传导功能。

从突触的结构来看,突触由突触前膜、突触间隙和突触后膜三部分组成。构成突触前膜部分的神经元轴突末梢呈球形,形成突触小体,里面有大量的突触小泡,小泡内贮存有神经递质。神经递质是神经末梢释放的、具有传递信息功能的特殊化学物质。由下一个神经元构成的突触后膜上有能与相应递质结合的受体。某种神经递质,如乙酰胆碱、多巴胺等,被前一个神经元释放后,能与突触后膜上的受体结合,从而引起下一个神经元的兴奋或抑制,以传导特定的信息。

按功能不同,突触又可分为兴奋性突触和抑制性突触。兴奋性突触是指突触前神经元兴奋时,由突触小泡释放出具有兴奋作用的神经递质,如乙酰胆碱、去甲肾上腺素、5羟色胺等。这些神经递质可使突触后神经元产生兴奋。如果兴奋性突触受到阻碍,就可能引起疾病或死亡。例如,某些阻碍乙酰胆碱释放的药物能引起致命性的肌肉瘫痪。而抑制性突触是指突触前神经元兴奋时,由突触小泡释放出具有抑制作用的神经递质,如多巴胺、甘氨酸等。这些递质使突触后膜“超极化”,从而显示抑制性的效应。

由于人类大脑的神经元很多,神经网络又非常复杂,过去研究人员只能通过解剖、生理、生化和脑电图,如磁共振成像(MRI)、正电子发射计算机断层显像(PET)等来了解大脑神经元的活动。由于方法的局限,研究人员只能同时记录少量神经元的活动,而且多数情况下,还要利用探针进行有创检查。

2012年6月,美国6位科学家在美国《神经元》期刊上发表文章,提出用一些新技术和新方法绘制人脑活动图,这些方法能够对大脑既不损伤,又能记录和研究其活动情况,他们就是人脑活动图计划的创建者。这些研究人员包括,美国哈佛大学分子生物学家乔治·丘奇、加利福尼亚大学卡弗里大脑和心灵研究所副主任拉尔夫·格林斯潘、加利福尼亚伯克利国家实验

室的化学家保罗·阿利维萨托斯、卡弗里基金会的分子遗传学家全美永、加利福尼亚技术研究所的物理学家迈克尔·罗可斯和美国哥伦比亚大学的神经科学家拉斐尔·尤斯特。

研究人员提出的探索大脑神经元活动情况的方法包括,采用硅纳米探针、光学和激光技术,同时还可以利用未来的合成生物学技术,例如可以设计一种分子级别的生物机器人,其作用就像传感器一样,利用这种分子机器人,不用开颅就可以收集大脑的信息。目前一个比较可行的方法是,通过制造一批分子大小的机器人(纳米机器人),用无创方式充当传感器,在细胞层次上检测并记录大脑活动,以此构建完整的人脑活动图。要完成这种研究,不仅要有纳米技术的成熟,而且需要用合成DNA来储存和记录大脑神经元和神经网络,包括大脑局部和全部神经网络的活动。这也是为何人脑活动图计划需要纳米研究人员参加的原因。

现在,科学家已经利用激光探测到小鼠大脑皮质神经元的活动。而BAM首先需要从只有比较少的神经元的简单动物开始研究,然后过渡到对有更多神经元的更为复杂的动物进行研究,最后才会对人进行研究。例如,秀丽隐杆线虫只有302个神经元,7000个突触,研究人员已经绘制了它的静止的脑图,或称为“连接体”。这是目前唯一的一个动物静止脑图。

nlc202309020734

下一步研究人员计划对有135000个神经元的果蝇大脑进行研究,随后是对有100万个神经元的斑马鱼大脑进行研究,再然后对小鼠、最小的哺乳动物小臭鼩(其大脑皮质由约100万个神经元构成)进行研究。

研究人员也承认,如同人类基因组计划一样,BAM也会涉及伦理问题,包括隐私、读心(术),甚至目前的科学神话——心灵控制。所有这些也是BAM计划实施之前需要解决的问题。

当然,描绘人脑活动图不只是能获得正常人神经活动的类型、功能、分子机制,甚至意识产生的过程和机理,而且能够获得有关精神分裂症和自闭症等疾病的新认识和新疗法。因为,精神分裂症和自闭症等疾病在很大程度上,都是神经元活动不正常的结果。

不同的意见

也有相当一些研究人员对人脑活动图计划提出了怀疑,主要体现在两个方面,一是美国联邦科研基金的使用是否合理,二是BAM能否像人类基因组计划一样获得成功。

人类基因组计划取得了巨大成功,不仅按计划完成,而且回报了政府的投资(本质上是纳税人的投资),但是人类基因组计划也并非完美无缺。例如,随后的另一个工程是DNA元件百科全书计划(ENCODE),其中涉及对大量“垃圾DNA”的研究。加利福尼亚大学伯克利分校的生物学家迈克尔·艾森认为,ENCODE并不是一个好主意。现在应当清醒了,大生物学并不是一个为个人发现驱动的科学气球,它正在形成一种对自身的巨大威胁。

因为,这样的研究把太多的鸡蛋放在了一个篮子里。也许BAM只是一个为神经科学研究获得更多基金的公关项目。如果BAM不能获得成果或结果一般,联邦政府的巨额投资未必不会打水漂。相反,联邦政府应当对科研进行多样化的投资,不能把鸡蛋都装在一个篮子里,一些只有百万美元投入的研究同样可能出大成果。

另一方面,也有研究人员对BAM能研究出什么名堂表示了怀疑。比如,有人指出,我们现在并不了解果蝇的大脑,研究果蝇的大脑能给人带来什么呢?有人能解释果蝇的大脑与人的大脑的区别吗?

就连BAM的发起人之一格林斯潘也承认,人类基因组的任务是非常具体的而且容易完成,但BAM的目标尽管吸引人,却很困难。

与人类基因组计划相比,人脑活动图更为复杂,因为这项庞大的研究是要记录约1000亿个神经元的活动。而人类基因组是静态的,只是测序人类不同细胞染色体中基因密码,即四种碱基胞嘧啶(C)、胸腺嘧啶(T)、腺嘌呤(A)和鸟嘌呤(G)的排序,它们的排列是有规律的,基本上是下面几种:A-T、G-C、T-A和C-G。如果碱基序列出错,如出现跳跃、错

位、重叠等,就会产生疾病。

但是,研究大脑神经元的活动更难,除了单个神经元的信息传导、神经递质的不同外,还需要了解整个神经网络同步或不同的活动,才能知道整个大脑的活动模式是怎样的,这些活动最终如何驱使人做出各种举动,以及如何产生意识。同时,尽管不同人的意识的产生有相同的模式,但却有不同的特点。人脑活动图是否真的能弄清每个人的意识是如何产生的确实很困难。

一些研究人员对BAM能否出成果的怀疑类似于对欧洲相同的大脑研究计划的质疑。欧洲的人脑研究计划是,由瑞士主导,投资10亿欧元(约合83亿元人民币),制造一个基于硅的“大脑”。这是在有关大脑内部运作的研究成果基础之上,构建一个超级计算机模拟系统。但是,有人认为,这样的模拟系统依赖的仍然是尚处于理论阶段的并不完备也并不准确的知识。因此,这样的“大脑”研制出来可能意义和作用有限。

同理,对于BAM,人们怀疑的是,尚无可靠的理论和可行的技术来研究。正如加利福尼亚大学的物理学和神经生物学研究人员大卫·克莱因菲尔德所言,在对大量的人进行磁共振成像(MRI)扫描之前,他会做更基础的神经科学研究。

【责任编辑】张田勘

UML活动图 第4篇

IEC 60870-5-104[1]规约是IEC 60870-5-101远动通信规约的以太网实现方式,与IEC101规约相比,增加了防止报文丢失及异步确认机制使数据传输更加可靠和高效,因此不仅在厂站与调度系统的通信中使用,也应用于变电站监控系统、智能辅助系统、EMS系统和铁路系统装置通信中[2,3,4,5,6]。

IEC104通信规约作为一种事件驱动的系统,如果根据流程图,使用if-else或switch-case语句来编程实现的方法,会引入大量的条件分支语句,这使得编写的程序需要花费大量时间进行调试,同时这样的程序可读性和可扩展性都比较差,不利于后期功能扩充和维护。

基于有限状态自动机的设计和实现方法(设计模式中称之为状态模式)通过把复杂的判断逻辑条件转移到表示不同状态的一系列类中,在事件驱动模块的设计实现中广泛应用,如文献[7,8,9]都使用了状态机模型进行分析设计。

有限状态自动机理论也被应用到了IEC104规约的设计和实现上[10],这是一个很好的尝试,但效果不太理想,设计出的状态图可读性差、不易扩充。造成这些问题的原因是传统有限状态自动机缺乏层次和并发的支持,很难清晰地表示像IEC104规约这种复杂系统。

Harel状态图[11]通过对传统有限状态自动机进行扩展,克服了有限自动机的缺陷,扩展的内容包括层次、并发和通信[12]。UML状态图[13]是Harel状态图面向对象的表示方式。

本文基于UML状态图对IEC104规约主站端进行分析,抽象定义了动作、事件和状态,设计了表达规约逻辑关系的状态图,并利用Qt[14]状态机框架进行实现。

1 IEC104规约的控制机制

与IEC101规约相比,IEC104规约增加了使数据传输更加可靠和高效的各种机制,包括:

(1)防止报文丢失和报文重复传送机制:规约定义了发送序列号和接收序列号,发送数据方在收到接收方的确认后才删除已发送数据。若一端判断出接收序号不连续,将主动断开链路重新建立连接,发送方会在连接重新建立后重新传送未被确认的数据。

(2)异步确认机制:主站(客户)端接收到从站(服务器)端的变化信息后,并不立即进行确认,而是等定时器t2超时或者需要确认的数据帧达到一定数目n时,才发送数据确认报文。

(3)测试机制:长期没有数据传输时(定时器t3超时)会启动测试过程。一方发起测试请求时,必须在规定时间内(t1时间内)收到对方的响应,否则会关闭链路,断开连接。

(4)启/停传输控制机制:主站端利用启动数据传输(STARTDT)完成启动数据传输过程后,被控站才开始主动上送数据的传输。

正是由于这些机制的存在为编程实现增加了较高的复杂度。

2 状态图设计

UML状态图是有限自动机的理论在计算机科学领域的实现。同时UML组织对其又进行了扩展,增加了层次和并发特性。状态图由状态、事件、动作及状态间的转换构成。在设计一个状态图之前,需要对问题领域有深刻的理解以便能准确抽象出状态、事件和动作。

2.1 事件及动作定义

设计状态图的第一步是对系统中可能出现的事件及需要执行的动作进行抽象和定义。

动作是一个可执行的操作,像改变一个变量的值,进行I/O操作或调用一个函数都是动作。在IEC104规约中,规约主站端(客户端)首先需要向从站端(服务器端)发起网络连接请求,“向从站端(服务器端)发起网络连接请求”就是一个动作,如表1动作定义中的Act1;启动定时器也是一个动作,如表1中的动作Act3。

事件在某个时间点发生,可以触发系统状态转换,比如定时器的超时,接收到一个数据包等。动作的执行也会产生事件,比如表1中的动作Act1,其执行结果有两个,连接失败或者成功,“连接成功”和“连接失败”就是两个事件,如表2事件定义中的Evt1和Evt2。

事件和动作的定义是对问题域深刻理解进而抽象出的。表2列出了IEC104规约中可能出现的事件。表1列出了所有的动作。在设计的最初阶段,可能并不能准确、完整地定义出所有的事件和动作,在状态图构建阶段,可以进一步添加事件和动作。

2.2 状态抽象与状态图构建

2.2.1状态图的表示方法

在UML状态图中状态用圆角矩形表示,状态的名称标识在矩形框内。初始状态用实心圆点表示。转换使用带箭头的线表示,箭头起点端为源状态,箭头末端为目标状态,转换的触发事件、动作及监护条件以“事件e[监护条件c]/[动作a]”的形式在线上进行标注,含义是当事件e发生时,如果监护条件c为真,那么系统就会执行动作a并且系统状态转换到目标状态。其中转换中的监护条件和动作都是可选的。状态的入口动作用“entry/动作”表示,并标注在状态矩形框内;出口动作用“exit/动作”表示,并标注在状态矩形框内。

UML状态图支持组合状态和并行状态。嵌套在另外一个状态中的状态称之为子状态,一个含有子状态的状态被称作组合状态。不包含任何子状态的状态称为原子状态。如果子状态比较复杂,需要构建单独的细化的状态图。组合状态中的多个并行状态间用虚线隔开。

2.2.2状态图构建

系统状态的构建过程是一个递归过程,包含三步:

(1)根据系统或模块的功能,将其划分成多个子系统或子模块,每个子系统或子模块抽象定义为一个状态,填写在状态定义表中。

(2)根据这些子系统或子模块之间的关系,定义事件、动作及初始状态,然后根据状态之间的转换关系设计该层次的状态图。

(3)对每一个子系统或子模块,重复步骤(1)和步骤(2)。

表3给出了状态图构建过程中抽象出的所有状态定义。

以下是IEC104规约主站端状态图的详细构建过程。

主站端程序启动后,首先尝试连接服务器(执行动作Act1),如果失败(事件Evt2)则需要再次发起连接;如果成功(事件Evt1),则表示连接从站成功了。因此最高层的状态图可划分为连接成功状态(表3中的B)和未连接状态(表3中的A),当组合状态B的子状态中出现定时器t1超时(事件Evt5)或收到错误序号的I格式的帧(事件Evt12),系统将从状态B转到状态A。结合动作和事件定义,图1给出了IEC104规约最高层的状态图。

当进入连接成功状态后,主站首先发送启动数据传输请求报文(执行动作Act2),然后等待启动数据传输响应报文。如果在t1时间内,收到启动数据传输响应报文(事件Evt4),就可以进行数据传输了;反之,如果没有收到响应报文,则事件Evt5会发生,该事件由状态B2的父状态B处理,这个转换在图1中表示。因此,连接成功状态可以划分为B1、B2和F三个子状态。B2是等待启动数据传输响应报文状态,F为数据传输状态。状态F是一个持久的状态,正常情况下,系统将一直处于该状态,结合动作和事件定义,图2是状态B的状态图。

按照规约功能要求,状态F又可以划分为5个并行的状态,F1、F2、F3、F4和F5。F1为I格式数据处理功能模块,F2为定时器t2处理模块,F3为定时器t3处理模块,F4用于处理来自人机界面的控制命令,F5用于处理来自对端的测试请求。结合动作和事件定义,图3显示了状态F的状态图。

状态F1可划分为3个子状态,F11、F12和F13。F11为空闲状态,等待I格式数据帧;F12为I格式帧处理状态,在该状态下,对收到的I格式数据帧进行处理并重启定时器t3(对应动作Act6和Act12);F13为需要确认的I格式帧达到临界值n状态,需要发送S格式的数据确认帧并停止定时器t2(动作Act7和Act8)。F11为F1的初始状态。结合动作和事件定义,状态F1的状态图在图3中显示。

状态F2包含2个子状态:F21和F22。F21为等待定时器t2超时状态,F22为定时器t2超时状态。F21为F2的初始状态,在F21状态下,若定时器t2超时(事件Evt7),则系统进入F22状态。结合动作和事件定义,状态F2的状态图在图3中显示。

状态F3包含3个子状态:F31、F32和F33。F31为等待定时器t3超时状态,F32为定时器t3超时状态,F33为等待测试响应状态。F31为F3的初始状态,在F31状态下,若定时器t3超时(事件Evt9),则系统进入F32状态;系统进入F32状态后,发送测试请求报文、启动定时器t1(动作Act9和Act3),并进入F33状态等待测试应答,若在t1时间内收到测试应答(事件Evt10),则系统转到状态F31,在转换过程中停止定时器t1并重启定时器t3;否则定时器t1超时(事件Evt5),导致F31的祖先状态B转到状态A。结合动作和事件定义,状态F3的状态图在图4中显示。

状态F4包含3个子状态,F41、F42和F43。F41为等待控制命令状态,F42为处理控制命令状态,F43为等待命令响应状态。F41为F4的初始状态,在F41状态下,如果人机界面下发控制命令(事件Evt17),则系统进入F42状态,在该状态下将命令信息组织成104规约报文并发送给对端,然后进入F43,等待响应。结合动作和事件定义,状态F4的状态图在图4中显示。

状态F5包含2个子状态,F51和F52。F51为等待测试请求状态,F52为收到测试请求状态。F51为F5的初始状态,在F51状态下,如果收到对端的测试请求(事件Evt15),则系统进入F52状态。在F52状态,发送测试应答报文,成功后,系统重新回到F51状态。结合动作和事件定义,图5是状态F5的状态图。

从图1到图5的状态图可以看出,分层设计的状态图层次结构分明,逻辑关系清晰;利用并行特性使各个功能模块相互独立,易于扩展新的功能。

3 基于Qt状态机框架的实现

Qt最初是一个C++的GUI开发组件[14],现在已经发展成为一个可以开发在多种硬件平台和操作系统下运行的应用程序的框架,并在很多软件系统的开发中使用,如风电场监控系统的开发[15]。Qt状态机框架提供了一个可以在Qt应用程序中嵌入状态图的元素和语义的API函数和执行模块。该框架与Qt的元对象系统紧密结合;例如,状态之间的转换可以由信号来触发等[16]。状态机框架由事件系统来驱动。

Qt的状态机基于Harel的状态图,支持分层和并行,与UML状态图在语义上是等价的。因此在设计完状态图后,使用Qt状态机编程实现是比较简单的事情。

实现IEC104规约时,需要创建一个单独的线程用于不间断的接收报文。此外,三个类Protocol Manager、Protocol State和Protocol App用于完成主要功能,规约管理类Protocol Manager用于规约报文的组织发送和报文解析,ProtocolState是状态类的抽象,用于创建具体的类,ProtocolApp类根据具体的状态图构建状态机。图6的UML类图显示了这三个类之间的关系。

编程时,表1中的事件转换为Qt的信号。类ProtocolManager继承自Qobject,并包含了所有的这些信号及表2中的所有动作。

对于表3中定义的每一个状态实例,其差异之处在于在入口动作或出口动作,使用继承自QState的ProtocolState类来实现该功能。在实际实现时,由于单个状态可能有不止一个入口动作或出口动作,因此在ProtocolState类用QList类型的变量m_list_enterFunc保存单个状态的全部入口动作,QList类型的变量m_list_exitFunc用于保存单个状态的全部出口动作。ProtocolState的on Entry需要重写,执行所有的入口动作,即对list列表中的每一个函数,都执行一次,核心代码为

ProtocolState类的出口函数onExit实现与onEntry类似,不再列出。

Protocol App类用于构建状态转换。Protocol App类有一个有限状态机QState Machine类型的变量proto_machine,并包含表1中所有状态的实例。构建过程包括创建各个状态的实例,设置状态实例的入口动作和出口动作,设置组合状态的初始状态及调用addTransition创建状态间的转换。比如,对于状态A和状态B,首先使用state A=new ProtocolState();state B=new ProtocolState();创建状态A和B的实例,然后使用语句

QList<enterFunc>ptrList;

ptrList.push_back(&(ProtocolManager::Act1));

stateA->setEnterFuncPtrList(ptrList);将状态A的入口函数Act1(向服务器发送连接请求)放进状态A的实例stateA的m_list_enterFunc中。

在状态A下发生事件Evt1系统会转换到状态B,因此使用语句state A->add Transition((const QObject*)(m_p Link),SIGNAL(Evt 1()),state B);来完成转换定义。

由于状态B是组合状态,包含多个子状态,因此需要为其设置初始状态,根据图2可知,状态B的初始状态是B1,那么使用语句stateB->setInitialState(stateB1);即可完成该设置。

对于包含多个并行子状态的组合状态F,创建方法与其他不同,需要使用并行标记;语句stateF=new ProtocolState(QState::ParallelStates,stateB),用于状态F的创建工作。其他各个状态的具体实现与上述的状态A和B类似,不再列出编程实现语句。

当所有状态的状态实例创建、状态间转换、入口动作和出口动作及复合状态的初始状态设置工作完成后,调用proto_machine.addState(stateA);proto_machine.addState(stateB);将最顶层状态A和B加入到状态机变量proto_machine中,并使用proto_machin.setInitialState(stateA);语句设置状态A为初始化状态,完成这些工作后就可以调用proto_machine.start();来启动状态机了。

相对于传统编程方法,基于Qt状态机的实现不仅消除了表示规约逻辑的大量条件分支语句,而且编程简单,大大节省了开发时间。

目前软件可以运行在windows 7及Debian linux操作系统上,所使用的Qt的版本号是5.4.0。

4 功能测试

为了更有效地进行测试,我们用Qt开发了界面,主要包括两部分:第一部分为实际状态图的信息显示,该部分用于显示每一个状态是否活动(Active),第二部分用于记录输出状态转换过程及收发报文。状态用矩形框表示,矩形框的线宽用于表示状态是否活动,最细的线宽用于表示从来没有活动的状态,当前活动的状态用最粗的线宽表示,曾经活动但当前不活动的用中等线宽表示。

功能测试分两类:一类是正常的功能测试,另一类为异常情况的测试。图7和图8显示了正常的功能测试结果。图7中,主站端成功连接从站端后,发送启动数据传输请求,收到响应后,状态F就成为当前的活动状态,因此状态A、B1和B2用中等宽度的线表示,状态B、状态F均为最粗的线宽。状态F的并行子状态F1、F2、F3、F4和F5也均为最粗的线。F11、F21、F31、F41和F51作为F1、F2、F3、F4和F5的初始状态也处于活动状态(Active),因此也是最粗的线。其他从未进入的状态都是最细的线。

图8中进行了控制命令测试,因此F42、F43曾经活动过,变为中等线宽;收到了I格式的帧也导致F12状态曾经活动过,也变为中等线宽;定时器t3超时导致测试请求报文发出,因此F32、F33为中等线宽;图8中定时器t2超时,导致F22状态变为活动,发送完S格式帧后又转到F21状态,因此F22状态为中等线宽。

图9是一种异常测试情况,主站端成功连接从站端后,发送启动数据传输请求,然后处于等待启动数据传输响应状态。如果在规定事件内,没有收到响应报文,则系统断开连接,转到状态A,重新连接从站。因此,状态A和B1为中等线宽,状态B和B2为最粗线宽,其他的状态为最细线宽。

图10为状态转换和报文收发记录,该记录显示的状态转换与图形化的显示是一致的。

测试结果表明本文的分析和实现方法满足IEC104规约的功能要求。

5 结语

本文基于UML状态图对IEC104规约主站端进行了分析,定义了状态、事件、动作及状态间的转换,并使用Qt状态机框架进行了实现。本文的分析、设计和实现方法具有以下优点:

(1)基于分层和并行的特性设计的状态图层次结构清晰,逻辑关系明确;各功能模块相互独立,这些都为今后的维护和扩展提供了便利。

(2)基于Qt状态机框架的实现不仅大大减少了编程的复杂度,把开发人员从程序编码中解放出来,专注于规约逻辑,而且可以使本软件仅需要微小修改就可以在不同的硬件平台和操作系统上运行,保证了软件的可移植性。

相关文章
表演人才范文

表演人才范文

表演人才范文(精选11篇)表演人才 第1篇六七岁至十一二岁是学龄初期, 即相当于儿童接受小学教育的年龄。这一时期少儿的主要行为活动是学...

3
2025-09-20
保安班长月总结

保安班长月总结

保安班长月总结(精选6篇)保安班长月总结 第1篇篇一:保安班长年终总结个人总结光阴似箭日如梭,转眼间半年已经过去。回顾我们保安队在近...

1
2025-09-20
班主任有关工作培训心得

班主任有关工作培训心得

班主任有关工作培训心得(精选15篇)班主任有关工作培训心得 第1篇20**年8月我有幸在市电大参加了“仙桃市第一期小学骨干班主任高级研修班...

1
2025-09-20
部编版一年级四季教案

部编版一年级四季教案

部编版一年级四季教案(精选6篇)部编版一年级四季教案 第1篇《四季》文清路小学 刘明霞教学目标:1、认识 9个生字和言字旁,虫字旁和折...

2
2025-09-20
办公室文秘的岗位职责有哪些

办公室文秘的岗位职责有哪些

办公室文秘的岗位职责有哪些(精选18篇)办公室文秘的岗位职责有哪些 第1篇1、在董事会的领导下主持办公室的全面工作,负责办公室的日常工...

3
2025-09-20
八年级上册第1课鸦片战争

八年级上册第1课鸦片战争

八年级上册第1课鸦片战争(精选12篇)八年级上册第1课鸦片战争 第1篇《鸦片战争》教学设计【教学目标】1、英国向中国走私鸦片及危害;林则...

2
2025-09-20
表面粗糙度测量仪的工作原理

表面粗糙度测量仪的工作原理

表面粗糙度测量仪的工作原理(精选10篇)表面粗糙度测量仪的工作原理 第1篇表面粗糙度测量仪的工作原理分析及其改进方案阳旭东(贵州工业大...

1
2025-09-20
宾馆改造可行性报告

宾馆改造可行性报告

宾馆改造可行性报告(精选8篇)宾馆改造可行性报告 第1篇第一章 总论1.1 项目名称及承办单位项目名称:宝地宾馆改扩建项目 承办单位:...

1
2025-09-20
付费阅读
确认删除?
回到顶部