網(wǎng)絡(luò)時代的軟件工程
單擊此處編輯母版標題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,圍繞計算機學(xué)院、軟件學(xué)院和信息學(xué)院共同關(guān)心的“軟件工程” 問題進行評論。,學(xué)術(shù)評論,,在寬松自由的氣氛下,進行學(xué)術(shù)交流、商榷、質(zhì)疑、爭鳴、互動,這也許比評估評審結(jié)果的排序,更能夠促進學(xué)術(shù)的繁榮和技術(shù)的創(chuàng)新。,評論動機:,科學(xué)植根于討論之中,——,量子力學(xué)創(chuàng)始人、諾貝爾物理學(xué)獎獲得者,,海森堡,(Werner Heisenberg,1901-1976),網(wǎng)絡(luò)時代的軟件工程,,Software Eng. in the Network Age,軟件是在系統(tǒng)里工作嗎?,質(zhì)疑:,歷史是面鏡子:,計算機,60,年,,人工智能,50,年,,軟件工程,40,年,軟件工程里程碑,,,60,多年前,計算機科學(xué)從電子學(xué)中,脫穎,而出,,為克服以手工作坊方式為主生產(chǎn)軟件帶來的軟件危機,,1968,年在原西德召開的北大西洋公約組織會議上,第一次提出了軟件工程的概念。,,軟件從硬件中,脫穎,而出,軟件工程從計算機體系結(jié)構(gòu)中,脫穎,而出,,1984,年卡內(nèi)基-梅隆大學(xué)創(chuàng)立軟件工程研究所,,1985,年我國籌建武漢大學(xué)軟件工程國家重點實驗室,,9,,軟件附屬于硬件,現(xiàn)在,50,年代,60,年代,70,年代,80,年代,90,年代,面向,,過程,面向,,對象,面向,,構(gòu)件,科學(xué)家們對軟件工程的關(guān)注域總是在,“,與時俱進,”,,網(wǎng)絡(luò)時代迫使軟件工程尋找新的解決辦法,面向,,領(lǐng)域,復(fù)雜系統(tǒng),,復(fù)雜網(wǎng)絡(luò),軟件作為單獨產(chǎn)品,催生軟件工程,面向,,大眾,軟件工程,40,年的尷尬,40,年軟件工程的發(fā)展一直以自我為中心,:,計算機以為中央處理器為核心,,軟件開發(fā)面向機器指令,從編碼開始,,程序規(guī)模由里向外,由小到大,,較少考慮單機工作之外的事情,,10,11,程序正確性證明在軟件工程中沒有徹底解決,,軟件工程師的知識和智能始終無法從編程過程中剝離出來,,任何編程技巧都沒有能夠帶來程序生產(chǎn)率成數(shù)量級的提高,軟件工程中沒有出現(xiàn)摩爾速度,,軟件全自動化生產(chǎn)沒有能夠?qū)崿F(xiàn),,12,,網(wǎng)絡(luò)為人們提供一個均等的、虛擬的、豐富的計算機應(yīng)用平臺、信息服務(wù)平臺,也是軟件資源下載和維護平臺,13,用戶,嚴重依賴網(wǎng)絡(luò),,資源,通過網(wǎng)絡(luò)聚合,并提供服務(wù),,軟件產(chǎn)品,的開發(fā)與演化離不開網(wǎng)絡(luò),,,廣大用戶越來越把軟件視作,網(wǎng)絡(luò)環(huán)境中的軟件,14,軟件在網(wǎng)絡(luò)時代的發(fā)展迫使軟件工程尋找新的解決辦法,,從集中的軟件到分散的軟件,,從單體軟件到群體軟件的交互與協(xié)同,,從為我所有的軟件到為我所用的軟件,軟件在網(wǎng)絡(luò)環(huán)境下工作!,走向一:,需求是軟件生命周期中的一個階段嗎?,質(zhì)疑:,17,傳統(tǒng)的軟件工程建模理論與方法,無論是結(jié)構(gòu)化建模、還是面向?qū)ο蠼#际轻槍π枨蠓治瞿P投缘?,用戶需求是固定的,?shù)據(jù)資源是自我的,系統(tǒng)目標和開發(fā)過程是確定的;,,在網(wǎng)絡(luò)時代,軟件需求是持續(xù)的、多目標的、可生長的,網(wǎng)絡(luò)資源是共享的,系統(tǒng)與系統(tǒng)之間是相互作用的,用戶是不確定的,用戶與系統(tǒng)的交互方式是多樣的,18,軟件工程發(fā)展動力來自對信息的需求:,無處不在的在線搜索!,,無處不在的實時交互!,,時刻發(fā)生的即時通訊和協(xié)同!,,對軟件和信息,不求我有,只求我用!,,,軟件產(chǎn)業(yè)的發(fā)展走勢,獨立編程服務(wù),代表公司:,CSC,,特點:為單 個客戶提供定制軟件,包括技術(shù)咨詢、軟件編程和維護。軟件銷售是一次性的,軟件產(chǎn)品,代表公司:,Informatics,,特點:保護知識產(chǎn)權(quán),以許可證方式銷售軟件產(chǎn)品,企業(yè)解決方案,代表公司:,ORACLE,,特點:面向領(lǐng)域,以企業(yè)解決方案供應(yīng)商的面目出現(xiàn),面向大眾的成套軟件,代表公司:微軟,,特點:基于個人計算,服務(wù)大眾市場,網(wǎng)絡(luò)增值服務(wù),代表公司:,Google,,特點:向端用戶收小頭,向寄生在服務(wù)上的廣告商要大頭,,,,,,20,需求獲取是軟件工程的瓶頸,,資源,需求牽引,,計算資源,網(wǎng)絡(luò)環(huán)境下的各種信息服務(wù),存儲資源,通信資源,信息資源,領(lǐng)域共性需求,個性化、多元化需求,柔性生產(chǎn)?,,資源聚合,滿足需求的規(guī)?;ㄖ?需求建模,,領(lǐng)域,,知識,21,挑 戰(zhàn),需求的復(fù)雜性,,導(dǎo)致系統(tǒng)資源交互、建模和應(yīng)用的復(fù)雜性,需求主導(dǎo)的軟件工程,,頻繁變化的不確定性需求,——,軟件系統(tǒng)隨需演變,,動態(tài)開放的網(wǎng)絡(luò)環(huán)境,——,軟件結(jié)構(gòu)和行為的自適應(yīng)能力,,異構(gòu)自主的軟件資源,——,滿足用戶需求的即時組合,,大范圍交互的復(fù)雜系統(tǒng),——,變尺度、在線與優(yōu)化,,,60-70,年代,80,年代,90,年代,本世紀初,面向過程,面向?qū)ο?面向構(gòu)件,面向網(wǎng)絡(luò)服務(wù),OOD,,OMT,,,UML,,,CORBA,DCOM,,J2EE,,,XML,,SOAP,,,HTTP,,OWL,,UDDI,時間,WSDL,,,關(guān)注域,SASD,SASD,Structure Analysis, Structure design,結(jié)構(gòu)化設(shè)計方法,OOD,Object-Oriented Programming,面向?qū)ο笤O(shè)計,UML,Unified Modeling Language,統(tǒng)一建模語言,OMT,Object Modeling Technology,對象建模方法,CORBA,Common Object Request Broker Architecture,公共對象請求代理體系結(jié)構(gòu),DCOM,Distribute Component Object Model,分布式組件對象模型,J2EE,Java2 Platform Enterprise Edition,JAVA,平臺企業(yè)版,HTTP,Hypertext Transfer Protocol,超文本傳輸協(xié)議,XML,Extensible Markup Language,可擴展標記語言,UDDI,Universal Description, Discovery and Integration,統(tǒng)一描述、發(fā)現(xiàn)和集成,OWL,Ontology Web Language,本體,Web,語言,SOAP,Simple Object Access Protocol,簡單對象訪問協(xié)議,WSDL,Web Service Describe Language,網(wǎng)絡(luò)服務(wù)描述語言,40,年發(fā)展歷程中軟件工程關(guān)注域轉(zhuǎn)向需求,23,23,軟件工程的重點向需求轉(zhuǎn)移,傳統(tǒng)的軟件工程,需求分析僅僅是其中的一個環(huán)節(jié),強調(diào)軟件本身的頂層結(jié)構(gòu)設(shè)計,,網(wǎng)絡(luò)環(huán)境下的軟件工程,,系統(tǒng)復(fù)雜,規(guī)模巨大,相互作用,演化生長,,需求的分量越來越重,需求的變化越來越快,資源的聚合越來越強,,個性化和多元化的需求趨勢,導(dǎo)致軟件生產(chǎn)方式更強調(diào)規(guī)?;ㄖ?,提供靈活、可信和即時的服務(wù),軟件工程向需求工程傾斜!,走向二:,軟件自身是層次型的體系結(jié)構(gòu)嗎?,質(zhì)疑:,軟件工程教科書中分層的軟件體系結(jié)構(gòu),26,,軟件設(shè)計方法學(xué),面向過程的軟件設(shè)計方法,,面向?qū)ο蟮能浖O(shè)計方法,面向過程的軟件設(shè)計方法,——,以,C,語言為典型代表,偏重在編碼層面上,將一個復(fù)雜的程序分解為函數(shù)或過程;,,強調(diào)計算流程中的,順序,、,循環(huán),和,條件,3,個基本要素;,,關(guān)注程序開發(fā)過程和執(zhí)行過程,考慮需求分析、結(jié)構(gòu)設(shè)計、編碼到軟件測試整個流程;,,產(chǎn)生了,“,軟件生命周期,”,的概念,形成一整套的軟件開發(fā)工具。,,28,,編碼層面的方法學(xué),面向?qū)ο蟮能浖O(shè)計方法,——,以,JAVA,語言為典型代表,以,“,類,”,為基本程序單元,對象是,“,類,”,的實例化,對象之間以消息傳遞為基本手段;,,軟件的設(shè)計、編碼統(tǒng)統(tǒng)以類及類的對象之間的關(guān)系為核心,封裝、繼承和多態(tài)成為三個重要特征;,,29,,軟件設(shè)計層面的方法學(xué),尋求比,“,類,”,的粒度更大、易于復(fù)用的,“,構(gòu)件,”,,期望實現(xiàn)軟件的再工程 (,Re-Engineering,),,30,,軟件體系結(jié)構(gòu)的方法學(xué),面向構(gòu)件的軟件設(shè)計方法,——,以,XML,語言為典型代表,31,需求工程,15,年,需求活動以“工程化”的方法被提出,與用戶廣泛地交流,確定應(yīng)用系統(tǒng)的目標,鼓勵用戶以積極的方式參與需求分析活動,在軟件的演化過程中強調(diào)用戶參與和領(lǐng)域?qū)<业闹笇?dǎo)。,,需求是一個不斷反復(fù)的形式化、理解和演化的過程。,軟件是由各個軟件單元以及軟件單元之間的相互作用組成的,,每個軟件單元可稱為智能體,(Intelligent Agent),或者主體,(Active Agent),,其大小由粒度來度量,如對象、類、構(gòu)件、子系統(tǒng)和系統(tǒng)等,粒度逐步增大。,32,網(wǎng)絡(luò)時代的軟件工程,網(wǎng)絡(luò)時代的軟件工程,把功能強大的可編程的軟件單元放入互相連接的通訊網(wǎng)絡(luò)中的一個個節(jié)點上,節(jié)點主要完成各種各樣的計算與處理功能,連接主要完成通信功能,,網(wǎng)絡(luò)通過軟件促進了用戶之間的資源聚合、信息共享和協(xié)同工作,,33,34,把軟件作為一個獨立的系統(tǒng),,采用自頂向下、逐步求精、分而治之的軟件開發(fā)策略,更傾向于把軟件單元看作軟件拓撲中的一個節(jié)點,節(jié)點間相互作用,,把軟件的結(jié)構(gòu)看作是復(fù)雜網(wǎng)絡(luò)的一個案例,軟件工程觀的轉(zhuǎn)變,早先的軟件工程觀,網(wǎng)絡(luò)時代的軟件工程觀,,軟件在實際的運行過程中,相互之間的數(shù)據(jù)交換常常超出了所謂的層次結(jié)構(gòu),,層次表述方法阻礙了對網(wǎng)絡(luò)環(huán)境下軟件單元之間相互作用的深入研究,,用網(wǎng)絡(luò)拓撲表示軟件單元之間的關(guān)系,并沒有否定傳統(tǒng)的層次結(jié)構(gòu)的存在,如果它們之間確實存在的話。,,35,36,,軟件的網(wǎng)絡(luò)化性質(zhì)比軟件單元的性質(zhì)更強烈地影響著軟件的整體行為和特性,甚至出現(xiàn),涌現(xiàn),,如計算機病毒的突然泛濫等,37,,Linux,局部內(nèi)核函數(shù)網(wǎng)絡(luò)圖,,,,38,Linux,全局,內(nèi)核函數(shù)網(wǎng)絡(luò)圖,Linux,內(nèi)核有,630,個函數(shù),存在,1814,個函數(shù)調(diào)用。,,圖中將函數(shù)表示為節(jié)點,調(diào)用關(guān)系表示為邊。,軟件結(jié)構(gòu)可以用網(wǎng)絡(luò)拓撲表示,!,走向三:,問題的形式化是強結(jié)構(gòu)好還是弱結(jié)構(gòu)好?,質(zhì)疑:,本體描述舉例:,USB,協(xié)議,,抽象與規(guī)范,,本體描述是屏蔽差異性、覆蓋個性化、多樣化需求的抽象表示,實例化,軟件:,USB2.0,,接口驅(qū)動程序,本體模型:,USB,協(xié)議,,,,,,,,,,,,,,,,,,,,,,,,,,,,,本體模型,,業(yè)務(wù)過程復(fù)雜,服務(wù)資源豐富,需求四要素,,要素自身的本體模型,,,,,,,基于語義、情境的,,“角色-目標”關(guān)系本體模型,基于業(yè)務(wù)規(guī)則的,,“目標-過程”關(guān)系本體模型,基于領(lǐng)域的,,“過程-服務(wù)”關(guān)系本體模型,用戶角色繁多,需求目標多變,本體模型描述框架,要素間關(guān)系的本體模型,,過程,,Process,服務(wù),,Service,目標,,Goal,角色,,Role,用戶主導(dǎo)、面向領(lǐng)域的需求建模,,偏好依附生長的模型演化機理,,多粒度的需求驗證與優(yōu)化,,軟件間交互與協(xié)同行為,,網(wǎng)絡(luò)環(huán)境下基于語義的軟件資源聚合,服務(wù)大眾的網(wǎng)絡(luò)化軟件的本體描述,基本方法,——,本體元建模,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Relational Model,,,XML,DB Schema,,,XML Schema,ER Model,RDF,UML,OWL,SORL,Description Logic,元數(shù)據(jù):類型,元模型,:概念,本體模型,:情境,,,語義,信息使用價值,軟件服務(wù)能力,需求描述能力,數(shù)據(jù)層互操作,語法層互操作,語義層互操作,數(shù)據(jù),查詢,知識發(fā)現(xiàn),智能查詢,按需回答,Controlled Vocabulary,情境感知的,,交互與協(xié)同,Service-Oriented Requirement Language,問題的形式化向著本體描述發(fā)展,!,走向四:,成熟的,軟,件是測出來還是用出來的?,質(zhì)疑:,“很多人都認為微軟是一家軟件開發(fā)公司,而事實上,我們是一家軟件,測試,公司”,,,——,比爾,·,蓋茨,Microsoft,Exchange 2000,Windows 2000,項目經(jīng)理,25,人,約,250,人,開發(fā)人員,140,人,1700,人,測試人員,350,人,3200,人,測試,/,開發(fā)比,2.5,1.9,注:微軟公司 陳宏剛 :,《,軟件開發(fā)的科學(xué)與藝術(shù),》,第,9,章,261,頁 電子工業(yè)出版社,,微軟產(chǎn)品的團隊人員結(jié)構(gòu)舉例,國內(nèi)某公司,2006,年軟件失效統(tǒng)計,,問題,,總數(shù),容錯,,防錯,接,,口,中斷現(xiàn)場保護,時序時限,運行環(huán)境,計算,,算法,初始化,,和復(fù)位,編程,需求和配置管理,2268,428,155,33,30,13,120,69,784,636,所占比例,,%,18.87,6.83,1.46,,1.32,,0.57,,5.29,,3.04,,34.57,28.04,,僅占,9.7%,的、與軟件交互相關(guān)的錯誤,耗費了軟件排錯時間總開銷的,90%,!,50,,軟件工程,40,年,人們不斷地發(fā)現(xiàn)軟件有這樣那樣的漏洞,但難以證明軟件沒有漏洞和錯誤。,,通過補丁彌補操作系統(tǒng)、支撐系統(tǒng),,的漏洞何時了?,Photoshop,軟件的演化,90,年,93,年,95,年,96,年,99,年,00,年,02,年,03,年,05,年,路徑,…,調(diào)色板、標簽,,矢量編輯,,,…,多次撤銷,,色彩管理,,,…,歷史概念,,吸取,,矢量圖像,,,…,溶解濾鏡,,圖層控制,+,,矢量編輯,+,,…,,文字矢量化,,修復(fù)刷子,,新繪畫引擎,支持相機,RAW1.*,,…,RAW2.*,,陰影、高光,,顏色匹配,,鏡頭模糊濾鏡,,實時柱狀圖,,,…,RAW3.*,,圖像扭曲,,點恢復(fù)筆刷,,紅眼工具,,鏡頭校正濾鏡,,智能銳化,,,…,,,,Windows 3.1,,Windows 95,Windows,XP/ 2000,Windows,2000 / 98,V3,V4,V5,V6,V2,V1,V7,V CS1,V CS2,版本,升級,圖層、色彩平衡,,飽和度調(diào)節(jié),時間,system7,數(shù)碼相機的應(yīng)用與發(fā)展牽引著圖像處理軟件的演化,52,演化過程中對支撐系統(tǒng)要求越來越高,Photoshop1.*,Photoshop2.*,Photoshop3.*,Photoshop6.*,Photoshop7.*,Photoshop,,Creative Suite,軟件規(guī)模,800K,4M RAM,16,為變?yōu)?32,位程序,Pentium III or,,4 processor,Pentium class,,processor,192 MB RAM,280 MB,,available,16-bit color,,or greater,1,024x768,,or greater,64 MB RAM,125 MB,8-bit,800x600,,or greater,Pentium III,,or 4,128 MB RAM,280 MB,256-color display,,with 800 x 600,16-bit,2MB RAM,…,…,…,軟件是逐漸生長起來的!,處理器,內(nèi)存,硬盤,顯卡,顯示器,操作系統(tǒng),Windows3.1,Windows,,98/2000,Windows98,Windows,,2000/XP,Windows,,2000/XP,53,Windows,的,功能演化,MS-DOS,Vista,Windows 1.0,Windows 2.0,Windows 3.*,Windows 95,Windows 98,Windows 2000,Windows XP,85,年,87,年,90,年,95,年,98,年,00,年,01,年,06,年,用戶,,圖形界面,…,,,,,,,,,,,改進界面、內(nèi)存管理,,添加聲音,I/O,的基本多媒體支持、,TrueType,字體,…,,,,,,,,,,通過,IE,給系統(tǒng)桌面提供,HTML,支持,,,…,,,,,,,,,,改良對硬件標準的支持并整合到桌面上,,,…,,,,,,,,,,整合許多的第三方軟件,,,…,,,,,,,,,,“,安全優(yōu)先”的設(shè)計理念,引入許多新的安全機制和技術(shù),提高用戶終端的安全性,,,…,,,,,,,,,,升級版本,,,,,,,,,,借鑒,Mac OS,,…,,,,,,,,,,面向商業(yè),包含,NTFS,文件系統(tǒng)、,EFS,文件加密、增強硬件支持等,,,…,軟件是不斷生長、演化的。,,軟件的正確性、可靠性、安全性、時效性、可信性、生存性等是在使用中競爭出來的,不是在工廠中一次性生產(chǎn)和測試出來的。,54,55,軟件工程既要考慮單個軟件單元的正確性、時效性、可靠性、可維護性、安全性,也要考慮軟件單元之間的相互作用,,考慮復(fù)雜軟件自身演化過程中的生長性,在生長過程中的偏好依附性,以及網(wǎng)絡(luò)化軟件的小世界特性、無標度特性和軟件單元之間的聚積性,,軟件在演化中生長完善,!,走向五:,五點帶風險的評論:,,軟件在網(wǎng)絡(luò)環(huán)境下工作,,軟件工程向需求工程傾斜,,軟件結(jié)構(gòu)用網(wǎng)絡(luò)拓撲表示,,問題的形式化向本體描述發(fā)展,,軟件在演化中生長完善,敬請大家批評指正!,新舊軟件工程觀,基礎(chǔ)理論,研究方法,研究對象,基于系統(tǒng);,,基于圖靈計算理論和馮式體系結(jié)構(gòu)。,,基于網(wǎng)絡(luò),節(jié)點是一個個的主體(圖靈機或智能體),主體間相互作用;,,網(wǎng)絡(luò)化軟件具有小世界、無標度和高集聚的特性,研究其網(wǎng)絡(luò)動力學(xué)行為。,,操作系統(tǒng)屏蔽硬件的異構(gòu)性,中間件屏蔽操作系統(tǒng)的異構(gòu)性;,,采用層次結(jié)構(gòu)描述軟件單元之間的相互關(guān)系,采用自頂向下分解、逐步求精的開發(fā)方法;,,重視軟件生命周期、軟件評測和軟件成熟度。,軟件是制造業(yè);,,面向系統(tǒng)的結(jié)構(gòu);,,要,確定,需求,明確系統(tǒng)邊界。,網(wǎng)絡(luò)成為一個虛擬資源環(huán)境;,,重視在不同時間段、不同軟件規(guī)模上的軟件間的相互關(guān)系;,,軟件按偏好依附生長,逐步演化。,軟件是服務(wù)業(yè);,,面向服務(wù)的架構(gòu);,,用戶主導(dǎo),隨需即取,規(guī)模定制,模型驅(qū)動,敏捷開發(fā)。,過去的軟件工程,未來的軟件工程,59,Thanks,