軟件工程之美1講——到底應該怎樣理解軟件工程?

軟件工程之美1講——到底應該怎樣理解軟件工程?

軟件是怎麼被創造出來的?

首先,它們的誕生都是有人想要造一個東西。
然後,他們立項做這樣的產品。
從立項到第一個版本的發佈,每個成功的軟件都需要有計劃、有步驟地進行,什麼時候發佈第一個版本、第一個版本有什麼樣的功能、什麼時候發佈第二個版本、第二個版本有哪些地方要改進,這些都是研發過程中需要考慮的問題。在軟件領域,對應的就是“軟件工程”,這些我們日常使用的軟件背後,都是基於軟件工程的方法在開發、運行和維護的。

如何擺脫“軟件危機”?

如果是說 OS/360 還只是造成了經濟損失的話,Therac-25 事件就是真的導致了人員死亡。Therac-25 是加拿大原子能有限公司(AECL)所生產的放射線療法機器,在 1985 年到 1987 年之間,在美國及加拿大,至少有六起和 Therac-25 相關的醫療事故是因爲程序 bug,導致部分病患受到比正常劑量高一百倍的輻射,因而造成患者重傷甚至死亡。發生這些慘痛的事,原因卻並不難理解。在計算機剛發明出來的時候,計算機的能力非常有限,只能接收簡單的指令和運算,不需要軟件工程也可以開發出簡單的軟件。但是,當軟件的規模越來越大,複雜度不斷增加,軟件項目開發維護過程中的問題就逐步暴露出來:軟件產品質量低劣、軟件維護工作量大、成本不斷上升、進度不可控、程序人員無限度地增加。所以在 60 年代,“軟件危機”的概念被提出來。爲了擺脫軟件危機,1968 年秋季,北大西洋公約組織的科技委員會召集了近 50 名一流的編程人員、計算機科學家和工業界巨頭,討論和制定對策。在那次會議上第一次提出了“軟件工程”這個概念。從此誕生了一門新興的工程學科:軟件工程,它是爲研究和克服軟件危機而生。在這次會議上,同時也提出了“軟件工程”的定義:爲了經濟地獲得在真實機器上可靠工作的軟件而制定和使用的合理工程原則。1993 年,電氣電子工程師學會(IEEE)給出了一個更加綜合的定義:將系統化的、規範的、可度量的方法用於軟件的開發、運行和維護的過程,即將工程化應用於軟件開發中。如果你去搜索一下“軟件工程定義”,你還能找到很多其他定義,這裏就不一一列舉。我們沒必要花太多時間在這些字面解釋上,關鍵是要抓住這些定義的本質:就是要用工程化方法去規範軟件開發,讓項目可以按時完成、成本可控、質量有保證。

軟件工程的演化史

開發軟件本質上也是像蓋房子一樣,是從無到有創造的過程。工程化的方式,就是你分步.驟(過程),採用科學的方法,藉助工具來做產品。於是參考建築工程,整個軟件開發過程也被分成了幾個階段:需求定義與分析、設計、實現、測試、交付和維護,這也就是我.們常說的軟件項目生命週期。當然,各個階段都會有人的參與,於是產生了軟件項目裏的各種角色:項目經理、產品經理、架構師、程序員、測試工程師、運維工程師。而對這整個過程的管理,我們通常稱之爲“項目管理”。同時,也很自然就衍生出一套最基礎的過程模型:瀑布模型。
現在,如果再回頭看看我們的問題“什麼是軟件工程?”其實可以總結爲:軟件工程就是用工程化的方法來開發維護軟件。也可以說軟件工程就是用一定的過程,採用科學的方法,藉助工具來開發軟件。如果用一個簡單的公式表達,那就是:軟件工程 = 過程 + 方法 + 工具。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章