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