陳文楷
(江漢大學數學與計算機科學學院 湖北 武漢 430056)
近年來,隨著德國工業4.0、中國制造2025以及“一帶一路”等發展戰略的提出,軟件化、信息化、數字化和智能化的工程發展思想正不斷滲透到農業、航空航天、生產制造等各個領域。軟件工程作為計算機領域的一個重點學科,在社會生產的各個領域發揮著不可替代的作用。因此,本文在深入分析軟件工程發展現狀的基礎上,提出了目前軟件工程存在的問題,并進一步分析了軟件工程的發展趨勢。
自上世紀60年底開始,計算機科學領域的研究人員開始意識到“軟件危機(Software Crisis)”,并努力探究應對的技術和方法。“軟件工程”一詞最早是于1968年召開的一次國際會議上提出的,目的是鼓勵相關科研人員努力探究“軟件危機”的應對方法。軟件工程的定義,許多研究學者已經給出,總結下來可以得出:軟件工程,就是要運用科學的技術和方法設計并開發計算機軟件程序,并對其進行監測、維護和修復的一系列理論與方法的集合[1]。
20世紀70年代初期,方法學成為軟件工程研究的重點內容,經典的“瀑布模型”就是此時提出的;之后,相關學者圍繞“瀑布模型”進行了一系列更加深入的研究與應用[2]。然而,“瀑布模型”雖然有管理嚴格、能夠確保軟件的性能等優點,但仍存在一些不足,如過分依賴于軟件開發前期的需求分析,難以滿足多變的用戶需求等。見圖1。

圖1 采用瀑布模型的軟件研發過程
到70年代后期,軟件工程研究的重點開始轉向研究涵蓋整個軟件生命周期的軟件工程環境,典型的工程環境為計算機輔助軟件工程環境(Computer Aided Software Engineering,CASE)[3]。80年代后期開始,研究的重點又轉向了對軟件過程的研究,主要包括三個方面:過程模型、建模技術和過程成熟度評估。
近年來,隨著科學技術的不斷發展以及社會發展的本質需求,軟件工程逐漸走向了智能化、信息化、集成化的道路,并出現了如極端編程模型(Extreme Programming Model,XP模型)[4]、基于構件的模型等新型的軟件工程模型。這些模型通過改善模型的邏輯流程、提高代碼的重用性等途徑進而提高軟件的研發效率和質量。
我國軟件工程的發展起步較晚,但隨著多年的研究與發展,也取得了一定的進步,并在短短幾十年的時間里獲取了多個屬于自己的軟件工程技術與方法,如XYZ系統、B-45系統等[5]。雖然經過了長期的發展與沉淀,但目前軟件工程仍需要相關研究人員不斷探究與改進。
目前計算機軟件工程的發展仍存在如下的問題,包括軟件危機依然存在、管理體制不完善、人才培養方式不合理等。
自軟件危機顯露至今還依然存在。軟件危機的產生是由于在軟件研發過程中,從用戶需求分析開始,由于對需求表達和描述的不貼切,為軟件開發過程中出現一些錯誤和漏洞埋下隱患;其次,軟件的研發者與用戶看待軟件的角度有所差別,對軟件的期望值也不盡相同。因此,軟件的開發人員應該加強與用戶的溝通,盡可能充分理解用戶的需求,以確保高質量完成開發任務。
計算機軟件的開發往往是一個龐大的工程,需要軟件開發團隊擁有一套完善的管理體制。項目經理一般在軟件研發過程中充當著計劃制定、任務監督等重要的角色。目前,大多數的軟件公司中,項目經理往往是有軟件開發人員晉升的,擁有豐富的軟件開發經驗,但在項目管理能力往往稍顯不足;另一方面,項目經理的管理素質和能力較強,但專業知識和技術不夠過硬;如何做到技術和管理素質兩者兼顧,是一個不小的難題。
目前多數高校軟件工程人才培養方式存在諸多不合理之處,造成了培養出來的學生難以滿足軟件工程的需求。主要表現在一下幾個方面[6]:首先,高校往往只盲目的高層次,造成了軟件工程領域的人才結構分布不合理,某些層次的人才短缺;其次,高校存在軟件工程專業知識體系安排不合理、課程陳舊、不能與時俱進等現象;最后,高校培養軟件工程這種實用性較高的專業人才的過程中,缺少對學生的開發經驗以及工程素質等的培養。
世界經濟的全球化發展帶動了軟件工程行業的全球化。從軟件的需求分析到概念設計,從架構設計到詳細設計,從編碼到測試,從交付使用到售后支持,整個軟件生命周期的各個階段被分配到各個國家的不同子公司甚至外包給其他公司進行,能夠有效劃分各個公司的職能,充分的利用不同國家的勞動資源和科學技術資源,讓專業的團隊做專業的事,極大的提高了軟件研發的效率,進而提升用戶的滿意度。因此,全球化已成為軟件工程發展必然趨勢。
軟件工程發展全球化的發展趨勢形成的一個必然條件就是軟件工程的開發性。所謂的開發性,包含三個方面:開發性標準、開發性框架和開源軟件。一個行業的標準是行業內必須遵循的制度,軟件工程行業相關標準的開放,能夠有效提高不同軟件之間的交互性,方便軟件不同部分的集成;開發性框架為不同團隊間能夠分享有效的軟件開發架構提供了可能;開源軟件為軟件開發人員提供了一個難得的學習資源,對軟件開源事業的發展起到了一定的鼓勵作用。
模塊化的軟件工程設計思想,強調對功能的抽象、封裝、分解以及層次化等,軟件工程行業同時也提出了面向對象的編程、面向組件的編程以及面向服務的編程等技術,這些技術有效提高了對現有代碼、功能模塊、組件或系統資源的重用性,大大提高了軟件研發的效率,并能夠借助歷史開發經驗避免軟件研發過程中出現漏洞和錯誤的幾率,從而幫助企業獲取較高的業務靈活性。
隨著軟件化、信息化、數值化和智能化的工程思想的發展,軟件工程也要與時俱進,不斷提升本行業各方面發展的科學性,朝著全球化、開發性和模塊化的方向不斷發展和完善,從而更好的滿足實際社會發展的對軟件工程的需求。
[1] 陳慧敏,張瑞.軟件工程理論及其在軟件開發中的應用研究[J].西安石油大學學報(社會科學版),2001,10(4):57-59.
[2] 郭曉嫻.淺析瀑布模型[J].福建電腦,2011,27(7):137-138.
[3] 王國軍,陳松喬.軟件工程與CASE發展綜述[J].微型機與應用,1999(5):4-6.
[4] 潘秋菱,劉宗田.極端編程模型——新穎的軟件工程模型[J].計算機科學,2000,27(12):97-100.
[5] 王章寧.淺析軟件工程的現狀及發展趨勢[J].軟件,2013(10):136-137.
[6] 宋海玉,李錫祚,鄭海旭,等.軟件工程專業人才培養的研究與實踐[J].大連民族大學學報,2008,10(5):93-96.