
主要有两类应用程序:
1. 一种是数据处理程序. 我们经常使用一种算法来描述它. 该程序对某些输入数据执行预定的处理uml 流程图,以便获得某些输出数据. 程序的当前状态可以用作数据的当前状态. 进行描述,例如: 人员薪金系统,仓库物流系统等;
2. 另一种类型是与外部环境交互的系统,例如: 操作系统,文字处理系统,飞行控制系统,交通控制系统,游戏等. 通常,这种类型的系统没有明确的输入/数据是输出,但与外界有许多意外的交互. 通常uml 流程图,系统响应方法与系统的内部状态密切相关. 通常,有许多变量记录系统内部的状态.
对于这两种程序,我们以不同的方式描述它们的方法. 对于前者,我们通常使用控制流程图或数据流程图来描述它们,而后者通常由状态图描述. 基本上,流程图中最重要的部分是“处理过程”单元. 该程序由几个主要处理单元组成. 状态图中的主要内容是程序的当前状态. 每个状态从头到最后都汇总并记录程序.
控制流程图通常只描述一个进程(线程). 需要使用同步机制来描述多个过程的控制流程图. 如果流程图中每个方框的连接非常复杂,则程序可能不属于该程序. 数据处理类型无法用“处理单元”清楚地描述,而需要用其他方法来描述. 状态图基本上不仅仅限于单个程序(线程). 在状态图中的任何点,系统只能处于某种状态,并且在任何时间点(假设准确的时间)只能发生一个事件. 如果程度足够,则任何两件事都必须能够区分订购). 状态图上的动作基本上是事件驱动的,这与事件驱动的面向对象的编程模型非常一致.

状态图可以替换为流程图吗?
以以下状态图和流程图为例:

状态图和流程图(转)'/>
状态图


状态图和流程图(转)'/>
流程图
控制流程图通常描述单个处理器(行程)的处理. 在上述流程图的任何时候,仅执行一个内容块. 如果有不同的处理器参与该过程,则必须有一个序列. 按照某个块的顺序(例如a1),多个处理器也可以一起执行以加快处理速度. 流程图中的条件测试必须按顺序执行,例如: e1,e2,e5,如果它们不成功,则将连续重复测试. 此时,e1,e2,e5的条件可能会由于外部环境或其他程序干扰而发生更改. 在状态图中,将系统的所有处理器一起考虑. 在任何时间点,系统都必须处于三种状态之一. 假设在状态1中,无论哪个处理器导致e1,e2或e5,系统都会完成相应a1,a2或a5的执行(无论使用哪个处理器完成),然后系统状态进入状态2.
在此示例中,状态图在体系结构上显然比流程图更简单,包含模型也更丰富,并且需要进行的假设更少. 另外,状态图更加关注事件/动作的完成,而不关心哪个程序完成. 该流程图非常关注该操作是如何完成的. 在状态图上,如果在某个状态下考虑的输入事件较少,则可以快速将其检出,但无法在流程图上进行区分. 当状态图上没有任何事件发生时,系统将暂停并等待(没有完成有意义的事情),并且流程图变为所谓的busyloop. 状态图更适合于面向对象的程序,流程图更适合于描述面向程序或数据处理程序.

示例状态图:

状态图和流程图(转)'/>

状态图和流程图(转)'/>

TCP连接状态图(请参阅Steven的书)

状态图和流程图(转)'/>
删除Document对象的操作状态图(请参阅Kerr的书)
用于绘制状态图的通用组件

状态图和流程图(转)'/>

状态图和流程图(转)'/>
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-274879-1.html
然后一半利息移民养家
出去看看大千世界
自己一不留神成为首富就不知道话怎么讲了