登錄

軟件工程

百科 > 軟件項目管理 > 軟件工程

1.什么是軟件工程

軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及到程序設計語言,數據庫,軟件開發(fā)工具,系統(tǒng)平臺,標準,設計模式等方面。

在現代社會中,軟件應用于多個方面。典型的軟件比如有電子郵件,嵌入式系統(tǒng),人機界面,辦公套件,操作系統(tǒng),編譯器,數據庫,游戲等。同時,各個行業(yè)幾乎都有計算機軟件的應用,比如工業(yè),農業(yè),銀行,航空,政府部門等。這些應用促進了經濟和社會的發(fā)展,使得人們的工作更加高效,同時提高了生活質量。

軟件工程師是對應用軟件創(chuàng)造軟件的人們的統(tǒng)稱,軟件工程師按照所處的領域不同可以分為系統(tǒng)分析員,軟件設計師,系統(tǒng)架構師,程序員,測試員等等。人們也常常用程序員來泛指各種軟件工程師。

2.軟件工程的框架

軟件工程的框架可概括為:目標、過程和原則。

1、軟件工程目標

生產具有正確性、可用性以及開銷合宜的產品。正確性指軟件產品達到預期功能的程度??捎眯灾杠浖窘Y構、實現及文檔為用戶可用的程度。開銷合宜是指軟件開發(fā)、運行的整個開銷滿足用戶要求的程度。這些目標的實現不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。

軟件工程活動是“生產一個最終滿足需求且達到工程目標的軟件產品所需要的步驟”。主要包括需求、設計、實現、確認以及支持等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規(guī)約。需求分析生成功能規(guī)約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟件體系結構,包括子系統(tǒng)、模塊以及相關層次的說明、每一模塊接口定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換為可執(zhí)行的程序代碼。確認活動貫穿于整個開發(fā)過程,實現完成后的確認,保證最終產品滿足用戶的要求。支持活動包括修改和完善。伴隨以上活動,還有管理過程、支持過程、培訓過程等。

2、軟件工程過程

生產一個最終能滿足需求且達到工程目標的軟件產品所需要的步驟。軟件工程過程主要包括開發(fā)過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規(guī)約。需求分析生成功能規(guī)約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟件系統(tǒng)結構,包括子系統(tǒng)、模塊以及相關層次的說明、每一模塊的接口定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換為可執(zhí)行的程序代碼。確認活動貫穿于整個開發(fā)過程,實現完成后的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。

3、軟件工程的原則

軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。軟件工程的原則有以下四項基本原則:

1)選取適宜開發(fā)范型。該原則與系統(tǒng)設計有關。在系統(tǒng)設計中,軟件需求、硬件需求以及其他因素之間是相互制約、相互影響的,經常需要權衡。因此,必須認識需求定義的易變性,采用適宜的開發(fā)范型予以控制,以保證軟件產品滿足用戶的要求。

2)采用合適的設計方法。在軟件設計中,通常要考慮軟件的模塊化、抽象與信息隱蔽、局部化、一致性以及適應性等特征。合適的設計方法有助于這些特征的實現,以達到軟件工程的目標。

3)提供高質量的工程支持。“工欲善其事,必先利其器”。在軟件工程中,軟件工具與環(huán)境對軟件過程的支持頗為重要。軟件工程項目的質量與開銷直接取決于對軟件工程所提供的支撐質量和效用。

4)重視開發(fā)過程的管理。軟件工程的管理,直接影響可用資源的有效利用,生產滿足目標的軟件產品,提高軟件組織的生產能力等問題。因此,僅當軟件過程得以有效管理時,才能實現有效的軟件工程。

這一軟件工程框架告訴我們,軟件工程的目標是可用性、正確性和合算性;實施一個軟件工程要選取適宜的開發(fā)范型,要采用合適的設計方法,要提供高質量的工程支撐,要實行開發(fā)過程的有效管理;軟件工程活動主要包括需求、設計、實現、確認和支持等活動,每一活動可根據特定的軟件工程,采用合適的開發(fā)范型、設計方法、支持過程以及過程管理。根據軟件工程這一框架,軟件工程學科的研究內容主要包括:軟件開發(fā)范型、軟件開發(fā)方法、軟件過程、軟件工具、軟件開發(fā)環(huán)境、計算機輔助軟件工程(CASE) 及軟件經濟學等。

