随著(zhe)計算機應用的日益普及和深入,人們對(duì)軟件的需求量急劇增加,但此時計算機軟件的開(kāi)發(fā)技術卻遠遠沒(méi)有跟上硬件技術的發(fā)展,使得軟件開(kāi)發(fā)的成(chéng)本逐年劇增,更爲嚴重的是,軟件的質量沒(méi)有可靠的保證。軟件開(kāi)發(fā)的速度與計算機普及的速度不相适應,軟件開(kāi)發(fā)技術已經(jīng)成(chéng)爲影響計算機系統發(fā)展的“瓶頸”。早期所形成(chéng)的計算機軟件開(kāi)發(fā)的錯誤方式,嚴重阻礙了計算機軟件的發(fā)展,導緻了20世紀60年代軟件危機的發(fā)生。20世紀60年代後(hòu)期,西方的計算機科學(xué)家開(kāi)始認真研究解決軟件危機的方法,提出借鑒工程界嚴密完整的工程設計思想來指導軟件的開(kāi)發(fā)與維護,并取得了可喜的成(chéng)果。軟件工程首次出現在1968年由NATO組織的一次計算機學(xué)術會(huì)議上,其目的是倡導工程的原理、原則和方法進(jìn)行軟件開(kāi)發(fā)。因此,一門新的學(xué)科一軟件工程學(xué)(Software Engineering)誕生了。軟件工程學(xué)是一門介于軟件科學(xué)、系統工程和工程管理學(xué)之間的邊緣性學(xué)科。随著(zhe)軟件的發(fā)展和商品化,軟件工程學(xué)的研究範圍越來越廣,是軟件開(kāi)發(fā)過(guò)程的理論指導。主要包括可行性分析、項目計劃與質量管理、需求分析、總體設計、詳細設計、程序設計、軟件測試、系統實施、軟件維護和文檔規範等内容。軟件開(kāi)發(fā)流程就(jiù)是遵循著(zhe)軟件工程的理論基礎來進(jìn)行的。
1 國(guó)内外軟件工程理論應用現狀
國(guó)外的軟件工程理論的應用相對(duì)比較成(chéng)熟,其中表現最爲突出的是印度。印度作爲亞洲最大的軟件外包大國(guó)之一,其軟件工程的思想在軟件開(kāi)發(fā)流程中的應用是比較好(hǎo)的。整個軟件開(kāi)發(fā)過(guò)程已經(jīng)完全成(chéng)爲一個流程化的過(guò)程。其軟件開(kāi)發(fā)行業30%以上的編程人員的流動性對(duì)軟件開(kāi)發(fā)工程不會(huì)造成(chéng)什麼(me)影響,可見他們的編程規範及流程規劃的水平。從以下特點之中可以找到其軟件開(kāi)發(fā)行業發(fā)展如此成(chéng)熟的答案。(1)流程重于項目:(2)軟件質量管理獨立于研發(fā)部門,專門檢查研發(fā)部門的開(kāi)發(fā)流程是不是按照既定流程走,如果軟件質量管理人員覺得流程不對(duì),會(huì)直接上報高層,項目肯定就(jiù)此停止;(3)所有的東西(包括草稿)都(dōu)有文檔,詳細文檔要求達到隻有這(zhè)個文檔就(jiù)可以編碼的程度,一般寫文檔時間占60%,編碼時間極少;(4)有各種(zhǒng)詳細的同行評審,包括項目組内,項目組件以及與客戶之間的溝通,而中國(guó)相對(duì)于印度而言差距很大,這(zhè)種(zhǒng)差距不在于研發(fā)技術是否先進(jìn),而是在于軟件工程的思想重視與運用水平的差距。從開(kāi)發(fā)團隊上來看,中國(guó)的開(kāi)發(fā)團隊人員過(guò)少,僅僅是“作坊式”的開(kāi)發(fā)方式,軟件的生産速度、産量和品質上都(dōu)與印度等國(guó)家差距日漸變大。因此,從根本上重視軟件工程的開(kāi)發(fā)思想,嚴格執行軟件開(kāi)發(fā)的規範流程,將(jiāng)是改變我國(guó)當前軟件開(kāi)發(fā)現狀的有效途徑。
2 軟件系統開(kāi)發(fā)流程分析
典型的軟件過(guò)程有Waterfall Model(瀑布模式)、Iter-ative&Incremental Model(反複漸進(jìn)模式)和Spiral
Mod-el(螺旋模式),無論采用哪種(zhǒng)模型方式,軟件開(kāi)發(fā)過(guò)程最起(qǐ)碼要包括支持軟件整個生命期的活動。基本的生存周期包括軟件計劃、需求分析、總體設計、詳細設計、編碼及單元測試、綜合測試、移交及軟件維護。
由此可以看出,需求分析階段是軟件開(kāi)發(fā)流程的第一步,是軟件開(kāi)發(fā)最首要的工作,直接影響到軟件設計和開(kāi)發(fā)的一切流程。如果需求分析工作不到位,將(jiāng)會(huì)導緻與用戶要求存在偏差的嚴重後(hòu)果。國(guó)内軟件企業對(duì)需求分析工作的重視程度普遍低于流程中的設計和開(kāi)發(fā)。國(guó)内大部分企業特别是小軟件企業將(jiāng)70%的時間花在軟件設計開(kāi)發(fā)上,需求分析過(guò)程隻占整個流程中的15%。相比之下,國(guó)外開(kāi)發(fā)企業是40%的時間進(jìn)行需求分析,比設計開(kāi)發(fā)時間還(hái)多10%。需求分析階段要根據軟件開(kāi)發(fā)需求特點确定采用何種(zhǒng)軟件工程方法進(jìn)行設計。目前比較典型的方法有結構化的方法、面(miàn)向(xiàng)對(duì)象的方法、基于構件的方法、基于A-gent的方法、基于淨室技術以及基于敏捷技術的方法等。由于後(hòu)三種(zhǒng)方法相對(duì)是針對(duì)某些特殊用途而産生的,适用性上有很大的局限性,有待進(jìn)一步完善,因此,僅對(duì)主要的三種(zhǒng)方法在操作單位、方法特性等方面(miàn)進(jìn)行了比較。
從表中可以看出,基于組件和面(miàn)向(xiàng)對(duì)象的方法更适合于當前複雜的開(kāi)發(fā)應用,成(chéng)爲當前的主流方法。需求分析階段還(hái)包括可行性研究,需求确認和需求複合等工作。對(duì)于設計階段而言,包括總體設計、概要設計、詳細設計,同時形成(chéng)相應的文檔。然後(hòu)進(jìn)行編碼的實現,綜合全面(miàn)的測試,包括單元測試、系統間測試、系統整體測試、性能(néng)測試、極限測試以及上線的運行測試等,最後(hòu)進(jìn)行文檔、培訓和維護的工作。中間某些環節會(huì)根據實際的用戶需求的改變進(jìn)行反饋,修改和完善。
3 結束語
綜上所述,軟件工程技術和方法在不斷發(fā)展.爲了設計出大規模、複雜度高的軟件,必須有更高水準的結構設計技術。目前越來越受到軟件工程研究者關注的是把對(duì)象群作爲角色、將(jiāng)各種(zhǒng)角色進(jìn)行拼裝組合的技術。不管是已經(jīng)出現的技術,還(hái)是行將(jiāng)推出的方法,十全十美的軟件開(kāi)發(fā)方法是難以尋覓的,真正實用的技術或方法往往是多種(zhǒng)開(kāi)發(fā)方法的結合。