李納斯定律(Linus’s Law):只要有足夠多的眼球,就可讓所有bug浮現(xiàn)
開放源代碼運動的主要***、最為大眾所知道(并***爭議性)的黑客——埃里克·雷蒙(Eric Steven Raymond)在他1999年出版的討論軟件工程方法的著名文集《大教堂和市集》中***描述了這樣一個精彩的觀點:
只要足夠多的眼球,就可讓所有軟件缺陷浮現(xiàn)。 |
更正式地來說即是:
只要有足夠的測試員及共同開發(fā)者,所有軟件缺陷都會在很短時間內(nèi)被發(fā)現(xiàn),而且能夠很容易被解決。 |
他以開源操作系統(tǒng)Linux之父李納斯·托瓦茲(Linus Torvalds)的名字來命名它,以此向李納斯致敬。
把代碼呈現(xiàn)給多個開發(fā)人員,讓大家一起判斷代碼是否合格,這就是最簡單的軟件代碼審查形式。各種研究和試驗都反復的驗證了代碼審查(形式不限)在發(fā)現(xiàn)軟件bug和安全漏洞中的有效性,證明代碼審查要比軟件測試效果好的多。
在關(guān)于軟件工程方法的《事實與謬論(Facts and Fallacies)》一書中,作者Robert Glass將這條定律描述為開源運動的”真經(jīng)(mantra)”,但同時認為這條定律并不準確,因為缺乏足夠的支持證據(jù),并且有研究發(fā)現(xiàn),遺漏的bug數(shù)并不跟審查的人數(shù)之間存在線性的變化。更準確的說,當審查人數(shù)在2-4個人之間時,效果***,增加更多的審查者對消除bug比例的影響不大。一些非開源的專業(yè)開發(fā)人員,他們雖然提倡在軟件開發(fā)者執(zhí)行嚴格的、獨立的代碼分析,但同時用有限的人手進行深度的代碼審查——而不是強調(diào)”眼球“的數(shù)量。
以著名的心臟出血(Heartbleed)bug為例——非常重要的開源軟件中的一個很膚淺的bug——2年多的時間里沒有人能夠發(fā)現(xiàn),要知道,全世界上百萬臺服務(wù)器都在使用含有這個bug的OpenSSL軟件。但雷蒙對于心臟出血(Heartbleed)這個案例有不同意見,他認為雖然OpenSSL使用廣泛,但事實上”沒有任何的眼球“注意了它的源代碼。
在2001年出版的《黑客倫理與信息時代的精神》(The Hacker Ethic And the Spirit of th Information Age)里,李納斯在其為此書做的序言中,自己定義了另外一個李納斯定律”黑客行為的動機是什么?——李納斯法則(Linus’s_Law)“:
人類所有的動機可分為遞進的三種類型 — 生存(survival)、社會生活(social life)、娛樂(entertainment)。
… “黑客”是已經(jīng)超越利用計算機謀生存而進入后面兩個階段的人。計算機本身就是娛樂。黑客堅信沒有比這更高的動力階段。 |
(本文編譯自維基百科詞條Linus’s_Law,CC licensed)
原文鏈接:http://www.techug.com/linuss-law