多个方框放在一起的时候,它们(所表达的领域)之间是没有关系或仅有殊少关系的。其中,当使用并列结构时,它通常表明系统总量是不变——系统的复杂性不因为拆分而增加。这事实上也约束了并列结构之间是不应有相互关系的。因为并列结构之间若存在关系,则“处理这些关系”将带来系统本身的复杂性的增加,而这与我们使用并列结构的本意是矛盾的。
当并列结构之间不存在关系并且它所表明的系统总量不变时,并列(的所有域)是可以被视为一个整体的。换言之,拆分或不拆分,只是对规模的分解而不会导致关系或相关处理的增减。就系统整体来说,其规模将因A..Z的个数的增加而线性增长,①在本小节有关复杂性的叙述中,“1”是没有单位的,表明它的确定性;当它与“(计量)单位”同时出现时,才能表明复杂性的大小。本书不讨论“如何计量系统复杂度”的问题(亦即是说不讨论单位的设定),仅以这种抽象描述的细微差异来说明“复杂性的大小与可变”之间的是存有区别的。②类似这种“性(状)”的不变,并列与嵌套结构表达的分别是系统的“(总)量”与“(本)质”上的不变。
③就规模性而言,本书是将“库”划为应用(application)这个级别的。这里只是对它的构建与表示方法加以讨论,并不是否定此前的规模划分。从另一个角度上看,泛义的“系统”也是可以包括库、程序或功能的,因此其构建与表示方法也有可借鉴之处。
④你可以将某些引擎(Engine)也视为框架,它是符合这里的讨论的。另外需要补充的是,这里的“框架与平台”与上一节小中的概念是相同的,这两个小节分别讨论到他们的范围(意图、方向与目的)与结构。
但B.Z之间是不是存在关系,会是一个很关键的问题——如果B..Z之间仍然存在关系,则图4-32所示的图将会类似网状,这会带来系统复杂性的剧增。所幸,在这个模型里,我们可以认为,如果B…Z的任意组合之间存在关系,则它应当视为A的一部分,亦即通过扩大A的规模来减少A…Z之间的整体复杂性。如此,以B_C之间存在关系为例,它的模型仍然可以表示为图4-33所示的嵌套结构。
这样一来,A'自身(缘于此前的设定,A即是嵌套结构所谓的“核心”)事实上应当具有A..C的系统总量以及它们之间的、确定的关系带来的复杂性,但该复杂性因为关系是确定的所以是确定的,而D…Z的复杂性是确定的。因此总的来看,二者的复杂性仍然是确定值1。yipindushu.com
因为D…Z之间是没有关系的,所以它们也可以被视为一个并列结构D_Z。当我们把A与D_Z看成整体结构A'_Z时,其复杂性应该由上述确定值1与一个关系m构成,可计为1+m。该结构
综合上述有关嵌套结构(A'Z)与并列结构(A_Z)的讨论:既然它们对应系统的复杂性都是确定值,那么它们都应当可以作为层次结构的一个可以“视其为具有不变性"的独立部分加以讨论。以图4-35为例,也就是说:□其一,由于嵌套结构可以理解为分成“核心与非核心两层”的层次结构①,因此总的来说,非层次结构(嵌套和并列)的使用并不会带来系统整体复杂性的增加;□其二,对于层次结构的任意两层,其层次(自身的)复杂性为1,因此其整体复杂性是由层间(关系的)复杂性决定的,可计为1+m;□其三,对于层次结构整体,它将包括不变与可变两个部分,由于其不变部分的复杂度是1,因此其整体复杂性必是由可变部分导致的。
①例如,引擎层与处理层、驱动层与应用层、框架调度层与业务层等,前者都是核心领域或包含核心过程。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【主要编程范式及其语言特性关系27:http://www.yipindushu.com/xuexifangfa/16532.html
推荐文章
09-13
1 正能量语录,让你成为更好的自己12-31
2 高效的英语学习方法09-03
3 最喜欢的一句话哲理的01-19
4 日语的学习方法12-02
5 如何提升学生学习兴趣