齊治昌 譚慶平 寧 洪 毛新軍 董 威
摘要:本文系統(tǒng)回顧了軟件工程的發(fā)展歷程,分析了網絡時代軟件工程的特點以及以此為基礎構建超大系統(tǒng)面臨的機遇與挑戰(zhàn),并提出了對軟件工程教育改革的思考。
關鍵詞:軟件工程;網絡時代;超大系統(tǒng);軟件工程教育
從工程的角度看,將一個系統(tǒng)做大、做快、做強有兩個途徑:一是采用集中式體系結構,二是采用分布式體系結構。二者各有優(yōu)缺點,需要不同的支撐環(huán)境。有人形象的把集中式體系結構比喻成計劃經濟體制,把分布式體系結構比喻成市場經濟體制。20世紀80年代大型、巨型計算機體系結構走過了這一歷程。最近十余年來,隨著應用軟件規(guī)模、復雜性的擴大以及網絡和計算機的普及與廣泛應用,分布式軟件系統(tǒng)的重要性快速提升。應對這一挑戰(zhàn)產生的概念、方法、工具和過程稱為網絡時代的軟件工程。基于網絡的軟件系統(tǒng)開發(fā)必將進一步發(fā)展和豐富軟件工程的內涵,推進軟件工程教育的改革。
一、軟件工程的回顧
1968年在德國舉行的NATO軟件工程會議上,為應對“軟件危機”的挑戰(zhàn),提出了“軟件工程”的術語。40年來,伴隨著計算機科學技術的進步和軟件產業(yè)的發(fā)展,軟件工程已由最初的一個學科方向發(fā)展成為一個以計算機科學技術為基礎的新興交叉學科。同時,軟件工程方法學的研究與實踐大大豐富了計算機科學,促進了軟件產業(yè)的發(fā)展。
軟件工程的主流方法和技術走過兩個階段。
第一個階段是以結構化方法為主的時期,時間大概是20世紀70年代初至80年代末。這一階段的計算機速度和內存空間以兆(M)計,分大、中、小幾種類型,采用集中式、批處理或分時工作方式。軟件工程提出了軟件生命周期的概念、軟件開發(fā)的瀑布模型。從結構化程序設計語言及結構化程序設計方法開始,逐步擴展并形成結構化分析、結構化設計、結構化編碼、結構化測試等一整套系統(tǒng)完整的結構化方法。結構化方法是集中式的計算機體系結構和問題求解方式在軟件層次的延伸和發(fā)展,與計算機求解問題的規(guī)模和能力相協(xié)調?;谄俨寄P偷能浖こ桃噪A段論看待軟件生命周期,圍繞軟件生命周期的主要活動制定質量標準,給規(guī)范和規(guī)程的制定、工具研制、預算管理、工程核算、質量保證帶來極大方便,使得軟件開發(fā)走上工程化的軌道。由此產生的問題為計算機科學的研究提供了課題,產生了面向數(shù)據(jù)、面向數(shù)據(jù)流、面向實體/關系、面向事件驅動和狀態(tài)變換的結構化分析設計方法、白盒與黑盒測試方法。軟件工程將這些成果規(guī)范化、模式化,并開發(fā)成相應的軟件工具,提高了軟件生產率和質量。20世紀70年代軟件工程流行的定義是:“軟件工程是一種工程形式,它運用計算機科學和數(shù)學原理,針對軟件問題獲得一種經濟有效的軟件解決方案?!边@個定義反映了當時軟件工程的特點和人們對軟件工程的認識。1972年IEEE的計算機協(xié)會第一次出版了《軟件工程學報》,很多大學的計算機科學系先后開設軟件工程課程。1991年,ACM和IEEE/CS的計算教程CC1991專題組將“軟件工程”列為計算學科的九個知識領域之一,確立了軟件工程課程在計算機學科中的地位。
軟件工程的第二個階段是以面向對象方法為主的時期,時間大約是20世紀80年代中期至今。這一階段的計算機速度和內存空間以吉(G)計,個人計算機和服務器日益普及,大型機采用多處理器體系結構。顯示屏、鼠標、多種傳感器、網絡普遍用于計算機系統(tǒng),人機交互的圖形人機界面為面向對象的分析、設計、編碼和測試提供了發(fā)展機遇,并迅速占據(jù)主導地位。分布計算成為計算機科學研究的熱點,并行算法、并行編譯、分布式操作系統(tǒng)、分布式數(shù)據(jù)庫、中間件的研究成果豐富了計算機科學的內容。這一時期軟件工程的典型定義是:“軟件工程是開發(fā)、運行、維護和修復軟件的系統(tǒng)的、規(guī)范的、可量化的方法?!边@一定義至今仍被廣泛認同。以軟件過程能力成熟度模型CMM、敏捷軟件開發(fā)為代表的開發(fā)過程的改進,提高了團隊的軟件開發(fā)能力。2004年8月,ACM和IEEE-CS發(fā)布的軟件工程知識體(SWEBOK)、軟件工程教育知識體(SEEK)兩個文件的最終版本,標志著軟件工程學科在世界范圍正式確立。SWEBOK定義了軟件工程學科的內涵,包括軟件需求、軟件設計、軟件構造、軟件測試、軟件維護、軟件配置管理、軟件工程管理、軟件工程過程、軟件工程工具和方法、軟件質量10個知識域。SWEBOK還把軟件工程相關學科列為知識域,它們是軟件工程發(fā)展不可或缺的部分,包括:計算機科學、計算機工程、數(shù)學、管理學、項目管理、質量管理、系統(tǒng)工程學和人類工程學8個領域。目前,軟件工程已與計算機科學、計算機工程、信息系統(tǒng)、信息技術并列,成為計算學科的5個獨立子學科。
軟件工程走過了40年,但軟件產品的成本高、質量低的問題仍很突出。美國專門跟蹤IT項目的機構Standish Group指出,成功的大型軟件項目1994年只有16%,到2005年也只占34%。統(tǒng)計表明,目前人們仍能接受這樣的軟件失效率、成本和質量。這在其他工程領域是不可接受的。問題的本質是:軟件是復雜的智力產品,采用集中模式開發(fā)大型復雜應用軟件系統(tǒng)受到了領域知識、知識產權、人類智力、項目管理等諸多復雜因素的局限。
二、網絡時代的超大規(guī)模軟件工程
目前,計算機芯片工藝進入納米時代,主頻/存儲以G計的計算機系統(tǒng)普及并成為網絡系統(tǒng)的有力節(jié)點,網絡更快、更便捷、更普及。受到這些因素的推動和影響,軟件工程進入了第三個階段。突出特點是:以網絡為基礎將單個軟件按照用戶需求“漸進式”組合為一個應用系統(tǒng)成為廣泛的社會需求。各行各業(yè)的人們正在逐步將現(xiàn)實社會各種形式的信息映照到“網絡一計算機世界”。網格計算、計算服務、Internet應用普遍,軟件工程進入了以網絡為中心的新階段?!熬W絡一計算機世界”和現(xiàn)實社會一樣安全問題突出,為維護系統(tǒng)安全耗費許多系統(tǒng)資源。
在這樣的背景下如何構建基于網絡的超大系統(tǒng)?卡內基梅隆大學軟件工程研究所對超大規(guī)模軟件系統(tǒng)進行了研究,并于2006年6月發(fā)表題為《超大規(guī)模系統(tǒng):未來的軟件挑戰(zhàn)》的報告。報告試圖回答在目前軟件工程的基礎上如何構建未來基于網絡、可能具有數(shù)10億行代碼的系統(tǒng)。報告反映了當前軟件工程面臨的社會需求和自身應對挑戰(zhàn)的困難和思路。超大規(guī)模系統(tǒng)依賴于日益復雜的支撐系統(tǒng),這些系統(tǒng)由大量的平臺、傳感器、決策終端、執(zhí)行系統(tǒng)、執(zhí)行單元通過異構的有線或無線網絡組成。如物流系統(tǒng)、全球氣象系統(tǒng)、指揮控制系統(tǒng)等。系統(tǒng)在任何維度都會大大超出目前的系統(tǒng),如代碼量、雇員數(shù)、數(shù)據(jù)存儲量、讀取量、操作量、軟構件數(shù)及復雜性等。急劇增長的系統(tǒng)規(guī)模將使很多事物由量變發(fā)展到質變?;诰W絡的系統(tǒng)需要多種分布方式,大量用戶按照不同需求開發(fā)、使用和持續(xù)演化系統(tǒng),并通過異構構件進行連接。用戶帶著需求在網上漫游尋求并選擇服
務,根據(jù)服務的效果修訂需求或提出新需求,直至達到目標。軟件和硬件失效是不可避免的常見現(xiàn)象,不再是異常。對系統(tǒng)的查詢及其他操作會同時發(fā)生,需要新的控制方式。這些特征對傳統(tǒng)的軟件工程原則、假設、方法學、軟件項目管理等都提出了巨大的挑戰(zhàn)。如果把傳統(tǒng)軟件工程開發(fā)的軟件比喻成“建設房屋”,那么建設超大系統(tǒng)的軟件工程相當于“建設城市”。二者之間的差異由量變發(fā)展到質變。房屋、電氣和水利系統(tǒng)屬于工程范疇,可以采用傳統(tǒng)的工程方法構建,但城市不能。城市受限于自然、社會和人的約束。一個或少數(shù)幾個開發(fā)團隊建設“城市”是無能為力的,需要許多開發(fā)團隊按照規(guī)劃、行業(yè)分工逐步建造。“城市”可以一邊建造一邊發(fā)展一邊提供服務。系統(tǒng)不是靜止的,是一個社會生態(tài)系統(tǒng)。社會生態(tài)系統(tǒng)有很高的復雜度和組織性,不能通過工程方法構建。同樣,因特網使用的協(xié)議可以工程化,但網絡的形式受限于自然、社會和人的管理,不可能工程化。將來系統(tǒng)提供的功能會超越現(xiàn)在的Internet。這就是基于網絡的軟件工程面臨的新挑戰(zhàn)。
三、深化軟件工程教育改革,迎接網絡時代超大系統(tǒng)的挑戰(zhàn)
軟件工程的進步必然影響著軟件工程教育的發(fā)展。十余年來,基于網絡的軟件工程已逐漸進入軟件工程的教學活動中。在國內外有廣泛影響的軟件工程教科書,如Ian Sommervill,R.S.Pressman,S.L.Pfleeger編撰的教科書中已有一定的反映。將三本軟件工程教材的新版與前幾版進行對比可以發(fā)現(xiàn)網絡時代軟件工程教學內容改革和發(fā)展的動態(tài)。Ian Sommervill于2007年出版的《軟件工程》第八版充實了安全工程、面向服務的軟件工程、面向方面的軟件開發(fā)、敏捷軟件開發(fā)等內容。R.S.Pressman于2005年出版的《軟件工程》第六版充實了Web軟件工程、敏捷軟件開發(fā)的內容。S.L.PfleeRer于2006年出版的《軟件工程》第三版充實了抽象、建模、敏捷軟件開發(fā)等內容。這些內容是對傳統(tǒng)軟件開發(fā)方法的擴充,反映了網絡時代軟件工程的部分新特點,但離解決網絡環(huán)境下的超大規(guī)模軟件開發(fā)、運行與管理問題尚有很長的路程。
為了迎接超大型軟件應用對傳統(tǒng)軟件工程的挑戰(zhàn),必須對當前的軟件工程教育體系進行研究,從目標定位、教學內容、教學方式、實踐環(huán)節(jié)等方面進行改革,為網絡時代超大型應用軟件研發(fā)人才的培養(yǎng)作好準備?;诰W絡的軟件工程將面對規(guī)模龐大、軟件密集,包括人、策略、科學、技術、文化、經濟和安全組成的網絡社會生態(tài)系統(tǒng)。網絡環(huán)境超大規(guī)模的軟件設計理念將從傳統(tǒng)的以技術為中心轉變?yōu)橐匀?、組織、社會為中心,并系統(tǒng)地考慮環(huán)境感知、設計規(guī)則、管理策略等因素。軟件工程需要認知科學、自然語言理解、信息安全、微觀經濟學、生物學、城市規(guī)劃、社會學的支持,軟件工程教育需要擴展這方面的內容。
高端軟件工程教育的目標可定位于培養(yǎng)超大規(guī)模復雜系統(tǒng)的系統(tǒng)軟件和應用軟件的研發(fā)人才,研究建立與超大規(guī)模復雜系統(tǒng)的基本特征相適應的知識體系和研發(fā)能力框架,在此基礎上改革教學內容、教學方式和實踐環(huán)節(jié)。具有一定專業(yè)領域知識是高層次軟件工程師完成需求獲取和系統(tǒng)測試的必要條件。軟件工程與領域相結合開發(fā)各領域的應用軟件是信息社會的必然要求。要有意識地拓展軟件工程專業(yè)教師隊伍的知識結構,適當引入和培養(yǎng)具有認知科學、人機工程、管理學、生物學、運籌學、信息安全、微觀經濟學等多學科綜合知識背景的教師和學生,強化這些學科與軟件工程的交叉研究,并在這些研究成果的基礎上探索面向超大規(guī)模復雜系統(tǒng)的軟件工程教學內容體系建設和教學實踐環(huán)節(jié)改革的有效途徑。在繼承傳統(tǒng)軟件工程教學內容的基礎上,妥善處理“建設房屋”與“建設城市”的關系。
由于超大規(guī)模軟件工程在諸多領域還非常不成熟,更有必要強調教學與科研相結合,開展探索式學習。在人機工程領域,要進一步強調人在復雜系統(tǒng)中的關鍵作用,探索復雜系統(tǒng)中人與系統(tǒng)組成元素之間的交互協(xié)作模式、用戶及用戶社群的建模、用戶意愿的理解、環(huán)境感知計算等。在超大規(guī)模軟件設計領域,有必要研究復雜系統(tǒng)的多級設計空間及設計規(guī)則,探索面向沖突目標和沖突利益的軟件設計技術、復雜系統(tǒng)的軟件設計表示及分析、基于動態(tài)反饋的自適應設計及設計進化技術、分散設計活動的協(xié)調與管理方法、基于動態(tài)反饋的系統(tǒng)連續(xù)進化方法。研究以用戶為中心的復雜系統(tǒng)質量度量及質量控制方法,復雜系統(tǒng)的軟件過程模型及過程改進。研究軟件開發(fā)平臺對分散式協(xié)同開發(fā)、配置、發(fā)布的支持技術,復雜系統(tǒng)軟件運行平臺對系統(tǒng)運行監(jiān)控、動態(tài)配置、在線熱發(fā)布、動態(tài)進化的支持技術。通過激發(fā)學生的學習興趣和探索熱情,讓學生在探索未知世界的過程中理解超大規(guī)模復雜系統(tǒng)軟件研發(fā)的技術、方法和管理過程。針對超大規(guī)模軟件系統(tǒng)的本質特征設置實驗課題,要求學生在課程實習過程中動手探索超大規(guī)模軟件系統(tǒng)研發(fā)過程中出現(xiàn)的新問題、新技術,實踐新的過程管理方法。利用現(xiàn)有的分布式軟件技術平臺模擬、仿真復雜系統(tǒng)的主要特征,加深學生在復雜系統(tǒng)與現(xiàn)有的大規(guī)模系統(tǒng)之間的本質差異、復雜系統(tǒng)的特征、復雜系統(tǒng)對現(xiàn)有軟件技術的挑戰(zhàn)等方面的認識。利用軟件仿真原理,以社會一技術綜合系統(tǒng)(例如城市建設及運行管理)或以生態(tài)系統(tǒng)為仿真模擬目標,設計復雜系統(tǒng)的仿真軟件。學生在這些富有挑戰(zhàn)性的實驗課題中學習、探索了復雜系統(tǒng)的設計與進化技術、復雜系統(tǒng)的質量控制與軟件研發(fā)過程改進等。
為迎接網絡時代超大規(guī)模軟件工程的挑戰(zhàn),不僅要重視學生工程素質和專業(yè)實踐能力、問題求解和工程管理能力、適應科學技術發(fā)展和學科變化需要的自主學習能力,還要十分重視學生專業(yè)道德與相關法律教育,重視書面和口頭表達能力、交流和溝通能力、國際交往能力、組織和管理能力、紀律性和團隊精神、主動性、創(chuàng)造性和美學修養(yǎng)等。所有這些都必將豐富軟件工程學科的內涵,促進軟件工程教育的發(fā)展。
[責任編輯:余大品]