軟件工程的定義
軟件工程是一門旨在生產(chǎn)無故障的、及時交付的、在預(yù)算之內(nèi)的和滿足用戶需求的軟件的學(xué)科。本質(zhì)上,軟件工程就是采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理方法和先進軟件開發(fā)技術(shù)結(jié)合起來,運用到軟件開發(fā)和維護過程中,解決軟件危機。
1993年IEEE軟件工程術(shù)語匯編定義軟件工程:
“軟件工程是:
1)、 將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運行和維護過程,也就是說將工程化應(yīng)用于軟件開發(fā)和管理之中;
2)、對①中所選方法的研究”。
軟件工程研究的基礎(chǔ)理論主要有數(shù)學(xué)、計算機科學(xué)、經(jīng)濟學(xué)、工程學(xué)、管理學(xué)和心理學(xué)等其他學(xué)科。其中:數(shù)學(xué)和計算機科學(xué)用于構(gòu)造模型、分析算法;工程學(xué)用于評估成本、制定規(guī)范和標準;管理學(xué)和心理學(xué)用于進度、資源、環(huán)境、質(zhì)量、成本等的分析和管理。
軟件工程研究的主要內(nèi)容是軟件開發(fā)技術(shù)和軟件開發(fā)管理兩個方面。軟件開發(fā)技術(shù)方面主要研究軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境。軟件開發(fā)管理方面主要研究軟件工程管理學(xué)、軟件工程經(jīng)濟學(xué)、軟件工程心理學(xué)。
軟件工程的研究內(nèi)容具有層次化結(jié)構(gòu),它的最底層是質(zhì)量保證層,中間是過程層和方法層,最上層是工具層。
全面的質(zhì)量管理和質(zhì)量需求是推動軟件工程過程不斷改進的動力,正是這種改進的動力導(dǎo)致了更加成熟的軟件工程方法不斷涌現(xiàn)。過程層定義了一組關(guān)鍵過程域,目的是保證軟件開發(fā)過程的規(guī)范性和可控性。方法層提供了軟件開發(fā)的各種方法,包括如何進行軟件需求分析和設(shè)計,如何實現(xiàn)設(shè)計,如何測試和維護等方法。工具層為軟件工程方法和過程提供了自動或半自動的支撐環(huán)境。目前市場上已經(jīng)有許多不錯的軟件工程工具,應(yīng)用效果良好。使用軟件工程工具可以有效地改善軟件開發(fā)過程,提高軟件開發(fā)的效率,降低開發(fā)和管理成本。
軟件工程強調(diào)規(guī)范化和文檔化。規(guī)范化的目的是使眾多的開發(fā)者遵守相同的規(guī)范,使軟件生產(chǎn)擺脫個人生產(chǎn)方式,進入標準化、工程化的生產(chǎn)方式。文檔化是將軟件的設(shè)計思想、設(shè)計過程和實現(xiàn)過程完整地記錄下來,以便于后人的使用和維護,在開發(fā)過程中各類相關(guān)人員借助于文檔進行交流和溝通。另外,在開發(fā)過程中產(chǎn)生的各類文檔使得軟件的生產(chǎn)過程由不可見變?yōu)榭梢?,便于管理者對軟件生產(chǎn)進度和開發(fā)過程進行管理。在用戶最終驗收時可以通過對提交的文檔進行技術(shù)審查和管理審查,保證軟件的質(zhì)量。
軟件工程的目標
軟件工程旨在開發(fā)滿足用戶需要、及時交付、不超過預(yù)算和無故障的軟件,其主要目標如下:
- (1) 實現(xiàn)預(yù)期的軟件功能,達到較好的軟件性能,滿足用戶的需求。
- (2) 增強軟件過程的可見性和可控性,保證軟件的質(zhì)量。
- (3) 提高所開發(fā)軟件的可維護性,降低維護費用。
- (4) 提高軟件開發(fā)生產(chǎn)率,及時交付使用。
- (5) 合理預(yù)算開發(fā)成本,付出較低的開發(fā)費用。
軟件工程的七條基本原理
自從1968年提出“軟件工程”這一術(shù)語以來,研究軟件工程的專家學(xué)者們陸續(xù)提出了100多條關(guān)于軟件工程的原理。美國著名的軟件工程專家B.W.Boehm綜合這些專家的意見,并總結(jié)了多年開發(fā)軟件的經(jīng)驗,于1983年提出了軟件工程的七條基本原理。Boehm 認為,這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小集合。它們相互獨立、缺一不可,并具有完備性。
原理1:用分階段的生命周期計劃嚴格管理
在軟件開發(fā)與維護的漫長生命周期中,需要完成許多性質(zhì)各異的工作。這條基本原理意味著,應(yīng)該把軟件生命周期劃分成若干階段,并相應(yīng)地制定出切實可行的計劃,按照計劃對軟件的開發(fā)與維護工作進行控制。
原理2:堅持進行階段評審
軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再進行。統(tǒng)計數(shù)據(jù)表明,軟件中設(shè)計錯誤約占軟件錯誤的63%,編碼錯誤僅占37%。在前期改正錯誤所需要的可能只是橡皮和鉛筆;而在交付后改正錯誤需要的工作就太多了:查找出錯的代碼,重新組織程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),測試,修改文檔。也就是說,錯誤發(fā)現(xiàn)與改正越晚,所付出的代價越高。因此,每個階段都應(yīng)該進行嚴格的評審,以便盡早發(fā)現(xiàn)軟件開發(fā)過程中的錯誤,這是一條必須遵循的重要原則。
原理3:實行嚴格的產(chǎn)品控制
在軟件開發(fā)過程中不應(yīng)隨意改變需求,因為改變一項需求往往需要付出較高的代價。但是,在軟件開發(fā)過程中改變需求又是難免的,由于外部環(huán)境的變化,相應(yīng)地改變需求是一種客觀需要,因此不能硬性禁止改變需求的要求,而只能依靠科學(xué)的產(chǎn)品控制技術(shù)來順應(yīng)這種要求,其中主要的技術(shù)是實行基準配置管理。所謂基準配置又稱基線配置,是經(jīng)過階段評審后的軟件配置成分。基準配置管理的思想是:一切有關(guān)修改軟件的建議,特別是涉及到對基準配置的修改建議,都必須按照嚴格的規(guī)程進行評審和控制,獲得批準以后才能實施修改。目的是當需求變動時,其他各階段的文檔或代碼隨之相應(yīng)變動,以保證軟件的一致性。
原理4:采用現(xiàn)代程序設(shè)計技術(shù)
從提出軟件工程的概念開始,人們一直把主要精力用于研究各種新的程序設(shè)計技術(shù)。20世紀60年代末提出了結(jié)構(gòu)化程序設(shè)計技術(shù),以后又進一步發(fā)展出結(jié)構(gòu)化分析與設(shè)計技術(shù)、面向?qū)ο蟮姆治龊驮O(shè)計技術(shù)。實踐表明,采用先進的技術(shù)既可提高軟件開發(fā)和維護的效率,又可提高軟件質(zhì)量。
原理5:結(jié)果應(yīng)能清楚地審查
軟件是一種看不見、摸不著的邏輯產(chǎn)品。軟件開發(fā)小組的工作進展情況難于評價和管理。為更好地進行管理,應(yīng)根據(jù)軟件開發(fā)的總目標及完成期限,明確地規(guī)定開發(fā)小組的責(zé)任和產(chǎn)品標準,從而使所得到的產(chǎn)品有明確的標準,能清楚地審查。
原理6:開發(fā)小組的人員應(yīng)該少而精
這條基本原理的含義是,軟件開發(fā)小組成員的素質(zhì)應(yīng)該好,人數(shù)不宜過多。開發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。素質(zhì)高的人員開發(fā)效率比素質(zhì)低的人員開發(fā)效率可能高幾倍至幾十倍,并且高素質(zhì)人員所開發(fā)的軟件質(zhì)量高、錯誤少。開發(fā)小組人員過多,信息溝通會成為負擔(dān),組成少而精的開發(fā)小組是軟件工程的一條基本原理。
原理7:承認不斷改進軟件工程實踐的必要性
僅有上述六條原理并不能保證軟件開發(fā)與維護的過程能趕上時代前進的步伐,跟上技術(shù)的不斷進步。因此,Boehm提出應(yīng)把承認不斷改進軟件工程實踐的必要性作為軟件工程的第七條基本原理。按照這條原理,不僅要積極主動地采納新的軟件技術(shù),而且要注意不斷總結(jié)經(jīng)驗,例如,注意收集關(guān)于項目規(guī)模和成本的數(shù)據(jù)、項目進度和人員組織的數(shù)據(jù)、開發(fā)中出錯類型統(tǒng)計數(shù)據(jù)等等。這些數(shù)據(jù)不僅可以用來評價軟件技術(shù)的效果,而且也為今后修正軟件工程模型提供依據(jù)。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。