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

引 言
   
面向状态转换的软件设计思想属于面向过程软件设计思想的范畴,它完全符合软件工程模块化、结构化的设计思想。在面向过程的软件设计中,状态的转化与分解对于解决具有复杂过程的问题有着很好的效果,并能被用户很好地理解和接受,它的基本指导思想为:自顶向下、逐层分解、逐步求精、理清状态、分解状态。同时,它也具有很强的实用性、可读性、可移植性,并且思路清晰、简单易学、具有一定范围内的通用性。通常可采用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 结 论
   
以上两个例子简洁、明了地实现了各自所要的功能。该状态转换的设计思想具有化繁为简的功效,同时也具有简单、易学、易用等特点。通过上述两个例子的说明及描述,相信大家对该状态转换思想有所了解。这种状态转换思想的关键与核心是,要能够清楚地将问题的状态抽象并分解出来,并且对于所有状态的分解与描述争取做到不遗漏、不冗余、层次分明。这样,就能够很好地理解并运用这种思想为我们服务了。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