軟件復(fù)用課件_第1頁
軟件復(fù)用課件_第2頁
軟件復(fù)用課件_第3頁
軟件復(fù)用課件_第4頁
軟件復(fù)用課件_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

軟件復(fù)用

?人們開始認(rèn)識到,要真正實(shí)現(xiàn)軟件的工業(yè)化生

產(chǎn)方式,保證軟件生產(chǎn)的高效率和高質(zhì)量,軟

件復(fù)用是一條現(xiàn)實(shí)可行的途徑

?軟件復(fù)用的概念是在1968年NATO軟件工程會

議上由McIlroy第一次提出的

?所謂軟件復(fù)用是指在開發(fā)新的應(yīng)用系統(tǒng)時(shí)使用

以前開發(fā)的軟件資源,如設(shè)計(jì)、代碼、文檔等,

從而提高系統(tǒng)開發(fā)效率及軟件質(zhì)量

?在較長的一段時(shí)間內(nèi),軟件復(fù)用僅限于程序代

碼段的復(fù)用,這僅是一種較低層次的復(fù)用

?人們開始認(rèn)識到,軟件開發(fā)并不僅僅是編程,

而是一個(gè)從系統(tǒng)需求獲取、分析、設(shè)計(jì)到實(shí)現(xiàn)、

測試、運(yùn)行、維護(hù)的過程。理論和實(shí)踐表明,

在軟件生存期中,需求、設(shè)計(jì)階段是開發(fā)過程

的關(guān)鍵和瓶頸。軟律復(fù)用的概念也隨之?dāng)U展到

對軟件開發(fā)過程中各階段產(chǎn)品和文檔的復(fù)用,

其中更為重要的是對需求規(guī)約和設(shè)計(jì)的復(fù)用。

?面向?qū)ο蠹夹g(shù)為軟件復(fù)用提供了更強(qiáng)有力的支

持,帶來了更多的復(fù)用機(jī)會

面向?qū)ο蠹夹g(shù)對軟件復(fù)用的支持優(yōu)勢

?面向?qū)ο蠹夹g(shù)對軟件復(fù)用的支持優(yōu)勢在

于:

-OO模型比傳統(tǒng)過程型模型更為穩(wěn)定;

-00分析更適合于領(lǐng)域工程;

-OO構(gòu)件具有更好的封裝性;

-00方法學(xué)支持無縫的工程,可實(shí)現(xiàn)分析、

設(shè)計(jì)、編碼的一致復(fù)用。

日常生活中的復(fù)用概念

?在人們的日常生活中,復(fù)用概念的存在隨處可

見。

?傳統(tǒng)工業(yè)如機(jī)械、建筑等行業(yè)中,標(biāo)準(zhǔn)規(guī)格的

零部件、設(shè)計(jì)模式等無不體現(xiàn)了復(fù)用的思想。

計(jì)算機(jī)產(chǎn)業(yè)雖然是年輕的產(chǎn)業(yè),其成功同樣是

由于實(shí)現(xiàn)了將標(biāo)準(zhǔn)的集成電路芯片、插件板、

主板、外設(shè)等直接組裝的工業(yè)化生產(chǎn)方式???/p>

以說,符合標(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),其研究內(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ù)用的軟件開發(fā)過程等方面。

?研究工作有很大進(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ù)用通常可分為兩類:產(chǎn)品復(fù)用和過程復(fù)

?產(chǎn)品復(fù)用指對軟件開發(fā)過程中生成的各種產(chǎn)品

(需求規(guī)約、設(shè)計(jì)、程序、測試計(jì)劃和數(shù)據(jù)等)

構(gòu)件的復(fù)用,這涉及可復(fù)用構(gòu)件的建造(從現(xiàn)

有系統(tǒng)中獲取及有目的的生產(chǎn))及可復(fù)用構(gòu)件

的使用(對知識性資源的參考和對程序代碼級

資源的復(fù)合組裝)兩個(gè)方面,通過專業(yè)性的構(gòu)

件開發(fā)和基于構(gòu)件復(fù)用的系統(tǒng)集成實(shí)現(xiàn)軟件的

工業(yè)化生產(chǎn)。

過程復(fù)用

?過程復(fù)用指通過采用自動(dòng)化技術(shù),復(fù)用關(guān)于軟

件系統(tǒng)生成或變換的,從而使得可以從需

求描述出發(fā),通過生成或變換,自動(dòng)生成最終

所需的系統(tǒng),應(yīng)用生成器、程序變換器和可執(zhí)

行規(guī)約語言均是過程復(fù)用的例子。

?完全通用的過程復(fù)用意味著軟件生產(chǎn)的自動(dòng)化,

這在目前還是不現(xiàn)實(shí)的想法,因此過程復(fù)用難

度大、投資大、不易實(shí)施。

?當(dāng)前過程復(fù)用的實(shí)踐大多和領(lǐng)域相關(guān),如特定

領(lǐng)域的應(yīng)用生成器。過程復(fù)用是非常理想的軟

件復(fù)用方式,但在目前技術(shù)發(fā)展水平下,仍是

難以企及的目標(biāo),產(chǎn)品復(fù)用成為主要的研究課

題。

產(chǎn)品復(fù)用分類

?產(chǎn)品復(fù)用可分為直接復(fù)用和間接復(fù)用兩類

?直接復(fù)用是指對那些可表示為某種程序設(shè)計(jì)語

言代碼的構(gòu)件的復(fù)用,這類構(gòu)件的復(fù)用及其通

過一定機(jī)制的復(fù)合(組裝)可直接產(chǎn)生可執(zhí)行

的應(yīng)用程序,這是我們開發(fā)軟件的最終目標(biāo)。

?間接復(fù)用是指對需求規(guī)約、功能規(guī)約、設(shè)計(jì)思

想、測試計(jì)劃等文檔型知識的復(fù)用,這類非代

碼構(gòu)件的復(fù)用雖然不能直接得到最終可運(yùn)行的

系統(tǒng),但可以對系統(tǒng)開發(fā)的效率和質(zhì)量帶來極

大的好處,這類構(gòu)件的復(fù)合(組裝)缺乏形式

化和機(jī)械化的機(jī)制,通常只能有開發(fā)者在分析

理解后進(jìn)行手工復(fù)合。

黑盒復(fù)用和白盒復(fù)用

?對已有軟件資源的復(fù)用存在兩種情形,一是不

作修改的全部采用,這類構(gòu)件恰好能滿足使用

者的需求,這種復(fù)用稱為黑盒復(fù)用;

?另一情形是所復(fù)用的構(gòu)件只能滿足使用者部分

需求,需要對構(gòu)件進(jìn)行適應(yīng)性修改才可采用,

這種復(fù)用稱為白盒復(fù)用。

