張程乾
摘要:本文探討了軟件工程技術(shù)的發(fā)展歷程,分析了當(dāng)前主流的軟件工程技術(shù),研究了軟件工程技術(shù)的未來發(fā)展趨勢(shì)。
關(guān)鍵詞:軟件工程技術(shù);結(jié)構(gòu)化;發(fā)展趨勢(shì)
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)08-0195-01
20世紀(jì)六七十年代,“軟件工程”作為一個(gè)全新的概念被北約科學(xué)委員會(huì)正式提出,旨在將人類文明中的知識(shí)概念、技術(shù)方法等通過軟件這個(gè)載體記錄并應(yīng)用,從而提高生產(chǎn)效率與生活質(zhì)量,隨后軟件工程的發(fā)展進(jìn)入了快車道,當(dāng)前各類軟件隨處可見,軟件被廣泛應(yīng)用于當(dāng)前的工業(yè)生產(chǎn)、企業(yè)辦公、日常生活等領(lǐng)域,帶來了極大的便利性,正是由于軟件的廣泛應(yīng)用,工業(yè)生產(chǎn)效率、人們生活水平等都得到了顯著提升。軟件工程技術(shù)是開發(fā)技術(shù)是軟件的核心,經(jīng)過30多年的發(fā)展,軟件工程技術(shù)不斷改革、發(fā)展,軟件的功能也更加系統(tǒng)、全面,朝著智能化的方向邁進(jìn)。
1 軟件工程技術(shù)的發(fā)展歷程
在軟件工程技術(shù)的發(fā)展歷程中,有三次具有里程碑意義的革新,極大的推動(dòng)了軟件工程的發(fā)展,很多技術(shù)原理與開發(fā)理念影響至今。20年代六七十年代,隨著一些高級(jí)語言的不斷應(yīng)用,在此基礎(chǔ)上誕生了結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),同時(shí)誕生了相關(guān)的開發(fā)工具;隨后在上世紀(jì)的八十年代初,計(jì)算機(jī)輔助軟件工程(即case)應(yīng)用而生,case是集圖形處理技術(shù)、程序生成技術(shù)、關(guān)系數(shù)據(jù)庫技術(shù)和各類開發(fā)工具與一體的開發(fā)技術(shù),簡(jiǎn)而言之就是軟件工具與開發(fā)方法的集成化工具系統(tǒng);隨后,面向?qū)ο蟮能浖_發(fā)技術(shù)橫空出世,使得軟件工程技術(shù)的發(fā)展進(jìn)一步提速,面向?qū)ο蟮脑O(shè)計(jì)方法將對(duì)象作為設(shè)計(jì)基本單元,將程序與數(shù)據(jù)內(nèi)封其中,提升了軟件的靈活性與擴(kuò)展性,正因如此,面向?qū)ο蟮某绦蛟O(shè)計(jì)方法迅速成為主流設(shè)計(jì)方法。隨著人工智能技術(shù)的崛起,在軟件設(shè)計(jì)過程中也融合了人工智能相關(guān)技術(shù)。
2 當(dāng)前主流的軟件工程技術(shù)
2.1 結(jié)構(gòu)化程序設(shè)計(jì)方法
結(jié)構(gòu)化程序設(shè)計(jì)方法是以模塊為單元進(jìn)行,在這種開發(fā)方法中,只有三種基本的程序結(jié)構(gòu),即順序、選擇與循環(huán),這三種基本結(jié)構(gòu)進(jìn)行有機(jī)整合、嵌套等,最終形成復(fù)雜的設(shè)計(jì)程序。結(jié)構(gòu)化程序設(shè)計(jì)方法起源于對(duì)無條件轉(zhuǎn)移語句的爭(zhēng)論,同時(shí)更是對(duì)軟件設(shè)計(jì)理念的更新,隨著人們對(duì)于軟件需求的提升,程序的可維護(hù)性、可讀性、清晰性等方面需要進(jìn)一步提升,需要對(duì)基本的語句、結(jié)構(gòu)等進(jìn)行規(guī)范,將程序設(shè)計(jì)的重點(diǎn)從過分追求編程技巧轉(zhuǎn)化到軟件的實(shí)用功能上。結(jié)構(gòu)化程序設(shè)計(jì)的精髓是當(dāng)面對(duì)一個(gè)復(fù)雜問題的時(shí)候,將問題按照自上而下、逐層細(xì)化的原則進(jìn)行分解,將整體步驟分解為結(jié)構(gòu)化程序框圖,即在每一層與每一階段都通過順序、選擇、循環(huán)這三種基本控制構(gòu)造來實(shí)現(xiàn)相關(guān)功能,這樣的話就可以將復(fù)雜問題簡(jiǎn)單化,而且每一層的基本構(gòu)造都固定化,這樣就顯著提升了程序的可讀性、清晰度等。在結(jié)構(gòu)化程序設(shè)計(jì)方法中,結(jié)構(gòu)化分析是其中的關(guān)鍵技術(shù),分析過程中遵循分解與抽象的原則,按照數(shù)據(jù)計(jì)算需求與流程,定義系統(tǒng)各功能模塊,這是程序設(shè)計(jì)第一步;接下來就要分析階段確定的數(shù)據(jù)流圖轉(zhuǎn)化為軟件系統(tǒng)將結(jié)構(gòu)。需要注意的是結(jié)構(gòu)化的程序設(shè)計(jì)實(shí)施的“單入口單出口”的結(jié)構(gòu),整體思路清楚,目標(biāo)明確,設(shè)計(jì)工作階段性非常強(qiáng),有利于進(jìn)度管理與進(jìn)度控制,各個(gè)模塊之間互相獨(dú)立,互不影響,這提升了程序的可擴(kuò)展性;但是該設(shè)計(jì)方法存在開發(fā)周期長(zhǎng)、難以適應(yīng)需求變化等相關(guān)缺陷。
2.2 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法
面向?qū)ο蟮某霭l(fā)點(diǎn)和基本原則是盡可能的模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法、過程盡可能的接近人類認(rèn)識(shí)世界解決問題的方法與過程,將程序看成是互相獨(dú)立對(duì)象的集合,而不是一系列的過程或函數(shù)的集合。
著名計(jì)算機(jī)科學(xué)家尼古拉斯—沃斯曾提出“程序=數(shù)據(jù)結(jié)構(gòu)+算法”的著名公式,從宏觀角度上講,“程序=對(duì)象+消息”,在IT領(lǐng)域,數(shù)據(jù)就是一個(gè)個(gè)二進(jìn)制數(shù)字的排列組合,代碼執(zhí)行流程就是前文提到的順序、選擇、循環(huán)等基本結(jié)構(gòu)的組合,計(jì)算機(jī)在運(yùn)算過程中即利用上述基本程序結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行重新組合,面向?qū)ο笾械摹皩?duì)象”具體是指利用合理的數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)組合形成數(shù)量更少的信息單元,這些單元就是對(duì)象,面向?qū)ο蟮谋举|(zhì)就是使對(duì)象具有多種狀態(tài),把不同對(duì)象按照同一特性進(jìn)行歸納,統(tǒng)一處理,也就是將數(shù)據(jù)模型與處理模型合二為一,將屬性與方法封裝在同一個(gè)對(duì)象中,因此程序的結(jié)構(gòu)就變換成了“程序=基于對(duì)象操作的算法+以對(duì)象為最小單位的數(shù)據(jù)結(jié)構(gòu)”,通過封裝可以有效減少操作力度與問題復(fù)雜程度。面向?qū)ο蟮脑O(shè)計(jì)方法實(shí)際上模擬了對(duì)象之間的通信,基于面向?qū)ο蠖_發(fā)的軟件都是采用交互式的方式,由消息驅(qū)動(dòng)控制。
3 軟件工程技術(shù)的未來發(fā)展趨勢(shì)
為了方便生產(chǎn)生活,當(dāng)前隨著人們對(duì)計(jì)算機(jī)軟件要求越來越高,落后的軟件方式無法滿足人們?nèi)找嬖鲩L(zhǎng)的計(jì)算機(jī)軟件需求,歷史上數(shù)次爆發(fā)軟件危機(jī),軟件危機(jī)也推動(dòng)了軟件工程技術(shù)的不斷變革與創(chuàng)新。當(dāng)前軟件工程也面臨一些發(fā)展瓶頸,例如開發(fā)過程復(fù)雜繁瑣、產(chǎn)生大量難以維護(hù)的文檔、無法及時(shí)對(duì)開發(fā)過程中的變化進(jìn)行有效的反饋以及人們期望軟件更加智能甚至能完全替代人類工作等等[1]。軟件工程技術(shù)的發(fā)展遵循開發(fā)維護(hù)成本低、用戶體驗(yàn)感覺好、可移植性與兼容性高的方向,具體來講即如下趨勢(shì):
3.1 更加開放的發(fā)展環(huán)境
未來軟件開發(fā)平臺(tái)將會(huì)是一個(gè)集豐富的軟件資源與開放動(dòng)態(tài)多變特性的框架,開發(fā)活動(dòng)集中在基礎(chǔ)軟件資源的組合,通過初步組合后的系統(tǒng)將會(huì)對(duì)照客戶需求進(jìn)行優(yōu)化、整理;同時(shí)用戶對(duì)于軟件需求呈現(xiàn)出多樣性的趨勢(shì),因此對(duì)于程序正確性的判斷標(biāo)準(zhǔn)不再是單一的,而是一個(gè)偏序集,軟件體系結(jié)構(gòu)側(cè)重點(diǎn)從基于實(shí)體的結(jié)構(gòu)分解轉(zhuǎn)變?yōu)榛趨f(xié)同的實(shí)體聚合,軟件生產(chǎn)過程和環(huán)境的變化導(dǎo)致基于Internet 的面向用戶的虛擬工廠的形成[2]。在這種背景下,對(duì)于軟件開發(fā)周期,傳統(tǒng)固定的軟件開發(fā)周期這一概念需要調(diào)整為“大生命周期”。
3.2 軟件的開放方法朝著智能化的方向發(fā)展
軟件開發(fā)方法將朝著智能化的方向發(fā)展,例如敏捷(Agile)軟件開發(fā)方法,就是以人為核心,采用迭代與循序漸進(jìn)的方法將大項(xiàng)目轉(zhuǎn)化為小項(xiàng)目并分別完成個(gè)小項(xiàng)目,這就大大提升了軟件對(duì)于外部條件變化的適應(yīng)性,再比如面向Agent的軟件開發(fā)方法,該方法是指駐留在某一環(huán)境中,具有靈活自主性這一行為特征的軟件系統(tǒng),Agent的軟件開發(fā)方法對(duì)于現(xiàn)實(shí)的模擬要比面向?qū)ο箝_放方法更加自然、真實(shí),此處所指的靈活自主性具體是指反應(yīng)性、主動(dòng)性與社會(huì)性,其中反應(yīng)性具體是指能夠感受所處環(huán)境的變化并做出相應(yīng)的反應(yīng);而所謂的主動(dòng)性具體是指能夠自動(dòng)生產(chǎn)目標(biāo),并針對(duì)這一目標(biāo)采取相關(guān)動(dòng)作;社會(huì)性具體是指可以進(jìn)行人機(jī)交互。這些都是智能化發(fā)展趨勢(shì)的體現(xiàn)[3]。
4 結(jié)語
軟件工程技術(shù)不斷革新,在軟件工程技術(shù)的推動(dòng)下,信息產(chǎn)業(yè)飛速發(fā)展,人們對(duì)于軟件的依賴程度越來越高,更加開放的發(fā)展環(huán)境與更加智能化的開發(fā)技術(shù)將會(huì)是軟件工程技術(shù)的未來發(fā)展趨勢(shì),我們有理由相信,未來軟件工程將會(huì)不斷給人類社會(huì)發(fā)展帶來驚喜。
參考文獻(xiàn)
[1]李輝.軟件工程開發(fā)方法的現(xiàn)狀與展望[J].福建廣播電視大學(xué)學(xué)報(bào),2011,(3):59-63.
[2]楊芙清.軟件工程技術(shù)發(fā)展思索[J].軟件學(xué)報(bào),2005,(1):1-7.
[3]孫亮.面向?qū)ο笈c面向Agent的軟件開發(fā)方法研究綜述[J].科技信息(科學(xué)教研),2007,(27):57-58+95.