运用子系统概念将复杂系统分解成若干较小的子系统对于复杂问题的简化十分重要。但是,作为构成整体系统的相关子系统,其相互之间必然存在着相互联系。因此,需要为其相互联系的实现设计子系统之间的接口。于是,伴随着对系统实施的划分,增加了接口设计的要求。
例如,将原来的整体系统划分为4个相互独立而又相互作用的子系统,则将存在6个相互连接关系,而一个系统如果有20个相互作用的子系统,就可能有90个相互联系需要设计接口。由此可见,随着子系统的数量的增加,为实现其相互联系的接口设计的数量也将随之急遽增加。一般地,接口设计的数量将是n(n-1)/2,其中n是子系统的数目。
此外,除了接口设计数量的增加,子系统间的联系还有可能非常紧密,从而增加了它们之间相互协调配合的难度,降低了子系统的独立性。比如,假设原材料一经送到工厂就必须立刻投入生产,原材料系统与生产系统就存在着紧密联系。这时,必须按照准确的时间发送原材料,以免延误生产或因原材料过早送达而造成仓储的紧张。这样的紧密联系除了对两个子系统提出过高的协同难度,还降低了其各自的独立性。此时,可以采用化简和解耦两种方式来予以处理。
1)化简
仔细分析划分出来的子系统,将其中相互依赖关系密切的若干子系统聚合成群,构成较大的子系统群,然后规定一个从该子系统群到其他子系统或子系统群的统一接口路径,就能够有效地减少接口设计的数量。
图4-1 简化接口联系的子系统群
如图4-1所示,若将原来的整体系统划分为8个相互独立的子系统,并且假定各子系统两两之间均存在着联系,则需要为之设计28个实现其相互链接的接口,但经过分析,将其中联系密切的A1~A4子系统、B1~B4子系统分别聚合成两个子系统群,在子系统群内各子系统互联,而群与群之间通过单一接口实现互联。即可将接口设计的数量要求大幅度减少(在本例中由28个减少为13个),从而可以简化子系统间的接口设计的数量要求。
2)解耦
“耦合”是对两个或两个以上的实体相互依赖于对方的紧密程度的一个量度。相互依赖越是紧密,两个实体的耦合强度就越高。所谓“解耦”就是用相应手段,降低实体间相互依赖的密切程度,将两个密切耦合的运动相互分离开来加以处理的方法。
因此,解耦是继通过聚合方式减少因为运用子系统概念而带来的接口设计的数量要求之后,采取措施降低子系统间相互联系的紧密程度,进而进一步提高子系统彼此之间的相互独立性,并降低子系统之间接口设计难度的方法。在实施解耦时具体可以采取以下方法:(www.daowen.com)
(1)缓冲概念的运用
缓冲(Buffering):利用存储区缓解事物到达速度与离去速度不一致而采用的技术。
在前面描述的原材料系统与生产系统的关系中,要实现原材料一经送到工厂就立刻投入生产的要求具有相当的难度,这要求两个子系统均不能出现任何异常。通过引入“缓冲”概念,在两个子系统间设置一个“库存”,即可降低其实现相互联系的难度。当原材料系统将原材料送达,而生产系统不能立刻使用时,可以将送达的原材料暂时存入库存;而当原材料系统不能准时送达原材料时,生产系统可以从库存中获得满足正常生产所需要的原材料。这样既可允许两个子系统的运行具有独立性(在短期内),又可降低实现其相互联系的难度。
(2)松散资源的运用
松散资源又称冗余资源(Redundancy Resources),是为提高系统的可靠性而使用超过满足系统正常运行所需要的资源。在不具备冗余的系统中,任何一种资源的失效将使整个系统失效,而使用冗余资源,当相应资源失效时,冗余资源能够有效承担失效资源的工作,从而避免或减少系统的失效。在不同的应用环境中,冗余资源可以是硬件或是软件,与之对应,则有硬件冗余和软件冗余。
比如,银行中的交易数据非常重要,即使服务器小概率的故障,也会对业务的进行产生很大影响,甚至会影响一个国家的金融体系的稳定。所以,每一个银行的数据至少同时存在两个以上的不同地点的服务器中(这就是一个简单的冗余系统),这与数据备份不一样,备份可以是先存储,再实施备份,而银行系统的冗余系统是同时实现更改,以保证在任意时间,任意一个服务器的故障,都不会引起数据失真,并保障业务的正常营运。
通过使用冗余资源,可以使两个密切联系的系统具有某种独立性,从而简化了需要紧密联系的子系统间接口设计的复杂性。
(3)标准化
1934年,美国学者约翰·盖拉德在《工业标准化——原理与应用》一书中对标准作了如下定义:标准是以口头或书面形式,或用任何图解方法,或用模型、样品或其他物理方法确立下来的一种规范,目的在于对实际的或潜在的匹配问题(Matching Problems)建立并形成一套有效的解决方案。
两个相互联系的系统,通过标准化接口的设立,可以降低其耦合强度,提高子系统的各自独立性,减少实现其联系的复杂性。
解耦处理方法以及允许相关子系统在处理各自事务中具有某种独立性的方法,对于降低密切联系的系统间的接口设计要求与复杂性是非常有益的。但这并不是无代价的。代价之一是解耦技术本身的成本(如库存成本的增加、冗余资源的采用等);而代价的另一方面则是为实现最优协调和通信所付出的代价(如生产系统中JIT的应用)。因此,需要在两者之间寻求最优化平衡。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。