?在大多數(shù)情況下,對構(gòu)件的復(fù)用均是白盒復(fù)用。

基于復(fù)用的軟件開發(fā)方式

?對照傳統(tǒng)的成熟產(chǎn)業(yè),我們可以發(fā)現(xiàn),

專業(yè)性的分工是社會化、工業(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)方式

青鳥工程簡介

?青鳥工程是國家重點(diǎn)支持的科技攻關(guān)課題,已

有十余年的發(fā)展歷程?!捌呶濉?、“八五”期

間,青鳥工程面向我國軟件產(chǎn)業(yè)基礎(chǔ)建設(shè)的需

求,以實(shí)用的軟件工程技術(shù)為依托,研究開發(fā)

具有自主版權(quán)的軟件工程環(huán)境,為軟件產(chǎn)業(yè)提

供基礎(chǔ)設(shè)施一軟件工具、平臺和環(huán)境,建立工

業(yè)化生產(chǎn)的基本手段,促進(jìn)我國軟件開發(fā)由手

工作坊式轉(zhuǎn)向用計(jì)算機(jī)輔助開發(fā),以提高軟件

開發(fā)效率,改善軟件產(chǎn)品質(zhì)量。大型軟件開發(fā)

環(huán)境青鳥系統(tǒng)便是這一階段攻關(guān)工作的成果。

?“九五”期間,青鳥工程的任務(wù)是在前

期攻關(guān)工作的基礎(chǔ)上,為形成我國軟件

產(chǎn)業(yè)規(guī)模提供技術(shù)支持。重點(diǎn)是研究軟

件的工業(yè)化生產(chǎn)技術(shù),開發(fā)軟件工業(yè)化

生產(chǎn)系統(tǒng)——青鳥軟件生產(chǎn)線系統(tǒng),即

基于構(gòu)件一構(gòu)架模式的軟件開發(fā)技術(shù)及

系統(tǒng),為軟件開發(fā)提供整體解決方案,

推行軟件工業(yè)化生產(chǎn)模式,促進(jìn)軟件產(chǎn)

業(yè)規(guī)模的形成。

青鳥HI型(JB3)系統(tǒng)

?作為研究成果之一,青鳥工程開發(fā)了基于異構(gòu)

平臺、具有多信息源接口的應(yīng)用系統(tǒng)集成(組

裝)環(huán)境青鳥III型(JB3)系統(tǒng)。青鳥III型系統(tǒng)研

制的目標(biāo)是針對軟件工業(yè)化生產(chǎn)的需求,完善

并初步實(shí)現(xiàn)青鳥軟件生產(chǎn)線的思想,制定軟件

工業(yè)化生產(chǎn)標(biāo)準(zhǔn)和規(guī)范,研究基于“構(gòu)件一構(gòu)

架”模式的軟件工業(yè)化生產(chǎn)技術(shù),研制支持面

向?qū)ο蠹夹g(shù),支持軟件復(fù)用的,基于異構(gòu)平臺、

具有多信息源接口的應(yīng)用系統(tǒng)集成(組裝)環(huán)境。

其最終目標(biāo)是要構(gòu)造如下圖示意的軟件生產(chǎn)線

系統(tǒng)。

青鳥軟件生產(chǎn)線

構(gòu)件生產(chǎn)車間

標(biāo)唯規(guī)范與質(zhì)量保證

-軟件的生產(chǎn)過程劃分為三類不同的生產(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)。

?軟件開發(fā)人員被劃分成三類:構(gòu)件生產(chǎn)者、構(gòu)

件庫管理者和構(gòu)件復(fù)用者。這三種角色所需完

成的任務(wù)是不同的,構(gòu)件生產(chǎn)者負(fù)責(zé)構(gòu)件的生

產(chǎn)、描述;構(gòu)件庫管理者負(fù)責(zé)構(gòu)件分類以及構(gòu)

件庫的管理工作;而構(gòu)件復(fù)用者負(fù)責(zé)進(jìn)行基于

構(gòu)件的軟件開發(fā),包括構(gòu)件查詢、構(gòu)件理解、

適應(yīng)性修改、構(gòu)件組裝以及系統(tǒng)演化。

復(fù)用帶來了軟件開發(fā)過程的變革

?由于復(fù)用活動(dòng)的存在使得傳統(tǒng)的軟件生

存期模型不再適用,軟件開發(fā)過程分為

兩個(gè)相互關(guān)聯(lián)的過程,即開發(fā)可復(fù)用資

源的過程和根據(jù)可復(fù)用資源開發(fā)應(yīng)用系

統(tǒng)的過程,REBOOT計(jì)劃中將其稱為

DEVELOPINGFORREUSE和

DEVELOPINGWITHREUSE

青鳥山型系統(tǒng)的體系結(jié)構(gòu)

基于復(fù)用的

胡友工具集

廠■向琳4

激博工具

西?自對八

警總工只

尸面白對蒙、

ttiMM

k而R時(shí)拿、

分析工具P

規(guī)范

,規(guī)范包括:

-青鳥可復(fù)用構(gòu)件制作指南

-青鳥領(lǐng)域工程方法指南

-青鳥構(gòu)件模型

-青鳥構(gòu)件描述語言

-青鳥構(gòu)件庫概念模型

-基于復(fù)用的軟件開發(fā)過程

青鳥構(gòu)件模型設(shè)計(jì)原則

1.表達(dá)能力足夠強(qiáng)

2.簡單性

3.支持構(gòu)件的復(fù)合

4.模型和方法學(xué)關(guān)系的考慮

5.一致性和完備性

6.實(shí)用性考慮

7.擴(kuò)展性考慮

8.對軟件開發(fā)過程的考慮

表達(dá)能力足夠強(qiáng)

?模型是對客觀對象的抽象)合適的抽象

層次是十分重要的,必須既能抓住本質(zhì),

又不陷入細(xì)節(jié)。從表達(dá)能力考慮,青鳥

構(gòu)件模型首先必須遵循3c模型

?3c模型由構(gòu)件的三個(gè)不同方面的描述組

成,即概念(concept)、內(nèi)容(content)

和語景(context)三個(gè)方面

3c模型

?概念:關(guān)于“構(gòu)件做什么”的抽象描述,可以通過概

念去理解構(gòu)件的功能。概念包括接口規(guī)約和語義描述

兩個(gè)部分,語義描述和每個(gè)操作相關(guān)聯(lián)(至少表示為

前后置謂詞形式)。

?內(nèi)容:概念的具體實(shí)現(xiàn),描述構(gòu)件如何完成概念所刻

劃的功能。

?語景:描述構(gòu)件和外圍環(huán)境在概念級和內(nèi)容級的關(guān)系。

語景刻劃構(gòu)件的應(yīng)用環(huán)境,為構(gòu)件的選用和適應(yīng)性修

