軟件工程主要學(xué)計算機各類軟件的構(gòu)造、設(shè)計、開發(fā)方法、測試、維護等相關(guān)的知識和技術(shù),涉及程序設(shè)計語言、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)平臺、設(shè)計模式等多方面,進行軟件需求分析、軟件設(shè)計、軟件測試、軟件維護等。
軟件工程是一門研究用工程化方法構(gòu)建和維護有效、實用和高質(zhì)量的軟件的學(xué)科。它涉及程序設(shè)計語言、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)平臺、標準、設(shè)計模式等方面。
在現(xiàn)代社會中,軟件應(yīng)用于多個方面。典型的軟件有電子郵件、嵌入式系統(tǒng)、人機界面、辦公套件、操作系統(tǒng)、編譯器、數(shù)據(jù)庫、游戲等。同時,各個行業(yè)幾乎都有計算機軟件的應(yīng)用,如工業(yè)、農(nóng)業(yè)、銀行、航空、政府部門等。這些應(yīng)用促進了經(jīng)濟和社會的發(fā)展,也提高了工作效率和生活效率。
軟件工程的目標
軟件工程的目標是:在給定成本、進度的前提下,開發(fā)出具有適用性、有效性、可修改性、可靠性、可理解性、可維護性、可重用性、可移植性、可追蹤性、可互操作性和滿足用戶需求的軟件產(chǎn)品。追求這些目標有助于提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率,減少維護的困難。
(1)適用性:軟件在不同的系統(tǒng)約束條件下,使用戶需求得到滿足的難易程度。
(2)有效性:軟件系統(tǒng)能最有效的利用計算機的時間和空間資源。各種軟件無不把系統(tǒng)的時/空開銷作為衡量軟件質(zhì)量的一項重要技術(shù)指標。很多場合,在追求時間有效性和空間有效性時會發(fā)生矛盾,這時不得不犧牲時間有效性換取空間有效性或犧牲空間有效性換取時間有效性。時/空折衷是經(jīng)常采用的技巧。
(3)可修改性:允許對系統(tǒng)進行修改而不增加原系統(tǒng)的復(fù)雜性。它支持軟件的調(diào)試和維護,是一個難以達到的目標。
(4)可靠性:能防止因概念、設(shè)計和結(jié)構(gòu)等方面的不完善造成的軟件系統(tǒng)失效,具有挽回因操作不當造成軟件系統(tǒng)失效的能力。
(5)可理解性:系統(tǒng)具有清晰的結(jié)構(gòu),能直接反映問題的需求??衫斫庑杂兄诳刂葡到y(tǒng)軟件復(fù)雜性,并支持軟件的維護、移植或重用。
(6)可維護性:軟件交付使用后,能夠?qū)λM行修改,以改正潛伏的錯誤,改進性能和其它屬性,使軟件產(chǎn)品適應(yīng)環(huán)境的變化等。軟件維護費用在軟件開發(fā)費用中占有很大的比重??删S護性是軟件工程中一項十分重要的目標。
(7)可重用性:把概念或功能相對獨立的一個或一組相關(guān)模塊定義為一個軟部件??山M裝在系統(tǒng)的任何位置,降低工作量。
(8)可移植性:軟件從一個計算機系統(tǒng)或環(huán)境搬到另一個計算機系統(tǒng)或環(huán)境的難易程度。
(9)可追蹤性:根據(jù)軟件需求對軟件設(shè)計、程序進行正向追蹤,或根據(jù)軟件設(shè)計、程序?qū)浖枨蟮哪嫦蜃粉櫟哪芰Α?/p>
(10)可互操作性:多個軟件元素相互通信并協(xié)同完成任務(wù)的能力。