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