改提供指導(dǎo)。語景進(jìn)一步可分為:、秩念語景

(ConceptualContext)描述構(gòu)件間接口和語義方面的

關(guān)系;操作語景(OperationalContext)刻劃構(gòu)件中法

操作數(shù)據(jù)的特征(如類型和操作);、實(shí)現(xiàn)將景、、

(ImplementationContext)描述構(gòu)件間在實(shí)現(xiàn)方面的依

賴關(guān)系。

簡單性

?簡單性是各種模型必須予以考慮的重要

性質(zhì),簡單意味著易于掌握和理解。簡

單性和強(qiáng)的表達(dá)能力是一對矛盾,必須

合理權(quán)衡。

?青鳥構(gòu)件模型應(yīng)在具有足夠強(qiáng)的表達(dá)能

力的前提下盡可能簡單,因?yàn)闃?gòu)件被很

好地復(fù)用的前提是必須能夠被充分的理

解。

支持構(gòu)件的復(fù)合

?構(gòu)件模型僅僅作為構(gòu)件的抽象和描述是不夠的,

必須能夠描述構(gòu)件間的關(guān)系及構(gòu)件的復(fù)合,這

樣才有實(shí)用的價(jià)值和完整性。

?青鳥構(gòu)件模型考慮了直接復(fù)用構(gòu)件的復(fù)合問題,

在源代碼級上提供了構(gòu)件復(fù)合的機(jī)制。同時(shí),

也支持目標(biāo)碼級構(gòu)件的復(fù)合,當(dāng)前的考慮是將

青鳥構(gòu)件轉(zhuǎn)換為符合某種規(guī)范的目標(biāo)碼構(gòu)件

(如OLE構(gòu)件),通過相應(yīng)的構(gòu)件互操作機(jī)制

來實(shí)現(xiàn)復(fù)合。

模型和方法學(xué)關(guān)系的考慮

-構(gòu)件模型的確立和具體的軟件方法學(xué)有

著密切關(guān)系,不同范型的方法學(xué)必然導(dǎo)

致不同的模型。

?青鳥構(gòu)件模型遵循00范型,其構(gòu)件結(jié)構(gòu)

符合00風(fēng)范。如此考慮是因?yàn)?0技術(shù)

能對軟件復(fù)用提供更有力的支持。對于

基于傳統(tǒng)范型的構(gòu)件,如模塊類構(gòu)件,

可考慮將其通過再工程封裝成00類構(gòu)件。

一致性和完備性

?模型必須具有對內(nèi)的一致性和對外的完

備性。

?所謂一致性是指構(gòu)件作為一個(gè)封裝體必

須具有一致的對外接口、一致的組成結(jié)

構(gòu)以及一致的交互方式。

?完備性是指不存在模型所不能描述的構(gòu)

件(在00范型內(nèi))。

實(shí)用性考慮

?實(shí)用性是青鳥構(gòu)件模型所考慮的主要因

素之一。

?從實(shí)用性角度來看,構(gòu)件模型應(yīng)易于理

解、支持復(fù)合、方便分類和檢索。

?青鳥構(gòu)件模型應(yīng)作為青鳥構(gòu)件庫概念模

型的核心。

擴(kuò)展性考慮

?模型的可擴(kuò)展性是指在保持模型本身的一致性

和完備性的前提下,模型可以隨著應(yīng)用需求的

增長而演化。為此,在模型設(shè)計(jì)初期,能適應(yīng)

擴(kuò)展的設(shè)計(jì)考慮是必需的。

?青鳥構(gòu)件模型目前主要考慮工程實(shí)用性,進(jìn)一

步的考慮是結(jié)合形式化規(guī)約技術(shù),給出構(gòu)件的

形式化功能規(guī)約,一方面可用于支持基于形式

化功能規(guī)約的構(gòu)件分類和檢索策略,通過規(guī)約

匹配查找所需的構(gòu)件;另一方面支持更有效、

更自動(dòng)地復(fù)用非代碼類構(gòu)件,通過形式規(guī)約變

換技術(shù),實(shí)現(xiàn)產(chǎn)品復(fù)用和過程復(fù)用在一定程度

上的結(jié)合

對軟件開發(fā)過程的考慮

?軟件復(fù)用可以發(fā)生在軟件開發(fā)過程的任

意階段,各個(gè)階段的產(chǎn)品均是可復(fù)用的

目標(biāo),越早階段的復(fù)用可帶來更好的效

血。

?青鳥構(gòu)件模型描述的對象是多層次、多

階段的構(gòu)件,層次刻劃構(gòu)件的抽象程度。

層次和開發(fā)階段是密切關(guān)聯(lián)的,開發(fā)階

段越早,構(gòu)件抽象層次也就越高

構(gòu)件的形態(tài)、層次和表示

?青鳥構(gòu)件模型從三個(gè)不同的、相互正交

的視角來看待構(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é)范型

上。青鳥構(gòu)件可分為如下幾種形態(tài):

-類(Class):以類為單位進(jìn)行封裝而得到的構(gòu)件,

這是最基本的構(gòu)件單元

-類樹(ClassTree):以一個(gè)抽象類為根,若干繼承

該抽象類的具體子類(也可能有抽象子類)為節(jié)點(diǎn)

的一棵類樹。這樣的一棵類樹被封裝為構(gòu)件,對外

實(shí)現(xiàn)了具體子類的隱蔽,抽象根類提供了該類樹的

對外接口規(guī)約,對具體子類的操作(刪除或增加)

以及子類對象的創(chuàng)建均由抽象類控制,該類樹的客

戶無需知道類樹結(jié)構(gòu)和具體子類。

一個(gè)類樹的例子

?類樹作為構(gòu)件的優(yōu)點(diǎn)在

于:

a.類樹比類具有更多的獨(dú)

立性,對外界依賴少,

更易于復(fù)用;

b.類樹封裝使得用戶只需

關(guān)心所需功能的抽象和該類樹被封裝為構(gòu)件,類樹

規(guī)約而忽略具體子類細(xì)的客戶只知道抽象類Graph,

下;并不關(guān)心類樹中有多少子類,

所有操作都是針后Graph類

C.類樹封裝后其結(jié)構(gòu)變化

和具體子類的增刪對客進(jìn)行,通過條件限制實(shí)現(xiàn)對

戶不會產(chǎn)生影響。子類對象的匿名創(chuàng)建和操作

框架

?框架(Framework):一個(gè)框架由一組協(xié)作構(gòu)

件組成,闡明了整個(gè)設(shè)計(jì)、構(gòu)件間依賴及成員

構(gòu)件的責(zé)任分布。

?這些成員構(gòu)件通常是子框架、類樹或類,大多

以抽象的形式出現(xiàn),實(shí)現(xiàn)細(xì)節(jié)放在具體子類中,

