




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件復(fù)用
?人們開(kāi)始認(rèn)識(shí)到,要真正實(shí)現(xiàn)軟件的工業(yè)化生
產(chǎn)方式,保證軟件生產(chǎn)的高效率和高質(zhì)量,軟
件復(fù)用是一條現(xiàn)實(shí)可行的途徑
?軟件復(fù)用的概念是在1968年NATO軟件工程會(huì)
議上由McIlroy第一次提出的
?所謂軟件復(fù)用是指在開(kāi)發(fā)新的應(yīng)用系統(tǒng)時(shí)使用
以前開(kāi)發(fā)的軟件資源,如設(shè)計(jì)、代碼、文檔等,
從而提高系統(tǒng)開(kāi)發(fā)效率及軟件質(zhì)量
?在較長(zhǎng)的一段時(shí)間內(nèi),軟件復(fù)用僅限于程序代
碼段的復(fù)用,這僅是一種較低層次的復(fù)用
?人們開(kāi)始認(rèn)識(shí)到,軟件開(kāi)發(fā)并不僅僅是編程,
而是一個(gè)從系統(tǒng)需求獲取、分析、設(shè)計(jì)到實(shí)現(xiàn)、
測(cè)試、運(yùn)行、維護(hù)的過(guò)程。理論和實(shí)踐表明,
在軟件生存期中,需求、設(shè)計(jì)階段是開(kāi)發(fā)過(guò)程
的關(guān)鍵和瓶頸。軟律復(fù)用的概念也隨之?dāng)U展到
對(duì)軟件開(kāi)發(fā)過(guò)程中各階段產(chǎn)品和文檔的復(fù)用,
其中更為重要的是對(duì)需求規(guī)約和設(shè)計(jì)的復(fù)用。
?面向?qū)ο蠹夹g(shù)為軟件復(fù)用提供了更強(qiáng)有力的支
持,帶來(lái)了更多的復(fù)用機(jī)會(huì)
面向?qū)ο蠹夹g(shù)對(duì)軟件復(fù)用的支持優(yōu)勢(shì)
?面向?qū)ο蠹夹g(shù)對(duì)軟件復(fù)用的支持優(yōu)勢(shì)在
于:
-OO模型比傳統(tǒng)過(guò)程型模型更為穩(wěn)定;
-00分析更適合于領(lǐng)域工程;
-OO構(gòu)件具有更好的封裝性;
-00方法學(xué)支持無(wú)縫的工程,可實(shí)現(xiàn)分析、
設(shè)計(jì)、編碼的一致復(fù)用。
日常生活中的復(fù)用概念
?在人們的日常生活中,復(fù)用概念的存在隨處可
見(jiàn)。
?傳統(tǒng)工業(yè)如機(jī)械、建筑等行業(yè)中,標(biāo)準(zhǔn)規(guī)格的
零部件、設(shè)計(jì)模式等無(wú)不體現(xiàn)了復(fù)用的思想。
計(jì)算機(jī)產(chǎn)業(yè)雖然是年輕的產(chǎn)業(yè),其成功同樣是
由于實(shí)現(xiàn)了將標(biāo)準(zhǔn)的集成電路芯片、插件板、
主板、外設(shè)等直接組裝的工業(yè)化生產(chǎn)方式???/p>
以說(shuō),符合標(biāo)準(zhǔn)的構(gòu)件、基于標(biāo)準(zhǔn)構(gòu)件的產(chǎn)品
生產(chǎn)(組裝)是產(chǎn)業(yè)工程化、工業(yè)化的必由之
路,而其中構(gòu)件是核心和基礎(chǔ),復(fù)用是必需的
手段。這種成功的模式是軟件產(chǎn)業(yè)發(fā)展的良好
借鑒,有柞多看益的啟示
軟件構(gòu)件技術(shù)
?軟件構(gòu)件技術(shù)已成為研究的熱點(diǎn),其研究?jī)?nèi)容
包括構(gòu)件標(biāo)準(zhǔn)和模型、構(gòu)件的生產(chǎn)和獲取、構(gòu)
件的規(guī)約和描述、構(gòu)件的分類和組織、構(gòu)件的
檢索和組裝、基于構(gòu)件的價(jià)格分析,以及軟件
體系結(jié)構(gòu)、軟件復(fù)用支持工具和管理手段、基
于復(fù)用的軟件開(kāi)發(fā)過(guò)程等方面。
?研究工作有很大進(jìn)展和眾多成果,而且還出現(xiàn)
了一些產(chǎn)W構(gòu)件標(biāo)準(zhǔn),如Microsoft的OLE-
COM、OMG的CORBA/OM等。這標(biāo)志著軟件
復(fù)用已進(jìn)入蓬勃發(fā)展的時(shí)期
產(chǎn)品復(fù)用
?軟件復(fù)用通??煞譃閮深悾寒a(chǎn)品復(fù)用和過(guò)程復(fù)
用
?產(chǎn)品復(fù)用指對(duì)軟件開(kāi)發(fā)過(guò)程中生成的各種產(chǎn)品
(需求規(guī)約、設(shè)計(jì)、程序、測(cè)試計(jì)劃和數(shù)據(jù)等)
構(gòu)件的復(fù)用,這涉及可復(fù)用構(gòu)件的建造(從現(xiàn)
有系統(tǒng)中獲取及有目的的生產(chǎn))及可復(fù)用構(gòu)件
的使用(對(duì)知識(shí)性資源的參考和對(duì)程序代碼級(jí)
資源的復(fù)合組裝)兩個(gè)方面,通過(guò)專業(yè)性的構(gòu)
件開(kāi)發(fā)和基于構(gòu)件復(fù)用的系統(tǒng)集成實(shí)現(xiàn)軟件的
工業(yè)化生產(chǎn)。
過(guò)程復(fù)用
?過(guò)程復(fù)用指通過(guò)采用自動(dòng)化技術(shù),復(fù)用關(guān)于軟
件系統(tǒng)生成或變換的,從而使得可以從需
求描述出發(fā),通過(guò)生成或變換,自動(dòng)生成最終
所需的系統(tǒng),應(yīng)用生成器、程序變換器和可執(zhí)
行規(guī)約語(yǔ)言均是過(guò)程復(fù)用的例子。
?完全通用的過(guò)程復(fù)用意味著軟件生產(chǎn)的自動(dòng)化,
這在目前還是不現(xiàn)實(shí)的想法,因此過(guò)程復(fù)用難
度大、投資大、不易實(shí)施。
?當(dāng)前過(guò)程復(fù)用的實(shí)踐大多和領(lǐng)域相關(guān),如特定
領(lǐng)域的應(yīng)用生成器。過(guò)程復(fù)用是非常理想的軟
件復(fù)用方式,但在目前技術(shù)發(fā)展水平下,仍是
難以企及的目標(biāo),產(chǎn)品復(fù)用成為主要的研究課
題。
產(chǎn)品復(fù)用分類
?產(chǎn)品復(fù)用可分為直接復(fù)用和間接復(fù)用兩類
?直接復(fù)用是指對(duì)那些可表示為某種程序設(shè)計(jì)語(yǔ)
言代碼的構(gòu)件的復(fù)用,這類構(gòu)件的復(fù)用及其通
過(guò)一定機(jī)制的復(fù)合(組裝)可直接產(chǎn)生可執(zhí)行
的應(yīng)用程序,這是我們開(kāi)發(fā)軟件的最終目標(biāo)。
?間接復(fù)用是指對(duì)需求規(guī)約、功能規(guī)約、設(shè)計(jì)思
想、測(cè)試計(jì)劃等文檔型知識(shí)的復(fù)用,這類非代
碼構(gòu)件的復(fù)用雖然不能直接得到最終可運(yùn)行的
系統(tǒng),但可以對(duì)系統(tǒng)開(kāi)發(fā)的效率和質(zhì)量帶來(lái)極
大的好處,這類構(gòu)件的復(fù)合(組裝)缺乏形式
化和機(jī)械化的機(jī)制,通常只能有開(kāi)發(fā)者在分析
理解后進(jìn)行手工復(fù)合。
黑盒復(fù)用和白盒復(fù)用
?對(duì)已有軟件資源的復(fù)用存在兩種情形,一是不
作修改的全部采用,這類構(gòu)件恰好能滿足使用
者的需求,這種復(fù)用稱為黑盒復(fù)用;
?另一情形是所復(fù)用的構(gòu)件只能滿足使用者部分
需求,需要對(duì)構(gòu)件進(jìn)行適應(yīng)性修改才可采用,
這種復(fù)用稱為白盒復(fù)用。
?在大多數(shù)情況下,對(duì)構(gòu)件的復(fù)用均是白盒復(fù)用。
基于復(fù)用的軟件開(kāi)發(fā)方式
?對(duì)照傳統(tǒng)的成熟產(chǎn)業(yè),我們可以發(fā)現(xiàn),
專業(yè)性的分工是社會(huì)化、工業(yè)化生產(chǎn)的
基本前提,專業(yè)化的零部件生產(chǎn)和使用
零部件的整機(jī)生產(chǎn)是主要的生產(chǎn)方式。
?我們有理由認(rèn)為理想的軟件生產(chǎn)方式是:
專業(yè)化的構(gòu)件生產(chǎn),基于構(gòu)件復(fù)用的應(yīng)
用系統(tǒng)集成(組裝)。
?
一種工廠化的軟件生產(chǎn)方式
?Caldieri和Basili提出了一種工廠化的軟件
生產(chǎn)方式
青鳥(niǎo)工程簡(jiǎn)介
?青鳥(niǎo)工程是國(guó)家重點(diǎn)支持的科技攻關(guān)課題,已
有十余年的發(fā)展歷程?!捌呶濉?、“八五”期
間,青鳥(niǎo)工程面向我國(guó)軟件產(chǎn)業(yè)基礎(chǔ)建設(shè)的需
求,以實(shí)用的軟件工程技術(shù)為依托,研究開(kāi)發(fā)
具有自主版權(quán)的軟件工程環(huán)境,為軟件產(chǎn)業(yè)提
供基礎(chǔ)設(shè)施一軟件工具、平臺(tái)和環(huán)境,建立工
業(yè)化生產(chǎn)的基本手段,促進(jìn)我國(guó)軟件開(kāi)發(fā)由手
工作坊式轉(zhuǎn)向用計(jì)算機(jī)輔助開(kāi)發(fā),以提高軟件
開(kāi)發(fā)效率,改善軟件產(chǎn)品質(zhì)量。大型軟件開(kāi)發(fā)
環(huán)境青鳥(niǎo)系統(tǒng)便是這一階段攻關(guān)工作的成果。
?“九五”期間,青鳥(niǎo)工程的任務(wù)是在前
期攻關(guān)工作的基礎(chǔ)上,為形成我國(guó)軟件
產(chǎn)業(yè)規(guī)模提供技術(shù)支持。重點(diǎn)是研究軟
件的工業(yè)化生產(chǎn)技術(shù),開(kāi)發(fā)軟件工業(yè)化
生產(chǎn)系統(tǒng)——青鳥(niǎo)軟件生產(chǎn)線系統(tǒng),即
基于構(gòu)件一構(gòu)架模式的軟件開(kāi)發(fā)技術(shù)及
系統(tǒng),為軟件開(kāi)發(fā)提供整體解決方案,
推行軟件工業(yè)化生產(chǎn)模式,促進(jìn)軟件產(chǎn)
業(yè)規(guī)模的形成。
青鳥(niǎo)HI型(JB3)系統(tǒng)
?作為研究成果之一,青鳥(niǎo)工程開(kāi)發(fā)了基于異構(gòu)
平臺(tái)、具有多信息源接口的應(yīng)用系統(tǒng)集成(組
裝)環(huán)境青鳥(niǎo)III型(JB3)系統(tǒng)。青鳥(niǎo)III型系統(tǒng)研
制的目標(biāo)是針對(duì)軟件工業(yè)化生產(chǎn)的需求,完善
并初步實(shí)現(xiàn)青鳥(niǎo)軟件生產(chǎn)線的思想,制定軟件
工業(yè)化生產(chǎn)標(biāo)準(zhǔn)和規(guī)范,研究基于“構(gòu)件一構(gòu)
架”模式的軟件工業(yè)化生產(chǎn)技術(shù),研制支持面
向?qū)ο蠹夹g(shù),支持軟件復(fù)用的,基于異構(gòu)平臺(tái)、
具有多信息源接口的應(yīng)用系統(tǒng)集成(組裝)環(huán)境。
其最終目標(biāo)是要構(gòu)造如下圖示意的軟件生產(chǎn)線
系統(tǒng)。
青鳥(niǎo)軟件生產(chǎn)線
構(gòu)件生產(chǎn)車間
標(biāo)唯規(guī)范與質(zhì)量保證
-軟件的生產(chǎn)過(guò)程劃分為三類不同的生產(chǎn)車間,
即應(yīng)用構(gòu)架生產(chǎn)車間、構(gòu)件生產(chǎn)車間和基于構(gòu)
件、構(gòu)架復(fù)用的應(yīng)用集成(組裝)車間,從而形
成軟件產(chǎn)業(yè)內(nèi)部的合理分工,實(shí)現(xiàn)軟件的工業(yè)
花圣產(chǎn)。
?軟件開(kāi)發(fā)人員被劃分成三類:構(gòu)件生產(chǎn)者、構(gòu)
件庫(kù)管理者和構(gòu)件復(fù)用者。這三種角色所需完
成的任務(wù)是不同的,構(gòu)件生產(chǎn)者負(fù)責(zé)構(gòu)件的生
產(chǎn)、描述;構(gòu)件庫(kù)管理者負(fù)責(zé)構(gòu)件分類以及構(gòu)
件庫(kù)的管理工作;而構(gòu)件復(fù)用者負(fù)責(zé)進(jìn)行基于
構(gòu)件的軟件開(kāi)發(fā),包括構(gòu)件查詢、構(gòu)件理解、
適應(yīng)性修改、構(gòu)件組裝以及系統(tǒng)演化。
復(fù)用帶來(lái)了軟件開(kāi)發(fā)過(guò)程的變革
?由于復(fù)用活動(dòng)的存在使得傳統(tǒng)的軟件生
存期模型不再適用,軟件開(kāi)發(fā)過(guò)程分為
兩個(gè)相互關(guān)聯(lián)的過(guò)程,即開(kāi)發(fā)可復(fù)用資
源的過(guò)程和根據(jù)可復(fù)用資源開(kāi)發(fā)應(yīng)用系
統(tǒng)的過(guò)程,REBOOT計(jì)劃中將其稱為
DEVELOPINGFORREUSE和
DEVELOPINGWITHREUSE
■
青鳥(niǎo)山型系統(tǒng)的體系結(jié)構(gòu)
基于復(fù)用的
胡友工具集
廠■向琳4
激博工具
西?自對(duì)八
警總工只
尸面白對(duì)蒙、
ttiMM
k而R時(shí)拿、
分析工具P
規(guī)范
,規(guī)范包括:
-青鳥(niǎo)可復(fù)用構(gòu)件制作指南
-青鳥(niǎo)領(lǐng)域工程方法指南
-青鳥(niǎo)構(gòu)件模型
-青鳥(niǎo)構(gòu)件描述語(yǔ)言
-青鳥(niǎo)構(gòu)件庫(kù)概念模型
-基于復(fù)用的軟件開(kāi)發(fā)過(guò)程
青鳥(niǎo)構(gòu)件模型設(shè)計(jì)原則
1.表達(dá)能力足夠強(qiáng)
2.簡(jiǎn)單性
3.支持構(gòu)件的復(fù)合
4.模型和方法學(xué)關(guān)系的考慮
5.一致性和完備性
6.實(shí)用性考慮
7.擴(kuò)展性考慮
8.對(duì)軟件開(kāi)發(fā)過(guò)程的考慮
表達(dá)能力足夠強(qiáng)
?模型是對(duì)客觀對(duì)象的抽象)合適的抽象
層次是十分重要的,必須既能抓住本質(zhì),
又不陷入細(xì)節(jié)。從表達(dá)能力考慮,青鳥(niǎo)
構(gòu)件模型首先必須遵循3c模型
?3c模型由構(gòu)件的三個(gè)不同方面的描述組
成,即概念(concept)、內(nèi)容(content)
和語(yǔ)景(context)三個(gè)方面
3c模型
?概念:關(guān)于“構(gòu)件做什么”的抽象描述,可以通過(guò)概
念去理解構(gòu)件的功能。概念包括接口規(guī)約和語(yǔ)義描述
兩個(gè)部分,語(yǔ)義描述和每個(gè)操作相關(guān)聯(lián)(至少表示為
前后置謂詞形式)。
?內(nèi)容:概念的具體實(shí)現(xiàn),描述構(gòu)件如何完成概念所刻
劃的功能。
?語(yǔ)景:描述構(gòu)件和外圍環(huán)境在概念級(jí)和內(nèi)容級(jí)的關(guān)系。
語(yǔ)景刻劃構(gòu)件的應(yīng)用環(huán)境,為構(gòu)件的選用和適應(yīng)性修
改提供指導(dǎo)。語(yǔ)景進(jìn)一步可分為:、秩念語(yǔ)景
(ConceptualContext)描述構(gòu)件間接口和語(yǔ)義方面的
關(guān)系;操作語(yǔ)景(OperationalContext)刻劃構(gòu)件中法
操作數(shù)據(jù)的特征(如類型和操作);、實(shí)現(xiàn)將景、、
(ImplementationContext)描述構(gòu)件間在實(shí)現(xiàn)方面的依
賴關(guān)系。
簡(jiǎn)單性
?簡(jiǎn)單性是各種模型必須予以考慮的重要
性質(zhì),簡(jiǎn)單意味著易于掌握和理解。簡(jiǎn)
單性和強(qiáng)的表達(dá)能力是一對(duì)矛盾,必須
合理權(quán)衡。
?青鳥(niǎo)構(gòu)件模型應(yīng)在具有足夠強(qiáng)的表達(dá)能
力的前提下盡可能簡(jiǎn)單,因?yàn)闃?gòu)件被很
好地復(fù)用的前提是必須能夠被充分的理
解。
支持構(gòu)件的復(fù)合
?構(gòu)件模型僅僅作為構(gòu)件的抽象和描述是不夠的,
必須能夠描述構(gòu)件間的關(guān)系及構(gòu)件的復(fù)合,這
樣才有實(shí)用的價(jià)值和完整性。
?青鳥(niǎo)構(gòu)件模型考慮了直接復(fù)用構(gòu)件的復(fù)合問(wèn)題,
在源代碼級(jí)上提供了構(gòu)件復(fù)合的機(jī)制。同時(shí),
也支持目標(biāo)碼級(jí)構(gòu)件的復(fù)合,當(dāng)前的考慮是將
青鳥(niǎo)構(gòu)件轉(zhuǎn)換為符合某種規(guī)范的目標(biāo)碼構(gòu)件
(如OLE構(gòu)件),通過(guò)相應(yīng)的構(gòu)件互操作機(jī)制
來(lái)實(shí)現(xiàn)復(fù)合。
模型和方法學(xué)關(guān)系的考慮
-構(gòu)件模型的確立和具體的軟件方法學(xué)有
著密切關(guān)系,不同范型的方法學(xué)必然導(dǎo)
致不同的模型。
?青鳥(niǎo)構(gòu)件模型遵循00范型,其構(gòu)件結(jié)構(gòu)
符合00風(fēng)范。如此考慮是因?yàn)?0技術(shù)
能對(duì)軟件復(fù)用提供更有力的支持。對(duì)于
基于傳統(tǒng)范型的構(gòu)件,如模塊類構(gòu)件,
可考慮將其通過(guò)再工程封裝成00類構(gòu)件。
一致性和完備性
?模型必須具有對(duì)內(nèi)的一致性和對(duì)外的完
備性。
?所謂一致性是指構(gòu)件作為一個(gè)封裝體必
須具有一致的對(duì)外接口、一致的組成結(jié)
構(gòu)以及一致的交互方式。
?完備性是指不存在模型所不能描述的構(gòu)
件(在00范型內(nèi))。
實(shí)用性考慮
?實(shí)用性是青鳥(niǎo)構(gòu)件模型所考慮的主要因
素之一。
?從實(shí)用性角度來(lái)看,構(gòu)件模型應(yīng)易于理
解、支持復(fù)合、方便分類和檢索。
?青鳥(niǎo)構(gòu)件模型應(yīng)作為青鳥(niǎo)構(gòu)件庫(kù)概念模
型的核心。
擴(kuò)展性考慮
?模型的可擴(kuò)展性是指在保持模型本身的一致性
和完備性的前提下,模型可以隨著應(yīng)用需求的
增長(zhǎng)而演化。為此,在模型設(shè)計(jì)初期,能適應(yīng)
擴(kuò)展的設(shè)計(jì)考慮是必需的。
?青鳥(niǎo)構(gòu)件模型目前主要考慮工程實(shí)用性,進(jìn)一
步的考慮是結(jié)合形式化規(guī)約技術(shù),給出構(gòu)件的
形式化功能規(guī)約,一方面可用于支持基于形式
化功能規(guī)約的構(gòu)件分類和檢索策略,通過(guò)規(guī)約
匹配查找所需的構(gòu)件;另一方面支持更有效、
更自動(dòng)地復(fù)用非代碼類構(gòu)件,通過(guò)形式規(guī)約變
換技術(shù),實(shí)現(xiàn)產(chǎn)品復(fù)用和過(guò)程復(fù)用在一定程度
上的結(jié)合
對(duì)軟件開(kāi)發(fā)過(guò)程的考慮
?軟件復(fù)用可以發(fā)生在軟件開(kāi)發(fā)過(guò)程的任
意階段,各個(gè)階段的產(chǎn)品均是可復(fù)用的
目標(biāo),越早階段的復(fù)用可帶來(lái)更好的效
血。
?青鳥(niǎo)構(gòu)件模型描述的對(duì)象是多層次、多
階段的構(gòu)件,層次刻劃構(gòu)件的抽象程度。
層次和開(kāi)發(fā)階段是密切關(guān)聯(lián)的,開(kāi)發(fā)階
段越早,構(gòu)件抽象層次也就越高
構(gòu)件的形態(tài)、層次和表示
?青鳥(niǎo)構(gòu)件模型從三個(gè)不同的、相互正交
的視角來(lái)看待構(gòu)件,每個(gè)具體的構(gòu)件都
是形態(tài)、層次和表示構(gòu)成的三維空間中
的一個(gè)點(diǎn)。
構(gòu)件的形態(tài)
?構(gòu)件呈現(xiàn)不同的形態(tài)(Form),形態(tài)的差異體
現(xiàn)在構(gòu)件的結(jié)構(gòu)組織方式和依賴的方法學(xué)范型
上。青鳥(niǎo)構(gòu)件可分為如下幾種形態(tài):
-類(Class):以類為單位進(jìn)行封裝而得到的構(gòu)件,
這是最基本的構(gòu)件單元
-類樹(shù)(ClassTree):以一個(gè)抽象類為根,若干繼承
該抽象類的具體子類(也可能有抽象子類)為節(jié)點(diǎn)
的一棵類樹(shù)。這樣的一棵類樹(shù)被封裝為構(gòu)件,對(duì)外
實(shí)現(xiàn)了具體子類的隱蔽,抽象根類提供了該類樹(shù)的
對(duì)外接口規(guī)約,對(duì)具體子類的操作(刪除或增加)
以及子類對(duì)象的創(chuàng)建均由抽象類控制,該類樹(shù)的客
戶無(wú)需知道類樹(shù)結(jié)構(gòu)和具體子類。
一個(gè)類樹(shù)的例子
?類樹(shù)作為構(gòu)件的優(yōu)點(diǎn)在
于:
a.類樹(shù)比類具有更多的獨(dú)
立性,對(duì)外界依賴少,
更易于復(fù)用;
b.類樹(shù)封裝使得用戶只需
關(guān)心所需功能的抽象和該類樹(shù)被封裝為構(gòu)件,類樹(shù)
規(guī)約而忽略具體子類細(xì)的客戶只知道抽象類Graph,
下;并不關(guān)心類樹(shù)中有多少子類,
所有操作都是針后Graph類
C.類樹(shù)封裝后其結(jié)構(gòu)變化
和具體子類的增刪對(duì)客進(jìn)行,通過(guò)條件限制實(shí)現(xiàn)對(duì)
戶不會(huì)產(chǎn)生影響。子類對(duì)象的匿名創(chuàng)建和操作
框架
?框架(Framework):一個(gè)框架由一組協(xié)作構(gòu)
件組成,闡明了整個(gè)設(shè)計(jì)、構(gòu)件間依賴及成員
構(gòu)件的責(zé)任分布。
?這些成員構(gòu)件通常是子框架、類樹(shù)或類,大多
以抽象的形式出現(xiàn),實(shí)現(xiàn)細(xì)節(jié)放在具體子類中,
構(gòu)成了一個(gè)抽象設(shè)計(jì),不同的具體子類可產(chǎn)生
對(duì)設(shè)計(jì)的不同實(shí)現(xiàn)。
?框架作為構(gòu)件使得用戶可以復(fù)用設(shè)計(jì),用戶通
過(guò)具體子類的嵌入而在框架中加入特殊功能。
一個(gè)框架的例子
?GraphResizer稱為圖形變
形器,它既是Graph的子
類,又是Graph對(duì)象的操
作者(變形器),每一
種具體圖形對(duì)象都宥對(duì)
應(yīng)的具體圖形變形器,
GraphEditor用于屏幕上
?圖中箭頭線表示客戶關(guān)畫(huà)鹵,每一種具體圖形
系(Clientship),帶△類都有對(duì)應(yīng)的編輯器。
的線表示繼承關(guān)系。這用戶復(fù)用這個(gè)框架,通
是一個(gè)由三個(gè)抽象類組過(guò)加入具體子類,即可
成的框架得到處理不同圖元的應(yīng)
用程序。
設(shè)計(jì)模式
?設(shè)計(jì)模式(DesignPattern):設(shè)計(jì)模式
是對(duì)經(jīng)驗(yàn)的顯式表示,每個(gè)設(shè)計(jì)模式描
述了一個(gè)反復(fù)出現(xiàn)的問(wèn)題以及該問(wèn)題解
法的核心內(nèi)容,它命名、抽象并標(biāo)識(shí)了
一個(gè)通用設(shè)計(jì)結(jié)構(gòu)的關(guān)鍵部分,使得它
可以用來(lái)創(chuàng)建一個(gè)可復(fù)用的面向?qū)ο蟮?/p>
設(shè)計(jì)。設(shè)計(jì)模式作為可復(fù)用構(gòu)件體現(xiàn)了
較高層次的設(shè)計(jì)思想復(fù)用。
模式的四個(gè)基本要素
-1)模式名稱:是一個(gè)助記名,他用一兩個(gè)詞來(lái)描述模式
的問(wèn)題、解決方案和效果。
?2)問(wèn)題:描述了應(yīng)該在何時(shí)使用模式。它解釋了設(shè)計(jì)
問(wèn)題和問(wèn)題存在的前因后果,它可能描述特定的設(shè)計(jì)
問(wèn)題,如怎樣用對(duì)象表示算法,也可能描述了導(dǎo)致不
靈活設(shè)計(jì)的類或?qū)ο蠼Y(jié)構(gòu),有時(shí)候,問(wèn)題部分還會(huì)包
括使用模式必須滿足的一系列先決條件。
?3)解決方案:描述了一個(gè)設(shè)計(jì)的各個(gè)組成成分(結(jié)
構(gòu)),以及它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作
方式。
?4)效果:描述了模式使用的效果及使用模式應(yīng)注意的
問(wèn)題。
設(shè)計(jì)模式的分類
■創(chuàng)建型模式
-AbstractFactory(抽象工廠)、Builder(生成器)、
FactoryMethod(工廠方法)、Prototype(原型)、
Singleton(單件)
?結(jié)構(gòu)型模式
-Adapter(適配器對(duì)象)、Bridge(橋接)、
Composite(組合)、Decorator(裝飾)、Facade
(外觀)、Flyweight(享元)、Proxy(代理)
?行為型模式
-ChainofReponsibility(職責(zé)鏈)、Command(命
令)、INTERPRETER(解釋器)、Iterator(迭代
器)、Mediator(中介者5、Memento(備忘錄)、
Observer(觀察者)、state(狀態(tài))、strategy(策
略)、TEMPLATEMETHOD(模板方法)、visitor
(訪問(wèn)者).........................
構(gòu)架
?構(gòu)架(Architecture):應(yīng)用系統(tǒng)體系結(jié)
構(gòu)的顯式表示。構(gòu)架具有領(lǐng)域相關(guān)性,
構(gòu)件根據(jù)構(gòu)架進(jìn)行復(fù)合而生成可運(yùn)行的
系統(tǒng)。構(gòu)架是一類特殊的構(gòu)件,可視為
框架用于描述一個(gè)應(yīng)用系統(tǒng)時(shí)的極限狀
態(tài)。
各類形態(tài)構(gòu)件間的關(guān)系
?通常,一個(gè)構(gòu)架由若干框架所構(gòu)成,框架又可
包含子框架、類樹(shù)、抽象類和具體類,類樹(shù)由
抽象類和具體子類構(gòu)成,類是最基本的構(gòu)件單
元。在這個(gè)意義上,構(gòu)件的形態(tài)體現(xiàn)了構(gòu)件粒
度上的差異。一個(gè)框架通常含有多個(gè)設(shè)計(jì)模式
的采用,每個(gè)設(shè)計(jì)模式都有若干個(gè)框架作為它
在不同領(lǐng)域的具體實(shí)現(xiàn)。
?這里討論的構(gòu)件形態(tài)均和00方法范型相依賴,
對(duì)于傳統(tǒng)范型的構(gòu)件可以通過(guò)再工程替其轉(zhuǎn)換
為00構(gòu)件,如傳統(tǒng)的模塊、模塊簇可以轉(zhuǎn)換
封裝為00的類、類樹(shù)和框架,并按照00的方
式進(jìn)行復(fù)合組裝。
構(gòu)件的層次
?可復(fù)用構(gòu)件根據(jù)其產(chǎn)生于開(kāi)發(fā)過(guò)程的不
同階段而處于不同的抽象層次。青鳥(niǎo)構(gòu)
件模型考慮將構(gòu)件分為四個(gè)層次。
?分析件:指系統(tǒng)需求規(guī)約和功能規(guī)約。
?設(shè)計(jì)件:指系統(tǒng)體系結(jié)構(gòu)和設(shè)計(jì)方案。
?編碼件:由具體程序設(shè)計(jì)語(yǔ)言編制的源
代雞構(gòu)件。
?測(cè)試件:測(cè)試計(jì)劃和測(cè)試案例。
構(gòu)件的表示
?不同層次的構(gòu)件具有不同的表示媒介和
手段,如:
-圖形
-復(fù)合文檔
—正文
-偽碼
-編程語(yǔ)言
—目標(biāo)
青鳥(niǎo)構(gòu)件模型
?青鳥(niǎo)構(gòu)件模型從九個(gè)方面來(lái)描述構(gòu)件,
更多地關(guān)心構(gòu)件的易理解性、封裝性及
構(gòu)件間關(guān)系,通過(guò)給構(gòu)件提供明確的對(duì)
外接口實(shí)現(xiàn)服務(wù)提供者和其服務(wù)請(qǐng)求者
的分離,模型更多地關(guān)心構(gòu)件及其使用
者間的交互,特別是對(duì)構(gòu)件使用者有意
義的部分。
(1)概念
?這是對(duì)構(gòu)件功能的抽象描述,多采用名
詞來(lái)表示。如堆棧(Stack)、銀行帳號(hào)
(Account)等,這類名詞術(shù)語(yǔ)應(yīng)盡可能
采用同領(lǐng)域內(nèi)的公認(rèn)詞匯,以便于直觀
的理解和相互交流。
(2)操作規(guī)約
?用來(lái)指稱構(gòu)件對(duì)外提供的、可被請(qǐng)求的服務(wù)。
?Operation=Name+Signature+Axiom+Exception
+Context
?Signature給出了操作的類型聲明,由參數(shù)類
型和結(jié)果類型構(gòu)成,操作參數(shù)有in、out.
in&out三種模式(Modei;Axiom以前后置斷
言的形式給出操作的功能規(guī)約;Exception描述
操作的例外處理;Context描述操作使用的語(yǔ)景。
?對(duì)收到的服務(wù)請(qǐng)求,操作的執(zhí)行有兩種方式:
-at-most-once如執(zhí)行成功,則恰好執(zhí)行一次;如出
現(xiàn)例外,則執(zhí)行一次或0次
-best-effort:不需返回結(jié)果,不等待執(zhí)行
(3)接口
?接口給出了構(gòu)件的對(duì)外行為描述,分入接口(in-
interface)和出接口(out-interface)。
?入接口:每個(gè)人接口刻劃一個(gè)操作集合,接口可以具
有用一對(duì)訪問(wèn)函數(shù)(獲取或設(shè)置屬性值)表示的屬性。
一個(gè)構(gòu)件可擁有多個(gè)人接口,客戶(Client)可通過(guò)一
個(gè)或多個(gè)人接口請(qǐng)求構(gòu)件服務(wù)。
-出接口:描述構(gòu)件對(duì)外界的請(qǐng)求。當(dāng)構(gòu)件完成某一功
能時(shí),可能需要其他構(gòu)件的協(xié)作,出接口指明了這種
對(duì)外關(guān)泵。
?構(gòu)件間存在入接口繼承關(guān)系(子類型關(guān)系),這種關(guān)
系指明:凡是父構(gòu)件能響應(yīng)的請(qǐng)求,其繼承者同樣可
以響應(yīng)。子類型關(guān)系是造成多人接口的原因。
(4)類型
-類型用于定義“什么值可用作為操作參數(shù)”。
在00程序也操作參數(shù)可分為三類:
?基本類型值:這是一般程序語(yǔ)言中都提供的基
本類型,如整數(shù)、字符、字符串等。
?對(duì)象索引:指對(duì)象的名或地址,憑此將對(duì)象作
為參數(shù)傳遞。
?構(gòu)造值:由對(duì)象和基本值混合構(gòu)造成的結(jié)構(gòu)。
(5)實(shí)現(xiàn)體
?這是構(gòu)件的具體實(shí)現(xiàn)部分,是實(shí)際完成
被請(qǐng)求服務(wù)的系統(tǒng)。不同層次的構(gòu)件有
不同的實(shí)現(xiàn)(表示)方式,具有不同實(shí)
現(xiàn)體的構(gòu)件可能擁有相同的接口和功能
規(guī)約。
(6)構(gòu)件復(fù)合
-構(gòu)件通過(guò)復(fù)合組成系統(tǒng)。模型中的復(fù)合
關(guān)系僅限于可表示為程序代碼的構(gòu)件,
復(fù)合的方式是服務(wù)請(qǐng)求(消息傳遞)。
構(gòu)件間出、入接口的關(guān)聯(lián)建立起構(gòu)件的
復(fù)合關(guān)系。
?服務(wù)請(qǐng)求=請(qǐng)求的操作+目標(biāo)對(duì)象+參
數(shù)表+語(yǔ)景選項(xiàng)
構(gòu)件性質(zhì)、注釋和語(yǔ)景
?(7)構(gòu)件性質(zhì)
指明構(gòu)件的形態(tài)、層次和表示。
?(8)構(gòu)件注釋
描述和構(gòu)件庫(kù)相關(guān)的其他性質(zhì),這些性質(zhì)
是構(gòu)件庫(kù)管理所必需的信息,如構(gòu)件作者、制
作時(shí)間、修改限制、修改影響等等。
?(9)構(gòu)件語(yǔ)景
描述構(gòu)件的軟、硬件使用環(huán)境和實(shí)現(xiàn)依賴。
其他關(guān)于構(gòu)件的模型
OMG的CORBA/OM
MICROFOFT的OLE/COM
DEC的COM
REBOOT模型
RESOLVE模型
青鳥(niǎo)構(gòu)件模型和構(gòu)件描述語(yǔ)言
?青鳥(niǎo)構(gòu)件模型是以對(duì)象計(jì)算模型為基礎(chǔ)進(jìn)行設(shè)計(jì)的,
它支持多種不同構(gòu)件形態(tài):類、抽象類、類簇、類樹(shù)、
框架(framework)和構(gòu)架(architecture)。
?類構(gòu)件、類簇構(gòu)件和類樹(shù)構(gòu)件的引入為代碼復(fù)用提供
了三種不同粒度的支持。
■抽象類構(gòu)件的引入為設(shè)計(jì)復(fù)用提供了一定的支持。
?框架構(gòu)件的引入則對(duì)面向?qū)ο笤O(shè)計(jì)的復(fù)用提供了充分
的支持。
-而構(gòu)架作為一種系統(tǒng)級(jí)的框架,為系統(tǒng)級(jí)構(gòu)件組裝提
供了支持。
?青鳥(niǎo)構(gòu)件模型具有自包含性,即要求構(gòu)件組裝而成的
構(gòu)件子系統(tǒng)仍是一個(gè)可以繼續(xù)進(jìn)行復(fù)合的構(gòu)件。這使
得原有的構(gòu)件一構(gòu)架兩層結(jié)構(gòu)擴(kuò)展為構(gòu)件一構(gòu)件子系
統(tǒng)一構(gòu)架多層結(jié)構(gòu),從而拓展了該模型的表達(dá)能力。
???????
軟件復(fù)用的優(yōu)勢(shì)
?軟件工程界普遍認(rèn)為軟件復(fù)用具有以下優(yōu)勢(shì):
1.提高軟件生產(chǎn)率
2.提高軟件產(chǎn)品質(zhì)量
3.縮短開(kāi)發(fā)周期
4.降低維護(hù)費(fèi)用
5.便于軟件移植和實(shí)現(xiàn)互操作性
6.支持快速原型開(kāi)發(fā)
7.降低程序員和端用戶(EndUser)培訓(xùn)費(fèi)用
■在工業(yè)界推行復(fù)用取得成功的范例有HP、IBM、Unisys、
NEC、BNR、富士通、Raytheon導(dǎo)彈系統(tǒng)、GTE數(shù)據(jù)服務(wù)、
SofTech公司、Universal防務(wù)系統(tǒng)(UDS)、Bofors電
氣公司等等。許多著名的企業(yè)內(nèi)部也建立了復(fù)用機(jī)制,
但是尚未對(duì)外公開(kāi)。從管理上和技術(shù)上采納軟件復(fù)用
已經(jīng)是大勢(shì)所趨。
軟件復(fù)用的困難
1.系統(tǒng)開(kāi)發(fā)者缺乏軟件復(fù)用的觀念。
2.制作和整理可復(fù)用構(gòu)件需要增加額外的投資。
3.構(gòu)件不易理解和學(xué)習(xí)。
4.缺乏有效的構(gòu)件庫(kù)。
5.缺乏足夠選用的構(gòu)件或者構(gòu)件的質(zhì)量不佳。
6.構(gòu)件不完全符合需求時(shí),不容易修改。
7.構(gòu)件緊密依賴其原有開(kāi)發(fā)平臺(tái),難以在其他平臺(tái)上使用。
8.構(gòu)件依賴于某一程序語(yǔ)言,無(wú)法與其他語(yǔ)言的構(gòu)件集成。
9.復(fù)用別人制作的構(gòu)件有心理上的障礙(NotInventedHere和Not
InventedThere綜合癥)。
10.與軟件復(fù)用有關(guān)的版權(quán)問(wèn)題、合同問(wèn)題和成本分配問(wèn)題。
11.缺乏理解、修改和組裝構(gòu)件的支持工具。
12.復(fù)用的收益難于估計(jì)和度量。
?其中的2.5.6.7.8幾點(diǎn)表明對(duì)高質(zhì)量的可復(fù)用構(gòu)件存在著很大
的需求,而4.io.n等幾點(diǎn)表明在構(gòu)件開(kāi)發(fā)者與復(fù)用者之間缺
乏有效的交流,限制了構(gòu)件制作者的創(chuàng)作積極性。
構(gòu)件一般性制作指南
?分析、設(shè)計(jì)和測(cè)試階段的成果本身都有被復(fù)用
的潛力,應(yīng)被當(dāng)作RSC;
?在新系統(tǒng)中復(fù)用前期的軟件工程成果往往帶來(lái)
對(duì)相應(yīng)后期產(chǎn)品的復(fù)用。
?可復(fù)用RSC應(yīng)該以方便復(fù)用的方式被表示,易
于識(shí)別,易于獨(dú)立提取,與系統(tǒng)特定的和易變
的成分分隔;在組織內(nèi)部采用一致的機(jī)器可讀
的記號(hào)表示分析和設(shè)計(jì)RSC,以便進(jìn)行自動(dòng)的
信息提取和轉(zhuǎn)換。從分析到設(shè)計(jì)到編碼的轉(zhuǎn)換
應(yīng)該遵循上一階段的復(fù)用考慮、保持相鄰階段
RSC之間的良好映射和可跟蹤性質(zhì)。
建立一個(gè)鼓勵(lì)復(fù)用現(xiàn)有軟件的需求
?需求規(guī)約必須認(rèn)識(shí)到復(fù)用的必要性并鼓勵(lì)軟件復(fù)用。好的
需求規(guī)約應(yīng)該只規(guī)定所需的功能和性能指標(biāo),允許開(kāi)發(fā)者
決定操作上和實(shí)現(xiàn)上的細(xì)節(jié)。一個(gè)極端明細(xì)的規(guī)約是很難
與任何現(xiàn)有軟件相匹配的,不必要的系統(tǒng)需求將限制軟件
復(fù)用。將軟件復(fù)用作為需求之一,在規(guī)約中規(guī)定所有必須
的(Required)和期望的(Expected)復(fù)用活動(dòng)。
?建議:要逐條檢查每一需求的必要性,確信其中不包括進(jìn)
一步的設(shè)計(jì)選擇。
?建議:給承包商以復(fù)審需求規(guī)約的機(jī)會(huì)。改變以往將需求
規(guī)約在招標(biāo)之前定住不變的做法,向潛在的承包商提供需
求規(guī)約的草稿,讓開(kāi)發(fā)者參與進(jìn)來(lái),標(biāo)識(shí)出他們認(rèn)為可以
修改并將促進(jìn)復(fù)用的地方,由客戶和承包商共同完成項(xiàng)目
的規(guī)約文檔。
?建議:復(fù)用需求必須解釋什么是復(fù)用和如何評(píng)估復(fù)用。為
開(kāi)發(fā)者指定一個(gè)復(fù)用目標(biāo),比如復(fù)用的代碼、函數(shù)的數(shù)量
等,在合同中為復(fù)用制定獎(jiǎng)勵(lì)措施以鼓勵(lì)復(fù)用。
將可復(fù)用軟件的開(kāi)發(fā)列入需求
?如果希望所開(kāi)發(fā)的系統(tǒng)是可復(fù)用的,就應(yīng)該在
需求中顯式聲明出來(lái),并且應(yīng)該使這種項(xiàng)月需
求在客觀上是可測(cè)試的。
?建議:這種需求必須定義什么是可復(fù)用性和如
何評(píng)估RSC的可復(fù)用性,應(yīng)該規(guī)定對(duì)RSC所期
望的復(fù)用范圍(在項(xiàng)目?jī)?nèi)部或者跨項(xiàng)目的復(fù)用,
在不同的OS上復(fù)用等等),規(guī)定與某一復(fù)用標(biāo)
準(zhǔn)的符合程度,規(guī)定RSC所必須具備的文檔,
要求對(duì)軟件的可復(fù)用性進(jìn)行測(cè)試,以及要求開(kāi)
發(fā)者對(duì)RSC進(jìn)行維護(hù)等。
領(lǐng)域
?領(lǐng)域(Domain)被定義為“一類相關(guān)或相似的軟
件應(yīng)用系統(tǒng)"O從復(fù)用的角度看來(lái),面向領(lǐng)
域的構(gòu)件具有較高的可復(fù)用性。如果組織所關(guān)
注的領(lǐng)域足夠成熟,能夠建立起領(lǐng)域構(gòu)件庫(kù),
那么即使構(gòu)件庫(kù)的規(guī)模不大也照樣會(huì)有相當(dāng)大
的作用。領(lǐng)域分析(DomainAnalysis)的成果
不僅在復(fù)用者生成應(yīng)用系統(tǒng)時(shí)有用,而且可以
用來(lái)組織軟件產(chǎn)品線(ProductLine),管理用
戶需求和輔助構(gòu)件庫(kù)進(jìn)行構(gòu)件的分類等。
制作面向領(lǐng)域的可復(fù)用構(gòu)件
?領(lǐng)域分析和領(lǐng)域工程是應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)
程中最需要經(jīng)驗(yàn)也最缺乏方法和工具支
持的階段之一,領(lǐng)域知識(shí)在分析和設(shè)計(jì)
階段有十分重要的作用。如果能夠?qū)㈩I(lǐng)
域知識(shí)和模型與本領(lǐng)域的構(gòu)件結(jié)合,將
大大提高應(yīng)用系統(tǒng)的開(kāi)發(fā)效率
領(lǐng)域分析的作用
?領(lǐng)域分析活動(dòng)不同于通常對(duì)特定系統(tǒng)進(jìn)行的需
求分析,它是對(duì)特定應(yīng)用領(lǐng)域中已有的系統(tǒng)、
預(yù)期的需求變化和技術(shù)演化進(jìn)行分析,目的是
標(biāo)識(shí)出整個(gè)領(lǐng)域中通用的構(gòu)架和相同的功能與
接口。領(lǐng)域分析的結(jié)果將影響到系統(tǒng)需求的取
舍,由此構(gòu)造出的系統(tǒng)由于更適應(yīng)變化的需求,
日后被復(fù)用的可能性也更大。
?建議:要評(píng)估領(lǐng)域分析的必要性和可行性。在
適當(dāng)?shù)臅r(shí)機(jī)進(jìn)行領(lǐng)域分析或者采用現(xiàn)有的分析
成果。在利用現(xiàn)有領(lǐng)域分析成果時(shí)應(yīng)該評(píng)價(jià)其
適用性,即使整個(gè)構(gòu)架未必可用,仍有可能復(fù)
用某些標(biāo)準(zhǔn)的構(gòu)件和接口。
領(lǐng)域分析的建議
■建議:在評(píng)估領(lǐng)域分析的必要性時(shí)有以下評(píng)價(jià)準(zhǔn)則,
對(duì)這些問(wèn)題的回答應(yīng)該大多數(shù)為“是”:
-本組織還會(huì)在同一領(lǐng)域建造其他系統(tǒng)并由此從一個(gè)標(biāo)準(zhǔn)
的構(gòu)架和適合該構(gòu)架的構(gòu)件集合中獲益嗎?
-在本領(lǐng)域中建造系統(tǒng)的技術(shù)已經(jīng)足夠成熟并能夠產(chǎn)生一
個(gè)令人滿意的標(biāo)準(zhǔn)構(gòu)架了嗎?
-開(kāi)發(fā)者是否建造過(guò)類似系統(tǒng),是否獲得了足夠的經(jīng)驗(yàn)以
保證所得的領(lǐng)域分析結(jié)果是可用的呢?
-是否有一種要求和確保領(lǐng)域分析的結(jié)果被實(shí)際應(yīng)用了的
機(jī)制呢?比如,一個(gè)小組受命開(kāi)發(fā)標(biāo)準(zhǔn)的構(gòu)架后,是否
有一種方式讓其它開(kāi)發(fā)小組獲知并采用領(lǐng)域分析的成果
呢?
-有否一種方式在受益于領(lǐng)域分析結(jié)果的小組之間分?jǐn)傤I(lǐng)
域分析的成本?
領(lǐng)域分析的建議
建議:在評(píng)估領(lǐng)域分析的必要性時(shí)有以下評(píng)價(jià)
準(zhǔn)則,對(duì)這些問(wèn)題的回答應(yīng)該大多數(shù)為“是”
-要建造的系統(tǒng)是該領(lǐng)域的一個(gè)代表嗎?領(lǐng)域構(gòu)架會(huì)
適用嗎?
-到底什么是可用的?如果只有一個(gè)構(gòu)架模型和部件
列表而沒(méi)有可復(fù)用的詳細(xì)設(shè)計(jì)或者代碼構(gòu)件,也許
就不會(huì)節(jié)省很多成本了。
-如果詳細(xì)設(shè)計(jì)和代碼構(gòu)件是可用的,它們提供了多
少要求的功能呢?
-構(gòu)架達(dá)到了哪個(gè)層次的標(biāo)準(zhǔn)?為了組織內(nèi)部有更多
共同之處而使用這個(gè)構(gòu)架和(或)接口會(huì)獲益嗎?
-分析結(jié)果在實(shí)踐中被證明了嗎?有多少可信度?
領(lǐng)域分析的建議
?建議:即使沒(méi)有時(shí)間或能力進(jìn)行完整的
領(lǐng)域分析,仍然可以快速標(biāo)識(shí)出本領(lǐng)域
中可復(fù)用的子系統(tǒng)和接口(比如標(biāo)準(zhǔn)設(shè)
備、通信協(xié)議、用戶接口、應(yīng)用算法
等),為今后的開(kāi)發(fā)儲(chǔ)備“零部件”。
?建議:在應(yīng)用領(lǐng)域分析成果時(shí),應(yīng)該及
時(shí)提供反饋,補(bǔ)充或改進(jìn)其成分,促進(jìn)
領(lǐng)域模型隨實(shí)際領(lǐng)域的演化而演化。
構(gòu)件庫(kù)的管理流程
圖1.構(gòu)件庫(kù)的韶淵g
構(gòu)件的登記表格
?構(gòu)件的登記表格中有下列屬性:
1.名稱:每個(gè)構(gòu)件都必須有一人確定的名稱,該名稱
必須完整地標(biāo)識(shí)了該構(gòu)件的本質(zhì)。如stack,resource
manager等。
2.作者:即制作或提供該構(gòu)件的單位或個(gè)人的名稱,
以及聯(lián)絡(luò)地址等相關(guān)信息。
3.制作日期:即構(gòu)件制作的完成日期。
4.入庫(kù)日期:即構(gòu)件進(jìn)入構(gòu)件庫(kù)的日期。
5.版本號(hào):即該構(gòu)件在一組構(gòu)件演化系列中相應(yīng)的版
一號(hào)。
6.使用環(huán)境:即使用(包括理解/組裝/修改)該構(gòu)件時(shí)
必須提供的硬件和軟件平臺(tái)。如所需的特定的硬件
環(huán)境、操作系統(tǒng)、數(shù)據(jù)庫(kù)平臺(tái)和網(wǎng)絡(luò)環(huán)境等。
7.應(yīng)用領(lǐng)域:即該構(gòu)件原來(lái)或可能被使用到的應(yīng)用領(lǐng)域
(及其子領(lǐng)域)的名稱。如MIS,CAI等。
8.用途:即該構(gòu)件在被應(yīng)用的領(lǐng)域中所發(fā)揮的作用。
9.功能:即該構(gòu)件在原有或可能的軟件系統(tǒng)中所提供的
軟件功能集。
10.表示方法:即用來(lái)描述該構(gòu)件內(nèi)容的語(yǔ)言形式或媒體。
如源代碼構(gòu)件所用的編程語(yǔ)言等。
11.形態(tài):即該構(gòu)件的組成成分及其相互關(guān)系。如類、類
樹(shù)、框架、模塊等。
12.層次:即該構(gòu)件相對(duì)于軟件開(kāi)發(fā)過(guò)程階段的抽象層次。
如分析、設(shè)計(jì)、編碼等。
13.上下文環(huán)境:即該構(gòu)件在組裝時(shí)系統(tǒng)所必須提供的程
序級(jí)上下文環(huán)境。
14.尺寸(size):即該構(gòu)件的大小。
15.創(chuàng)作工具:即構(gòu)件的制作者在制作該構(gòu)件時(shí)所使用的
軟件工具。
構(gòu)件庫(kù)的分類策略
?一個(gè)刻面分類模式由一組描述構(gòu)件本質(zhì)特征的
刻面所組成,每個(gè)刻面從不同的側(cè)面對(duì)構(gòu)彳牛庫(kù)
中的構(gòu)件進(jìn)行分類。
?例如,這組刻面可以是構(gòu)件的應(yīng)用領(lǐng)域、功能、
操作對(duì)象、使用環(huán)境等。
?每個(gè)刻面是由一組基本的術(shù)語(yǔ)(即關(guān)鍵詞)所構(gòu)
成的(稱為術(shù)語(yǔ)空間termspace)。一個(gè)構(gòu)件可以
被每個(gè)刻面中的一個(gè)或多個(gè)術(shù)語(yǔ)所刻劃(刻面術(shù)
語(yǔ)是一個(gè)確定的集合),而每個(gè)刻面則反映了對(duì)
庫(kù)中構(gòu)件的一種劃分,因此用戶可以直觀地從
不同的角度指明待檢索的構(gòu)件,也有利于用戶
對(duì)構(gòu)件的理解。
刻面分類策略的特性
1.刻面必須充分并明確地描述構(gòu)件庫(kù)中全體構(gòu)件,即每一
個(gè)構(gòu)件都可以用該刻面來(lái)分類。
2.每一個(gè)刻面與一個(gè)術(shù)語(yǔ)空間相關(guān)聯(lián)。任意兩個(gè)刻面的術(shù)
語(yǔ)空間是正交的,即一個(gè)刻面的術(shù)語(yǔ)發(fā)生變化不會(huì)影響
到另一個(gè)刻面的術(shù)語(yǔ)空間。
3.一個(gè)刻面的術(shù)語(yǔ)空間為有限的不定空間(finite&indefinite
space),即可以隨時(shí)間的演進(jìn)而動(dòng)態(tài)地增加和刪除術(shù)語(yǔ)。
4.每一個(gè)構(gòu)件的所有刻面必須予以定義,不允許在對(duì)構(gòu)件
分類時(shí)有未定義的刻面;但查詢時(shí),用戶可以利用任意
數(shù)目的刻面來(lái)查詢。
5.構(gòu)件庫(kù)管理者對(duì)構(gòu)件進(jìn)行分類時(shí),應(yīng)該針對(duì)每一個(gè)刻面,
從術(shù)語(yǔ)空間中選擇適當(dāng)?shù)模ǘ鄠€(gè))術(shù)語(yǔ),以完成構(gòu)件的封裝
工作。
6.在一個(gè)術(shù)語(yǔ)空間中的術(shù)語(yǔ)按一般/特殊關(guān)系形成樹(shù)狀的層
次結(jié)構(gòu),每一個(gè)術(shù)語(yǔ)附帶有不定數(shù)目的同義詞(術(shù)語(yǔ)間可
以具有同義詞關(guān)系)。...........................
刻面分類策略的好處
?構(gòu)件庫(kù)管理者通過(guò)將刻面與對(duì)應(yīng)的術(shù)語(yǔ)
相聯(lián)結(jié),可以在構(gòu)件間建立復(fù)雜的聯(lián)系。
與一般的層次分類策略相比,刻面分類
策略更易于修改,更富有彈性,因?yàn)閷?duì)
一個(gè)刻面的修改不會(huì)影響到其它的刻面。
同時(shí),每個(gè)刻面對(duì)應(yīng)一個(gè)結(jié)構(gòu)化佰術(shù)語(yǔ)
空間,避免了一般的關(guān)鍵詞分類策略的
雜亂無(wú)章,使得對(duì)關(guān)鍵詞的管理更為方
彳更和有序。
屬性與刻面的區(qū)別
刻面是構(gòu)件屬性的一個(gè)子集。屬性絕大部分是
由構(gòu)件的制作者或提供者提供的,而刻面則完
全是由構(gòu)件庫(kù)的管理者規(guī)定的,構(gòu)件的制作者
或提供者完全不需要了解它們。
刻面是構(gòu)件的復(fù)用者在查詢構(gòu)件時(shí)最感興趣的
構(gòu)件屬性。在查詢時(shí)復(fù)用者通過(guò)選擇刻面的術(shù)
語(yǔ),可以明確地限定構(gòu)件的范疇,不會(huì)有遺漏
的構(gòu)件。
術(shù)語(yǔ)空間
?在刻面分類策略中,每個(gè)刻面關(guān)聯(lián)了一
個(gè)合法術(shù)語(yǔ)的結(jié)構(gòu)化集合-術(shù)語(yǔ)空間,在
構(gòu)件的分類和查找中用到的術(shù)語(yǔ)均來(lái)自
于這些術(shù)語(yǔ)空間。
?術(shù)語(yǔ)空間的結(jié)構(gòu)反映了術(shù)語(yǔ)間的語(yǔ)義關(guān)
系,因此術(shù)語(yǔ)空間可以看做是一種語(yǔ)義
網(wǎng),而構(gòu)件從外部來(lái)看,都是一組刻面
術(shù)語(yǔ)的集合。
術(shù)語(yǔ)的兩種關(guān)系
?即一般/特殊關(guān)系和同義詞關(guān)系,這是基于以下
兩個(gè)目的:
-簡(jiǎn)化術(shù)語(yǔ)的定位。用戶可以沿著術(shù)語(yǔ)間的關(guān)系迅速對(duì)術(shù)
語(yǔ)進(jìn)行定位。同時(shí),用戶要查找的術(shù)語(yǔ)可能不夠精確,
由于習(xí)慣不同,使用的術(shù)語(yǔ)也不盡相同,因而查找時(shí)容
易出現(xiàn)術(shù)語(yǔ)的不匹配(mismatch)。利用這兩種關(guān)系,既
可以統(tǒng)一用戶間術(shù)語(yǔ)使用上的差異,又可以幫助用戶將
自己的檢索需求進(jìn)一步修正和細(xì)化,這也是一個(gè)逐步求
精的過(guò)程
-檢索到所需改動(dòng)最少的構(gòu)件。若沒(méi)有發(fā)現(xiàn)刻面術(shù)語(yǔ)與用
戶要查找的術(shù)語(yǔ)正好匹配的構(gòu)件,那么構(gòu)件庫(kù)管理系統(tǒng)
就會(huì)讓用戶檢查那些刻面術(shù)語(yǔ)與用戶要查找的術(shù)語(yǔ)相接
近的構(gòu)件。這種找到相似構(gòu)件的機(jī)制稱為“松馳查
找”(relaxationofsearch)。這樣用戶可以在構(gòu)件庫(kù)現(xiàn)有
的構(gòu)件中找到所需改動(dòng)最少的構(gòu)件,提高復(fù)用的效率。
青鳥(niǎo)構(gòu)件庫(kù)的刻面
?刻面的定義
-1.使用環(huán)境(ApplicationEnvironment)
-2.應(yīng)用領(lǐng)域(ApplicationDomain)
-3.功能(Functionality)
-4.層次(LevelofAbstraction)
-5.表示方法(Representation)
構(gòu)件庫(kù)的實(shí)體-關(guān)系圖
構(gòu)件間的關(guān)系
(1)被實(shí)現(xiàn)關(guān)系(Refinement)
(2)版本關(guān)系
(3)包含關(guān)系
(4)相關(guān)關(guān)系
⑸協(xié)作關(guān)系
(6)繼承關(guān)系
構(gòu)件庫(kù)的查詢策略
?使用者可以按刻面進(jìn)行查詢。即通過(guò)選擇任意刻面的一個(gè)
或多個(gè)術(shù)語(yǔ),就可以迅速限定構(gòu)件的范疇。
-除了刻面查詢外,使用者可根據(jù)構(gòu)件的任意屬性進(jìn)行輔助
查詢。
?使用者在查詢構(gòu)件過(guò)程中,可隨時(shí)通過(guò)超文本(hypertext)瀏
覽器對(duì)庫(kù)中構(gòu)件進(jìn)行有層次地瀏覽。
?構(gòu)件庫(kù)提供了類似“服務(wù)臺(tái)”的機(jī)制。使用者在查詢構(gòu)件
過(guò)程中,可以向“服務(wù)臺(tái)”求助,也可以向它提出自己的
意見(jiàn)和建議。
?使用者找到一個(gè)構(gòu)件時(shí),構(gòu)件庫(kù)可以顯示出與該構(gòu)件有某
種關(guān)系的所有構(gòu)件。
-較為熟練的使用者可以用類似SQL查詢語(yǔ)句的形式,以構(gòu)件
的屬性和刻面作為條件變量,并允許查詢條件的與、或、
非的任意組合。
?上面提到的查詢方法可以任意組合,逐步求精,并允許查
詢過(guò)程的回溯...........................
構(gòu)件庫(kù)的管理過(guò)程
?項(xiàng)目中每個(gè)開(kāi)發(fā)者都應(yīng)在構(gòu)件庫(kù)中建立帳戶
?盡量避免復(fù)用還沒(méi)有進(jìn)入構(gòu)件庫(kù)的構(gòu)件
?為構(gòu)件庫(kù)提供對(duì)構(gòu)件和構(gòu)件庫(kù)支持工具的使用
經(jīng)驗(yàn)和反饋
?將復(fù)用構(gòu)件時(shí)遇到的所有問(wèn)題通知構(gòu)件庫(kù)
?將構(gòu)件的更新版本和增強(qiáng)版本提交給構(gòu)件庫(kù)
對(duì)構(gòu)件的選擇和提取
?使用構(gòu)件庫(kù)提供的材料決定構(gòu)件的選取
-在選取構(gòu)件前檢查構(gòu)件的相關(guān)信息
-檢查構(gòu)件的質(zhì)量和可復(fù)用性等級(jí),以及構(gòu)件的推薦
意見(jiàn)
?提取完整的構(gòu)件
-提取一個(gè)代碼構(gòu)件時(shí)應(yīng)盡量提取出它的分析構(gòu)件和
設(shè)計(jì)構(gòu)件等
-構(gòu)件間可能存在繼承、協(xié)作和包含關(guān)系
-提取每個(gè)構(gòu)件時(shí),構(gòu)件庫(kù)會(huì)將構(gòu)件的構(gòu)件描述語(yǔ)言、
摘要、使用樣例、分類信息等作為構(gòu)件的一部分一
起提取出來(lái)
?提供反饋日期等信息
-反饋日期通常在提取后的三個(gè)月內(nèi)
需求分析
?需求分析時(shí),應(yīng)首先查詢構(gòu)件庫(kù),根據(jù)用戶需求確定
構(gòu)件庫(kù)中是否有相似的構(gòu)架和子系統(tǒng),或在該領(lǐng)域中
是否有對(duì)應(yīng)的領(lǐng)域分析構(gòu)件
需求分析
建立復(fù)用需求并盡早發(fā)現(xiàn)復(fù)用的機(jī)會(huì)
?在提交具體需求前,要檢查構(gòu)件庫(kù)中是
否有可以復(fù)用的構(gòu)件
?避免在需求分析階段將需求過(guò)分細(xì)化
?要參照構(gòu)件庫(kù)的分類模式指定系統(tǒng)需求
?盡量選擇支持復(fù)用程度更高的開(kāi)發(fā)方法
和工具
對(duì)領(lǐng)域分析構(gòu)件的復(fù)用
領(lǐng)域分析過(guò)程采取的主要步驟
1.知識(shí)獲取(KnowledgeAcquisition)---收集和分析
與問(wèn)題域相關(guān)的信息,并將這種信息用該領(lǐng)域內(nèi)部
和外部的對(duì)象來(lái)描述。
2.領(lǐng)域定義(DomainDefinition)---對(duì)知識(shí)獲取階段
標(biāo)識(shí)出的對(duì)象進(jìn)行分析,以便定義出領(lǐng)域的范圍和
具體邊界。
3.模型建立(ModelFormulation)---對(duì)領(lǐng)域定義階段
標(biāo)識(shí)為領(lǐng)域內(nèi)部的對(duì)象進(jìn)行建模,以便進(jìn)一步地理
解它們?cè)陬I(lǐng)域中扮演的角色。
4.模型演化(ModelEvolution)——將模型進(jìn)行進(jìn)一步
地分析和精化,以開(kāi)發(fā)出該領(lǐng)域的分類(taxonomic)
模型,用于表示出該模型的組織結(jié)構(gòu)和語(yǔ)義
領(lǐng)域分析過(guò)程的產(chǎn)品
?功能層次(FunctionalHierarchy)---一個(gè)功能需求的層
次性模型。
,實(shí)體一關(guān)系模型(Entity-RelationshipModel)----顯示領(lǐng)
域內(nèi)各對(duì)象間關(guān)系和接口的模型。
?類屬的軟件構(gòu)架(GenericSoftwareArchitecture)---以
軟件構(gòu)件的形式表示出的E-R模型中的對(duì)象。
?分類(Taxonomy)——提供了一個(gè)用于定義領(lǐng)域內(nèi)對(duì)象的分
類模式。
?標(biāo)準(zhǔn)需求(StandardRequirements)---涉及該問(wèn)題域的系
統(tǒng)都必須滿足的一套類屬性的需求。
,領(lǐng)域特定的語(yǔ)言(Domain-SpecificLanguage)----用于描
述和分類領(lǐng)域特定構(gòu)件的詞匯。
?設(shè)計(jì)和開(kāi)發(fā)準(zhǔn)則(DesignandDevelopment
Guidelines)——基于組成該領(lǐng)域的構(gòu)架和構(gòu)件的一個(gè)類屬
性的開(kāi)發(fā)框架。
復(fù)用已有的構(gòu)架和子系統(tǒng)
?檢查構(gòu)件庫(kù)中可復(fù)用的構(gòu)架和子系
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TY/T 3802.1-2024健身瑜伽運(yùn)動(dòng)裝備使用要求和檢驗(yàn)方法第1部分:瑜伽墊
- 安徽大學(xué)課題申報(bào)書(shū)
- 質(zhì)量管理qc課題申報(bào)書(shū)
- 廳級(jí)課題申報(bào)書(shū)范本
- 量感培養(yǎng)課題立項(xiàng)申報(bào)書(shū)
- 云教學(xué) 課題申報(bào)書(shū)
- 司法課題申報(bào)書(shū)
- 濟(jì)南課題申報(bào)書(shū)
- 辦學(xué)特色課題申報(bào)書(shū)
- 壓力管道維護(hù)維修合同范本
- 石油采油井場(chǎng)水土保持方案報(bào)告書(shū)
- 2024-2030年中國(guó)護(hù)眼臺(tái)燈行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 《環(huán)境保護(hù)與國(guó)家安全》高效備課課件
- 五下音樂(lè)《美麗的家鄉(xiāng)(簡(jiǎn)譜、五線譜)》課件
- 建筑竣工驗(yàn)收表格資料大全
- 主題二生活物品小改造(教學(xué)設(shè)計(jì))遼師大版四年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)
- 部編版高中語(yǔ)文第四單元《信息時(shí)代的語(yǔ)文生活》測(cè)試題(含答案)
- 第十四屆全國(guó)交通運(yùn)輸行業(yè)職業(yè)技能競(jìng)賽(公路收費(fèi)及監(jiān)控員)賽項(xiàng)題庫(kù)-下(多選題-共3部分-2)
- 【培訓(xùn)】學(xué)習(xí)《幼兒園師德》課件
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完美版
- 第八單元達(dá)標(biāo)測(cè)試卷(單元測(cè)試)2023-2024學(xué)年統(tǒng)編版語(yǔ)文一年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論