当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]一种简单有效的面向过程软件设计思想

引 言
   
面向状态转换的软件设计思想属于面向过程软件设计思想的范畴,它完全符合软件工程模块化、结构化的设计思想。在面向过程的软件设计中,状态的转化与分解对于解决具有复杂过程的问题有着很好的效果,并能被用户很好地理解和接受,它的基本指导思想为:自顶向下、逐层分解、逐步求精、理清状态、分解状态。同时,它也具有很强的实用性、可读性、可移植性,并且思路清晰、简单易学、具有一定范围内的通用性。通常可采用UML中的状态图来对其进行设计和描述,也可使用有穷自动机(DFA)中的状态图来对其进行设计和描述。


1 单过程对象状态转换图
   
首先,来看一个简单的单过程对象的例子。在洗衣机的工作过程中,一般要经过以下几个过程:
    ①接通电源,洗衣机按“启动”按钮后开始供水;
    ②当水满到“水满传感器”时就停止供水;
    ③水满之后,洗衣机开始执行漂洗过程,正转5 s,然后倒转5 s,执行此循环动作10 min;
    ④漂洗结束之后,出水阀开始放水;
    ⑤放水30 s后结束放水;
    ⑥开始脱水操作,脱水持续5 min;
    ⑦脱水结束后发出“光报警器”报警,叫工作人员来取衣服;
    ⑧按“停止”按扭(或10 s报警超时到),声光报警器停止,并结束整个工作过程。
    按照该洗衣机的工作流程,可用有穷自动机(DFA)中的状态图来描述其状态转化过程,如图1所示。

    了解了该洗衣机的状态转化过程后,根据其状态转化图就可以很容易地为其进行软件设计,并写出相应的程序实现代码。


2 单过程对象状态转换图的程序代码实现
   
下面就根据该洗衣机工作状态转换图,对洗衣机工作过程进行软件设计和编程(使用C语言来描述):
    首先,该状态图只涉及一个对象,那就是洗衣机,因此只需要定义一个状态变量,用该状态变量来表示洗衣机的状态。该变量定义为:
  
    最后,再定义一个时间变量wDelayTime来表示对洗衣机工作过程中的时间控制。至此,通过洗衣机工作过程中的状态转换图,就可以很容易地写出该洗衣机工作过程的程序实现代码(函数StateControl(),其中有些函数的具体实现代码没有给出,主要目的是要了解该状态转换的设计思想和方法)。



3 多过程对象状态转换图
    再来看一个相对比较复杂的问题,在程控电话交换机中,一台程控电话交换机可接有上百、上千,甚至上万部电话机。其中,每一部电话机对应于程控电话交换机中的一个物理及逻辑端口,程控电话交换机就是通过对这些物理及逻辑端口的工作状态进行控制,进而实现对这些电话机工作状态的控制。一部正常工作的电话机一般具有以下几种主要状态:空闲态、拨号态、回铃音态、振铃态、通话态和忙音态。程控电话交换机的工作过程主要就是实现电话机在这些状态之间的转换与迁移。
    由于连接在一台程控电话交换机上的所有电话机都具有上述6个相同的状态转换过程,因此,可用一个状态数组来表示一台程控电话交换机上所有电话机的工作状态。图2为程控电话交换机中电话机工作时的状态转换图。

4 多过程对象状态转换图的程序代码实现
   
为在软件设计及程序代码上实现上述程控电话交换机中电话机状态的转移,首先需要定义6种工作状态(用C语言实现):

   
    还要注意到,在拨号状态,还存在2种子状态:听拨号音拨首位号状态和听静音拨非首位号状态。
    也就是说,在拨首位号时是处于听拨号音状态的拨号,而在拨非首位号时则是处于听静音状态的拨号,这两种状态是要进行区分的。当然,首位号在程控电话交换机中还有其他更为重要的作用,这里就不多讲了。
    为此,需为拨号态再定义2种子状态,定义如下:

   
    假设该程控电话交换机最多可接有1 000部电话机,由于这些电话机都具有上述6种状态,并且都具有相同的状态转移过程,因此,可用一个状态数组来表示所有电话机的状态。其定义如下:


    至此,可写出该程控电话交换机电话机状态转移程序代码(函数PhoneStateControl()),该程序代码在主程序中100 ms被定时调用(其具体实现代码略——编者注)。


5 结 论
   
以上两个例子简洁、明了地实现了各自所要的功能。该状态转换的设计思想具有化繁为简的功效,同时也具有简单、易学、易用等特点。通过上述两个例子的说明及描述,相信大家对该状态转换思想有所了解。这种状态转换思想的关键与核心是,要能够清楚地将问题的状态抽象并分解出来,并且对于所有状态的分解与描述争取做到不遗漏、不冗余、层次分明。这样,就能够很好地理解并运用这种思想为我们服务了。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱

上海2024年5月16日 /美通社/ -- 2024年5月10日至5月13日,富士胶片(中国)投资有限公司携旗下影像产品创新力作亮相北京P&E 2024。在数码相机展览区域,全新制定的集团使命"为世界绽...

关键字: 富士 数码相机 影像 BSP

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP

深爱人才,共赴"芯"程 深圳2024年5月15日 /美通社/ -- 5月11日,深圳国资国企"博士人才荟"半导体与集成电路产业专场活动在深圳市重投天科半导体有限公司(简...

关键字: 半导体 集成电路产业 BSP 人工智能

武汉2024年5月15日 /美通社/ -- 北京时间4月26日-5月4日,2024 VEX 机器人世界锦标赛于美国得克萨斯州达拉斯市举办。本届 VEX 世锦赛为期九天,设有 VIQRC 小学组/初中组、V5RC 初中组/...

关键字: 机器人 BSP RC POWERED

上海2024年5月15日 /美通社/ -- 由生成式人工智能(AI)驱动的临床阶段生物医药科技公司英矽智能宣布,与复星医药(600196.SH;02196.HK)合作开发的潜在"全球首创"候选药物IS...

关键字: ISM BSP PC 人工智能

上海2024年5月13日 /美通社/ -- 5月8日,浦东新区国资委组织陆家嘴集团等9家区属企业与立邦中国召开合作交流会,旨在贯彻落实浦东新区区委、区政府工作要求,进一步放大进博会溢出带动效应,持续扩大区属企业与进博会重...

关键字: BSP 数字化 自动化立体仓库 智慧园区

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化

北京2024年5月13日 /美通社/ -- 5月11日,鲲鹏昇腾开发者大会2024期间,华为举办"昇思AI框架及大模型技术论坛",软通动力数字基础设施与集成事业部总经理谢睿受邀出席、软通动力...

关键字: AI 模型 BSP 精度
关闭
关闭