構(gòu)成了一個(gè)抽象設(shè)計(jì),不同的具體子類可產(chǎn)生

對設(shè)計(jì)的不同實(shí)現(xiàn)。

?框架作為構(gòu)件使得用戶可以復(fù)用設(shè)計(jì),用戶通

過具體子類的嵌入而在框架中加入特殊功能。

一個(gè)框架的例子

?GraphResizer稱為圖形變

形器,它既是Graph的子

類,又是Graph對象的操

作者(變形器),每一

種具體圖形對象都宥對

應(yīng)的具體圖形變形器,

GraphEditor用于屏幕上

?圖中箭頭線表示客戶關(guān)畫鹵,每一種具體圖形

系(Clientship),帶△類都有對應(yīng)的編輯器。

的線表示繼承關(guān)系。這用戶復(fù)用這個(gè)框架,通

是一個(gè)由三個(gè)抽象類組過加入具體子類,即可

成的框架得到處理不同圖元的應(yīng)

用程序。

設(shè)計(jì)模式

?設(shè)計(jì)模式(DesignPattern):設(shè)計(jì)模式

是對經(jīng)驗(yàn)的顯式表示,每個(gè)設(shè)計(jì)模式描

述了一個(gè)反復(fù)出現(xiàn)的問題以及該問題解

法的核心內(nèi)容,它命名、抽象并標(biāo)識了

一個(gè)通用設(shè)計(jì)結(jié)構(gòu)的關(guān)鍵部分,使得它

可以用來創(chuàng)建一個(gè)可復(fù)用的面向?qū)ο蟮?/p>

設(shè)計(jì)。設(shè)計(jì)模式作為可復(fù)用構(gòu)件體現(xiàn)了

較高層次的設(shè)計(jì)思想復(fù)用。

模式的四個(gè)基本要素

-1)模式名稱:是一個(gè)助記名,他用一兩個(gè)詞來描述模式

的問題、解決方案和效果。

?2)問題:描述了應(yīng)該在何時(shí)使用模式。它解釋了設(shè)計(jì)

問題和問題存在的前因后果,它可能描述特定的設(shè)計(jì)

問題,如怎樣用對象表示算法,也可能描述了導(dǎo)致不

靈活設(shè)計(jì)的類或?qū)ο蠼Y(jié)構(gòu),有時(shí)候,問題部分還會包

括使用模式必須滿足的一系列先決條件。

?3)解決方案:描述了一個(gè)設(shè)計(jì)的各個(gè)組成成分(結(jié)

構(gòu)),以及它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作

方式。

?4)效果:描述了模式使用的效果及使用模式應(yīng)注意的

問題。

設(shè)計(jì)模式的分類

■創(chuàng)建型模式

-AbstractFactory(抽象工廠)、Builder(生成器)、

FactoryMethod(工廠方法)、Prototype(原型)、

Singleton(單件)

?結(jié)構(gòu)型模式

-Adapter(適配器對象)、Bridge(橋接)、

Composite(組合)、Decorator(裝飾)、Facade

(外觀)、Flyweight(享元)、Proxy(代理)

?行為型模式

