登錄

軟件工程

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

1.什么是軟件工程

軟件工程是一門研究用工程化方法構(gòu)建和維護(hù)有效的、實用的和高質(zhì)量的軟件的學(xué)科。它涉及到程序設(shè)計語言,數(shù)據(jù)庫,軟件開發(fā)工具,系統(tǒng)平臺,標(biāo)準(zhǔn),設(shè)計模式等方面。

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

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

2.軟件工程的框架

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

1、軟件工程目標(biāo)

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

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

2、軟件工程過程

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

3、軟件工程的原則

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

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

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

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

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

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

3.軟件工程的基本原理

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

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

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

1、用分階段的生命周期計劃嚴(yán)格管理

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

2、堅持進(jìn)行階段評審

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

3、實行嚴(yán)格的產(chǎn)品控制

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

4、采納現(xiàn)代程序設(shè)計技術(shù)

從六、七時年代的結(jié)構(gòu)化軟件開發(fā)技術(shù),到最近的面向?qū)ο蠹夹g(shù),從第一、第二代語言,到第四代語言,人們已經(jīng)充分認(rèn)識到:方法大似氣力。采用先進(jìn)的技術(shù)即可以提高軟件開發(fā)的效率,又可以減少軟件維護(hù)的成本。

5、結(jié)果應(yīng)能清楚地審查

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

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

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

7、承認(rèn)不斷改進(jìn)軟件工程實踐的必要性

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

評論  |   0條評論