软件架构的基础——状态机

相信学计算机的不管是学硬件(电子)还是学软件的都知道这句话,可计算的都是可图灵的。输入事件产生状态改变。把事件(数据)和控制状态的部分分离(中央控制器)就成了现在的冯氏计算机的模型。

在冯氏计算机模型上,我们的程序是顺序执行的。它有始有终,即使中间产生循环,但还是顺序的。在这种情况下我们验证我们程序的对错很困难。因为状态是平面的太复杂。一旦程序进入到错误状态,我们很难找到。这个阶段状态机几乎接近物理的控制器。

此后有了函数。这个时候程序是递归的。程序从main开始在main结束(在c语言里)。程序在main里进入到状态递归,直达他有一天返回到main。这个时候,我们设计程序时,把一些可以封闭起来的逻辑聚促到一起。形成一系列的函数。从逻辑上看程序被划分成:程序-->模块-->函数。模块可以理解成逻辑上的一个递归单元。这个时候,我们通常可以用单元测试来验证我们程序的正确性。这个时候状态机基本接近函数级--有时可以抽象成一些逻辑单元级别。

后来模块的划分方式进化成了对象,对象可以被类进行描述,类可以抽象,继承。这个时候的状态机越来越高级化。在oop最顶端是由接口构成的最基本的类。例如:如果,动物->叫这样的状态作为真命题存在。那么其子类都会继承这种状态,而且可以对状态的输入事件进行扩展。这样问题就可以收缩到模个具体的类中。单元测试可以考察模个类的接受事件和状态的关系。

 

接下来我们再看看struts, spring 这样的框架,其实就是在用xml来描述一个状态图。旧的版本是单层的,新版本是多层的。将来估计可以对模块进行抽象,描述成面向对象的。因此状态机的证明对现在的程序架构设计非常重要。

 

你可能感兴趣的:(单元测试,struts,架构设计,spring,oop,框架)