-ChainofReponsibility(職責(zé)鏈)、Command(命

令)、INTERPRETER(解釋器)、Iterator(迭代

器)、Mediator(中介者5、Memento(備忘錄)、

Observer(觀察者)、state(狀態(tài))、strategy(策

略)、TEMPLATEMETHOD(模板方法)、visitor

(訪問者).........................

構(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)成,框架又可

包含子框架、類樹、抽象類和具體類,類樹由

抽象類和具體子類構(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方法范型相依賴,

對于傳統(tǒng)范型的構(gòu)件可以通過再工程替其轉(zhuǎn)換

為00構(gòu)件,如傳統(tǒng)的模塊、模塊簇可以轉(zhuǎn)換

封裝為00的類、類樹和框架,并按照00的方

式進(jìn)行復(fù)合組裝。

構(gòu)件的層次

?可復(fù)用構(gòu)件根據(jù)其產(chǎn)生于開發(fā)過程的不

同階段而處于不同的抽象層次。青鳥構(gòu)

件模型考慮將構(gòu)件分為四個(gè)層次。

?分析件:指系統(tǒng)需求規(guī)約和功能規(guī)約。

?設(shè)計(jì)件:指系統(tǒng)體系結(jié)構(gòu)和設(shè)計(jì)方案。

?編碼件:由具體程序設(shè)計(jì)語言編制的源

代雞構(gòu)件。

?測試件:測試計(jì)劃和測試案例。

構(gòu)件的表示

?不同層次的構(gòu)件具有不同的表示媒介和

手段,如:

-圖形

-復(fù)合文檔

—正文

-偽碼

-編程語言

—目標(biāo)

青鳥構(gòu)件模型

?青鳥構(gòu)件模型從九個(gè)方面來描述構(gòu)件,

更多地關(guān)心構(gòu)件的易理解性、封裝性及

構(gòu)件間關(guān)系,通過給構(gòu)件提供明確的對

外接口實(shí)現(xiàn)服務(wù)提供者和其服務(wù)請求者

的分離,模型更多地關(guān)心構(gòu)件及其使用

者間的交互,特別是對構(gòu)件使用者有意

義的部分。

(1)概念

?這是對構(gòu)件功能的抽象描述,多采用名

詞來表示。如堆棧(Stack)、銀行帳號

(Account)等,這類名詞術(shù)語應(yīng)盡可能

采用同領(lǐng)域內(nèi)的公認(rèn)詞匯,以便于直觀

的理解和相互交流。

(2)操作規(guī)約

?用來指稱構(gòu)件對外提供的、可被請求的服務(wù)。

?Operation=Name+Signature+Axiom+Exception

+Context

?Signature給出了操作的類型聲明,由參數(shù)類

型和結(jié)果類型構(gòu)成,操作參數(shù)有in、out.

in&out三種模式(Modei;Axiom以前后置斷

言的形式給出操作的功能規(guī)約;Exception描述

操作的例外處理;Context描述操作使用的語景。

?對收到的服務(wù)請求,操作的執(zhí)行有兩種方式:

-at-most-once如執(zhí)行成功,則恰好執(zhí)行一次;如出

現(xiàn)例外,則執(zhí)行一次或0次

-best-effort:不需返回結(jié)果,不等待執(zhí)行

(3)接口

?接口給出了構(gòu)件的對外行為描述,分入接口(in-

interface)和出接口(out-interface)。

?入接口:每個(gè)人接口刻劃一個(gè)操作集合,接口可以具

有用一對訪問函數(shù)(獲取或設(shè)置屬性值)表示的屬性。

一個(gè)構(gòu)件可擁有多個(gè)人接口,客戶(Client)可通過一

個(gè)或多個(gè)人接口請求構(gòu)件服務(wù)。

-出接口:描述構(gòu)件對外界的請求。當(dāng)構(gòu)件完成某一功

能時(shí),可能需要其他構(gòu)件的協(xié)作,出接口指明了這種

對外關(guān)泵。

?構(gòu)件間存在入接口繼承關(guān)系(子類型關(guān)系),這種關(guān)

系指明:凡是父構(gòu)件能響應(yīng)的請求,其繼承者同樣可

以響應(yīng)。子類型關(guān)系是造成多人接口的原因。

(4)類型

-類型用于定義“什么值可用作為操作參數(shù)”。

在00程序也操作參數(shù)可分為三類:

?基本類型值:這是一般程序語言中都提供的基

本類型,如整數(shù)、字符、字符串等。

?對象索引:指對象的名或地址,憑此將對象作

為參數(shù)傳遞。

?構(gòu)造值:由對象和基本值混合構(gòu)造成的結(jié)構(gòu)。

(5)實(shí)現(xiàn)體

?這是構(gòu)件的具體實(shí)現(xiàn)部分,是實(shí)際完成

被請求服務(wù)的系統(tǒng)。不同層次的構(gòu)件有

不同的實(shí)現(xiàn)(表示)方式,具有不同實(shí)

現(xiàn)體的構(gòu)件可能擁有相同的接口和功能

規(guī)約。

(6)構(gòu)件復(fù)合

-構(gòu)件通過復(fù)合組成系統(tǒng)。模型中的復(fù)合

關(guān)系僅限于可表示為程序代碼的構(gòu)件,

復(fù)合的方式是服務(wù)請求(消息傳遞)。

構(gòu)件間出、入接口的關(guān)聯(lián)建立起構(gòu)件的

復(fù)合關(guān)系。

?服務(wù)請求=請求的操作+目標(biāo)對象+參

數(shù)表+語景選項(xiàng)

構(gòu)件性質(zhì)、注釋和語景

?(7)構(gòu)件性質(zhì)

指明構(gòu)件的形態(tài)、層次和表示。

?(8)構(gòu)件注釋

描述和構(gòu)件庫相關(guān)的其他性質(zhì),這些性質(zhì)

是構(gòu)件庫管理所必需的信息,如構(gòu)件作者、制

作時(shí)間、修改限制、修改影響等等。

?(9)構(gòu)件語景

描述構(gòu)件的軟、硬件使用環(huán)境和實(shí)現(xiàn)依賴。

其他關(guān)于構(gòu)件的模型

OMG的CORBA/OM

MICROFOFT的OLE/COM

DEC的COM

REBOOT模型

RESOLVE模型

青鳥構(gòu)件模型和構(gòu)件描述語言

?青鳥構(gòu)件模型是以對象計(jì)算模型為基礎(chǔ)進(jìn)行設(shè)計(jì)的,

它支持多種不同構(gòu)件形態(tài):類、抽象類、類簇、類樹、

框架(framework)和構(gòu)架(architecture)。

?類構(gòu)件、類簇構(gòu)件和類樹構(gòu)件的引入為代碼復(fù)用提供

了三種不同粒度的支持。

■抽象類構(gòu)件的引入為設(shè)計(jì)復(fù)用提供了一定的支持。

?框架構(gòu)件的引入則對面向?qū)ο笤O(shè)計(jì)的復(fù)用提供了充分

的支持。

-而構(gòu)架作為一種系統(tǒng)級的框架,為系統(tǒng)級構(gòu)件組裝提

供了支持。

?青鳥構(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)勢

?軟件工程界普遍認(rèn)為軟件復(fù)用具有以下優(yōu)勢:

1.提高軟件生產(chǎn)率

2.提高軟件產(chǎn)品質(zhì)量

3.縮短開發(fā)周期

4.降低維護(hù)費(fèi)用

5.便于軟件移植和實(shí)現(xiàn)互操作性

6.支持快速原型開發(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ī)制,

但是尚未對外公開。從管理上和技術(shù)上采納軟件復(fù)用

已經(jīng)是大勢所趨。

軟件復(fù)用的困難

1.系統(tǒng)開發(fā)者缺乏軟件復(fù)用的觀念。

2.制作和整理可復(fù)用構(gòu)件需要增加額外的投資。

3.構(gòu)件不易理解和學(xué)習(xí)。

4.缺乏有效的構(gòu)件庫。

5.缺乏足夠選用的構(gòu)件或者構(gòu)件的質(zhì)量不佳。

6.構(gòu)件不完全符合需求時(shí),不容易修改。

7.構(gòu)件緊密依賴其原有開發(fā)平臺,難以在其他平臺上使用。

8.構(gòu)件依賴于某一程序語言,無法與其他語言的構(gòu)件集成。

9.復(fù)用別人制作的構(gòu)件有心理上的障礙(NotInventedHere和Not

InventedThere綜合癥)。

10.與軟件復(fù)用有關(guān)的版權(quán)問題、合同問題和成本分配問題。

11.缺乏理解、修改和組裝構(gòu)件的支持工具。

12.復(fù)用的收益難于估計(jì)和度量。

?其中的2.5.6.7.8幾點(diǎn)表明對高質(zhì)量的可復(fù)用構(gòu)件存在著很大

的需求,而4.io.n等幾點(diǎn)表明在構(gòu)件開發(fā)者與復(fù)用者之間缺

乏有效的交流,限制了構(gòu)件制作者的創(chuàng)作積極性。

構(gòu)件一般性制作指南

?分析、設(shè)計(jì)和測試階段的成果本身都有被復(fù)用

的潛力,應(yīng)被當(dāng)作RSC;

?在新系統(tǒng)中復(fù)用前期的軟件工程成果往往帶來

對相應(yīng)后期產(chǎn)品的復(fù)用。

?可復(fù)用RSC應(yīng)該以方便復(fù)用的方式被表示,易

于識別,易于獨(dú)立提取,與系統(tǒng)特定的和易變

的成分分隔;在組織內(nèi)部采用一致的機(jī)器可讀

的記號表示分析和設(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)識到復(fù)用的必要性并鼓勵(lì)軟件復(fù)用。好的

需求規(guī)約應(yīng)該只規(guī)定所需的功能和性能指標(biāo),允許開發(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ī)會。改變以往將需求

規(guī)約在招標(biāo)之前定住不變的做法,向潛在的承包商提供需

求規(guī)約的草稿,讓開發(fā)者參與進(jìn)來,標(biāo)識出他們認(rèn)為可以

修改并將促進(jìn)復(fù)用的地方,由客戶和承包商共同完成項(xiàng)目

的規(guī)約文檔。

?建議:復(fù)用需求必須解釋什么是復(fù)用和如何評估復(fù)用。為

開發(fā)者指定一個(gè)復(fù)用目標(biāo),比如復(fù)用的代碼、函數(shù)的數(shù)量

等,在合同中為復(fù)用制定獎(jiǎng)勵(lì)措施以鼓勵(lì)復(fù)用。

將可復(fù)用軟件的開發(fā)列入需求

?如果希望所開發(fā)的系統(tǒng)是可復(fù)用的,就應(yīng)該在

需求中顯式聲明出來,并且應(yīng)該使這種項(xiàng)月需

求在客觀上是可測試的。

?建議:這種需求必須定義什么是可復(fù)用性和如

何評估RSC的可復(fù)用性,應(yīng)該規(guī)定對RSC所期

望的復(fù)用范圍(在項(xiàng)目內(nèi)部或者跨項(xiàng)目的復(fù)用,

在不同的OS上復(fù)用等等),規(guī)定與某一復(fù)用標(biāo)

準(zhǔn)的符合程度,規(guī)定RSC所必須具備的文檔,

要求對軟件的可復(fù)用性進(jìn)行測試,以及要求開

發(fā)者對RSC進(jìn)行維護(hù)等。

領(lǐng)域

?領(lǐng)域(Domain)被定義為“一類相關(guān)或相似的軟

件應(yīng)用系統(tǒng)"O從復(fù)用的角度看來,面向領(lǐng)

域的構(gòu)件具有較高的可復(fù)用性。如果組織所關(guān)

注的領(lǐng)域足夠成熟,能夠建立起領(lǐng)域構(gòu)件庫,

那么即使構(gòu)件庫的規(guī)模不大也照樣會有相當(dāng)大

的作用。領(lǐng)域分析(DomainAnalysis)的成果

不僅在復(fù)用者生成應(yīng)用系統(tǒng)時(shí)有用,而且可以

用來組織軟件產(chǎn)品線(ProductLine),管理用

戶需求和輔助構(gòu)件庫進(jìn)行構(gòu)件的分類等。

制作面向領(lǐng)域的可復(fù)用構(gòu)件

?領(lǐng)域分析和領(lǐng)域工程是應(yīng)用系統(tǒng)開發(fā)過

程中最需要經(jīng)驗(yàn)也最缺乏方法和工具支

持的階段之一,領(lǐng)域知識在分析和設(shè)計(jì)

階段有十分重要的作用。如果能夠?qū)㈩I(lǐng)

域知識和模型與本領(lǐng)域的構(gòu)件結(jié)合,將

大大提高應(yīng)用系統(tǒng)的開發(fā)效率

領(lǐng)域分析的作用

?領(lǐng)域分析活動(dòng)不同于通常對特定系統(tǒng)進(jìn)行的需

求分析,它是對特定應(yīng)用領(lǐng)域中已有的系統(tǒng)、

預(yù)期的需求變化和技術(shù)演化進(jìn)行分析,目的是

標(biāo)識出整個(gè)領(lǐng)域中通用的構(gòu)架和相同的功能與

接口。領(lǐng)域分析的結(jié)果將影響到系統(tǒng)需求的取

舍,由此構(gòu)造出的系統(tǒng)由于更適應(yīng)變化的需求,

日后被復(fù)用的可能性也更大。

?建議:要評估領(lǐng)域分析的必要性和可行性。在

適當(dāng)?shù)臅r(shí)機(jī)進(jìn)行領(lǐng)域分析或者采用現(xiàn)有的分析

