網頁

搜尋此網誌

2010年4月27日 星期二

No Silver Bullet 沒有銀彈

沒有銀彈」,什麼是銀彈?記得剛開始閱讀軟體方面的文章時,文章中常常出見這個詞彙「銀彈」,一直搞不清楚究竟有什麼含意,直到看了一本書才恍然大悟,這本書是1975年出版,1995年原著再版,軟體界的聖經:

「人月神話:軟體專案管理之道」
(The Mythical Man-Month: Essays on Software Engineering)

作者是Frederick P. Brooks, Jr.,書中第十六章「沒有銀彈:軟體工程的本質性與附屬性工作」(No Silver Bullet — Essence and Accidents of Software Engineering),這篇文章是1986年刊登於IFIPS上的文章,1987年轉載於IEEE《Computer》雜誌上。

「銀彈」的典故是來自於狼人的傳說,因為銀被視為月亮的同一體,具有法力,對付狼人必須使用銀製子彈射穿狼人的心臟,因此「銀彈」是殺死狼人的必殺技!

Frederick P. Brooks, Jr.著,錢一一譯,人月神話:軟體專案管理之道,台北:經濟新潮社,2004。

「沒有銀彈:軟體工程的本質性與附屬性工作 」這篇文章闡述的重點是(請記住時間是1986年):

「在未來十年之內,無論是在技術上或管理上,都不會有任何單一的重大突破頭夠保證在生產力、可靠度或簡潔性上獲得改善,甚至,連一個數量級的改善都不會有。」

There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.

十年指的是1986年至1996年,而數量級指的是10倍的進步。銀彈指的是殺死狼人的「必殺技」,沒有銀彈比喻軟體上沒有必殺技的出現可以造成重大的進步。

Frederick P. Brooks, Jr.的論述指出:

軟體的開發工作區可以分成兩個部分,一是本質性(Essence):源自於軟體本質,屬於與生俱來的困難,指的是創造一種由抽象的軟體實體所組成的複雜概念結構。 另一是附屬性(Accident):當今伴隨在製作過程中所產生的困難,而非與生俱來的部分,指的是用程式語言來表現這些抽象的實體。

軟體的本質性(Essence)有:複雜性(Complexity)、配合性(Conformity)、易變性(Changeability)、隱匿性(Invisibility)。 這是軟體開發設計的天命,很難改變而有重大的進步。就目前(1986年)的進展都是對於附屬性(Accident)的進展,因此,雖說是有進步,但還未到達數量級的改善。

這本書一直是軟體開發的聖經,不是沒有道理,因為Brooks寫出所有人都誤以為正確的觀點,而且找出事情發生的原因,追根究柢看穿真相的精神,才是這本書的精華。

沒有留言:

張貼留言

熱門文章