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