成果。在利用現(xiàn)有領(lǐng)域分析成果時(shí)應(yīng)該評價(jià)其

適用性,即使整個(gè)構(gòu)架未必可用,仍有可能復(fù)

用某些標(biāo)準(zhǔn)的構(gòu)件和接口。

領(lǐng)域分析的建議

■建議:在評估領(lǐng)域分析的必要性時(shí)有以下評價(jià)準(zhǔn)則,

對這些問題的回答應(yīng)該大多數(shù)為“是”:

-本組織還會在同一領(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)架了嗎?

-開發(fā)者是否建造過類似系統(tǒng),是否獲得了足夠的經(jīng)驗(yàn)以

保證所得的領(lǐng)域分析結(jié)果是可用的呢?

-是否有一種要求和確保領(lǐng)域分析的結(jié)果被實(shí)際應(yīng)用了的

機(jī)制呢?比如,一個(gè)小組受命開發(fā)標(biāo)準(zhǔn)的構(gòu)架后,是否

有一種方式讓其它開發(fā)小組獲知并采用領(lǐng)域分析的成果

呢?

-有否一種方式在受益于領(lǐng)域分析結(jié)果的小組之間分?jǐn)傤I(lǐng)

域分析的成本?

領(lǐng)域分析的建議

建議:在評估領(lǐng)域分析的必要性時(shí)有以下評價(jià)

準(zhǔn)則,對這些問題的回答應(yīng)該大多數(shù)為“是”

-要建造的系統(tǒng)是該領(lǐng)域的一個(gè)代表嗎?領(lǐng)域構(gòu)架會

適用嗎?

-到底什么是可用的?如果只有一個(gè)構(gòu)架模型和部件

列表而沒有可復(fù)用的詳細(xì)設(shè)計(jì)或者代碼構(gòu)件,也許

就不會節(jié)省很多成本了。

-如果詳細(xì)設(shè)計(jì)和代碼構(gòu)件是可用的,它們提供了多

少要求的功能呢?

-構(gòu)架達(dá)到了哪個(gè)層次的標(biāo)準(zhǔn)?為了組織內(nèi)部有更多

共同之處而使用這個(gè)構(gòu)架和(或)接口會獲益嗎?

-分析結(jié)果在實(shí)踐中被證明了嗎?有多少可信度?

領(lǐng)域分析的建議

?建議:即使沒有時(shí)間或能力進(jìn)行完整的

領(lǐng)域分析,仍然可以快速標(biāo)識出本領(lǐng)域

中可復(fù)用的子系統(tǒng)和接口(比如標(biāo)準(zhǔn)設(shè)

備、通信協(xié)議、用戶接口、應(yīng)用算法

等),為今后的開發(fā)儲備“零部件”。

?建議:在應(yīng)用領(lǐng)域分析成果時(shí),應(yīng)該及

時(shí)提供反饋,補(bǔ)充或改進(jìn)其成分,促進(jìn)

領(lǐng)域模型隨實(shí)際領(lǐng)域的演化而演化。

構(gòu)件庫的管理流程

圖1.構(gòu)件庫的韶淵g

構(gòu)件的登記表格

?構(gòu)件的登記表格中有下列屬性:

1.名稱:每個(gè)構(gòu)件都必須有一人確定的名稱,該名稱

必須完整地標(biāo)識了該構(gòu)件的本質(zhì)。如stack,resource

