本節書摘來自異步社群《軟體工藝》一書中的第1章軟體工程的當代解讀,作者【美】pete mcbreen,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
軟體工程的當代解讀
軟體工藝
在過去的30年中,軟體工程社群一直用“工程學”這個略顯呆闆的比喻來看待軟體開發過程。現在,軟體工程已經成為了計算機專業學生的一門必修課。在各個大學的計算機系中,軟體工程也是一個活躍的研究領域。人們最關注的是軟體工程項目中那種确定的、可重複的開發方式。按照ieee的定義,這種方式就是:
軟體工程是指采用一種有組織、有紀律、可計量的方式來開發、使用及維護軟體,也即在軟體領域中對工程學的采用。1
對于強調安全性的軟體系統,這種有組織、有紀律、可計量的開發方式已經被證明是非常有效的。例如,為航天飛機編寫軟體的團隊就使用這種開發方式,并成功地獲得了缺陷率極低的軟體系統:
在這個程式的最後3個版本(平均代碼長度為420 000行)中,每個版本隻有一個錯誤;在其最後11個版本中,總共隻有17個錯誤。同等複雜度的商用程式将會有5 000個錯誤。2
但是,在這樣的過程中,其他的限制條件則不得不被放松:
金錢不是關鍵的限制條件:項目組每年3 500萬美元的預算對于nasa來說不過是九牛一毛。但是,這個預算額就意味着每行代碼價值1美元。這使得該項目組成為了全美國最值錢的軟體組織。3
從工程學的角度來說,這是一個恰當的利弊權衡。面對性命攸關的軟體,人們毫無疑問會慷慨地用一切資源來確定系統不出錯。但是,對于那些出錯的代價相對較低的軟體,又應該如何去開發呢?
“足夠好的軟體”——庶民的軟體工程
對于某些軟體來說,快速地開發出具有豐富功能的應用程式才是最重要的。這種觀點的核心思想是:使用者能夠容忍程式中的錯誤,因為他們能夠得到很多無法從其他地方獲得的有用功能。正如edward yourdon所說:“我将在6個月之内傳遞一個系統,其中會有5 000個錯誤——但你一定會非常高興!”4
實際上,“足夠好的軟體”隻不過是軟體工程思想的一個衍生物,它的出現完全合乎邏輯。它展現出了人們在資源、進度、功能和缺陷等各方面作出的工程學權衡。航天飛機的軟體最重視安全性,是以必須盡可能地減少其中的缺陷,并同時接受項目組為了提高品質而提出的資源、進度方面的要求;另一方面,打包的商用軟體(例如文字處理軟體、web浏覽器等)則要求開發者快速實作大量的功能,是以開發者就會很自然地作出“節省排除已知缺陷的時間進而壓縮進度”的工程學權衡。這種權衡的核心思想是:對于某些類型的已知缺陷,花時間去排除它們并不經濟。
1《ieee标準計算機詞典》(ieee standard computer dictionary),isbn 1-55397-079-3,ieee,1990。
3《他們編寫了好的産品》。
4 edward yourdon,《美國程式員的繁榮與複興》(rise and resurrection of the american programmer),prentice-hall,1996。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。