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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論