manager等。

2.作者:即制作或提供該構(gòu)件的單位或個(gè)人的名稱,

以及聯(lián)絡(luò)地址等相關(guān)信息。

3.制作日期:即構(gòu)件制作的完成日期。

4.入庫日期:即構(gòu)件進(jìn)入構(gòu)件庫的日期。

5.版本號:即該構(gòu)件在一組構(gòu)件演化系列中相應(yīng)的版

一號。

6.使用環(huán)境:即使用(包括理解/組裝/修改)該構(gòu)件時(shí)

必須提供的硬件和軟件平臺。如所需的特定的硬件

環(huán)境、操作系統(tǒng)、數(shù)據(jù)庫平臺和網(wǎng)絡(luò)環(huán)境等。

7.應(yīng)用領(lǐng)域:即該構(gòu)件原來或可能被使用到的應(yīng)用領(lǐng)域

(及其子領(lǐng)域)的名稱。如MIS,CAI等。

8.用途:即該構(gòu)件在被應(yīng)用的領(lǐng)域中所發(fā)揮的作用。

9.功能:即該構(gòu)件在原有或可能的軟件系統(tǒng)中所提供的

軟件功能集。

10.表示方法:即用來描述該構(gòu)件內(nèi)容的語言形式或媒體。

如源代碼構(gòu)件所用的編程語言等。

11.形態(tài):即該構(gòu)件的組成成分及其相互關(guān)系。如類、類

樹、框架、模塊等。

12.層次:即該構(gòu)件相對于軟件開發(fā)過程階段的抽象層次。

如分析、設(shè)計(jì)、編碼等。

13.上下文環(huán)境:即該構(gòu)件在組裝時(shí)系統(tǒng)所必須提供的程

序級上下文環(huán)境。

14.尺寸(size):即該構(gòu)件的大小。

15.創(chuàng)作工具:即構(gòu)件的制作者在制作該構(gòu)件時(shí)所使用的

軟件工具。

構(gòu)件庫的分類策略

?一個(gè)刻面分類模式由一組描述構(gòu)件本質(zhì)特征的

刻面所組成,每個(gè)刻面從不同的側(cè)面對構(gòu)彳牛庫

中的構(gòu)件進(jìn)行分類。

?例如,這組刻面可以是構(gòu)件的應(yīng)用領(lǐng)域、功能、

操作對象、使用環(huán)境等。

?每個(gè)刻面是由一組基本的術(shù)語(即關(guān)鍵詞)所構(gòu)

成的(稱為術(shù)語空間termspace)。一個(gè)構(gòu)件可以

被每個(gè)刻面中的一個(gè)或多個(gè)術(shù)語所刻劃(刻面術(shù)

語是一個(gè)確定的集合),而每個(gè)刻面則反映了對

庫中構(gòu)件的一種劃分,因此用戶可以直觀地從

不同的角度指明待檢索的構(gòu)件,也有利于用戶

對構(gòu)件的理解。

刻面分類策略的特性

1.刻面必須充分并明確地描述構(gòu)件庫中全體構(gòu)件,即每一

個(gè)構(gòu)件都可以用該刻面來分類。

2.每一個(gè)刻面與一個(gè)術(shù)語空間相關(guān)聯(lián)。任意兩個(gè)刻面的術(shù)

語空間是正交的,即一個(gè)刻面的術(shù)語發(fā)生變化不會影響

到另一個(gè)刻面的術(shù)語空間。

3.一個(gè)刻面的術(shù)語空間為有限的不定空間(finite&indefinite

space),即可以隨時(shí)間的演進(jìn)而動(dòng)態(tài)地增加和刪除術(shù)語。

4.每一個(gè)構(gòu)件的所有刻面必須予以定義,不允許在對構(gòu)件

分類時(shí)有未定義的刻面;但查詢時(shí),用戶可以利用任意

數(shù)目的刻面來查詢。

5.構(gòu)件庫管理者對構(gòu)件進(jìn)行分類時(shí),應(yīng)該針對每一個(gè)刻面,

從術(shù)語空間中選擇適當(dāng)?shù)模ǘ鄠€(gè))術(shù)語,以完成構(gòu)件的封裝

工作。

6.在一個(gè)術(shù)語空間中的術(shù)語按一般/特殊關(guān)系形成樹狀的層

次結(jié)構(gòu),每一個(gè)術(shù)語附帶有不定數(shù)目的同義詞(術(shù)語間可

以具有同義詞關(guān)系)。...........................

刻面分類策略的好處

?構(gòu)件庫管理者通過將刻面與對應(yīng)的術(shù)語

相聯(lián)結(jié),可以在構(gòu)件間建立復(fù)雜的聯(lián)系。

與一般的層次分類策略相比,刻面分類

策略更易于修改,更富有彈性,因?yàn)閷?/p>

一個(gè)刻面的修改不會影響到其它的刻面。

同時(shí),每個(gè)刻面對應(yīng)一個(gè)結(jié)構(gòu)化佰術(shù)語

空間,避免了一般的關(guān)鍵詞分類策略的

雜亂無章,使得對關(guān)鍵詞的管理更為方

彳更和有序。

屬性與刻面的區(qū)別

刻面是構(gòu)件屬性的一個(gè)子集。屬性絕大部分是

由構(gòu)件的制作者或提供者提供的,而刻面則完

全是由構(gòu)件庫的管理者規(guī)定的,構(gòu)件的制作者

或提供者完全不需要了解它們。

刻面是構(gòu)件的復(fù)用者在查詢構(gòu)件時(shí)最感興趣的

構(gòu)件屬性。在查詢時(shí)復(fù)用者通過選擇刻面的術(shù)

語,可以明確地限定構(gòu)件的范疇,不會有遺漏

的構(gòu)件。

術(shù)語空間

?在刻面分類策略中,每個(gè)刻面關(guān)聯(lián)了一

個(gè)合法術(shù)語的結(jié)構(gòu)化集合-術(shù)語空間,在

構(gòu)件的分類和查找中用到的術(shù)語均來自

于這些術(shù)語空間。

?術(shù)語空間的結(jié)構(gòu)反映了術(shù)語間的語義關(guān)

系,因此術(shù)語空間可以看做是一種語義

網(wǎng),而構(gòu)件從外部來看,都是一組刻面

術(shù)語的集合。

術(shù)語的兩種關(guān)系

?即一般/特殊關(guān)系和同義詞關(guān)系,這是基于以下

兩個(gè)目的:

-簡化術(shù)語的定位。用戶可以沿著術(shù)語間的關(guān)系迅速對術(shù)

語進(jìn)行定位。同時(shí),用戶要查找的術(shù)語可能不夠精確,

由于習(xí)慣不同,使用的術(shù)語也不盡相同,因而查找時(shí)容

