跳到主要內容

再讀「人月神話」(2)--關於架構

梭羅:「問題不在於你看著什麼,而是你看出了什麼」

重讀人月神話,方知這幾年,仍只是如來佛手中的小猴崽子......
我們來探討人月神話在架構及設計上的看法:
首先是整體概念性
軟體工程並不用像蓋教堂一樣要花好幾世紀的時間。但是,因概念的不統一而造成問題的情況,卻遠比蓋教堂還糟。這肇因於我們往往不採用主設計師的一系列想法,而是把設計這件工作切割成好幾個部分,然後分配給一群人去做。
我主張在系統設計時,保有概念整體性(conceptual integrity)是最重要的原則。寧可忽略掉某些新奇或更好的特色,來反映同一組設計理念,也不要蒐羅了一大堆很棒,但彼此無關或合不來的構想。

要做到概念性整體這點,我們發現,勢必須要有一位總工程師或是架構師的角色,且必須有深厚的經驗及技術,方能達成這項要求。

避免發生錯誤的設計方式

做好定義以防止誤解
最致命也最棘手的錯誤莫過於系統錯誤。這肇因於各個組件的開發人員做出了彼此不協調的假設,之前討論的概念整體性,就是針對這個問題所提出來的解決方案,簡而言之,具備了概念整體性,不但使軟體易於使用、易於開發,也比較不容易發生錯誤。

這做法意味得在架構上付出勤勉、辛苦的代價。貝爾電話實驗室的V.A.Vyssotsky說:「把產品定義清楚是非常關鍵的工作,有太多大多的失敗都源自於自始至終都搞不清楚要做的是什麼東西。」
詳細的功能定義、詳細的規格說明、規範良好的防錯設施與錯誤處理技術,都有助於減少發生系統錯誤的可能性。

規格審查
早在進入程式編寫階段之前,規格文件就應該先由其他獨立的測試小組進行審查,以確保規格的完整和明確,開發人員本身則不適合做這樣的工作。

由上而下的設計方式
Niklaus Wirth在1971年提出了一篇非常亮麗的論文。將整個系統開發工作劃分出架構、實作和實現,便是基於這種觀念的具體做法;更進一步來說,不論是架構、實作和實現,都可以透過由上而下的方式做出最佳的成果。

Wirth 提出來的是一個持續細分精製的步驟(refinement steps)。一開始,先勾勒出粗略的工作定義和執行方案以得到主要的結果。然後對此定義做更深入的探討,看看結果跟我們真正要的東西有何不同,並把方案 中幾個大的步驟細分成更小的步驟,於是,在工作定義中的每個細分精製過程都演變成解決方案演算法的細分精製,同時也可能伴隨著某個資料結構的細分精製。

透過上述的過程,就可以界定出解決方案的模組(module)。或是其他能夠獨立進行更進一步細分精製的資料,而模組化的程度便決定了軟體適應變動或修改的能力。
Wirth提倡每個步驟都應該盡可能運用高階(high-level)的表示方式,只彰顯出概念,而細節則隱藏起來,留待需要更進一步細分精製的時候再處理。

一 個良好的由上而下設計方式(top-down design)可以避免掉許多錯誤,這可從幾方面來說明。
首先,由於結構與表示方式變得很清楚,所以更容易描述出精確的需求和模組功能;
其次,藉由分割並 明確定義出獨立模組的過程。可以避免系統錯誤;
第三,隱藏細節將使結構中的缺陷更容易被突顯出來;
第四,每一次細分精製的步驟,都可以對該步驟的設計成果進行測試,這使得測試工作可以提早進行,並把測試的焦點集中在屬於該步驟中較為適當的細節層次。

這種逐步細分精製的過程並非只進不退,如果在某個細節上遭遇到意想不到的混亂,就有可能再回到較高的層次重頭再來,事實上這種情形很常發生。但你會比較容易精確判斷出何時、或為什麼該壯士斷腕重 新設計。

