觀念之一:我們擁有一套講述如何開發軟件的書籍,書中充滿了標準與示例,可以幫助我們解決軟件開發中遇到的任何問題。
客觀情況:好的參考書無疑能指導我們的工作。充分利用書籍中的方法、技術和技巧,可以有效地解決軟件開發中大量常見的問題。但實踐者并不能因此依賴于書籍,這是因為:(1)現實的工作中,由于條件千差萬別,即使是相當成熟的軟件工程規范,常常也無法套用。(2)軟件技術日新月異,沒有哪一種軟件標準能長盛不衰。秘方在某些領域很吃香,而在軟件領域則意味著落后。
觀念之二:我們擁有好的開發工具、好的計算機,一定能做出的軟件。
客觀情況:良好的開發環境只是產出成果的必要條件,而不是充分條件。如果擁有好環境的是一群庸人,難保他們不干出南轅北轍的事情。
觀念之三:如果我們落后于計劃,可以增加更多的程序員來解決。
客觀情況:軟件開發不同于傳統的農業生產,人多不見得力量大。如果給落后于計劃的項目增添新手,可能會更加延誤項目。因為:(1)新手會產生很多新的錯誤,使項目混亂。(2)老手向新手解釋工作以及交流思想都要花費時間,使實際開發時間更少。所以科學的項目計劃很重要,不在乎計劃能提前多少,重在恰如其分。如果用“大躍進”的方式奔向共產主義,只會產生倒退的后果。
觀念之四:既然需求分析很困難,不管三七二十一先把軟件做了再說,反正軟件是靈活的,隨時可以修改。
客觀情況:對需求把握得越準確,軟件的修修補補越少。有些需求在一開始時很難確定,在開發過程中要不斷地加以改正。軟件修改越早代價越少,修改越晚代價越大,跟治病一樣道理。