標籤:des http io ar os sp for strong on
(最近看了兩篇關於“銀彈”的文章,做一點筆記,其中,英文基本上是引用原文)
一.
No Silver Bullet: Essence and Accidents of Software Engineering
這篇是Fred Brooks在1987年所發表的一篇關於軟體工程的經典論文。
(連結:http://www.cs.umd.edu/class/spring2003/cmsc838p/General/NoSilverBullet.html)
所謂“銀彈”,按我對這篇文章的理解,或許是一個可以讓軟體迅猛發展的神奇的東西。在外國的傳說中,銀彈可以殺死狼人。擱在中國來說,銀彈就是一種可以制服任何妖魔鬼怪的法器。至於“沒有銀彈”,我查了一下維基百科(http://en.wikipedia.org/wiki/No_Silver_Bullet):“所謂的沒有銀彈是指沒有任何一項技術或方法可使軟體工程的生產力在十年內提高十倍。”
在文章中,作者一開始就指出了不能再對“銀彈”抱有期待,而且語氣還很堅定,類似下面的句子經常出現:
"No such faith comforts the software engineer"
"I do not believe we will find productivity magic here"
並寫道:
“The first step toward the management of disease was replacement of demon theories and humours theories by the germ theory.”
說的大概就是我們應該從科學的角度具體地分析軟體工程的本質,不要妄想軟體產業的發展可以一蹴而就。後面還提出:”anomaly is not that software progress is so slow, but that computer hardware progress is so fast” 我覺得這個觀點還挺有趣的,或許正是因為硬體產業的快速發展,人們才會對軟體產業的發展速度有焦慮。這就是對比的力量啊。
後面的內容有很多都沒有看懂,畢竟是大家之作,寫得很專業。下面摘錄我印象比較深的幾點:
1.“The complexity of software is an essential property, not an accidental one.”
軟體的複雜性是本質屬性,而複雜性指的是軟體實體中沒有任何兩個部分相同,並且隨著組成元素的增加,複雜性的增加通常還是非線性。而複雜性也會帶來一系列的問題:項目延期、成員間交流困難等。(作者列困難就列了兩大段排比啊。)
2. “Past Breakthroughs Solved Accidental Difficulties“
作者認為已經取得的一些進步和成就,諸如進階語言、分時技術和統一的開發環境等解決的只是偶然.
3. " The most radical possible solution for constructing software is not to construct it at all"
這句話讓我想到的是軟體的複用性。如果類似的軟體已經存在,那麼就不用自己完全從頭開始構建,可以把別人的買來,把需求不一樣的地方加以改進和增加。
4." Requirements refinement and rapid prototyping. The hardest single part of building a software system is deciding precisely what to build."
軟體構建的目的就是要實現相應的功能,而功能是由需求所決定的,所以需求定義得清晰明確對於軟體構建是十分重要的。可是現實情況是,很多時候可能連使用者自己都不能準確地定義自己的需求,大多情況下是一種模糊的描述。而且,需求是變化的,並且變化的頻率也許比軟體開發的頻率要高得多。所以網上流傳的段子:程式猿今天又要加班,因為老闆的需求又變了o(╯□╰)o
5 ."Whereas the difference between poor conceptual designs and good ones may lie in the soundness of design method, the difference between good designs and great ones surely does not. Great designs come from great designers. Software construction is acreative process."
“good”和”great”是不一樣的。創造力很重要。
二.
There Is a Silver Bullet
這個是 Brad J Cox在04年寫的一篇文章(連結:http://www.drdobbs.com/there-is-a-silver-bullet/184407534/),上面那篇“沒有銀彈”是87年的,時隔17年有人對“銀彈”問題又發表的不同的看法。
我覺得下面幾段體現了作者的重要觀點,特摘錄在此:
“But if you view these same facts from a new perspective, a more optimistic conclusion emerges. The software crisis is not an immovable obstacle but an irresistible force--a vast economic incentive that will grow toward infinity as the global economy moves into the information age.
To turn Brooks‘ own metaphor in a new direction, there is a silver bullet. It is a tremendously powerful weapon, propelled by vast economic forces that mere technical obstacles can resist only briefly. But as Brooks would agree, it is not a technology, a whiz-bang invention that will slay the software werewolf without effort on our part or vast side effects on our value systems and the balance of power between software producers and consumers.
The silver bullet is a cultural change rather than a technological change”
我對這幾段的理解:作者覺得軟體危機是促進經濟發展的誘因。而“銀彈”這種強大的武器則有經濟作為基礎,當然,要讓”銀彈”發揮威力還牽涉到經濟學(生產者和消費者)、文化(價值體系)等方面的問題。
其實我覺得說的挺抽象的,文化轉變?這是一個很宏大的命題。
後面提到了範式,物件導向技術等,基本上沒怎麼看懂,就沒怎麼做筆記了。(不過範式讓我想到了離散。附上範式paradigm的維基百科http://en.wikipedia.org/wiki/Paradigm)
閱讀筆記-軟體工程的銀彈