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