1.4 一些有爭議的觀念
本節(jié)探討一些有爭議的觀念,目的不在于得出“正確”或“錯誤”的評斷,而在于爭議會激發(fā)更多理性的思考。
爭議之一:如果軟件運(yùn)行較慢,是換一臺更快的計(jì)算機(jī),還是設(shè)計(jì)一種更快的算法?
作者觀點(diǎn):如果開發(fā)軟件的目的是為了學(xué)習(xí)或是研究,那么應(yīng)該設(shè)計(jì)一種更快的算法。如果該軟件已經(jīng)用于商業(yè),則需謹(jǐn)慎考慮:若換一臺更快的計(jì)算機(jī)能解決問題,則是最快的解決方案。改進(jìn)算法雖然可以從根本上提高軟件的運(yùn)行速度,但可能引入錯誤以及延誤進(jìn)程。技術(shù)狂毫無疑問會選擇后者,因?yàn)樗麄冇X得放棄任何可以優(yōu)化的機(jī)會就等于犯罪。
類似的爭議還有:是買現(xiàn)成的程序,還是徹底自己開發(fā)?技術(shù)人員和商業(yè)人士常常會有不同的選擇。
爭議之二:有最好的軟件工程方法,最好的編程語言嗎?
作者觀點(diǎn):在軟件領(lǐng)域永遠(yuǎn)沒有最好的,只有更好的。能解決問題的都是好方法或是好語言。程序員在最初學(xué)習(xí)Basic、Fortran、 Pascal、C、C++等語言時會感覺一個比一個好,不免有喜新厭舊之舉。而如今的Visual Basic、Delphi、Visual C++、Java等語言各有所長,真的難分優(yōu)劣。開發(fā)人員應(yīng)該根據(jù)客觀條件,選擇自己熟悉的方法和語言,才能保證合格的質(zhì)量與生產(chǎn)率。
程序設(shè)計(jì)是自由與快樂的事情,不要發(fā)誓忠于某某主義而自尋煩惱。
爭議之三:編程時是否應(yīng)該多使用技巧?
作者觀點(diǎn):就軟件開發(fā)而言,技巧的優(yōu)點(diǎn)在于能另辟蹊徑地解決一些問題,缺點(diǎn)是技巧并不為人熟知。若在程序中用太多的技巧,可能會留下隱患,別人也難以理解程序。鑒于一個局部的優(yōu)點(diǎn)對整個系統(tǒng)而言是微不足道的,而一個錯誤則可能是致命的。作者建議用自然的方式編程,少用技巧。
《狼三則》的故事告訴我們“失敗的技巧通常是技倆”。當(dāng)我們在編程時無法判斷是用了技巧還是用了技倆,那就少用?!顿u油翁》的故事又告訴我們“熟能生巧”,表明技巧是自然而然產(chǎn)生的,而不是賣弄出來的。賣油翁的絕技是可到中央電視臺表演的,而他老人家卻謙虛地說:“沒啥沒啥,用熟了而已”。
爭議之四:軟件中的錯誤是否可按嚴(yán)重程度分等級?
作者觀點(diǎn):在定量分析時,可以將錯誤分等級,以便于管理。微軟的一些開發(fā)小組將錯誤分成四個等級 [Cusumano 1996],如表1.1所示。
|
一級嚴(yán)重:錯誤導(dǎo)致軟件崩潰。 |
|
二級嚴(yán)重:錯誤導(dǎo)致一個特性不能運(yùn)行并且沒有替代方案。 |
|
三級嚴(yán)重:錯誤導(dǎo)致一個特性不能運(yùn)行但有替代方案。 |
|
四級嚴(yán)重:錯誤是表面化的或是微小的。 |
表1.1 錯誤的四個等級
上述分類是非常技術(shù)性的,并不是普適的。假設(shè)某個財(cái)務(wù)軟件有兩個錯誤:錯誤A使該軟件死掉,錯誤B導(dǎo)致工資計(jì)算錯誤。按表1.1分類,錯誤A屬一級嚴(yán)重,錯誤B屬二級嚴(yán)重。但事實(shí)上B要比A嚴(yán)重。工資算多了或者算少了,將會使老板或員工遭受經(jīng)濟(jì)損失。而錯誤A只使操作員感到厭煩,并沒有造成經(jīng)濟(jì)損失。另一個示例是操作手冊寫錯,按表1.1分類則屬四級嚴(yán)重,但這種錯誤可能導(dǎo)致機(jī)毀人亡。
開發(fā)人員應(yīng)該意識到:所有的錯誤都是嚴(yán)重的,不存在微不足道的錯誤。這樣才能少犯錯誤。
1.5 小 結(jié)
軟件工程學(xué)科發(fā)展到今天,已經(jīng)有了很多方法和規(guī)范,學(xué)之不盡。本章只在宏觀上討論了軟件工程的一些思想,更具體的內(nèi)容將在后面的章節(jié)論述。無論是什么好方法,貴在理解與靈活運(yùn)用,而不可當(dāng)成靈丹妙藥,不象“吃了腦黃金或腦白金,就能使一億人先聰明起來”。