3.軟件工程的基本原理

自從1968年提出“軟件工程”這一術語以來,研究軟件工程的專家學者們陸續(xù)提出了100多條關于軟件工程的準則或信條。美國著名的軟件工程專家巴利·玻姆(Barry Boehm)綜合這些專家的意見,并總結了美國天合公司(TRW)多年的開發(fā)軟件的經驗,于1983年提出了軟件工程的七條基本原理。

玻姆認為,這七條原理是確保軟件產品質量和開發(fā)效率的原理的最小集合。它們是相互獨立的,是缺一不可的最小集合;同時,它們又是相當完備的。

人們當然不能用數學方法嚴格證明它們是一個完備的集合,但是可以證明,在此之前已經提出的100多條軟件工程準則都可以有這七條原理的任意組合蘊含或派生。下面簡要介紹軟件工程的七條原理:

1、用分階段的生命周期計劃嚴格管理

這一條是吸取前人的教訓而提出來的。統(tǒng)計表明,50%以上的失敗項目是由于計劃不周而造成的。在軟件開發(fā)與維護的漫長生命周期中,需要完成許多性質各異的工作。這條原理意味著,應該把軟件生命周期分成若干階段,并相應制定出切實可行的計劃,然后嚴格按照計劃對軟件的開發(fā)和維護進行管理。 玻姆認為,在整個軟件生命周期中應指定并嚴格執(zhí)行6類計劃:項目概要計劃、里程碑計劃、項目控制計劃、產品控制計劃、驗證計劃、運行維護計劃。

2、堅持進行階段評審

統(tǒng)計結果顯示: 大部分錯誤是在編碼之前造成的,大約占63%錯誤發(fā)現的越晚,改正它要付出的代價就越大,要差2到3個數量級。 因此,軟件的質量保證工作不能等到編碼結束之后再進行,應堅持進行嚴格的階段評審,以便盡早發(fā)現錯誤。

3、實行嚴格的產品控制

開發(fā)人員最痛恨的事情之一就是改動需求。但是實踐告訴我們,需求的改動往往是不可避免的。這就要求我們要采用科學的產品控制技術來順應這種要求。也就是要采用變動控制,又叫基準配置管理。當需求變動時,其它各個階段的文檔或代碼隨之相應變動,以保證軟件的一致性。

4、采納現代程序設計技術

從六、七時年代的結構化軟件開發(fā)技術,到最近的面向對象技術,從第一、第二代語言,到第四代語言,人們已經充分認識到:方法大似氣力。采用先進的技術即可以提高軟件開發(fā)的效率,又可以減少軟件維護的成本。

5、結果應能清楚地審查

軟件是一種看不見、摸不著的邏輯產品。軟件開發(fā)小組的工作進展情況可見性差,難于評價和管理。為更好地進行管理,應根據軟件開發(fā)的總目標及完成期限, 盡量明確地規(guī)定開發(fā)小組的責任和產品標準,從而使所得到的標準能清楚地審查。

6、開發(fā)小組的人員應少而精

開發(fā)人員的素質和數量是影響軟件質量和開發(fā)效率的重要因素,應該少而精。 這一條基于兩點原因:高素質開發(fā)人員的效率比低素質開發(fā)人員的效率要高幾倍到幾十倍,開發(fā)工作中犯的錯誤也要少的多; 當開發(fā)小組為N人時,可能的通訊信道為N(N-1)/2, 可見隨著人數N的增大,通訊開銷將急劇增大。

7、承認不斷改進軟件工程實踐的必要性

遵從上述六條基本原理,就能夠較好地實現軟件的工程化生產。但是,它們只是對現有的經驗的總結和歸納,并不能保證趕上技術不斷前進發(fā)展的步伐。因此,玻姆提出應把承認不斷改進軟件工程實踐的必要性作為軟件工程的第七條原理。根據這條原理,不僅要積極采納新的軟件開發(fā)技術,還要注意不斷總結經驗,收集進度和消耗等數據,進行出錯類型和問題報告統(tǒng)計。這些數據既可以用來評估新的 軟件技術的效果,也可以用來指明必須著重注意的問題和應該優(yōu)先進行研究的工具和技術。

評論  |   0條評論