有許多爛系統就是因為當初捨不得放棄,結果一直架在不良的設計基礎上做些治標不治本、疊床架屋的違章建築,由上而下的設計方式可以減少這種做法的誘惑。

Brooks認為由上而下的設計方式是這十年間最重要的一個新的軟體開發形式。

在決定怎麼做之前,重要的是知道要做什麼。
而且要每個人都清楚知道作的是什麼,所以要有清楚的定義。
可是團隊中還是會有搞不清楚或是只想依自己方法幹的人,因此有一段時間我們需要規格審查,不斷地review,以確定大夥兒都清楚知道。

另外,架構師要清楚的了解:
架構旨在說明做什麼,而實作是說明如何做。

架構師與實作人員的互動:
*記住實作人員有發揮創意完成實作的責任,所以架構設計師只能建議,不能命令。
*在建議時,永遠只提出一個能夠符合規格的實作方式,同時也接受其他能夠達到目標的方案。
*默默地,私底下提出建議。
*準備為提出的建議付出喪失信任的代價。

所以要做好架構,必定要有清楚的文件指導。
這我們下次再來談。

留言

這個網誌中的熱門文章

Alison Krauss的『When you say nothing at all』

你一定聽過這首歌:When you say nothing at all,不論你是看了『Notting Hill』或是喜歡『男孩特區』,你聽到的可能是Ronan Keating的版本。 最近在聽『Various.Artists.-.[Best.Audiophile.Voices.III]』,裡面有Alison Krauss演唱的版本,我的老天,沒蓋你,馬上把這首歌納入我的經典歌曲集。 誰是Alison Krauss呢? 以下是她的介紹(擷自Very-CD): 多次被評為世界最美的女聲,坐擁 11 座格萊美獎,代表歌曲包括 When You Say Nothing At All 和《冷山》中那首動人的 The Scarlet Tide 等等。 在和"聯合車站"樂隊的合作後,Union Station 的 Bluegrass 威力又把她往前推了一把,讓已經擁有翅膀的Alison 又添加一道光環。當一位鄉村電臺 DJ 某天在節目中播放 Alison 精選專輯主打歌 When You Say Nothing At All 後,每天如浪潮般的點歌頻率,開啟了鄉村音樂的一個新傳奇。 Alison 在 1995 年與 Union Station 合作的精選大碟,曾是鄉村音樂排行榜第 2 名、流行音樂專輯第 15 名,全美銷量達二百萬張,這對於一個鄉村歌手而言,是相當大的數目。不過與其說專輯得到如此多的成功是個意外,不如承認 Alison 無可否認十分甜美的歌喉,及用心演唱的態度,才是讓她長久以來受歌迷肯定的主要原因。 16歲時,Alison Krauss 與美國鄉村音樂最重要的獨立唱片公司 Rounder 簽約,發行的第一張個人專輯,立刻成為樂評家的最愛。 18 歲首度獲得葛萊美獎,之後又繼續獲得無數鄉村音樂獎項,其中包括 11 項葛萊美獎,總總的榮耀應該都是因為她從小苦學古典小提琴、民謠小提琴及歌唱技巧。樂評家均認為 Alison Krauss and Union Station 從 80 年代末至 90 年代中,將草根藍調音樂從地方性音樂帶領成為全世界均能接受的樂風,在樂壇佔有舉足輕重的地位。 1999年,Alison Krauss 的專輯《Forget About It》成為金唱片。一年後,她因在《O Brother ,Where Art You》...

永遠的少年:村上春樹與海邊的卡夫卡

