系 統 設 計
系統設計是把需求轉化為軟體系統的最重要的環節。系統設計的優劣在根本上決定了軟體系統的品質。就象“一切帝國主義都是紙老虎”那樣可以斷定“差的系統設計必定產生差的軟體系統。”所以我們要努力保證系統設計“根正苗紅”,把一切左傾、右傾的設計思潮消滅在萌芽狀態。
本章講述系統設計的四方面內容:體繫結構設計、模組設計、資料結構與演算法設計、使用者介面設計。如果將軟體系統比喻為人體,那麼:
(1)體繫結構就如同人的骨架。如果某個傢伙的骨架是猴子,那麼無論怎樣餵養和美容,這傢伙始終都是猴子,不會成為人。
(2)模組就如同人的器官,具有特定的功能。人體中最出色的模組設計之一是手,手只有幾種動作,卻能做無限多的事情。人體中最糟糕的模組設計之一是嘴巴,嘴巴將最有價值但毫無相干的幾種功能如吃飯、說話、親吻混為一體,使之無法平行處理,真乃人類之不幸。
(3)資料結構與演算法就如同人的血脈和神經,它讓器官具有生命並能發揮功能。資料結構與演算法分布在體繫結構和模組中,它將協調系統的各個功能。人的耳朵和嘴巴雖然是相對獨立的器官,但如果耳朵失聰了,嘴巴就只能發出“啊”“嗚”的聲音,等於喪失了說話的功能(所以聾子天生就是啞巴),可人們卻又能用手勢代替說話。人體的資料結構與演算法設計真是十分神奇並且十分可笑。
(4)使用者介面就如同人的外表,最容易讓人一見鐘情或一見噁心。象人類追求心靈美和外表美那樣,軟體系統也追求(內在的)功能強大和(外表的)介面友好。但隨著生活節奏的加快,人們已少有興趣去品味深藏不露的內在美。如果把Unix系統比作是健壯的漢子和婦人,那麼Windows系統就象嫵媚的小白臉和狐狸精。想不到Windows系統竟然能興風作浪,佔去大半市場。有鑒於此,我們應該鼓勵女士多買化妝品(男士付錢)以獲得更好的介面。
在進行系統設計時,我們要深情地關注軟體的品質因素,如正確性與精確性、效能與效率、易用性、可理解性與簡法性、可複用性與可擴充性等等。即使把系統設計做好了,也並不意味著就能產生好的軟體系統。在程式設計、測試、維護等環節還要做大量的工作,無論哪個環節出了差錯,都會把好事搞砸了。據說上帝把所有的女士都設計成天使,可是天使們在下凡時有些雙腳先著地,有些臉先著地。上帝的這一疏忽讓很多女孩傷透了心。我們在開發軟體時,一定要吸取這個教訓。