版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章詳細(xì)設(shè)計(jì)
(第4.5-4.6節(jié))武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院主要內(nèi)容面向?qū)ο蟪绦虻脑敿?xì)設(shè)計(jì)基于組件的程序設(shè)計(jì)方法武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院在結(jié)構(gòu)化程序設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)是問(wèn)題求解的中心環(huán)節(jié),一個(gè)完整的軟件系統(tǒng)是圍繞一個(gè)或幾個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)建立起來(lái)的。操作則是以傳送到函數(shù)或過(guò)程中的數(shù)據(jù)位基礎(chǔ)進(jìn)行的。結(jié)構(gòu)化程序設(shè)計(jì)方法和面向數(shù)據(jù)結(jié)構(gòu)的問(wèn)題求解方法,在中小型軟件系統(tǒng)開(kāi)發(fā)中得到很好應(yīng)用。當(dāng)系統(tǒng)的規(guī)模和復(fù)雜性不斷增加時(shí),其呈現(xiàn)了局限性,主要反映在關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的作用域和可視性方面。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.5.1面向?qū)ο蟪绦虻奶匦苑庋b性:類的封裝性使得數(shù)據(jù)和操縱數(shù)據(jù)的算法(函數(shù)或過(guò)程)緊密地捆綁在一起。這樣就可以使得操縱數(shù)據(jù)的函數(shù)或過(guò)程的作用域和可視性限制在軟件系統(tǒng)的局部區(qū)域內(nèi)。//定義日期字符串類型string80typedefcharString80[80];//定義日期類CDateclassCDate{//類的實(shí)現(xiàn)private:intyear,month,day;//類的接口public:CDate(intmonth,intday,intyear);CDateoperator+(intdays);voidGetDateString(String80&DateString);//…};//部分成員函數(shù)的實(shí)現(xiàn)voidCDate::GetDateString(String80&DateString){sprintf(DateString,"%d-%d-%d",month,day,year%100);}C++類的標(biāo)準(zhǔn)設(shè)計(jì)方法是將數(shù)據(jù)成員設(shè)計(jì)為私有的需要對(duì)外公開(kāi)的成員函數(shù)設(shè)計(jì)為公有的C++中類的數(shù)據(jù)部分稱為數(shù)據(jù)成員,類的算法部分稱為成員函數(shù)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院繼承性在面向?qū)ο蟪绦蛟O(shè)計(jì)中,允許某個(gè)類繼承其它類的成員函數(shù)或數(shù)據(jù)成員。被繼承的類稱為基類、父類或超類,繼承的類稱為派生類或子類。classCBaseClass{……};若要從CBaseClass派生一個(gè)新的類,其語(yǔ)法是:classCDerivedClass:存取權(quán)限標(biāo)識(shí)CBaseClass{……};
派生類繼承基類成員時(shí),派生類不能存取基類的private成員,否則需要將基類的成員聲明為protected.見(jiàn)P147武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院多態(tài)性多態(tài)性使得相關(guān)的類可有同名的函數(shù),這個(gè)同名的函數(shù)根據(jù)不同類產(chǎn)生不同的結(jié)果。換言之,不同類的對(duì)象可以具有相同的接口,這些相同的接口自然會(huì)呈現(xiàn)出不同的行為。通過(guò)多態(tài)性程序設(shè)計(jì),可以編寫并編譯代碼以處理未知類型的對(duì)象。在C++中,多態(tài)性是通過(guò)虛擬函數(shù)實(shí)現(xiàn)的。
//定義日期字符串類型string80typedefcharString80[80];
//定義日期類CDateclassCDate{protected:intyear,month,day;public:CDate(intmonth,intday,intyear);CDateoperator+(intdays);virtualvoidGetDateString(String80&DateString);voidDisplayDateString(void);//將調(diào)用GetDateString//…};如果不采用多態(tài)性處理GetDateString,則在CDate的子類中如果重寫了GetDateString會(huì)影響DisplayDateString嗎?武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.5.2設(shè)計(jì)原則一、可復(fù)用性:1、保證方法的內(nèi)聚性;只做一件事2、減少一個(gè)方法的代碼規(guī)模;3、保持方法對(duì)外接口的一致性;4、分離策略(控制)方法和實(shí)現(xiàn)方法;5、方法應(yīng)均勻覆蓋數(shù)據(jù);6、加強(qiáng)封裝性,操作對(duì)象內(nèi)部數(shù)據(jù),避免全局?jǐn)?shù)據(jù)7、減少方法的耦合性;8、利用繼承機(jī)制;武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院二、可擴(kuò)展性:1、封裝數(shù)據(jù):類的內(nèi)部數(shù)據(jù)通常對(duì)其他類是隱蔽的。2、封裝方法內(nèi)部的數(shù)據(jù)結(jié)構(gòu):是為實(shí)現(xiàn)方法的算法而設(shè)計(jì)的,不應(yīng)從外部獲得。3、避免情況分支語(yǔ)句;4、區(qū)分公有方法和私有方法。公有方法是對(duì)象的外部接口,通常不應(yīng)該修改和刪除。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院三、健壯性:1、防止輸入錯(cuò)誤(圍欄);2、把握優(yōu)化代碼的時(shí)機(jī);3、檢查參數(shù)的合法性:對(duì)公有方法的參數(shù),必須嚴(yán)格檢查對(duì)參數(shù)的約束。4、選擇適當(dāng)?shù)膶?shí)現(xiàn)方法。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院四、協(xié)作性:涉及協(xié)作、交流和通信1、設(shè)計(jì)前進(jìn)行周密考慮;2、盡量使得代碼容易理解;3、在對(duì)象模型中使用相同的名稱;4、對(duì)類進(jìn)行詳細(xì)的文檔化;5、把類打包成模塊;6、公開(kāi)公共的設(shè)計(jì)說(shuō)明書;武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6基于組件的程序設(shè)計(jì)方法
我們能如此開(kāi)發(fā)軟件嗎?武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院程序設(shè)計(jì)方法的發(fā)展功能分解法——計(jì)算任務(wù)結(jié)構(gòu)化程序設(shè)計(jì)——以數(shù)據(jù)為中心面向?qū)ο蟪绦蛟O(shè)計(jì)——以對(duì)象為中心組件程序設(shè)計(jì)——以組件為中心綜合使用武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院軟件需求的變化計(jì)算實(shí)用管理(MIS)分布式系統(tǒng)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院軟件環(huán)境的變化單任務(wù)多任務(wù)文字界面圖形界面單線程多線程平臺(tái)相關(guān)跨平臺(tái)單機(jī)(本地)網(wǎng)絡(luò)(分布式)單一語(yǔ)言多種語(yǔ)言武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院面臨的問(wèn)題現(xiàn)代軟件應(yīng)用過(guò)于龐大而復(fù)雜,開(kāi)發(fā)周期長(zhǎng),維護(hù)困難,維護(hù)成本高應(yīng)用單一,集成了許多功能,使大多數(shù)功能無(wú)法單獨(dú)升級(jí)或替換一個(gè)應(yīng)用的數(shù)據(jù)和功能不能用于另一個(gè)應(yīng)用開(kāi)發(fā)方式不統(tǒng)一,編程模式因應(yīng)用所在位置的不同而變化非常大武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院軟件發(fā)展面臨的問(wèn)題軟件的復(fù)雜度增加代碼開(kāi)發(fā)管理軟件升級(jí)和更新?tīng)恳欢l(fā)動(dòng)全身?分布式軟件的發(fā)布和配置用戶需要培訓(xùn),程序員和設(shè)計(jì)人員更需要武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件化程序設(shè)計(jì)方法背景軟件體系,開(kāi)發(fā),和產(chǎn)品本身越來(lái)越復(fù)雜,更新版本的混亂導(dǎo)致”軟件危機(jī)”的產(chǎn)生,所以必須從”底層”起就要實(shí)現(xiàn)面向?qū)ο蟮膽?yīng)用模式.只是從”底層”解決面向?qū)ο髴?yīng)用并不是馬上可以實(shí)現(xiàn)的.50~60年代專家提出了組件的概念.80年代后,面向組件設(shè)計(jì)模式開(kāi)始大量應(yīng)用,以試圖解決上述問(wèn)題.武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件技術(shù)組件定義:可獨(dú)立發(fā)布的二進(jìn)制單元,有的地方稱作“package”組件技術(shù)適合于現(xiàn)代的軟件環(huán)境軟件更新快、規(guī)模大、強(qiáng)調(diào)協(xié)作等組件的概念、軟件IC組件的可獨(dú)立發(fā)布性要求“接口與實(shí)現(xiàn)分離”組件infrastructure,組件體系COM、CORBA、EJB中間件(middleware)市場(chǎng)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件技術(shù)是一種優(yōu)秀的軟件重用技術(shù)。采用組件開(kāi)發(fā)軟件就像搭積木一樣容易,組件是具有某種特定功能的軟件模型,它幾乎可以完成任何任務(wù)。CORBA(CommonObjectRequestBrokerArchitecture)91年第1版,OMG(ObjectManagementGroup)規(guī)范+實(shí)現(xiàn)COM(ComponentObjectModel)93年發(fā)布,脫胎于MS的OLE規(guī)范+實(shí)現(xiàn)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院現(xiàn)實(shí)生活中的組件概念:想象一下組裝一臺(tái)電腦:CPU主板,電源,機(jī)箱,顯卡,內(nèi)存條,硬盤…有了組件的概念,和一些必要的知識(shí),人們很容易把各種組件安裝在一起,形成一個(gè)完整的產(chǎn)品,產(chǎn)品升級(jí)也變得較容易…武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院☆組件是一個(gè)功能相對(duì)完整的集合.組件與組件通過(guò)大家共同制定的一組方法進(jìn)行操作.☆使用的人不必(理想情況)關(guān)心組件內(nèi)具體情況,只要理解組件的I/O就可以正確應(yīng)用組件,并且將組件有機(jī)的組合起來(lái),形成一個(gè)完整的產(chǎn)品.☆組件可以單獨(dú)開(kāi)發(fā),單獨(dú)編譯,單獨(dú)測(cè)試.通過(guò)組件的復(fù)用,可以大大提高開(kāi)發(fā)的各種指標(biāo)(可行性,效率,成本,質(zhì)量,可維護(hù)性…)☆組件——可以自行進(jìn)行內(nèi)部管理的一個(gè)或多個(gè)類所組成的群體。什么是組件?武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件技術(shù)的特點(diǎn)真正的軟件重用和高度的互操作性接口的可靠性可擴(kuò)充服務(wù)具有強(qiáng)有力的基礎(chǔ)設(shè)施具有構(gòu)建和膠合組件的工具武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.1三層應(yīng)用體系結(jié)構(gòu)應(yīng)用體系結(jié)構(gòu)是軟件系統(tǒng)組織的一些重要決策,它是軟件體系結(jié)構(gòu)的一個(gè)概念性表示選擇組成系統(tǒng)的結(jié)構(gòu)元素和接口;由這些元素之間的協(xié)作決定的系統(tǒng)的行為;將這些元素和行為組合成更大的子系統(tǒng);指導(dǎo)系統(tǒng)組織的體系結(jié)構(gòu)模式;武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院三層應(yīng)用體系結(jié)構(gòu)模型圖武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院三層應(yīng)用體系結(jié)構(gòu)用戶層用戶層用于向用戶顯示系統(tǒng)中的數(shù)據(jù)允許用戶輸入和編輯數(shù)據(jù)。業(yè)務(wù)層業(yè)務(wù)層用于執(zhí)行業(yè)務(wù)和制定數(shù)據(jù)規(guī)則。業(yè)務(wù)層為用戶提供服務(wù),不與任何特定的用戶捆綁在一起,而面向所有的應(yīng)用。業(yè)務(wù)層不應(yīng)該知道它所操縱數(shù)據(jù)是如何存儲(chǔ)和位置,業(yè)務(wù)層不依賴于數(shù)據(jù)層的數(shù)據(jù)存取服務(wù)完成實(shí)際的數(shù)據(jù)存取操作。數(shù)據(jù)層在數(shù)據(jù)層,數(shù)據(jù)存儲(chǔ)子層通常就是某個(gè)或某些數(shù)據(jù)庫(kù)管理系統(tǒng)用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行實(shí)質(zhì)性的存儲(chǔ)、檢索和更新操作。某個(gè)或某些數(shù)據(jù)系統(tǒng)的一部分不是以數(shù)據(jù)庫(kù)形式而是以文件或其他形式實(shí)現(xiàn),可以實(shí)現(xiàn)對(duì)文件等進(jìn)行實(shí)質(zhì)性的存儲(chǔ)、檢索和更新操作。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.2CORBA對(duì)象總線技術(shù)公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(CommonObjectRequestBrokerArchitecture,CORBA)是由對(duì)象管理組織OMG制定的一個(gè)工業(yè)規(guī)范,其主要目標(biāo)是提供一種機(jī)制,在此基礎(chǔ)上,對(duì)象可以透明地請(qǐng)求和獲得應(yīng)答。CORBA的實(shí)質(zhì)是遠(yuǎn)過(guò)程調(diào)用與面向?qū)ο蠹夹g(shù)的有機(jī)結(jié)合。OMG于1990年制訂了OMA(ObjectManagementArchitecture),它可用任何方法來(lái)實(shí)現(xiàn),CORBA是其中的一種實(shí)現(xiàn)方案。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA
(CommonObjectRequestBrokerArchitecture)CORBA是基于面向?qū)ο蠹夹g(shù)的,它能解決遠(yuǎn)程對(duì)象之間的互操作問(wèn)題由OMG提出,用于分布式異構(gòu)環(huán)境下,可移植可重用、可互連的面向?qū)ο蟮能浖_(kāi)發(fā)和應(yīng)用平臺(tái)是一種面向?qū)ο蟮姆植际街虚g件體系規(guī)范。借助CORBA提供的中間件機(jī)制,我們?cè)谶M(jìn)行方法調(diào)用時(shí),無(wú)需考慮被調(diào)用對(duì)象所在的具體位置,而是像調(diào)用一個(gè)本地模塊的方法一樣“直接”與其通信(因此,有些應(yīng)用中,CORBA也被用于本地進(jìn)程間通信,以降低各模塊間的耦合度,同時(shí)也便于系統(tǒng)結(jié)構(gòu)的調(diào)整)。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA定義了一系列API,通信協(xié)議和服務(wù)使得異構(gòu)的應(yīng)用程序能夠互相操作,這些應(yīng)用程序用不同的程序語(yǔ)言編寫,運(yùn)行在不同的平臺(tái)上。是真正跨平臺(tái)的,平臺(tái)獨(dú)立性。它通過(guò)一種叫IDL(InterfaceDefinitionLanguage)的接口定義語(yǔ)言,能做到語(yǔ)言無(wú)關(guān)。也就是說(shuō),任何語(yǔ)言都能制作CORBA組件,而CORBA組件能在任何語(yǔ)言下使用。CORBA為這些定義明確的程序提供了平臺(tái)和位置的透明性,這些程序是分布式計(jì)算平臺(tái)的基礎(chǔ)。CORBA一種異構(gòu)平臺(tái)下的語(yǔ)言無(wú)關(guān)的對(duì)象互操作模型。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院什么是CORBACORBA是一種體系結(jié)構(gòu)CORBA是一種通信協(xié)議(GIOP/IIOP)CORBA是一條屏蔽了平臺(tái)和編程語(yǔ)言的軟件總線CORBA是一套細(xì)化到編程接口的語(yǔ)言規(guī)范CORBA是一套解決進(jìn)程通信的工具武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA對(duì)象總線技術(shù)公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(CommonObjectRequestBrokerArchitecture,CORBA)對(duì)象管理體系結(jié)構(gòu)公用對(duì)象服務(wù)公用設(shè)施應(yīng)用程序?qū)ο髮?duì)象請(qǐng)求代理(ORB)公用對(duì)象服務(wù)公用設(shè)施應(yīng)用程序?qū)ο髮?duì)象請(qǐng)求代理(ORB)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA對(duì)象總線技術(shù)公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(CORBA)對(duì)象請(qǐng)求代理(ORB):管理對(duì)象之間進(jìn)行通信和數(shù)據(jù)交換的中間件.ORB客戶對(duì)象服務(wù)器對(duì)象請(qǐng)求定位某一服務(wù)激活服務(wù)建立連接通信客戶對(duì)象與服務(wù)器對(duì)象通過(guò)ORB進(jìn)行通信和數(shù)據(jù)交換武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院2、公用對(duì)象服務(wù):是CORBA提供的系統(tǒng)級(jí)服務(wù)的集合,是對(duì)象請(qǐng)求代理的功能擴(kuò)充和補(bǔ)充.為創(chuàng)建對(duì)象、對(duì)象訪問(wèn)控制、對(duì)象跟蹤和對(duì)象引用等提供服務(wù)。開(kāi)發(fā)人員無(wú)需從頭開(kāi)發(fā),只需調(diào)用這些對(duì)象的服務(wù)功能。公用設(shè)施:基于這些技術(shù)向應(yīng)用程序開(kāi)發(fā)者和最終用戶提供一些共性的對(duì)象組件應(yīng)用程序?qū)ο螅菏荂ORBA基礎(chǔ)結(jié)構(gòu)的最終使用者武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA體系結(jié)構(gòu)CORBA上的服務(wù)用IDL描述,IDL將被映射為某種程序設(shè)計(jì)語(yǔ)言如C++或Java,并且分成兩部分。服務(wù)器方在Skeleton的基礎(chǔ)上編寫ObjectImplementation而客戶方要訪問(wèn)服務(wù)器對(duì)象上的方法,則要通過(guò)客戶樁。而雙方又要通過(guò)而ORB(ObjectRequestBroker)總線通信。IDL(InterfaceDefinitionLanguage)是用于說(shuō)明對(duì)象接口的標(biāo)識(shí)語(yǔ)言武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA的組成客戶程序(Client)對(duì)象實(shí)現(xiàn)(Server)動(dòng)態(tài)調(diào)用接口靜態(tài)IDL存根ORB接口動(dòng)態(tài)骨架接口靜態(tài)IDL骨架對(duì)象適配器ORB核GIOP/IIOP接口存儲(chǔ)數(shù)據(jù)庫(kù)實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)庫(kù)GIOP是一種通信協(xié)議,它規(guī)定了兩個(gè)實(shí)體:客戶和服務(wù)器ORBs間的通信機(jī)制。GIOP因?yàn)槭且环N通用協(xié)議,所以不能直接使用。在不同的網(wǎng)絡(luò)上需要有不同的實(shí)現(xiàn)。目前使用最廣的便是Internet上的GIOP,稱為IIOP(InternetInter-ORBProtocol)。IIOP基于TCP/IP協(xié)議。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院
ORB(ObjectRequestBroker)CORBA體系結(jié)構(gòu)的核心就是ORB??梢赃@樣簡(jiǎn)單理解:ORB就是使得客戶應(yīng)用程序能調(diào)用遠(yuǎn)端對(duì)象方法的一種機(jī)制。ORB模型武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院ORB核/ORB接口ORB(ObjectRequestBroker)是作為對(duì)象互通信的軟總線。ORB截獲服務(wù)請(qǐng)求調(diào)用,然后識(shí)別網(wǎng)絡(luò)中服務(wù)器的位置,即對(duì)象實(shí)現(xiàn)的位置。若服務(wù)器不在運(yùn)行,則ORB啟動(dòng)服務(wù)器,并一直等待到它準(zhǔn)備接受服務(wù)請(qǐng)求為止。ORB接口是ORB核給出的接口,同時(shí)為客戶和對(duì)象實(shí)現(xiàn)方所見(jiàn),提供了一些只能由ORB核提供的服務(wù):對(duì)象引用操作、ORB初始化、對(duì)象適配器初始化和獲取初始對(duì)象引用。ORB之間的互操作則采用GIOP和IIOP實(shí)現(xiàn)。ORB的特性可使客戶程序不用考慮:服務(wù)器編程語(yǔ)言、服務(wù)器平臺(tái)、服務(wù)器地點(diǎn)和網(wǎng)絡(luò)協(xié)議。ORB提供了兩個(gè)用于存儲(chǔ)有關(guān)對(duì)象信息的服務(wù):接口倉(cāng)庫(kù)(接口存儲(chǔ)數(shù)據(jù)庫(kù))和實(shí)現(xiàn)倉(cāng)庫(kù)(實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)庫(kù))。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院ORB提供發(fā)送客戶的請(qǐng)求到目標(biāo)對(duì)象并將應(yīng)答傳給客戶的透明通信機(jī)制ORB提供以下透明機(jī)制:對(duì)象位置透明:客戶不需要知道目標(biāo)對(duì)象的位置,它可以是在網(wǎng)絡(luò)的另一臺(tái)機(jī)器上,或者屬于同一臺(tái)機(jī)器的不同或相同的進(jìn)程。對(duì)象實(shí)現(xiàn)透明:客戶不需要知道目標(biāo)對(duì)象的具體的編程語(yǔ)言、其使用的操作系統(tǒng)及硬件平臺(tái)。對(duì)象運(yùn)行狀態(tài)透明:客戶向目標(biāo)對(duì)象發(fā)送請(qǐng)求時(shí)不需要知道目標(biāo)對(duì)象的運(yùn)行狀態(tài),如果有必要,ORB會(huì)將其自動(dòng)激活,然后再把請(qǐng)求發(fā)送給它。通信機(jī)制透明:客戶不需要了解ORB所使用的通信機(jī)制(如TCP/IP、共享內(nèi)存、本地方法調(diào)用),所有調(diào)用均可遵循統(tǒng)一的方式進(jìn)行。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院IDL(InterfaceDefinitionLanguage)IDL使CORBA做到語(yǔ)言無(wú)關(guān)。是一種描述性語(yǔ)言而不是程序設(shè)計(jì)語(yǔ)言,只描述接口和相關(guān)的數(shù)據(jù)類型,不描述實(shí)現(xiàn),類似于C中的頭文件。實(shí)際上它不是真正的編程語(yǔ)言。映射后的代碼叫ClientStubCode和ServerSkeletonCode。IDL獨(dú)立于編程語(yǔ)言,但可以映射為多種編程語(yǔ)言:如C,C++,JAVA,Ada,Cobol等與C++語(yǔ)言類似,簡(jiǎn)單易學(xué)應(yīng)用時(shí)由IDL編譯器來(lái)實(shí)現(xiàn)從IDL語(yǔ)言到具體編程語(yǔ)言的映射武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院IDL編譯由IDL編譯器根據(jù)IDL代碼生成相應(yīng)編程語(yǔ)言的客戶代理(骨架)和服務(wù)器代理(存根)對(duì)象等。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院對(duì)象適配器對(duì)象適配器是ORB與對(duì)象實(shí)現(xiàn)間的接口,其主要的工作如下:對(duì)象實(shí)現(xiàn)的注冊(cè);生成及管理對(duì)象引用;服務(wù)器進(jìn)程激活;對(duì)象激活/撤銷/向上調(diào)用。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院基于CORBA的軟件開(kāi)發(fā)①編寫OMG定義的IDL接口規(guī)范說(shuō)明文件,描述服務(wù)對(duì)象所支持的操作和類型;②編譯IDL規(guī)格說(shuō)明文件,生成客戶端存根和服務(wù)器端骨架;③編寫對(duì)象實(shí)現(xiàn)程序;④編寫服務(wù)器和客戶主程序結(jié)構(gòu);⑤將對(duì)象實(shí)現(xiàn)程序,服務(wù)主程序和生成的服務(wù)器骨架編譯連接成服務(wù)端可執(zhí)行程序;⑥將客戶端主程序和生成的客戶端存根編譯連接成客戶端可執(zhí)行程序,且若服務(wù)器端是基于Web和瀏覽器方式的,則相應(yīng)地編寫HTML超文本文件,鏈入編寫的客戶方JavaApplet小程序;⑦分別運(yùn)行服務(wù)器端和客戶端程序。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院通常,開(kāi)發(fā)一個(gè)CORBA應(yīng)用的大致步驟如下:1)定義IDL。2)用IDLcomplier將IDL編譯成ClientStub代碼和ServerSkeleton代碼。3)編寫Server方的實(shí)現(xiàn)(Implementation)代碼。4)編寫Server。5)編寫Client。6)編譯和調(diào)試。7)運(yùn)行程序。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA的特點(diǎn)同時(shí)支持分布計(jì)算技術(shù)和面向?qū)ο蠹夹g(shù)。支持許多現(xiàn)存的語(yǔ)言并把這些語(yǔ)言混合到一個(gè)分布式應(yīng)用系統(tǒng)之中。代理機(jī)制使得客戶端程序和服務(wù)器端程序完全分離,這樣服務(wù)器端和客戶端程序都可自由地修改而無(wú)需通知對(duì)方。提供了“軟件總線”的功能,實(shí)現(xiàn)了軟件組件的即插即用。提供了一種高度的互操作性,保證了建立在不同CORBA產(chǎn)品之上的分布式樣對(duì)象能夠相互通信。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.3COM對(duì)象總線技術(shù)組件對(duì)象模型(ComponentObjectModel,COM)是微軟(Microsoft)的組件軟件方案,是為組件的互操作而定義的二進(jìn)制組件模型。分布式組件對(duì)象模型(DistribntedComponentObjectModel,DCOM)是COM的一個(gè)分布式擴(kuò)充,是在分布式計(jì)算環(huán)境的遠(yuǎn)程過(guò)程調(diào)用的基礎(chǔ)上開(kāi)發(fā)的。COM+是按COM的標(biāo)準(zhǔn)建立的,并組合了一些工具的新版本,如MTS(MicrosoftTransactionServer)、MSMQ(MicrosoftMessageQueues)等。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COM標(biāo)準(zhǔn)COM作為一面向?qū)ο蟮木幊棠P?,目的是提高軟件的交互協(xié)同工作能力,而不受開(kāi)發(fā)語(yǔ)言和方法、運(yùn)行環(huán)境和地點(diǎn)的限制。在Windows系統(tǒng)平臺(tái)上,一個(gè)COM組件或是一個(gè)DLL文件,或是一個(gè)EXE文件。一個(gè)組件程序可以包含多個(gè)COM對(duì)象,每個(gè)COM對(duì)象可以實(shí)現(xiàn)多個(gè)接口。COM組件COM對(duì)象COM對(duì)象COM接口COM接口武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COM對(duì)象在COM規(guī)范中,并沒(méi)有對(duì)COM對(duì)象進(jìn)行嚴(yán)格的定義。COM對(duì)象同C++語(yǔ)言中的類一樣,也包括屬性和方法。屬性反映了對(duì)象的狀態(tài),方法則是對(duì)象提供給外界的接口,客戶必須通過(guò)接口才能獲得對(duì)象的服務(wù)。COM對(duì)象以提供功能服務(wù)為主,可用來(lái)替代傳統(tǒng)的API(ApplicationProgrammingInterface)函數(shù)。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COM對(duì)象標(biāo)識(shí)客戶并不直接訪問(wèn)COM組件,而是通過(guò)一個(gè)全局標(biāo)識(shí)符進(jìn)行對(duì)象的創(chuàng)建和初始化工作。在COM的規(guī)范中,每個(gè)對(duì)象有一個(gè)128位的全局惟一標(biāo)識(shí)符GUID(GloballyUniqueIdentifier)來(lái)標(biāo)識(shí),稱為CLSID(ClassIdentifier)。(GUID不是專門用來(lái)定義COM對(duì)象標(biāo)識(shí)符的,且GUID是一個(gè)隨機(jī)數(shù))COM庫(kù)提供了一個(gè)API函數(shù)產(chǎn)生GUID:HRESULTCoCreateGuid(GUID*pguid);武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COM接口COM規(guī)范的核心內(nèi)容是關(guān)于接口的定義。COM接口有兩種:標(biāo)準(zhǔn)接口和用戶接口,用戶接口是用戶為COM對(duì)象設(shè)計(jì)的接口。標(biāo)準(zhǔn)接口是COM規(guī)范定義的,可用來(lái)訪問(wèn)有關(guān)COM對(duì)象的信息。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院接口結(jié)構(gòu)類似于COM對(duì)象的標(biāo)識(shí),COM接口也采用GUID,稱為IID(interfaceidentifier).客戶使用一個(gè)COM對(duì)象的接口,必須知道接口的IID和接口提供的方法。接口指針PVtable指針指向功能1指向功能2…對(duì)象實(shí)現(xiàn)(virtualfunctiontable)(供客戶使用)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院接口定義語(yǔ)言(MIDL)微軟用其接口定義語(yǔ)言MIDL來(lái)精確定義接口,每一接口中的方法以及每一方法的參數(shù)。MicrosoftVC++提供了MIDL工具,可把IDL接口描述文件(*.idl)編譯成C/C++語(yǔ)言兼容的接口描述頭文件(*·h)供組件程序和客戶程序使用。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COM庫(kù)在MicrosoftWindows操作系統(tǒng)環(huán)境下,COM庫(kù)以DLL文件的形式存在,其中包括以下幾項(xiàng)內(nèi)容:提供少量的API函數(shù),用來(lái)加速客戶和服務(wù)器COM應(yīng)用程序的創(chuàng)建;完成對(duì)象實(shí)現(xiàn)的定位服務(wù)。它根據(jù)唯一的類標(biāo)識(shí),通過(guò)系統(tǒng)注冊(cè)表來(lái)確定類和服務(wù)器實(shí)現(xiàn)的地址。實(shí)現(xiàn)透明的遠(yuǎn)過(guò)程調(diào)用,以支持在本地或遠(yuǎn)程服務(wù)器中運(yùn)行的對(duì)象。提供一套應(yīng)用程序如何控制其進(jìn)程空間里內(nèi)存的分配和釋放的標(biāo)準(zhǔn)機(jī)制。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院進(jìn)程內(nèi)調(diào)用在進(jìn)程內(nèi),服務(wù)器組件和客戶程序運(yùn)行在同一地址空間中,一旦客戶程序與組件程序建立通信關(guān)系,客戶程序就可以通過(guò)得到的接口指針直接調(diào)用服務(wù)器對(duì)象的成員函數(shù)。接口指針PVtable指針指向功能1指向功能2…對(duì)象實(shí)現(xiàn)(virtualfunctiontable)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院本地調(diào)用在同一機(jī)器上的不同進(jìn)程,COM采用了本地過(guò)程調(diào)用LPC(LocalProcedureCall)實(shí)現(xiàn)進(jìn)程外組件與客戶程序的通信。圖中虛線表明,對(duì)開(kāi)發(fā)人員而言,不需考慮底層細(xì)節(jié),COM實(shí)現(xiàn)了進(jìn)程模型的透明,使得客戶程序調(diào)用接口成員函數(shù)好像是直接進(jìn)行的。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院分布式COM(DCOM)對(duì)于組件程序與客戶程序不在同一主機(jī)的情形,DCOM則把COM的進(jìn)程模型的透明性拓展為位置透明性,把COM中本地跨進(jìn)程(同一主機(jī)不同進(jìn)程)通信用一個(gè)網(wǎng)絡(luò)協(xié)議傳輸過(guò)程來(lái)替代,組件程序和客戶程序均感覺(jué)不到中間發(fā)生的過(guò)程,只是中間數(shù)據(jù)傳遞的路線更長(zhǎng)一些。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院基于COM組件的WindowsDNA軟件開(kāi)發(fā)模式WindowsDNA(WindowsDistributedinterNetApplicationArchitecture)是Windows平臺(tái)上基于三層模型的應(yīng)用程序開(kāi)發(fā)模式。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.4組件庫(kù)技術(shù)通??梢圆捎靡韵峦緩絹?lái)獲取組件:基于領(lǐng)域分析獲取組件;從現(xiàn)存組件中獲取得符合要求的組件,直接使用或作適應(yīng)性修改,得到可復(fù)用的組件;通過(guò)遺產(chǎn)工程,將具有潛在復(fù)用價(jià)值的組件提取出來(lái),得到可復(fù)用的組件;從市場(chǎng)上購(gòu)買現(xiàn)成的商業(yè)組件,即COTS(CommercialOff-The-Shelf,商業(yè)現(xiàn)貨)組件;開(kāi)發(fā)新的符合要求的組件。組件獲取后,可對(duì)它進(jìn)行結(jié)構(gòu)化組織并放入可復(fù)用組件庫(kù),以備復(fù)用。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件描述屬性。描述了組件的特征。屬性值對(duì)外可以讀出,也可以修改。功能接口。即組件向外提供的服務(wù)。依賴關(guān)系。指出組件在實(shí)例化時(shí)所依賴的其它組件的特定接口,是組件完成其任務(wù)所必需的。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件庫(kù)的組織方式關(guān)鍵詞分類用戶界面窗口菜單對(duì)話框事件處理圖形窗口文本窗口信息對(duì)話框數(shù)據(jù)錄入對(duì)話框拖放處理鍵盤事件處理關(guān)鍵詞分類:通過(guò)領(lǐng)域分析,將應(yīng)用領(lǐng)域中的概念按照從抽象到具體的順序逐次分解為樹(shù)形或有向無(wú)環(huán)圖結(jié)構(gòu)。如圖形截面設(shè)計(jì)組件庫(kù)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院多面分類方式
武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院多面分類方式多面分類機(jī)制:分析領(lǐng)域范圍并定義若干描述組件特征的“面”,每個(gè)“面”包含若干“概念”,這些概念表述在“面”上的基本特征,“面”可以描述組件執(zhí)行的功能、被操作的數(shù)據(jù)、組件應(yīng)用的上下文及其他特征。同義詞庫(kù):意義相同或相近的若干詞匯組成同義詞匯。概念距離圖:概念距離圖用來(lái)度量每個(gè)“面”中概念相似程度。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件庫(kù)的檢索方法基于關(guān)鍵詞的檢索(在圖形用戶界面上將可復(fù)用組件庫(kù)的關(guān)鍵詞樹(shù)直觀地顯示給用戶,用戶通過(guò)逐級(jí)瀏覽關(guān)鍵詞樹(shù)尋找需要的關(guān)鍵詞并提取相應(yīng)的組件;或直接輸入含通配符的關(guān)鍵詞由系統(tǒng)自動(dòng)給出合適的候選組件清單,用戶選擇并提取相應(yīng)的組件。);多面檢索(構(gòu)造查詢、檢索組件、排序組件)。上述兩種檢索方法均基于語(yǔ)法匹配,這要求使用者對(duì)組件庫(kù)中的有關(guān)詞匯有較全面的把握和較精確的理解。理想的檢索方法是語(yǔ)義匹配:組件庫(kù)的用戶以形式化的手段描述所需組件的功能或行為的語(yǔ)義,系統(tǒng)通過(guò)定理證明或基于知識(shí)的推理來(lái)尋找語(yǔ)義上等價(jià)的或相近的組件。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件的使用理解組件(①組件的功能與行為;②相關(guān)的領(lǐng)域知識(shí);③可適應(yīng)性約束條件與例外情形;④可以預(yù)見(jiàn)的修改部分及修改方法);修改組件;合成組件(基于功能的合成技術(shù):調(diào)用與參數(shù)傳遞、基于數(shù)據(jù)的合成技術(shù):調(diào)用與參數(shù)傳遞、面向?qū)ο蟮暮铣杉夹g(shù):繼承)。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院“軟件設(shè)計(jì)國(guó)家標(biāo)準(zhǔn)GB8567-88”詳細(xì)設(shè)計(jì)說(shuō)明書的大綱1引言1.1編寫目的說(shuō)明編寫該總體設(shè)計(jì)的目的,指出預(yù)期的讀者.1.2背景
a.所建議開(kāi)發(fā)的軟件系統(tǒng)的名稱;
b.本項(xiàng)目的任務(wù)提出者、開(kāi)發(fā)者、用戶及實(shí)現(xiàn)該軟件的計(jì)算中心或計(jì)算機(jī)網(wǎng)絡(luò);
c.該軟件系統(tǒng)同其他系統(tǒng)或其他機(jī)構(gòu)的基本的互相往來(lái)關(guān)系。1.3定義列出本文件中用到的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安川機(jī)器人軸控系統(tǒng)培訓(xùn):2024年深入解析
- 2024年教育公平:《黃河落日》教學(xué)課件的普及與推廣
- 安全生產(chǎn)管理制度-普貨運(yùn)輸
- 人教版歷史七年級(jí)上-秦統(tǒng)一中國(guó)-說(shuō)課稿-教學(xué)設(shè)計(jì)
- 新聞?wù){(diào)查案例
- 河北省邯鄲市2025屆高三期中考試語(yǔ)文試題及答案
- 幼兒園小班科學(xué)活動(dòng)教案:種大蒜教案(附教學(xué)反思)
- 適用于2024年的《弟子規(guī)》教案:古為今用
- 2024年安規(guī)工程師基本培訓(xùn):安全教育的新思路
- 2024年母親節(jié)特色課件:《感恩母親》的創(chuàng)新應(yīng)用
- 高中數(shù)學(xué)教師的專業(yè)發(fā)展路徑
- 《地球是怎樣形成的》課件
- 建筑機(jī)電系統(tǒng)全過(guò)程調(diào)試技術(shù)及工藝
- 六西格瑪之控制階段詳解
- 《領(lǐng)導(dǎo)梯隊(duì):全面打造領(lǐng)導(dǎo)力驅(qū)動(dòng)型公司》解讀
- 護(hù)理質(zhì)量安全與風(fēng)險(xiǎn)管理的案例分析
- 工程流體力學(xué)課后習(xí)題答案-(杜廣生)
- AI智能客服應(yīng)用實(shí)踐
- 幕墻工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄
- 危險(xiǎn)化學(xué)品經(jīng)營(yíng)企業(yè)安全生產(chǎn)獎(jiǎng)懲制度范本
- 報(bào)價(jià)單模板完
評(píng)論
0/150
提交評(píng)論