讀楊照老師的《永遠的少年:村上春樹與海邊的卡夫卡》,真是令我豁然開朗,茅塞頓開。 閱讀村上的《海邊的卡夫卡》時,我已經能夠隱約理解到"村上春樹的互文世界"這個觀念,因為那裏有圖書館,容易地就聯想到《世界末日與冷酷異境》。 佐伯小姐說「嗯,但是那個圖書館裡面沒有放書。」 卡夫卡又問她說:「圖書館沒有放書,那放什麼呢?」 在《世界末日》那座圖書館裡,放書的架子上,堆放著一個個白色的獨角獸頭骨。 獨角獸頭骨裡存放著的是「記憶」,記憶存在「心」裡;圖書館所留存的就是一堆無法捨去的記憶與心。 年輕時候的佐伯小姐告訴卡夫卡的,「這裡沒有記憶,我們有別種方式處理記憶。」;那就與獨角獸的頭骨相呼應,所以主角需要去讀夢。 記憶存在心裡,那麼沒有心的人就讓獨角獸把記憶給吸收進去。 在那裡的人,他們如此單純,因為他們沒有心,因為他們沒有跟隨心最重要的一種東西,或者讓心變成可能的最重要的一種東西,那就是「記憶」。 他們只有片段短時間的記憶,沒有長時間的記憶。 那村上是這樣解讀”心”: 「不能把疲倦放進心喏。」她說。「我媽媽常說,疲倦或許可以支配身體,但心卻必須自己掌握好。」 「說得有理。」我說。 「不過說真的,我不太明白心是什麼樣的東西。那正確說來到底意味著什麼?到底應該怎麼去使用它?我只是記住那句話而已。」 「心不是拿來使用的東西。」我說。「心這東西只是在那裡而已,和風一樣。妳只要感覺它在動就好了。」(p.082) 「因為我有心而她沒有心,所以不管我多麼愛她都得不到什麼是嗎?」 「是啊。」老人說。「你只有繼續失去而已。她沒有你說的心這東西。我也沒有。誰都沒有。」 「但你不是對我這麼親切嗎?你關心我,不眠不休看護我。這不是心的一種表現嗎?」 「不,不一樣。親切和心又是不一樣的東西。親切是一種獨立的機能。說得正確一點是表層的機能。那只是習慣而已,和心不同。所謂心是更深、更強的東西。而且是更矛盾的東西。」 我閉上眼睛,把散在各個方向的想法一一收集起來。(p.212) 「但那裡沒有所謂的心存在是嗎?」 「沒有心。」老人說。「不過你的心終究也會消失。心消失之後既沒有喪失感,也沒有失望。無處可去的愛也會消失。只留下生活。只留下平靜而悄然的生活。你可能...

GLOOMY BEAR 暴力熊

Gloomy Bear身世背景: Gloomy是一隻在路邊被遺棄的粉紅色小熊 , 被小朋友Pity發現,並將牠帶回家中收養, 並為小熊取名為Gloomy。 可惜.....Gloomy外表可愛,但因為被拋棄的緣故~卻有著一般熊的暴力性格, 長大長出爪子後就時常向主人用暴力招數打招呼, 而Pity就慘被Gloomy日日夜夜地欺負!悲慘ㄉ人生就這樣子開始囉!! 暴力熊喜好~咬主人頭, 而牠的主人,復原能力極高...打不死喔~厲害厲害! 暴力熊顏色:粉紅色,金色,銀色,紅色,藍色,黃色,還有罕見的綠色與混色。 粉紅色暴力熊性別:女 頭大身細,眼珠黑色,爪白色兼尖利,具有殺傷力,她多數用口爪殺人,殺完人後喜歡在街上徘徊。 小主人每次都被暴力熊揍得半死兼頭破血流, 但仍然不離不棄地緊緊抱住這隻血腥的寵物; Pity就算受到傷害亦要讓開心的回憶遮掩,然後繼續微笑期待小熊再次跟他一起溫習/做功課/看書;相信等待他的會是小熊的溫柔而非暴力傷害; 暴力熊和他小主人之間微妙的情感讓人感動又心酸; 這次轉輪科技所推出的暴力熊,內容包含小男孩Pity與粉紅熊Gloomy兩支一組。造形上善用Gloomy胖胖的軀體,將轉輪關節隱藏其中,全身有14處可動。可替換配件包含小男孩被打的表情,還有防止熊熊咬人的口罩以及牠嘴角流下來的血,原型制作為山口勝久。