(2) 同一件事物,不同的人各描述了该事物的不同方面,造成他们之间所描述的事物既类似又不同,有重复的地方,又不完全一样,导致自我重复。
比如,银行中的用户信息模块,在"网上银行"、"公积金贷款",和"信用卡系统"中各自都可能有一个模块,从数据库、到逻辑、到界面都各自重复一套,他们之间既类似又有一些区别,如需要的信息不一样。导致这些模块之间的自我重复。
对于此类的自我重复,是由架构设计导致,在架构设计阶段没有按照"组件化"、"服务化"和"层次化"的架构设计,造成在一个事物不能符合不同模块和系统的需求,并且无法扩展。
这种自我重复,在企业的遗留系统和新系统之间尤为明显。因为大多企业的老系统在构建时由于技术、组织结构等原因,都是采用垂直的渠道架构,即存储层、逻辑层、展现层完全重新实现,甚至连技术框架都和其他渠道相异。如某银行业的多渠道应用中,不同渠道(如网上银行和手机银行)的逻辑类似,但在两个系统中重用性不高,存在着大量的自我重复。如下图左所示:

随着SOA(Service Oriented Architecture)的广泛使用,再辅助以层次化架构,能有效解决此类问题。
重复的组件要被重用,就需要是组件化的,并且能够被访问到。EJB、Web Service以及相应的组件化、基于服务的设计思想,一定程度解决了这些问题,缓和了在企业架构中的重用性问题。
而层次化的架构设计则既是解决架构重复的途径,也是结果。层次化的架构演变过程,可以在人类社会发展过程中找到似曾相似的影子。在人类社会中,任何事情重复到一定程度,就会产生一个新的职业或阶层,比如,找房子的人多了,就自然会产生中介。在架构设计中也是一样。任何设计重复到一定程度,就应该抽象出新的层次。这个层次也许可以作为一个新的组件,也可能做出一个新的产品。
上图2右边的架构,是银行多渠道整合的架构设计,是基于SOA架构的、多层次高度重用的架构设计,银行在新增一个渠道(如增加ATM渠道)时,能够重用大量的其他渠道的组件。