Tải bản đầy đủ (.pdf) (7 trang)

Các giải thuật tìm kiếm và lựa chọn thành phần Cots tối ưu theo các tiêu chí giá thành và dữ thừa dữ liệu - Trường Đại Học Quốc Tế Hồng Bàng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (312.71 KB, 7 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

Ta.p ch´ı Tin ho.c v`a Diˆe` u khiˆe’n ho.c, T.23, S.2 (2007), 153–163


C ´AC GIA’I THU ˆA<sub>. T T</sub>`IM KIˆE´M V `A LU<sub>. A CHO</sub>. <sub>. N TH</sub>ANH PH ˆ` `AN COTS T ˆO´I U.U
THEO C ´AC TIˆEU CH´I GI ´A TH `ANH V `A DU.TH `U.A D ˜U.LIˆE<sub>. U</sub>


HU `YNH QUYˆE´T TH˘A´NG1<sub>, PHA.M THI. QU`</sub>YNH2


1<sub>Khoa CNTT, Tru.`</sub><sub>o.ng DHBK H`</sub><sub>a Nˆ</sub><sub>o.i</sub>
2<sub>Khoa CNTT, Tru.`</sub><sub>o.ng DHSP H`</sub><sub>a Nˆ</sub><sub>o.i</sub>


Abstract. <sub>Component-based software development is gaining recognition as the key technology for</sub>
the construction of high-quality, evolvable and large software systems in timely and affordable
man-ners. Commercial components (COTS) is being used more and more in Component-Based Software
Engineering for building software applications, and accordingly, some mechanisms are demanded by
developers of software applications to describe, search, select and compose COTS components. In
this paper we presented two algorithms applied to select COTS components witth optimization of
cost and data redunancy (size). The proposed algorithms are realized based on .NET platform and
experimented on case study Geographic Translator Service. The comparison between proposed and
original algorithm also is presented.


T´om t˘a´t. <sub>Ph´</sub><sub>at triˆe’n phˆ</sub><sub>` n mˆe</sub><sub>a</sub> <sub>` m hu.´o.ng th`anh phˆa</sub><sub>` n (ComponentBased Software Development </sub>
-CBSD) l`a mˆ<sub>o.t trong nh˜u.ng k˜y thuˆa.t tiˆeu biˆe’u xˆay du..ng c´ac phˆa</sub>` n mˆe<sub>` m l´o.n, ph´u.c ta.p, gi´up gia’m</sub>
th`o.i gian, cˆong s´u.c v`a gi´a th`anh xˆay du.<sub>. ng phˆ</sub>` n mˆea ` m. C´ac th`anh phˆa<sub>` n thu.o.ng ma.i (COTS) dang</sub>
du.o..c su.’ du.ng ng`ay c`ang nhiˆe` u trong cˆong nghˆe. phˆa`n mˆe` m du..a th`anh phˆa`n dˆe’ xˆay du..ng c´ac ´u.ng
du.ng phˆa` n mˆe<sub>` m, v`a do d´o c´ac nh`a ph´at triˆe’n ´u.ng du.ng d˜a yˆeu cˆa`u mˆo.t sˆo´ co. chˆe´ dˆe’ mˆo ta’, t`ım kiˆe´m,</sub>
lu.<sub>. a cho.n v`</sub>a xˆay du.<sub>. ng c´ac th`</sub>anh phˆ<sub>` n COTS. Trong b`ai b´ao n`ay ch´ung tˆoi tr`ınh b`ay gia’i thuˆa.t lu..a</sub>a
cho.n c´ac th`anh phˆa` n COTS tˆo´i u.u theo du. th`u.a d˜u. liˆe.u (k´ıch thu.´o.c) v`a gi´a th`anh, dˆe’ t´ıch ho..p trong
phˆ` n mˆea ` m cˆa<sub>` n xˆay du..ng. Thuˆa.t to´an dˆe</sub><sub>` xuˆa´t c´o dˆo. ph´u.c ta.p chˆa´p nhˆa.n du.o..c. C´ac thu.’ nghiˆe.m</sub>
du.o..c thu..c hiˆe.n trˆen mˆo.t b`ai to´an cu. thˆe’: Thiˆe´t kˆe´ di.ch vu. chuyˆe’n dˆo’i khuˆon da.ng c´ac a’nh khˆong
gian.



1. MO’ D ˆ. ` UA


Ph´at triˆe’n phˆa` n mˆe<sub>` m du..a th`anh phˆa`n (CBSD) cho ph´ep ngu.`o.i ph´at triˆe’n ta.o ra nh˜u.ng</sub>
´


u.ng du.ng d`ung mˆo.t phˆa` n phˆa` n mˆe<sub>` m du.o..c go.i l`a c´ac th`anh phˆa`n. Th`anh phˆa`n phˆa`n mˆe</sub>` m
l`a mˆo.t do.n vi. cˆa´u th`anh v´o.i giao diˆe.n du.o..c tho’a thuˆa.n tru.´o.c v`a chı’ phu. thuˆo.c du.´o.i g´oc dˆo.
nˆo.i dung d˜a r˜o r`ang, ch´ung c´o kha’ n˘ang liˆen kˆe´t, tu.o.ng t´ac v´o.i nhau h`ınh th`anh nˆen mˆo.t hˆe.
thˆo´ng m´o.i. Th`anh phˆa` n phˆa` n mˆe<sub>` m c´o thˆe’ du.o..c triˆe’n khai mˆo.t c´ach dˆo.c lˆa.p. COTS l`a mˆo.t</sub>
th`anh phˆa` n phˆa` n mˆe<sub>` m mang t´ınh thu.o.ng ma.i (c´o thˆe’ du.o..c cˆa´p giˆa´y ph´ep, ho˘a.c du.o..c b´an)</sub>
cho ph´ep d´ong g´oi, phˆan phˆo´i, lu.u gi˜u., su.’ a ch˜u.a v`a tu`y biˆe´n theo ´y ngu.`o.i su.’ d`ung, nh˜u.ng
th`anh phˆa<sub>` n n`ay thu.`o.ng l´o.n v`a du.o..c lu.u tr˜u. trong c´ac kho phˆa`n mˆe`m.</sub>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

154 HU `YNH QUYˆE´T TH˘A´NG, PHA.M THI. QU`YNH


nhu. hˆe. diˆe` u h`anh, co. so.’ d˜u. liˆe.u, hˆe. thˆo´ng tin nh˘a´n, thu. diˆe.n tu.’, GIS, GUI builders... C´ac
sa’n phˆa’m n`ay gˆo`m c´ac ´<sub>u.ng du.ng v`a c´ac th`anh phˆa</sub><sub>` n ho`an thiˆe.n v`a d˜a c´o m˘a.t trˆen thi. tru.`o.ng</sub>
CNTT. Sˆo´ lu.o..ng c´ac th`anh phˆa` n COTS dang tiˆe´p tu.c gia t˘ang, chˆa´t lu.o..ng c˜ung nhu. kha’
n˘ang ´<sub>u.ng du.ng cu’a n´o ng`ay c`ang du.o..c ca’i thiˆe.n. Ho.n n˜u.a, ph´at triˆe’n phˆa</sub>` n mˆe<sub>` m du..a trˆen</sub>
c´ac th`anh phˆa<sub>` n COTS c`on cung cˆa´p kha’ n˘ang mo.’ rˆo.ng v`a biˆe´n dˆo’i c´ac ´u.ng du.ng phˆa`n mˆe`m</sub>
thˆong qua c´ac h`am APIs, c´ac ngˆon ng˜u. plug- ins v`a script. T`u. d´o, n´o c´o thˆe’ ph`<sub>u ho..p v´o.i</sub>
nhu cˆa<sub>` u su.’ du.ng cu’a t`u.ng mu.c d´ıch, r`ang buˆo.c kh´ac nhau.</sub>


Trong ph´at triˆe’n phˆa` n mˆe<sub>` m du..a th`anh phˆa`n COTS, viˆe.c lu..a cho.n th`anh phˆa`n COTS</sub>
ph`<sub>u ho..p l`a mˆo.t trong nh˜u.ng b`ai to´an rˆa´t quan tro.ng. Trong b`ai b´ao n`ay ch´ung tˆoi tˆa.p trung</sub>


H`ınh 1. Tiˆe´n tr`ınh xˆay du.<sub>. ng phˆa</sub>` n mˆe` m
du.<sub>. a trˆen c´ac th`anh phˆa</sub>` n COTS
v`ao nghiˆen c´u.u mo.<sub>’ rˆo.ng gia’i thuˆa.t lu..a</sub>



cho.n c´ac tˆo’ ho..p th`anh phˆa` n ´u.ng cu.’ viˆen
COTS cho kiˆe´n tr´uc phˆa` n mˆe` m cˆa` n xˆay
du.<sub>. ng. C´ac mo</sub><sub>’ rˆo.ng trong gia’i thuˆa.t lu..a</sub>.
cho.n n`ay du.o..c xˆay du..ng trˆen 2 tiˆeu ch´ı:
du. th`u.a d˜<sub>u. liˆe.u cu’a c´ac th`anh phˆa</sub>` n v`a
gi´a th`anh cu’a th`anh phˆa` n. ´Y tu.o.’ ng ch´ung
tˆoi ´ap du.ng trong gia’i thuˆa.t xˆay du..ng gia’i
thuˆa.t lu..a cho.n l`a phu.o.ng ph´ap nh´anh cˆa.n.
Cˆa´u tr´uc cu’a b`ai b´ao du.o.<sub>. c tr`ınh b`ay</sub>
nhu. sau. Mu.c 2 tr`ınh b`ay vˆe` tiˆe´n tr`ınh xˆay
du.<sub>. ng phˆa</sub>` n mˆe<sub>` m du..a th`anh phˆa`n COTS.</sub>
Mu.c 3 s˜e tr`ınh b`ay gia’i thuˆa.t
COTSCon-figs v`a nh˜u.ng d´anh gi´a vˆe` c´ac kha’ n˘ang mo.’
rˆo.ng v`a tˆo´i u.u thuˆa.t to´an. Tiˆe´p theo, Mu.c
4 l`a c´ac mo.<sub>’ rˆo.ng dˆe</sub><sub>` xuˆa´t cho thuˆa.t to´an</sub>
COTSConfigs. Trong Mu.c 5 l`a c´ac mo.’
rˆo.ng thˆong tin trong d˘a.c ta’ COTS
Doc-ument dˆe’ lu.u tr˜u. gi´a th`anh th`anh phˆa` n.
Mu.c 6 tr`ınh b`ay c´ac d´anh gi´a thu.’ nghiˆe.m
d˜a thu.<sub>. c hiˆe.n v´o</sub>.i c´ac gia’i thuˆa.t dˆe` xuˆa´t,
cuˆo´i c`<sub>ung l`a kˆe´t luˆa.n v`a hu.´o.ng ph´at triˆe’n.</sub>


2. TIˆE´N TR`INH PH ´AT TRIˆE’N PH ˆA` N Mˆ` ME
DU<sub>. A TR</sub>. EN C ´ˆ AC TH `ANH PH ˆ` N COTSA


Mˆo h`ınh tiˆe´n tr`ınh ph´at triˆe’n phˆa` n mˆe` m hu.´o.ng th`anh phˆa<sub>` n du..a trˆen c´ac th`anh phˆa`n</sub>
COTS, mˆo ta’ trong H`ınh 1, du.o.<sub>. c chia th`anh ba giai doa.n ([1, 5, 6]):</sub>


Giai doa.n 1: Su.<sub>’ du.ng c´ac cˆong cu. mˆo h`ınh h´oa (v´ı du. UML-RT cu’a bˆo. cˆong cu. Rational</sub>
Rose) dˆe’ mˆo ta’ v`a thiˆe´t kˆe´ kiˆe´n tr´uc phˆa` n mˆe<sub>` m. Mˆa˜u d˘a.c ta’ du.o..c xˆay du..ng v`a tr`ınh b`ay</sub>


trong [1, 5].


Giai doa.n 2: Su.<sub>’ du.ng mˆo.t tiˆe´n tr`ınh tu.. dˆo.ng dˆe’ xuˆa´t c´ac thˆong tin t`u. k´y ph´ap UML - RT</sub>
th`anh c´ac mˆa˜u d˘a.c ta’ XML.


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

C ´AC GIA’ I THUˆA<sub>. T T`</sub>IM KI ˆE´M V`A LU<sub>.</sub>.A CHO<sub>. N TH `</sub>ANH PH ˆ` N COTS T ˆA O´I U.U 155


viˆen trong kho ch´u.a mˆa˜u XML. Co. so.<sub>’ cu’a tiˆe´n tr`ınh n`ay l`a gia’i thuˆa.t COTSTrader. Gia’i</sub>
thuˆa.t d˜a du.o..c tr`ınh b`ay chi tiˆe´t trong [1].


Tiˆe´p theo tiˆe´n tr`ınh t`ım kiˆe´m l`a tiˆe´n tr`ınh COTSConfigs lu.<sub>. a cho.n tˆo’ ho</sub><sub>. p th`anh phˆa</sub>. ` n t`u.
danh s´ach th`anh phˆa<sub>` n ´u.ng cu.’ viˆen dˆe’ ta.o ra c´ac cˆa´u h`ınh tho’a m˜an kiˆe´n tr´uc phˆa`n mˆe</sub>` m yˆeu
cˆa<sub>` u. Trong [1, 2, 3] c˜ung tr`ınh b`ay chi tiˆe´t gia’i thuˆa.t COTSConfigs, ´ap du.ng tu. tu.o.’ng v´et ca.n</sub>
c´ac tru.`o.ng ho..p tho’a m˜an cˆa´u h`ınh. Mˆo.t sˆo´ ca’i tiˆe´n cu’a gia’i thuˆa.t n`ay c˜ung d˜a du.o..c tr`ınh
b`ay trong [5, 6].


Bu.´o.c cuˆo´i c`<sub>ung trong giai doa.n n`ay, khi tˆa´t ca’ c´ac cˆa´u h`ınh d˜a du.o..c sinh, ch´ung ta thu..c</sub>
hiˆe.n bu.´o.c d´ong g´oi c´ac cˆa´u h`ınh dˆe’ ta.o ra mˆo.t ´u.ng du.ng ho`an chı’nh.


Tro.ng tˆam cu’a b`ai b´ao tˆa.p trung v`ao bu.´o.c th´u. hai cu’a giai doa.n 3 - tiˆe´n tr`ınh COTSConfigs
lu.<sub>. a cho.n tˆo’ ho</sub><sub>. p th`anh phˆa</sub>. ` n.


3. THU ˆA<sub>. T TO</sub>AN COTSConfigs LU´ <sub>. A CHO</sub>. <sub>. N T</sub>Oˆ’ HO<sub>. P</sub>.
C ´AC TH `ANH PH ˆA` N COTS


3.1. Mˆo ta’ b`ai to´an


Tiˆe´n tr`ınh sinh c´ac cˆa´u h`ınh t`<sub>u. tˆa.p c´ac th`anh phˆa</sub><sub>` n ´u.ng viˆen l`a mˆo.t qu´a tr`ınh quan tro.ng</sub>
trong to`an bˆo. qu´a tr`ınh t`ım kiˆe´m c´ac th`anh phˆa` n COTS. Tiˆe´n tr`ınh n`ay s˜e lu..a cho.n tˆa.p c´ac
th`anh phˆa<sub>` n ph`u ho..p nhˆa´t v´o.i kiˆe´n tr´uc phˆa`n mˆe`m cˆa`n xˆay du..ng. Diˆe</sub><sub>` u kiˆe.n ph`u ho..p o.’ dˆay</sub>


l`a pha’i lu.<sub>. a cho.n c´ac th`anh phˆa</sub><sub>` n sao cho tˆa.p di.ch vu. m`a cˆa´u h`ınh d´ap ´u.ng du.o..c pha’i kh´o.p</sub>
v´o.i tˆa.p di.ch vu. yˆeu cˆa` u cu’a kiˆe´n tr´uc phˆa` n mˆe` m cˆa<sub>` n xˆay du..ng.</sub>


B`ai to´an lu.<sub>. a cho.n tˆo’ ho</sub><sub>. p c´ac th`anh phˆa</sub>. <sub>` n COTS du.o..c ph´at biˆe’u nhu. sau ([1]): Cho mˆo.t</sub>
kiˆe´n tr´uc phˆa` n mˆe<sub>` m A. C´o mˆo.t kho B ch´u.a to`an bˆo. c´ac th`anh phˆa`n ´u.ng viˆen COTS ph`u ho..p</sub>
dˆe’ lu.<sub>. a cho.n t´ıch ho</sub><sub>. p v`ao A. Cˆa</sub>. <sub>` n pha’i sinh ra c´ac cˆa´u h`ınh S l`a tˆa.p ho..p cu’a c´ac th`anh phˆa`n</sub>
´


u.ng viˆen COTS c´o trong B, sao cho cˆa´u h`ınh S d´ap ´<sub>u.ng c´ac di.ch vu./ch´u.c n˘ang m`a A yˆeu</sub>
cˆa` u. Nhu. vˆay cˆa´u h`ınh S cˆa` n d´ap ´u.ng hai diˆe<sub>` u kiˆe.n:</sub>


(i) Tˆa.p c´ac di.ch vu. du.o..c hˆo˜ tro.. bo.’i c´ac th`anh phˆa` n cu’a S pha’i tr`ung v´o.i tˆa.p c´ac di.ch vu.
du.o.<sub>. c hˆo˜ tro</sub><sub>. bo</sub>. ’ i A (t´. <sub>u.c l`a khˆong c´o c´ac lˆo˜ hˆo’ng di.ch vu.).</sub>


