關(guān)于怎樣學(xué)習CBD/CBSE(Component-Based Development/ Component-Based Software Engineering,基于構件的軟件開(kāi)發(fā)/基于構件的軟件工程),我也是摸著(zhù)石頭過(guò)河,隨便說(shuō)幾句,僅供參考:
一. 知識基礎:
首先你必須掌握軟件工程知識、特別是當前軟件工程的新理論、新方法和新技術(shù),傳統的軟件工程的內容我想計算機專(zhuān)業(yè)的學(xué)生都學(xué)過(guò),其實(shí)大多數中文教材作為入門(mén)都可以,這里我推薦Roger S. Pressman的Software Engineering, A Practitioner’s Approach, Fourth Edition. (國內有機械工業(yè)版的中譯本《軟件工程—實(shí)踐者的研究方法》,黃柏素等譯),內容比一本教材深入一些,新一些。如果要想全面了解軟件工程最新的理論和實(shí)踐,理所當然是周之英的《現代軟件工程》,雖然我認為這本書(shū)在深度上還可以提高,而且由于是從一些論文編譯來(lái)的,一些章節的內容有些零散,但總的來(lái)說(shuō)大的方面沒(méi)有遺漏,一個(gè)人出這樣一本書(shū)一定是很辛苦的。閑話(huà)少說(shuō),我認為你起碼必須學(xué)習以下的一些知識:面向對象方法學(xué)、軟件體系結構、軟件復用、領(lǐng)域工程,可能的話(huà)還有:需求工程、設計模式、軟件過(guò)程控制(CMM,個(gè)人和小組過(guò)程)、形式化方法(推薦大家學(xué)一學(xué)Z語(yǔ)言),是不是要累死你了,沒(méi)辦法誰(shuí)讓你干這個(gè)辛苦行當,而且又其樂(lè )融融讓你自覺(jué)自愿地舍身取義。
推薦文獻:
-《The Future of Software Engineering》非常好的綜述,幾乎涉及了軟件工程的所有方面,可以讀你感興趣的領(lǐng)域,文中推薦的網(wǎng)上資源也很好。
- A Comparison of Object Oriented Development Methodologies,http://www.toa.com/smnn?mcr.html,面向對象方法學(xué)大全,可以查到各種OO方法,以及對它們的比較。
-軟件體系結構
Rick Kazman,Software Architecture,Handbook of Software Engineering and Knowledge Engineering 介紹了主要的SA的概念和觀(guān)點(diǎn),可以結合《The Future of Software Engineering》里Galan的文章一起看。
Felix Bachmann et al, The Architecture Based Design Method, TECHNICAL REPORT CMU/SEI-2000-TR-001和 Len Bass et al, Architecture-Based Development TECHNICAL REPORT CMU/SEI-99-TR-007 這兩篇CMU的技術(shù)報告系統介紹了SA的設計和開(kāi)發(fā)方法,給出了SA工程化的可操作的方法。
Mary Shaw,Some Patterns for Software Architectures,介紹了多種體系結構風(fēng)格,這里比在她的專(zhuān)著(zhù)Software Architectures中要更加全面、規范,這部分是原著(zhù)的精華,非常有啟發(fā)性。
-軟件復用
Software Reuse Initiative, http://dii-sw.ncr.disa.mil/reuseic/pol-hist/primer/ 入門(mén)級教材
Hafedh Mili et al,Reusing Software: Issues And Research Directions 內容充實(shí),觀(guān)點(diǎn)深刻,指導性很強,可惜插圖看不到。
DEPARTMENT of DEFENSE SOFTWARE REUSE INITIATIVE TECHNOLOGY ROADMAP Version 2.2 http://dii-sw.ncr.disa.mil/reuseic/pol-hist/Roadmap/Cover.html 全面介紹了復用原理和技術(shù),狀況、方向分析十分透徹。
其他領(lǐng)域沒(méi)有以上這兩個(gè)密切,但也可CBD有關(guān),我以后再介紹,否則喧賓奪主了。
二. 實(shí)踐基礎
軟件工程有理論,但更重要的是實(shí)踐。它的許多方法只能在實(shí)際項目中才能體會(huì ),我周?chē)恍](méi)有工作經(jīng)驗的軟工碩士大談軟工無(wú)用論時(shí),唉,只能嗤之以鼻。
你至少要掌握一門(mén)面向對象編程語(yǔ)言,最好是JAVA,然后去做一個(gè)項目(可以小“題”大做)。你需要學(xué)習CORBA、COM/DECOM(現在是MS 的Web Service)和JAVABEAN/EJB(似乎J2EE提法簡(jiǎn)潔一些,可大家都這么說(shuō))之一,嘗試去寫(xiě)一些分布式對象,注意,構件的內涵不止面向對象,好在他們正朝著(zhù)構件技術(shù)發(fā)展,例如CORBA CCM。建議大家學(xué)一學(xué)CORBA, 開(kāi)發(fā)工具可以用VisiBroker。你還要學(xué)一點(diǎn)UML,現在有人提出把UML作為CBD的建模工具,無(wú)論出于什么目的,UML對你肯定有幫助;至于Web Service,如果你有興趣,自然少不了SOAP之類(lèi)的新玩意(涉及不深,不敢亂說(shuō))。
推薦文獻:
- CORBA
Sams Teach Yourself CORBA in 14 Days,入門(mén)教材
The Common Object Request Broker: Architecture and Specification,OMG的CORBA規范,很厚的一本大部頭,也很枯燥,也有了中譯本,其實(shí)還是原文更準確,英文技術(shù)手冊文字都不是很難。
CORBA Comparison Project: Final Report德國和捷克兩個(gè)研究機構的CORBA開(kāi)發(fā)工具比較報告, 介紹了ORL OMNIORB、IONA ORBIX和INTERPRISE VISIBROKER,挺好。
CORBA方面的資料太多,可以去OMG的網(wǎng)站去找: http://www.omg.org/。
- J2EE
張志偉等譯,J2EE 構件企業(yè)系統,清華大學(xué)出版社,很全面,可惜沒(méi)有電子版。如果看原版的J2EE技術(shù)藍皮書(shū)會(huì )很辛苦。
- COM/DCOM我不很熟,曾推薦了一組.NET和Web Service的文章,大家可以讀一讀。
- UML
首推《UML用戶(hù)手冊》,邵維忠等在1999年第4期“計算機研究與發(fā)展”上的綜述《統一建模語(yǔ)言UML述評》也非常好。
UML在構件上的應用請看Desmond D‘Souza 的Catalysis -- Objects, Components and Frameworks with UML, 該書(shū)沒(méi)有電子版,不過(guò)網(wǎng)上可以找到相關(guān)的論文。
開(kāi)發(fā)工具各取所好,VisiBroker 和Delph 6網(wǎng)上都有,需要的話(huà)我可以上傳下載網(wǎng)址, CORBA方面它們的商品化水準最高。
三. CBD的常見(jiàn)術(shù)語(yǔ)和概念
CBD學(xué)習當然要從概念開(kāi)始,因為是一門(mén)新學(xué)科(或只能稱(chēng)為新方向),相關(guān)概念多得有時(shí)讓人丈二和尚摸不著(zhù)頭腦,羅列一些,供大家參考:
構件(component)、構架(Software Architecture)、框架(framework)、構件框架/構件基礎設施(component framework/component Infrastructure)、對象/分布式對象(Object /Distributed OO)、接口/接口描述語(yǔ)言(interface/IDL)、應用工程(Application Engineering)、領(lǐng)域工程(Domain Engineering)、契約(contract)、COTS(我譯為“商業(yè)成品構件”,怎么樣?)、中間件(middleware)、連接件/端口/角色(connector/port/role)、產(chǎn)品線(xiàn)/產(chǎn)品族(Product Line/Product Family)、子系統(Subsystem)、服務(wù)/網(wǎng)絡(luò )服務(wù)(service/web service)、構件適應/配置/部署(Component adaptation/configuration/deployment)、構件容器(container)、對象請求代理ORB(Object Request Broker)、設計模式(design pattern)、SOC/AOP/SOP(separation of concerns/Aspect-Oriented Programming/Subject-Oriented Programming),合成和生成復用(compositional/generative reuse),可復用資產(chǎn)(Reusable Asserts), 遺產(chǎn)系統(legacy)、企業(yè)應用集成( Enterprise Application Integration)、包裝(wrap)、粒度(granularity)…….
然后了解CBD/CBSE的每個(gè)過(guò)程的目的、任務(wù)和活動(dòng):構件獲?。瓨嫾u價(jià)-構件適應-構件部署-系統集成-系統運行-構件維護-構件升級。
我總結的CBD研究方向:(a)構件模型和構件表示;(b)軟件構架技術(shù);(c)構件庫和構件獲??;(d)構件的評價(jià)和度量;(e)構件的適應和演化;(f)構件的集成和連接;(g)CBD過(guò)程和管理,如果你想研究,你可以挑一個(gè)你感興趣的方向開(kāi)始工作,如果你想應用,那么這些知識就像軟件工程和編程語(yǔ)言的關(guān)系,修行就得看各人了。
推薦幾篇論文。
(1)入門(mén)
考慮到中文好讀一些,首推計算機世界日報的99年3月15日的專(zhuān)題報道“軟件復用”,非常好的一組入門(mén)級文章。還有對中科院軟件所李京的專(zhuān)訪(fǎng)也挺好:《分布對象技術(shù)的新進(jìn)展》(微電腦世界2000年33期)。
《基于構件開(kāi)發(fā)的11個(gè)步驟》(11 Steps to Component Based Development URL:http://www.flashline.com/content/steps/steps.jsp?sid=986880017671-3396000210-150);普及性的資料集,內容很豐富,偏向于技術(shù)介紹。
Faisal Siddiqui,CBSE: A look at reusable software components;很規矩的概述。
Component Software Glossary;構件軟件術(shù)語(yǔ)表, 現在新的軟件術(shù)語(yǔ)層出不窮,去那里看看能不能找到解釋。
Alan Brown, An Introduction to Component-Based Development; Brown的講稿,學(xué)習CBD的快餐。Brown寫(xiě)了很多關(guān)于構件論文和專(zhuān)著(zhù),到這里找:http://www.alanbrown.net/online.html。
(2)提高
M?lardalen University的Component Based Software Engineering - State of the Art report, 一個(gè)非常好的論文集,里面很多是CBD研究者所關(guān)心的,該學(xué)校設有CBD的博士學(xué)位,關(guān)于CBD的教學(xué)問(wèn)題,也即學(xué)習問(wèn)題,它們給出了一個(gè)全面系統的方案。
1998~2000 International Workshop on Component-Based Software Engineering; 會(huì )議論文集,有幾十篇短文(以后我會(huì )挑一些出來(lái)點(diǎn)評)。
說(shuō)明:
(1)以上推薦的文獻都是一些實(shí)用的論文,并不取決它的權威性,一些經(jīng)典的論文,例如軟件體系結構方面,應該看David Garlan和Mary Shaw的Software Architecture: perspectives on an emerging discipline, 以及 Dewayne E. Perry 和Alexander L. Wolf 的 Foundations for the Study of Software Architecture,但是它們絕沒(méi)有Rick Kazman 的Software Architecture內容新、綜合全面,文章也短一些。
(2)除特別說(shuō)明,所有文章均取自網(wǎng)上,有些我已上傳,沒(méi)有的,如果誰(shuí)急需請告訴我。
(3)應網(wǎng)友請求匆忙成文,我會(huì )不斷修訂,權當版本1.0,請各位DX多提意見(jiàn)。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=18737
聯(lián)系客服