易出現(xiàn)術(shù)語的不匹配(mismatch)。利用這兩種關(guān)系,既

可以統(tǒng)一用戶間術(shù)語使用上的差異,又可以幫助用戶將

自己的檢索需求進(jìn)一步修正和細(xì)化,這也是一個(gè)逐步求

精的過程

-檢索到所需改動(dòng)最少的構(gòu)件。若沒有發(fā)現(xiàn)刻面術(shù)語與用

戶要查找的術(shù)語正好匹配的構(gòu)件,那么構(gòu)件庫管理系統(tǒng)

就會讓用戶檢查那些刻面術(shù)語與用戶要查找的術(shù)語相接

近的構(gòu)件。這種找到相似構(gòu)件的機(jī)制稱為“松馳查

找”(relaxationofsearch)。這樣用戶可以在構(gòu)件庫現(xiàn)有

的構(gòu)件中找到所需改動(dòng)最少的構(gòu)件,提高復(fù)用的效率。

青鳥構(gòu)件庫的刻面

?刻面的定義

-1.使用環(huán)境(ApplicationEnvironment)

-2.應(yīng)用領(lǐng)域(ApplicationDomain)

-3.功能(Functionality)

-4.層次(LevelofAbstraction)

-5.表示方法(Representation)

構(gòu)件庫的實(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)件庫的查詢策略

?使用者可以按刻面進(jìn)行查詢。即通過選擇任意刻面的一個(gè)

或多個(gè)術(shù)語,就可以迅速限定構(gòu)件的范疇。

-除了刻面查詢外,使用者可根據(jù)構(gòu)件的任意屬性進(jìn)行輔助

查詢。

?使用者在查詢構(gòu)件過程中,可隨時(shí)通過超文本(hypertext)瀏

覽器對庫中構(gòu)件進(jìn)行有層次地瀏覽。

?構(gòu)件庫提供了類似“服務(wù)臺”的機(jī)制。使用者在查詢構(gòu)件

過程中,可以向“服務(wù)臺”求助,也可以向它提出自己的

意見和建議。

?使用者找到一個(gè)構(gòu)件時(shí),構(gòu)件庫可以顯示出與該構(gòu)件有某

種關(guān)系的所有構(gòu)件。

-較為熟練的使用者可以用類似SQL查詢語句的形式,以構(gòu)件

的屬性和刻面作為條件變量,并允許查詢條件的與、或、

非的任意組合。

?上面提到的查詢方法可以任意組合,逐步求精,并允許查

詢過程的回溯...........................

構(gòu)件庫的管理過程

?項(xiàng)目中每個(gè)開發(fā)者都應(yīng)在構(gòu)件庫中建立帳戶

?盡量避免復(fù)用還沒有進(jìn)入構(gòu)件庫的構(gòu)件

?為構(gòu)件庫提供對構(gòu)件和構(gòu)件庫支持工具的使用

經(jīng)驗(yàn)和反饋

?將復(fù)用構(gòu)件時(shí)遇到的所有問題通知構(gòu)件庫

?將構(gòu)件的更新版本和增強(qiáng)版本提交給構(gòu)件庫

對構(gòu)件的選擇和提取

?使用構(gòu)件庫提供的材料決定構(gòu)件的選取

-在選取構(gòu)件前檢查構(gòu)件的相關(guān)信息

-檢查構(gòu)件的質(zhì)量和可復(fù)用性等級,以及構(gòu)件的推薦

意見

?提取完整的構(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)件庫會將構(gòu)件的構(gòu)件描述語言、

摘要、使用樣例、分類信息等作為構(gòu)件的一部分一

起提取出來

?提供反饋日期等信息

-反饋日期通常在提取后的三個(gè)月內(nèi)

需求分析

?需求分析時(shí),應(yīng)首先查詢構(gòu)件庫,根據(jù)用戶需求確定

構(gòu)件庫中是否有相似的構(gòu)架和子系統(tǒng),或在該領(lǐng)域中

是否有對應(yīng)的領(lǐng)域分析構(gòu)件

需求分析

建立復(fù)用需求并盡早發(fā)現(xiàn)復(fù)用的機(jī)會

?在提交具體需求前,要檢查構(gòu)件庫中是

否有可以復(fù)用的構(gòu)件

?避免在需求分析階段將需求過分細(xì)化

?要參照構(gòu)件庫的分類模式指定系統(tǒng)需求

?盡量選擇支持復(fù)用程度更高的開發(fā)方法

和工具

對領(lǐng)域分析構(gòu)件的復(fù)用

領(lǐng)域分析過程采取的主要步驟

1.知識獲取(KnowledgeAcquisition)---收集和分析

與問題域相關(guān)的信息,并將這種信息用該領(lǐng)域內(nèi)部

和外部的對象來描述。

2.領(lǐng)域定義(DomainDefinition)---對知識獲取階段

標(biāo)識出的對象進(jìn)行分析,以便定義出領(lǐng)域的范圍和

具體邊界。

3.模型建立(ModelFormulation)---對領(lǐng)域定義階段

標(biāo)識為領(lǐng)域內(nèi)部的對象進(jìn)行建模,以便進(jìn)一步地理

解它們在領(lǐng)域中扮演的角色。

4.模型演化(ModelEvolution)——將模型進(jìn)行進(jìn)一步

地分析和精化,以開發(fā)出該領(lǐng)域的分類(taxonomic)

模型,用于表示出該模型的組織結(jié)構(gòu)和語義

領(lǐng)域分析過程的產(chǎn)品

?功能層次(FunctionalHierarchy)---一個(gè)功能需求的層

次性模型。

,實(shí)體一關(guān)系模型(Entity-RelationshipModel)----顯示領(lǐng)

域內(nèi)各對象間關(guān)系和接口的模型。

?類屬的軟件構(gòu)架(GenericSoftwareArchitecture)---以

軟件構(gòu)件的形式表示出的E-R模型中的對象。

?分類(Taxonomy)——提供了一個(gè)用于定義領(lǐng)域內(nèi)對象的分

類模式。

?標(biāo)準(zhǔn)需求(StandardRequirements)---涉及該問題域的系

統(tǒng)都必須滿足的一套類屬性的需求。

,領(lǐng)域特定的語言(Domain-SpecificLanguage)----用于描

述和分類領(lǐng)域特定構(gòu)件的詞匯。

?設(shè)計(jì)和開發(fā)準(zhǔn)則(DesignandDevelopment

Guidelines)——基于組成該領(lǐng)域的構(gòu)架和構(gòu)件的一個(gè)類屬

性的開發(fā)框架。

復(fù)用已有的構(gòu)架和子系統(tǒng)

?檢查構(gòu)件庫中可復(fù)用的構(gòu)架和子系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論