(ii) Khˆong c´o hai th`anh phˆa<sub>` n n`ao cu’a S cung cˆa´p c`ung mˆo.t di.ch vu. chung (t´u.c l`a khˆong</sub>
c´o di.ch vu. tr`ung)


Sau dˆay l`a thuˆa.t to´an s˜e sinh ra c´ac cˆa´u h`ınh S ([1]).
Gia’i thuˆa<sub>.t COTSConfigs</sub>


1 function COTSconfigs(i, Sol, S)


2 // 1 6 i 6size(CB(A)) kha’o s´at qua tˆa´t ca’ c´ac kha’ n˘ang c´o trong kho CB(A)


(ch´u.a danh s´ach c´ac th`anh phˆa` n ´u.ng cu.’ viˆen)


3 //Sol <sub>l`a cˆa´u h`ınh ta.m hiˆe.n th`o.i dang du.o..c xˆay du..ng trong gia’i thuˆa.t</sub>
4 //S ch´u.a du.<sub>. ng tˆa.p ho</sub><sub>. p tˆa´t ca’ c´ac cˆa´u h`ınh c´o gi´a tri. dˆo´i v´o</sub>. .i kiˆe´n tr´uc A
5 if i6size(CB(A)) then



6 for j:= 1to size(Ci.R) do//thu.<sub>. c hiˆe.n v´o</sub>.i tˆa´t ca’ c´ac di.ch vu. trong C1


