9888|20

2131

帖子

0

TA的资源

至上芯片

楼主
 

一种简单有效的面向过程软件设计思想 [复制链接]

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

最新回复

  详情 回复 发表于 2016-7-1 11:13

点评

好文章,可是图不见了啊  详情 回复 发表于 2013-5-15 16:24

赞赏

1

查看全部赞赏

点赞 关注(1)
个人签名处处留心皆学问!

回复
举报

802

帖子

24

TA的资源

五彩晶圆(中级)

沙发
 

路过

飘过 顺便看看
 
个人签名生活在激情中 ... 希望 哈哈

https://home.eeworld.com.cn/?80086
 

回复

2131

帖子

0

TA的资源

至上芯片

板凳
 
谢谢!
 
个人签名处处留心皆学问!
 
 

回复

312

帖子

0

TA的资源

五彩晶圆(高级)

4
 

Re: [分享] 一种简单有效的面向过程软件设计思想

也 是路过,学点东东,
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

5
 

Re: [分享] 一种简单有效的面向过程软件设计思想

飘过 顺便看看
 
 
 

回复

78

帖子

0

TA的资源

纯净的硅(中级)

6
 
可是图
怎么不见了啊
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

7
 

why

drawing? where do it go?
 
 
 

回复

104

帖子

0

TA的资源

一粒金砂(中级)

8
 
楼主看不到图啊!
 
 
 

回复

531

帖子

0

TA的资源

一粒金砂(高级)

9
 
我认为很好
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

10
 
图。。。
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

11
 
还可以 但是图片看不到
 
个人签名<A href="http://www.newkw-ic.com/" >新科维</A>
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

12
 
图看不见咋回事儿?
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

13
 
图片呢???
 
个人签名<A href="http://www.newkw-ic.com/" >新科维</A>
 
 

回复

237

帖子

0

TA的资源

一粒金砂(高级)

14
 
122296972
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(初级)

15
 

回复 楼主 daicheng 的帖子

好文章,可是图不见了啊
 
 
 

回复

954

帖子

0

TA的资源

纯净的硅(初级)

16
 
就是美图。。。
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

17
 
还行,能把图补上就更好了
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

18
 
受教了,美中不足的是少了好多图
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

19
 
程控电话那个例子,如果电话之间不存在共享的数据,比如信息,也无需协调信息,比如信号,那是没问题的,一旦出现这两个的需求,这种状态机就会非常复杂难以掌握
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

20
 
时间空间,还有在两者之间起沟通作用的信息,我觉得,只要同时存在两个交叉,状态机就很难应付这种复杂性
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表