軟體工程
軟體工程(Software Engineering)是一個知識領域(discipline),軟體工程的觀念是在西元1968年出現,一場NATO Software Engineering Conference的研討會之中探討軟體危機(Software Crisis),之所以發生軟體的危機,乃因為積體電路在當時快速發展,電腦的運算能力快速增加,讓原本的應用程式可以加入更多需求,複雜度的增加則造成軟體發展的困境!簡單來說!軟體發展追不上硬體發展,軟體想追上卻不知道如何追,故稱為軟體危機。
軟體工程(Software Engineering)分成兩部分說明,一為軟體(Software),另一為工程(Engineering)。
什麼是軟體(Software)?大部分的人將軟體(Software)視為程式(Program),這其實是太狹隘且錯誤的觀念,軟體包含讓程式運作的其他部分,一個軟體包括:程式本身、軟體系統的說明文件、程式的使用說明文件、程式需要正常運作的設定組態等。一個Windows作業系統就是一個完整的軟體,雖然我們大部分都是電腦開機後直接使用作業系統(Operating System)這個程式,使用Windows的我們忽略太多細節了,其實仔細發覺將發現Windows的說明文件和設定檔。
什麼是工程(Engineering)?工程是利用「技術、科學和數學」的知識以達成「材料、結構、機械、裝置和系統」的需求與創造,換言之,工程是使用科學的原理解決實際的問題,工程師則是根據理論提出問題的解決方案,並利用方法和工具實現。
什麼是軟體工程(Software Engineering)?軟體工程絕不是「軟體」+「工程」=「軟體工程」這樣簡單,軟體工程是:生產軟體的過程中都使用工程的方式開發與製造,這個過程中不只是技術性的問題,也包括專案管理、開發工具、開發方法和理論。
參考資料:
Ian Sommerville, Software Engineering 8th edition, Addison Wesley, 2006.
Ian Sommerville原著,陳玄玲譯,軟體工程:軟體開發技術與軟體專案開發,台北:台灣培生教育,2009。