1.5 组件化软件的目标:有机次序
嵌入式软件其实也跟自然界的生物一样,有其生命力,愈有弹性者,在面对环境的变化与挑战时,愈能适应新的环境,就愈显示出旺盛的生命力。这就是所谓的“适者生存”的自然法则。于是,我们可虚心地去效法自然,而努力创造出具有生命力的软件,并且拥有自然之美。
当我们驻足细观一棵生生不息的树时,可发现它与自然环境(如气候)交互最频繁的“叶子”部分,其以旧换新的情形也相当迅速。其次是支撑叶子的“树枝”及“树干”,同样地,树根也会随着地形、土壤及水分而不断调整与变化。尽管叶子等组件迅速随着环境而以旧换新,但各组件仍然和谐地形成一个完整的实体——一棵树。
因此,能解决软件危机的好软件,应该像自然界中的生物一般,各部分的组件能随外界环境而成长或蜕变,但在蜕变过程中时时刻刻,也处处会遵循能跟其他组件和谐相处与共存的法则,以避免破坏整体的美感。即组件是有自主性的(Self-contained),在不违背和谐共处的法则下,能尽情地发挥其独特的性质。而和谐共处的法则,也就是一般所谓的接口(Interface)了。而这些法则是为了支持与维护整体架构(Architecture)的完美性而进行必要的约束或契约(Contract)。
例如,斑马线是汽车跟行人之间的接口,这接口所含的法则是:行人应由斑马线穿越马路,而汽车必须让斑马线上的行人通过。在此法则的维护之下,行人能大摇大摆,甚至闭着眼睛走上斑马线,汽车也可在它的道路上急驶。万一有汽车抢越斑马线或行人擅自跨越马路,就违背了法则,组件(人或汽车)之间的和谐以及软件(社会)的美感就瞬间消失了。
所以,当今对软件业产生巨大影响力的建筑学家—— Christopher Alexander (Alex75)说道:
“This natural or organic order emerges when there is perfect balance between the needs of the individual parts of the environment, and the needs of the whole.”
(这种自然或有机的次序是源自于各组件的特殊需求跟整体环境的需要之间获得极佳的平衡状态。)
像行人有其本身的需要——自由自在地过马路,而汽车也有其本身的需要——快速安全地行驶在马路上。整体社会有其需要——能够平安和祥,车子不撞人,人也不扰乱车子的行驶。总而言之,自然界有生命力的生物应有个次序——就是在不违背整体美的前提之下,各组件应有最大的自主与弹性。
因此,好的组件化软件也应具有这种有机的自然次序——各组件应能随时视环境的需要自主地成长与蜕变,但组件之间应遵循特定的法则(接口),以便许多组件在蜕变过程中随时支持与维护应用程序的整体美感。就如同一只乌龟,其坚硬的外壳表达了乌龟的整体架构,这架构会提供弹性的空间给各个柔软的组件,让柔软的组件(如头)可随环境变化而迅速变化。一旦头、脚长大了,需要较大的活动空间,此时外壳也会慢慢地长大,以满足组件的需求。
纵观目前的应用软件,如果无柔软的组件,就像一只头、脚无法灵活运动的乌龟,当然是僵化而无生命力的。
于是,好的组件化软件,应当容许组件能像乌龟的头、尾、手脚一样自主空间,让其灵活地与外部环境交互,以便获得较合理的环境,继续茁壮成长、生生不息!
| 回书目 上一节 下一节 |