這是上上個星期 (9月底),我至大陸深圳「軟件園區-產學研究中心」教授兩天的「雲端與安卓系統開發與實務-案例研討」課程時,在他們大樓的男廁所小便時看到的這一段話:「素質就像內褲,雖然看不到,但是很重要。」
天哪,這麼的俗卻又如此的貼切,恰好可以用來解釋軟體的「結構設計」,這一向被軟體開發人員所忽視,但卻才是維繫系統的主結構根基。
「結構 (structure)」是系統組織的一種方式 (A manner of organization),每一種可以呈現完整全貌的事物,內涵必然是由許多的元素 (elements),以某種的形式所組合而成。
以「咖啡」為例,它可以是被視為一個整體,其結構組成的主要元素有 「咖啡粉」,「糖(optional)」,「奶精(optional)」,「水」 等。藉此一個小例子可以知道:整體物件是由內部眾多不同種類的元素所組成的。
而內部的組成元素也是由其它更細部的元素所組成,例如,水的結構成分是由 H2 + O 所組成。如此也可以知道:整體物件內的組成元素是屬於具有層次的階層式結構 (hierarchical structure)。只不過,是否有必要一直追蹤到更細部層次的組成元素,其實有待商確。例如,煮咖啡會在乎是否要加糖、加奶精,但卻沒有必要分析水的結構(H2O)吧。
小至被視為是單一的物件,但其實仍是由眾多更小的元素所來組成;大至所謂的「系統 (system)」,則總成的元素更是多種類,且可能需要探究至更細部的階層內。
例如「工作流程 (workflow)」系統,大的組件可能有「流程引擎 (engine)」,「流程定義 (process definition)」,「規則 (rule)引擎」等主要的元件 (component)。而「流程引擎」元件內則可能由「process instance」,「activity」,「task」等更細部的元素所組成。
「結構的分析與設計」,正是在探究上述所謂的組成元素。分析得好與否,影響到的是耦合度 (coupling)問題,也就是比較與「彈性度」、「延展性」、「再利用性」等議題有關,但與系統的實作關係卻沒麼大。
可惜,由於現今應用系統的開發越形走向速食文化,只重視「光鮮亮麗」、「華而不實」的表象。至於「內涵」,誰在乎你!有沒有穿內褲,會不會影響到長期的身心狀況,沒那麼重要啦。
真的是太貼切…
所以這段話貼在廁所的小便筒上讓我印象深刻,馬上就讓我聯想到軟體的結構。 🙂