摘 要:隨著計算機軟硬件技術(shù)的發(fā)展,軟件研究人員利用軟件工程的基本原理不斷探索新的軟件開發(fā)方法。本文闡述了當(dāng)前軟件開發(fā)方法的現(xiàn)狀,同時對其發(fā)展趨勢做出了分析與探討。
關(guān)鍵詞:軟件開發(fā);方法;現(xiàn)狀;趨勢
一、軟件開發(fā)方法的現(xiàn)狀
1.結(jié)構(gòu)化軟件開發(fā)方法
(1)面向數(shù)據(jù)流的結(jié)構(gòu)化軟件開發(fā)方法
1978年,Yourdon E和Constantine LL提出了結(jié)構(gòu)化軟件開發(fā)方法,1979年Tom De Marco對此方法作了進(jìn)一步的完善。該方法用數(shù)據(jù)流圖來表達(dá),根據(jù)軟件內(nèi)部數(shù)據(jù)傳遞和變換關(guān)系,自頂向下逐層分解,描繪出滿足功能要求的軟件模型,設(shè)計階段依據(jù)模塊獨立性準(zhǔn)則、軟件結(jié)構(gòu)準(zhǔn)則,將數(shù)據(jù)流圖轉(zhuǎn)換為軟件的體系結(jié)構(gòu),用軟件結(jié)構(gòu)圖來建立系統(tǒng)的物理模型,實現(xiàn)系統(tǒng)的概要設(shè)計。此方法適應(yīng)范圍廣、開發(fā)步驟明確,結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計、結(jié)構(gòu)化編程相輔相成,一次完成。
(2)面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化軟件開發(fā)方法
1975年Jackson MA提出了Jackson方法——JSP方法。該方法首先描述問題的輸入、輸出數(shù)據(jù)結(jié)構(gòu),分析其對應(yīng)性,然后推出相應(yīng)的程序結(jié)構(gòu)從而給出問題的軟件過程描述。ISP方法是以數(shù)據(jù)結(jié)構(gòu)為驅(qū)動的,適應(yīng)于小規(guī)模的項目。當(dāng)輸人、輸出數(shù)據(jù)結(jié)構(gòu)無對應(yīng)關(guān)系時,難于應(yīng)用該方法。基于JSP方法的局限性,又發(fā)展了JSD方法,它是JPS方法的擴(kuò)充。SJD方法是一個完整的系統(tǒng)開發(fā)方法,該方法首先建立現(xiàn)實世界的模型,再確定系統(tǒng)的功能需求,對需求的描述特別強調(diào)了操作之間的時序性,它以事件作為驅(qū)動,是一種基于進(jìn)程的開發(fā)方法,應(yīng)用于時序特點較強的系統(tǒng),包括數(shù)據(jù)處理系統(tǒng)和一些實時控制系統(tǒng)。
Warmer方法是Warmer JD在1974年提出的。Warmer軟件開發(fā)方法與Jackson方法相比的差別如下:第一,使用的圖形工具不同;第二,使用的偽碼不同;第三,在構(gòu)造程序框架時,Warmer方法僅考慮輸人數(shù)據(jù)結(jié)構(gòu),而Jackson方法不僅考慮輸人數(shù)據(jù)結(jié)構(gòu),而且還考慮輸出數(shù)據(jù)結(jié)構(gòu),這點差別也是最主要的差別。
2.面向?qū)ο筌浖_發(fā)方法
面向?qū)ο筌浖_發(fā)方法包括面向?qū)ο蠓治龇椒?、面向?qū)ο笤O(shè)計方法和面向?qū)ο髮崿F(xiàn)方法,其核心是面向?qū)ο蟪绦蛟O(shè)計方法。面向?qū)ο蟪绦蛟O(shè)計語言的創(chuàng)新發(fā)展推動面向?qū)ο蟪绦蛟O(shè)計方法逐漸形成和完善,從而推動面向?qū)ο筌浖_發(fā)方法形成并發(fā)展。
在面向?qū)ο蟪绦蛟O(shè)計方法中,數(shù)據(jù)和施加在數(shù)據(jù)上的操作被封裝在一起,形成類和對象的概念,用對象分解取代了傳統(tǒng)方法的功能分解,所有對象被劃分成各種對象類,按照子類與父類的關(guān)系組成對象類的層次結(jié)構(gòu),子類自動繼承父類的所有特性,對象彼此間僅通過傳遞消息實現(xiàn)聯(lián)系。這一思維觀念創(chuàng)新使得問題空間與解空間的結(jié)構(gòu)基本一致;使得從問題空間到解空間的過渡非常自然;使得軟件重復(fù)使用的粒度增大,有利于大型軟件的開發(fā);使得模塊的信息隱藏和獨立性增強,有利于提高軟件的可維護(hù)性;為開發(fā)者提供了隨著對某個被開發(fā)系統(tǒng)的認(rèn)識逐步深入和具體化的過程,與人們通常采用的認(rèn)識客觀世界、解決復(fù)雜問題的漸進(jìn)式思維方式相一致。
二、軟件開發(fā)方法的發(fā)展趨勢
在軟件工程發(fā)展的過程中,繁瑣復(fù)雜的開發(fā)過程、文檔維護(hù)難度的加大以及軟件開發(fā)過程中的反饋問題等逐漸的暴露出來,并且人們對軟件提出了智能化的需求,而面對這些問題和需求的出現(xiàn)與改變,軟件方法的研究與更新也引起了很大的重視與關(guān)注,許多新的方法出現(xiàn)并體現(xiàn)出了很大的發(fā)展?jié)摿Α?/p>
1.敏捷軟件開發(fā)方法
敏捷軟件開發(fā)方法包括 ASD、FDD、DSDM、XP 等,敏捷軟件開發(fā)作為一種以人為核心、循序漸進(jìn)、迭代的開發(fā)方法,它把軟件項目的整體構(gòu)建劃分為許多個子項目,而這些子項目本身在測試后也驗證具有可運行以及集成的特征。敏捷軟件開發(fā)方法強調(diào)了人的作用以及對變化情況的使用,同時強調(diào)反饋有效性和簡單化,同時重視生產(chǎn)效率的提高,在軟件開發(fā)過程中,小項目可以分別完成并可以獨立運行,軟件可以始終處于能夠進(jìn)行使用的狀態(tài)。它的12條實踐原則能夠在一定程度上體現(xiàn)出它自身的特性——(1)獲得客戶的滿意最為優(yōu)先,需要持續(xù)的、盡早的交付有使用價值的軟件;(2)在軟件開發(fā)過程中的后期也可以改變對軟件的需求;(3)交付可使用的軟件要具有經(jīng)常性,交付的時間需要控制在最短的時間范圍之內(nèi);(4)開發(fā)人員以及業(yè)務(wù)人員在項目開發(fā)中需要始終共同工作;(5)需要為被激勵的個人提供必要的支持與環(huán)境,并信任他們能夠完成軟件開發(fā)工作;(6)在團(tuán)隊工作中,面對面交談是左右效率的信息傳遞方法;(7)首要的進(jìn)度標(biāo)準(zhǔn)是可以工作的軟件;(8)可持續(xù)的提高開發(fā)速度;(9)強調(diào)優(yōu)秀設(shè)計與技能在提高敏捷能力方面的作用;(10)最好的需求、構(gòu)架與設(shè)計來源于自組織的工作團(tuán)隊;(11)在一定時間內(nèi),工作人員要針對如何提高工作有效性進(jìn)行反省并對工作行為做出調(diào)整。
2.面向 Agent 的軟件開發(fā)方法
在互聯(lián)網(wǎng)不斷發(fā)展的背景下,規(guī)模大以及復(fù)雜性高成為了軟件開發(fā)中最明顯的趨勢,人們對計算機軟件的需求要開始重視其智能化,但是原來的軟件開發(fā)方法并不能勝任開發(fā)具有智能特性軟件的工作。Agent 的概念來源于資源分布式人工智能領(lǐng)域,自主性、駐留性以及靈活性是其最重要的三個特征——自主性是指 Agent 能夠以外部環(huán)境以及內(nèi)部狀態(tài)為根據(jù)來對自身的狀態(tài)進(jìn)行決定,在此過程中并不需要外部進(jìn)行控制和干涉;駐留性是指 Agent 能夠感知到外部環(huán)境產(chǎn)生的變化;靈活性是指 Agent 能夠與其他的 Agent 進(jìn)行比較復(fù)雜的協(xié)同交互行為。憑借 Agent 自身的優(yōu)勢,它在以后的發(fā)展中可以應(yīng)用于交通管理、醫(yī)療護(hù)理、游戲娛樂、電力電訊甚至國防軍事等眾多領(lǐng)域。雖然 Agent 仍舊處于探索階段并且并不成熟,但是已經(jīng)得到了廣泛的重視與關(guān)注,并且也會成為軟件工程在軟件開發(fā)方法方面的重要趨勢之一。
參考文獻(xiàn):
[1]李光亞.軟件工程若干技術(shù)發(fā)展新趨勢[J].微型電腦應(yīng)用,2010,(11).
[2]高禹,馮相忠.軟件開發(fā)方法的創(chuàng)新發(fā)展過程研究[J].科學(xué)研究,2009,(2).