7 // thu.<sub>’ gom di.ch vu.</sub>Ci.Ri v`aoSol


8 if {Ci.Ri} ∩Sol.R=∅then //Ci.Ri6∈Sol:R?


9 Sol:=Sol∪ {Ci.Ri}


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

156 HU `YNH QUYˆE´T TH˘A´NG, PHA.M THI. QU`YNH


11 S :=S∪ {Sol} // Nˆe´uSol <sub>l`a mˆo.t cˆa´u h`ınh, n´o s˜e du.o..c gom nh´om v`ao</sub>
trong S


12 <sub>else // nhu.ng nˆe´u vˆa˜n c`on c´ac di.ch gˆo´i nhau v`a di.ch vu. tr`ung nhau</sub>
13 configs(i, Sol, S); // t`ım trong Ci...


14 endif


15 Sol:=Sol− {Ci.Ri}


16 endif


17 endfor


18 configs(i+ 1, Sol, S)<sub>// tiˆe´p tu.c trong</sub> CB(A)


19 endif
20 endfunction


C´ac kho.<sub>’ i ta.o cu’a gia’i thuˆa.t l`a</sub> S=;Sol=; configs (1;Sol;S). Mˆo˜i cˆa´u h`ınh (d`ong 9) dˆe` u


du.o.<sub>. c sinh ra b˘a`ng c´ach thu</sub><sub>’ tˆa´t ca’ c´ac ´u.ng cu.’ viˆen, kˆe´t ho..p dˆa`n c´ac di.ch vu.</sub>. Cj.Rj c`on chu.a
ch´u.a trong A, v`a bo’ di nh˜<sub>u.ng di.ch vu. m`a</sub> A <sub>d˜a c´o rˆo`i (d`ong 8 v`a d`ong 10). Khi gia’i thuˆa.t</sub>
kˆe´t th´uc, biˆe´nS s˜e ch´u.a tˆa´t ca’ c´ac cˆa´u h`ınh cˆa` n thiˆe´t.


3.2. D´anh gi´a nhˆa<sub>. n x´</sub>et vˆ` gia’i thuˆe a<sub>. t</sub>


Thuˆa.t to´an ´ap du.ng tu. tu.o.’ng gia’i thuˆa.t quay lui dˆe’ thu..c hiˆe.n qu´a tr`ınh t`ım kiˆe´m lu..a
cho.n c´ac cˆa´u h`ınh ho..p lˆe.. N´o s˜e sinh t`u. tˆa.p ho..p c´ac ´u.ng cu.’ viˆen trong kho B :CB(A) =


{C1, ..., Ck}, v`a t`u. kiˆe´n tr´uc phˆa` n mˆe` m cˆa` n xˆay du..ngA, mˆo.t tˆa.pS c´ac cˆa´u h`ınh ho..p lˆe. (d`ong


11). Khˆong c´o tru.`o.ng ho..p c´ac cˆa´u h`ınh trong S <sub>c`on tˆo`n ta.i c´o lˆo˜ hˆo’ng di.ch vu. (mˆo.t di.ch vu.</sub>
n`ao d´o khˆong du.o.<sub>. c d´ap ´</sub><sub>u.ng) hay c´ac di.ch vu. chˆo`ng ch´eo. Do d´o, gia’i thuˆa.t s˜e chı’ sinh nh˜u.ng</sub>
cˆa´u h`ınh ho..p lˆe.. Tuy nhiˆen, gia’i thuˆa.t n`ay c´o nhu.o..c diˆe’m l`a mˆo.t gia’i thuˆa.t t`ım kiˆe´m v´et
ca.n, v´o.i dˆo. ph´u.c ta.p l`a O(2n


), trong d´on<sub>l`a sˆo´ lu.o..ng c´ac di.ch vu. m`a tˆa´t ca’ c´ac th`anh phˆa</sub>` n
trong CB(A) c´o thˆe’ d´ap ´<sub>u.ng. Khi d´o v´o.i mˆo.t kho c´ac th`anh phˆa</sub>` n ´u.ng viˆen l´o.n, th`ı s˜e dˆa˜n
t´o.i b`<sub>ung nˆo’ tˆo’ ho..p. Qu´a tr`ınh t`ım kiˆe´m nhu. vˆa.y s˜e khˆong kha’ thi.</sub>


4. C ´AC Dˆ` XU ˆE A´T CA’I TIˆE´N GIA’I THU ˆA<sub>. T COTSCONFIGS</sub>
LU<sub>. A CHO</sub>. <sub>. N T</sub>O’ HOˆ <sub>. P C</sub>. AC TH `´ ANH PH ˆA` N COTS


Dˆe’ gia’m dˆo. ph´u.c ta.p cu’a thuˆa.t to´an trˆen, ch´ung ta c´o thˆe’ dˆe` xuˆa´t thay b˘a`ng gia’i thuˆa.t
nh´anh cˆa.n (brand and bound). Tu. tu.o.’ng cu’a thuˆa.t to´an nh´anh cˆa.n l`a nh`o. v`ao mˆo.t sˆo´ c´ac
thˆong tin d˜a c´o dˆe’ nh˘a`m loa.i bo’ b´o.t mˆo.t sˆo´ c´ac phu.o.ng ´an ch˘a´c ch˘a´n khˆong pha’i l`a tˆo´i u.u,
t´<sub>u.c l`a c´o thˆe’ lu.o..c b´o.t mˆo.t sˆo´ n´ut khˆong cˆa</sub><sub>` n thiˆe´t trˆen cˆay t`ım kiˆe´m. Vˆa.y mˆo.t sˆo´ tiˆeu ch´ı c´o</sub>
thˆe’ du.a v`ao dˆe’ t˘ang hiˆe.u qua’ t`ım kiˆe´m nhu.:


- Lu.<sub>. a cho.n th`anh phˆa</sub><sub>` n v´o.i du. th`u.a d˜u. liˆe.u l`a tˆo´i thiˆe’u.</sub>


- Lu.<sub>. a cho.n th`anh phˆa</sub>` n v´o.i tˆo’ng gi´a th`anh l`a tˆo´i thiˆe’u.


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

C ´AC GIA’ I THUˆA<sub>. T T`</sub>IM KI ˆE´M V`A LU<sub>.</sub>.A CHO<sub>. N TH `</sub>ANH PH ˆ` N COTS T ˆA O´I U.U 157


h`ınh khˆong du.o.<sub>. c lu</sub><sub>. a cho.n. V`ı vˆa.y ch´</sub>. ung ta cˆa<sub>` n pha’i xˆay du..ng gia’i thuˆa.t t`ım kiˆe´m, lu..a cho.n</sub>
COTSConfigs sao cho loa.i bo’ nh˜u.ng cˆa´u h`ınh khˆong cˆa` n thiˆe´t n`ay.


Gia’i thuˆa.t nh´anh cˆa.n t`ım kiˆe´m lu..a cho.n c´ac th`anh phˆa` n v´o.i du. th`u.a d˜u. liˆe.u l`a tˆo´i thiˆe’u
du.o.<sub>. c dˆe</sub>` xuˆa´t nhu. sau.


Gia’i thuˆa<sub>.t COTSConfigs ca’i tiˆ</sub>e´n v´o.i du. th`u.a d˜u. liˆ<sub>e.u tˆo´i thiˆe’u</sub>


1 total = numOfInterfaces(CB(A))<sub>//tˆo’ng sˆo´ di.ch vu. cu’a mˆo.t cˆa´u h`ınh</sub>


2 function brandAndBound(i, Sol, S)<sub>//gia’i thuˆa.t nh´anh cˆa.n</sub>


3 if i6size(CB(A)) then


4 for j:= 1to size(Ci.R) do //thu.. c hiˆe.n v´o.i tˆa´t ca’ c´ac di.ch vu. trong C1


// thu.<sub>’ gom di.ch vu.</sub> Ci.Riv`aoSol


5 if {Ci.Ri} ∩Sol.R=∅ then // Ci.Ri6∈Sol:R?


6 Sol:=Sol∪ {Ci.Ri}


7 if A.R⊆Sol.Rthen //


8 if numOfInterface(S)<total then



//sˆo´ di.ch vu. cu’a cˆa´u h`ınh n`ay c`on ´ıt ho.n ca’ ngu.˜o.ng(mu.c tiˆeu) nˆen
//dˆay l`a mˆo.t gi´a tri. cu’a ngu.˜o.ng vˆe` sˆo´ di.ch vu. cu’a mˆo.t cˆa´u h`ınh
m´o.i


9 total := numberOfInterface(S<sub>) // cˆa.p nhˆa.t ngu.˜o.ng m´o.i</sub>
10 S:= // x´oa c´ac kˆe´t qua’ c˜u


11 S:=S∪ {Sol}// du.a Sol<sub>v`ao tˆa.p kˆe´t qua’</sub> S
12 else if numberOfInterface(S) = total then


//tho’a m˜an ngu.˜o.ng vˆe<sub>` sˆo´ di.ch vu.</sub>


13 S:=S∪ {Sol}// du.a Sol<sub>v`ao tˆa.p kˆe´t qua’</sub> S


14 endif


15 <sub>else // nhu.ng nˆe´u vˆa˜n c`on c´ac di.ch vu. gˆo´i nhau ho˘a.c di.ch vu. tr`ung nhau</sub>
16 configs(i, Sol, S)// t`ım trongCi...


17 endif


18 Sol:=Sol− {Ci.Ri}


19 endif


20 endfor


21 if (numberOfInterface(S) + (n−m)×minOfInterface(CB(A))


⇐ total then



22 brandAndBound(i+ 1, Sol, S)


23 endif


24 endif


25 endfunction


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

158 HU `YNH QUYˆE´T TH˘A´NG, PHA.M THI. QU`YNH


Tu.o.ng tu.<sub>. nhu</sub>. gia’i thuˆa.t chuˆa’n COTSConfigs ch´ung ta c˜ung lˆa`n lu.o..t thu.’ c´ac cˆa´u h`ınh
(d`ong 5 v`a 6). Ch´ung ta thˆem v`ao kiˆe’m tra xemSol <sub>c´o l`a mˆo.t cˆa´u h`ınh khˆong v`a nˆe´u d´ung,</sub>
kiˆe’m tra cˆa´u h`ınh n`ay c´o tˆo´i thiˆe’u vˆe<sub>` d˜u. liˆe.u khˆong (d`ong 9). Gia’ su.’ ta.i mˆo.t th`o.i diˆe’m trong</sub>
qu´a tr`ınh t`ım kiˆe´m ta c´o, kiˆe´n tr´uc A cˆa` nn <sub>di.ch vu., m`a l´uc n`ay</sub> Sol d˜a tho’a m˜an du.o.<sub>. c</sub> m
di.ch vu. cu’aA<sub>. Nhu. vˆa.y, c`on cˆa</sub>` nn−m<sub>di.ch vu. cu’a</sub>An˜u.a th`ıSol<sub>tho’a m˜an l`a mˆo.t cˆa´u h`ınh.</sub>
Tˆo`i nhˆa´t, l`a m−n <sub>di.ch vu. n`ay n˘a`m trˆen</sub>n−m th`anh phˆa<sub>` n kh´ac nhau. Nhu. vˆa.y, diˆe`u kiˆe.n</sub>
dˆe’ tiˆe´p tu.c t`ım kiˆe´m l`a tˆo’ng: (sˆo´ di.ch vu. hiˆe.n c´o cu’aSol<sub>cˆo.ng v´o.i</sub>(n−m) th`anh phˆa` n nhˆan
v´o.i sˆo´ di.ch vu. nho’ nhˆa´t c´o thˆe’ cu’a mˆo.t th`anh phˆa` n) pha’i nho’ ho.n ngu.˜o.ng tˆo’ng sˆo´ di.ch vu..
Nˆe´u tho’a m˜an th`ı tiˆe´p tu.c t`ım kiˆe´m, c`on khˆong th`ı d`u.ng qu´a tr`ınh t`ım kiˆe´m.


4.2. Ca’i tiˆe´n gia’i thuˆa<sub>.t lu</sub><sub>. a cho.n th`</sub>. anh phˆ` n v´a o.i tˆo’ng gi´a th`anh tˆo´i thiˆe’u


Nhu. ta d˜a biˆe´t, c´ac th`anh phˆa` n COTS l`a c´ac th`anh phˆa<sub>` n du.o..c dem ra thu.o.ng ma.i. V`ı</sub>
vˆa.y, khi xˆay du..ng hˆe. thˆo´ng phˆa` n mˆe<sub>` m su.’ du.ng c´ac th`anh phˆa`n COTS, ngo`ai yˆe´u tˆo´ k˜ı thuˆa.t</sub>
l`a pha’i d´ap ´u.ng du.o.<sub>. c kiˆe´n tr´</sub>uc phˆa` n mˆe` m, th`ı yˆe´u tˆo´ vˆe<sub>` m˘a.t gi´a th`anh cu’a COTS c˜ung l`a</sub>
mˆo.t yˆe´u tˆo´ rˆa´t quan tro.ng. Thˆong tin vˆe` gi´a th`anh cu’a th`anh phˆa<sub>` n COTS du.o..c di k`em trong</sub>
t`ai liˆe.u d˘a.c ta’ vˆe` th`anh phˆa<sub>` n, COTS Document. V`ı vˆa.y, thuˆa.t to´an sau dˆay du.o..c dˆe` xuˆa´t</sub>
dˆe’ ca’i tiˆe´n thuˆa.t to´an t`ım kiˆe´m dˆe’ du.a ra nh˜u.ng cˆa´u h`ınh ph`u ho..p dˆo`ng th`o.i pha’i tho’a m˜an
mˆo.t gi´a th`anh cho tru.´o.c.



Gia’i thuˆa<sub>.t COTSConfigs ca’i tiˆ</sub>e´n v´o.i gi´a th`anh tˆo´i thiˆe’u
1 total = numOfInterfaces(CB(A))


2 function brandAndBound(i, Sol, S)<sub>// gia’i thuˆa.t nh´anh cˆa.n</sub>


3 if i6size(CB(A)) then


4 for j:= 1 tosize(Ci.R) do // thu.<sub>. c hiˆe.n v´o</sub>.i tˆa´t ca’ c´ac di.ch vu.
// thu.<sub>’ gom di.ch vu.</sub> Ci.Riv`aoSol


5 if{Ci.Ri} ∩Sol.R=∅ then //Ci.Ri6∈Sol:R?


6 Sol:=Sol∪ {Ci.Ri}


7 ifA.R⊆Sol.Rthen


8 if totalCost(S) 6maxCost then


9 S:=S∪ {Sol}// du.aSol<sub>v`ao tˆa.p kˆe´t qua’</sub> S


10 endif


11 <sub>else // nhu.ng nˆe´u vˆa˜n c`on c´ac di.ch gˆo´i v`a di.ch vu. tr `ung</sub>
12 configs(i, Sol, S)// t`ım trongCi...


13 endif


14 Sol:=Sol− {Ci.Ri}



15 endif


16 endfor


17 if (totalCost(S) + (n−m)×minOfCost(CB(A))6maxCost then
// nˆe´u tho’a m˜an th`ı tiˆe´p tu.c t`ım kiˆe´m, c`on khˆong th`ı thˆoi
18 brandAndBound(i+ 1, Sol, S)


19 endif


20 endif


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

C ´AC GIA’ I THUˆA<sub>. T T`</sub>IM KI ˆE´M V`A LU<sub>.</sub>.A CHO<sub>. N TH `</sub>ANH PH ˆ` N COTS T ˆA O´I U.U 159


Tru.´o.c tiˆen, thuˆa.t to´an yˆeu cˆa` u nhˆa.p v`ao ngu.˜o.ng gi´a cu’a mˆo.t cˆa´u h`ınh. Thuˆa.t to´an s˜e
thu.<sub>. c hiˆe.n t`ım kiˆe´m tˆa´t ca’ c´ac cˆa´u h`ınh tho’a m˜an m`a tˆo’ng gi´a th`anh cu’a c´ac th`anh phˆa</sub>` n s˜e
nho’ ho.n ngu.˜o.ng gi´a cho tru.´o.c


maxCost :=hkho.<sub>’ i ta.o mˆo.t gi´a tri. ngu.˜o.ng gi´a</sub>i.


Tu.o.ng tu.<sub>. nhu</sub>. gia’i thuˆa.t chuˆa’n COTSConfigs ch´ung ta c˜ung lˆa`n lu.o..t thu.’ c´ac cˆa´u h`ınh
(d`ong 5 v`a 6). Ch´<sub>ung ta thˆem v`ao kiˆe’m tra xem Sol c´o l`a mˆo.t cˆa´u h`ınh khˆong v`a nˆe´u Sol d˜a</sub>
l`a mˆo.t cˆa´u h`ınh kiˆe’m tra cˆa´u h`ınh n`ay c´o tho’a m˜an vˆe` gi´a hay khˆong.


Gia’ su.<sub>’ ta.i mˆo.t th`o.i diˆe’m trong qu´a tr`ınh t`ım kiˆe´m ta c´o, kiˆe´n tr´uc</sub> Acˆa` n n<sub>di.ch vu., m`a</sub>
l´uc n`ay Sol d˜a tho’a m˜an du.o.<sub>. c</sub>m <sub>di.ch vu. cu’a</sub>A<sub>. Nhu. vˆa.y, c`on cˆa</sub>` nn−m<sub>di.ch vu. cu’a</sub>A n˜u.a
th`ı Sol tho’a m˜an l`a mˆo.t cˆa´u h`ınh. Tˆo`i nhˆa´t, l`a n−m <sub>di.ch vu. n`ay n˘a`m trˆen</sub> m−n th`anh
phˆa<sub>` n kh´ac nhau. Nhu. vˆa.y, diˆe</sub><sub>` u kiˆe.n dˆe’ tiˆe´p tu.c t`ım kiˆe´m l`a tˆo’ng: (gi´a th`anh hiˆe.n ta.i cu’a</sub>
Sol cˆo.ng v´o.i (m−n) th`anh phˆa<sub>` n nhˆan v´o.i gi´a nho’ nhˆa´t c´o thˆe’ cu’a mˆo.t th`anh phˆa`n) pha’i</sub>
nho’ ho.n ngu.˜o.ng gi´a cho tru.´o.c o.’ trˆen.



4.3. Nhˆa<sub>. n x´</sub>et vˆ` hai gia’i thuˆe a<sub>. t ca’i tiˆ</sub>e´n


Thuˆa.t to´an ´ap du.ng tu. tu.o.’ng gia’i thuˆa.t nh´anh cˆa.n dˆe’ thu..c hiˆe.n qu´a tr`ınh t`ım kiˆe´m lu..a
cho.n cˆa´u h`ınh ho..p lˆe. v`a tho’a m˜an tiˆeu ch´ı du. th`u.a d˜u. liˆe.u tˆo´i thiˆe’u v`a tˆo’ng gi´a th`anh tˆo´i
thiˆe’u. Do d´o, khi so s´anh v´o.i gia’i thuˆa.t COSTConfigs cˆo’ diˆe’n, sˆo´ lu.o..ng n´ut cˆa` n duyˆe.t trong
hai gia’i thuˆa.t s˜e gia’m di rˆa´t nhiˆe` u. V`ı khi ch´ung ta kiˆe’m tra ngu.˜o.ng m`a thˆa´y khˆong tho’a
m˜an th`ı thuˆa.t to´an s˜e khˆong tiˆe´p tu.c di theo nh´anh d´o n˜u.a. Tuy nhiˆen, trong tru.`o.ng ho..p tˆo`i
nhˆa´t th`ı dˆo. ph´u.c ta.p t´ınh to´an cu’a hai gia’i thuˆa.t d˜a ca’i tiˆe´n n`ay vˆa˜n l`a O(2n


).


Ngo`ai hai thuˆa.t to´an d˜a ca’i tiˆe´n, t´ac gia’ c`on bˆo’ sung thˆem c´ac tiˆeu ch´ı vˆe` tˆo´i thiˆe’u h´oa du.
th`u.a d˜<sub>u. liˆe.u v`a tˆo’ng gi´a th`anh. V`ı vˆa.y, cˆa´u h`ınh t`ım du.o..c sau khi thu..c hiˆe.n hai gia’i thuˆa.t</sub>
n`ay l`a duy nhˆa´t v`a tˆo´i u.u nhˆa´t theo tiˆeu ch´ı cho tru.´o.c. Dˆay l`a mˆo.t kˆe´t qua’ kh´a quan tro.ng
khi kˆe´t qua’ cu’a gia’i thuˆa.t COSTConfigs cˆo’ diˆe’n cho biˆe´t tˆa´t ca’ c´ac cˆa´u h`ınh ho..p lˆe..


5. CA’ I TIˆE´N M ˆA˜U T `AI LIˆE<sub>. U COTSDocument,</sub>
D ˘A<sub>. C TA</sub>’ TH `ANH PH ˆA` N COTS


Dˆe’ phu.c vu. cho mu.c d´ıch t`ım kiˆe´m v`a lu..a cho.n th`anh phˆa` n COTS th`ı viˆe.c dˆa`u tiˆen l`a
pha’i di.nh ngh˜ıa mˆo.t mˆa˜u XML d˘a.c ta’ COTSDocument chuˆa’n cho kho d˜u. liˆe.u COTS XML.
Dˆe’ thu.<sub>. c hiˆe.n d˘ang k´</sub><sub>y c´ac di.ch vu. v`ao kho d˜u. liˆe.u COTS XML, c´ac nh`a cung cˆa´p (Exporter)</sub>
cˆa` n mˆo ta’ thˆong tin vˆe<sub>` c´ac di.ch vu. cu’a m`ınh theo mˆa˜u d˘a.c ta’ n`ay. C´ac thˆong tin ch´ınh trong</sub>
mˆo.t mˆa˜u d˘a.c ta’ gˆo`m c´o ([1]):


// Di.nh ngh˜ıa IDL cu’a giao diˆe.n th`anh phˆa` n theBuffer
module theBuffer{


// giao diˆe.n cung cˆa´p


interface Buffer{


void write(in longx)
long read()


}
}


</div>

<!--links-->

×