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