【摘 要】隨著經(jīng)濟(jì)全球化的發(fā)展和計(jì)算機(jī)技術(shù)的普及,我國(guó)在計(jì)算機(jī)方面取得了巨大的發(fā)展和進(jìn)步。自從“軟件工程”這一概念提出后的,我國(guó)在軟件工程方面不斷的努力,并取得了一些階段性的成果。但隨著科學(xué)技術(shù)的發(fā)展,如何利用新的軟件工程開發(fā)方法成為了軟件行業(yè)關(guān)注的熱門話題。
【關(guān)鍵詞】軟件工程 開發(fā)方法 現(xiàn)狀分析 發(fā)展方向 科學(xué)技術(shù)
軟件工程在這幾十年的發(fā)展中得到了廣泛的應(yīng)用,其中軟件工程開發(fā)的方法是軟件工程開發(fā)中最重要的一部分。目前軟件工程開發(fā)的方法多種多樣,隨著科學(xué)技術(shù)的發(fā)展,軟件工程開發(fā)方法將更加先進(jìn)、更加人性化。我們通過下面的幾點(diǎn),主要闡述軟件工程開發(fā)方法的現(xiàn)狀和未來(lái)發(fā)展的趨勢(shì)。
一、軟件工程開發(fā)方法發(fā)展歷程
軟件工程的概念是在一九六八年在北大西洋公約組織中的科學(xué)委員提出來(lái)的。軟件工程概念中主要就是提出將各個(gè)領(lǐng)域中有效的概念、原理、方法和技術(shù)以及人類在計(jì)算機(jī)硬件研究開發(fā)中的經(jīng)驗(yàn)應(yīng)用到軟件開發(fā)中[1]。這個(gè)理論的提出,徹底將軟件開發(fā)工作推向了高潮。軟件開發(fā)的這幾十年中,軟件工程的開發(fā)方法不斷的改善和進(jìn)步,主要進(jìn)展的階段為:二十世紀(jì)六七十年代時(shí),在該機(jī)語(yǔ)言的基礎(chǔ)上,結(jié)構(gòu)化方法首次出現(xiàn);二十世紀(jì)七八十年代,軟件工程開發(fā)中的輔助軟件工程成為了軟件行業(yè)研究的重點(diǎn);二十世紀(jì)八九十年代,面向?qū)ο筌浖_發(fā)方法出現(xiàn),它是目前軟件工程開發(fā)方法史中最實(shí)用的一種方法。
隨著互聯(lián)網(wǎng)的普及和計(jì)算機(jī)技術(shù)的發(fā)展,對(duì)于軟件工程開發(fā)方法是一種挑戰(zhàn),也是一種機(jī)遇。軟件工程開發(fā)方法必須不斷提高,以滿足時(shí)代發(fā)展的需求,并不斷向前發(fā)展和進(jìn)步。
二、 軟件工程開發(fā)方法及其現(xiàn)狀
(一)結(jié)構(gòu)化程序設(shè)計(jì)方法
軟件工程開發(fā)的早期開發(fā)活動(dòng)的個(gè)體化現(xiàn)象非常的明顯,開發(fā)人員在編程過程中沒有統(tǒng)一的開發(fā)標(biāo)準(zhǔn),程序員可以憑自己的主觀意識(shí)進(jìn)行程序設(shè)計(jì),為軟件維護(hù)人員帶來(lái)了不少的麻煩。這些問題的出現(xiàn)主要是因?yàn)槟菚r(shí)的軟件行業(yè)的規(guī)模還比較小,開發(fā)的程序過于簡(jiǎn)單,導(dǎo)致編程人員在編程中忽視了程序之外的軟件開發(fā)。在是否取消“goto”語(yǔ)句的討論中,軟件行業(yè)意識(shí)到不僅僅要取消“goto”語(yǔ)句,還要從根本上改變開發(fā)思想。根據(jù)使用順序、選擇、循環(huán)這三種基本程序結(jié)構(gòu),形成了具有良好可讀性、清晰性、易理解性的程序結(jié)構(gòu)標(biāo)準(zhǔn)。隨著這種程序的發(fā)展,就形成了結(jié)構(gòu)化程序設(shè)計(jì)方法。結(jié)構(gòu)化程序設(shè)計(jì)方法的應(yīng)用主要是建立在軟件工程生命周期的開發(fā)管理基礎(chǔ)上的,可以根據(jù)開發(fā)過程的進(jìn)展速度和階段,將軟件工程中出現(xiàn)的問題分階段的去解決。結(jié)構(gòu)化開發(fā)方法包括Jackson方法、IDEFO方法和數(shù)據(jù)流圖方法等[2]。結(jié)構(gòu)化程序設(shè)計(jì)方法被認(rèn)為是軟件工程開發(fā)方法中的一次重大突破。目前,結(jié)構(gòu)化方法雖然得到普遍應(yīng)用,但其不能解決對(duì)軟件重復(fù)使用的問題,并且在軟件維護(hù)方面比較復(fù)雜。
(二)面向?qū)ο蠓椒?/p>
面向?qū)ο蠓椒ǖ幕驹瓌t和出發(fā)點(diǎn)主要是對(duì)人類思維方法的模擬。面向?qū)ο筌浖_發(fā)方法主要包括:面向?qū)ο蠓治龇椒ā⒚嫦驅(qū)ο笤O(shè)計(jì)方法。軟件是由程序和文檔組成的,在面向?qū)ο蟪绦蛟O(shè)計(jì)方法中,形成類和對(duì)象的含義,利用對(duì)對(duì)象的分解代替原始的功能分解方法。這一方法對(duì)軟件開發(fā)方法的發(fā)展起到了很重要的作用,不僅可以使軟件多次利用,還能降低人們對(duì)代碼理解的難度,它被成為軟件工程開發(fā)方法史上的第二次突破。但是這種方法同樣存在著一些弊端,如對(duì)開發(fā)階段的劃分不夠清晰,一般情況下需要花費(fèi)很多的時(shí)間才能完成對(duì)程序的分析和設(shè)計(jì)。
(三)形式化方法
隨著科學(xué)技術(shù)的發(fā)展和進(jìn)步,計(jì)算機(jī)軟件被應(yīng)用到越來(lái)愈多的領(lǐng)域內(nèi),并不斷應(yīng)用到危險(xiǎn)的領(lǐng)域內(nèi),如核反應(yīng)堆監(jiān)控、發(fā)射宇宙飛船、交通設(shè)施監(jiān)測(cè)等。計(jì)算機(jī)軟件在這些領(lǐng)域內(nèi)的應(yīng)用大大提高了軟件開發(fā)方法的難度,只有不斷對(duì)軟件開發(fā)方法進(jìn)行改善和提高,軟件才能準(zhǔn)確、安全地對(duì)其進(jìn)行計(jì)算、監(jiān)控和應(yīng)用。為了適應(yīng)發(fā)展的需求,形式化方法就應(yīng)運(yùn)而生了。軟件工程形式化方法主要是依靠數(shù)學(xué)模型和計(jì)算來(lái)描述和驗(yàn)證軟件的運(yùn)行和設(shè)計(jì)的,必須建立在嚴(yán)格的數(shù)學(xué)規(guī)范上。形式化方法的缺點(diǎn)也不容小視,首先是所使用的數(shù)學(xué)工具和模型不能保證完全的準(zhǔn)確性和安全性;其次,數(shù)學(xué)規(guī)范在一個(gè)環(huán)境中并不一定只有一種解釋方法,因此,如何根據(jù)具體環(huán)境對(duì)其進(jìn)行分析也是非常重要的。
三、軟件工程開發(fā)方法的發(fā)展趨勢(shì)
(一)敏捷軟件開發(fā)方法
敏捷軟件開發(fā)方法是在二十世紀(jì)九十年代以后出現(xiàn)的軟件開發(fā)方法,它是一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法。敏捷軟件開發(fā)方法主要包括ASD、FDD、DSDM、XP等系統(tǒng)方法[3]。在這種方法的應(yīng)用中將軟件的項(xiàng)目的構(gòu)建分成多個(gè)小項(xiàng)目,在小的項(xiàng)目經(jīng)過測(cè)試合格后,達(dá)到能使軟件到達(dá)可持續(xù)運(yùn)行的階段。敏捷軟件開發(fā)方法可以適應(yīng)臨時(shí)的變化,并快速反應(yīng),提倡合理利用,重視軟件生產(chǎn)率。目前,敏捷軟件開發(fā)方法還處于發(fā)展階段,隨著開發(fā)力度的增大,這種方法將不斷走向成熟。
(二)面向Agent的軟件開發(fā)方法
Agent的概念來(lái)源于資源分布式人工智能領(lǐng)域,自主性、駐留性和靈活性是它的重要特征。自主性主要是指Agent能根據(jù)外部環(huán)境的變化來(lái)控制自身的狀態(tài),不需要外部的干涉和控制;駐留性是指Agent可以感受到外部環(huán)境的變化;靈活性是指Agent能與其他復(fù)雜的行為進(jìn)行連接。根據(jù)以上Agent的優(yōu)勢(shì)來(lái)看,它可以被廣泛應(yīng)用到各個(gè)領(lǐng)域。雖然目前面向Agent的軟件開發(fā)方法還不夠成熟,但隨著人們對(duì)它的不斷重視,這種方法一定可以取得更大的進(jìn)步,為軟件開發(fā)行業(yè)帶來(lái)“第三次突破”。
四、結(jié)束語(yǔ)
隨著人們對(duì)軟件開發(fā)方法的重視程度的增加,軟件開發(fā)方法取得了很大的進(jìn)展,想要適應(yīng)時(shí)代發(fā)展的需求,就必須在研究新的開發(fā)方法中,利用先進(jìn)的科學(xué)技術(shù),不斷促進(jìn)軟件行業(yè)的進(jìn)步,帶動(dòng)國(guó)民經(jīng)濟(jì)的發(fā)展。
參考文獻(xiàn):
[1]程雙橋.現(xiàn)代軟件工程[M].清華大學(xué)出版社,2006,10(01):97-157.
[2]任勝兵,邢琳.軟件工程 [M].北京郵電大學(xué)出版社,2004,10(01):97-159.
[3]楊福慶.軟件工程技術(shù)發(fā)展思索[J].軟件學(xué)報(bào),2005,06(09):14-15.