不易工程化部分,或说控制部分,是以自动机为基础的,有人干脆称之为业务引擎,在CMM中没有讨论到一点。容易理解业务引擎可以使得业务规则"动"起来,从而得到结果。这种方法在目前的软件工程中引起了越来越广泛的重视,因此各种各样的业务引擎被采用和商品化。这些业务引擎常被称之为"中间件"。
如果把某程序开发语言定义为源语言,则业务引擎可以看作为(meta-Interpreter)元解释器,并且业务逻辑可以看作为元程序。理论研究表明,采用元结构的软件有更好的可控性。
5.2 软件结构
当一个软件的说明成份和控制成份被分离之后,软件的结构也一定发生变化。因为在原来的软件中说明和控制成份是相混合的。变化后的软件结构我们称之为分层软件结构(或简称分层结构),如下图所示:
从上图可以看出数据表示已不再是软件的核心,并且数据的变化事实上成为了业务流程的"副作用"(Side-effect)。
在复杂信息系统中,业务逻辑对应实体对象可能不只一种,例如,ERP中的人事和生产管理,其中人事管理所对应的实体对象是员工,而生产管理所对应的实体对象是产品。如果用不同的业务引擎来处理不同实体对象的业务规则,并且,使得它们之间是松耦合的,则构成了一个多agents系统结构。采用这样的结构事实上使得复杂业务逻辑被分解了。无疑这可以降低软件复杂程度,从而降低开发风险。
CMM的一个基本假设是,用户的需求是确定的,并且经过软件工程人员的努力是可以搞清楚的。在这种情况下,以过程控制保证软件的质量,从而完成软件工程。但是这一假定在大多数情况下是不成立的。因为,在通常的情况下,用户无法叙述清楚他们的需求,并且仅仅*人?quot;努力"也不能保证理解用户叙述清楚的需求,特别是,用户的需求本身就是在变化的,因此通常需求是不确定的。对于需求不确定的软件工程,仅仅从过程管理的角度,无论如何也是无法解决的问题。
对于不确定的软件需求,软件的结构应当支持这种不确定性。软件的分层和代理结构能够比较好地支持这种不确定性。事实上所有的软件都在一个进化的过程中,确定只是相对的,因此支持不确定性的软件结构也可称为可进化的软件结构。可进化的软件结构是提升软件质量的关键技术。
5.3 开发平台
如果人们可以把对软件开发的主要注意力集中在对业务逻辑的理解和描述上,而不是集中在所采用的计算机实现技术上,则显然可以大大地降低软件的开发的难度,并且使得软件开发过程容易做到透明化。但是软件无论如何是与计算机技术相关的。为解决这一问题可研究一组引擎(中间件)来适当地屏蔽计算机技术相关性,这一组引擎我们称之为开发平台,其中包括:
●操作控制引擎
Form调度自动机,每个Form为最小调度单位,它的输入是Form属性描述和Form之间的调度关系和条件等。
●对象状态引擎
对象状态推导自动机,它根据对象状态变化的规则集自动演绎对象的状态变化。它的输入为对象属性描述,状态变化规则集,当前所发生的事件等。
文章来源于领测软件测试网 https://www.ltesting.net/