Tải bản đầy đủ (.pdf) (11 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

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 (365.86 KB, 11 trang )

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

.
´ GIA’I THUA
ˆ. T T`IM KIE
ˆ´M VA
` LU
`
ˆ N COTS TO
ˆ´I U.U
CAC
PH`A
. A CHO
. N THANH
`.A DU
˜. LIE
ˆ. U
´ TIEU
ˆ CH´I GIA
´ THANH
`
` DU. THU
THEO CAC
VA
2
´˘ NG1 , PHAM THI QUYNH
`
ˆ´T THA
`


HUYNH
QUYE
.
.

CNTT, Tru.`o.ng DHBK H`
a Nˆ
o.i
2
.
.
a Nˆ
o.i
Khoa CNTT, Tru `o ng DHSP H`

1 Khoa

Abstract. Component-based software development is gaining recognition as the key technology for
the construction of high-quality, evolvable and large software systems in timely and affordable manners. 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. Ph´
`an mˆ
`em hu.´
`an (Component-Based Software Development T´
om t˘

a
at triˆe’n phˆ
o.ng th`
anh phˆ
.

`an mˆ
`em l´
o.n, ph´
y thuˆ
a.t tiˆeu biˆeu xˆ
ay du..ng c´ac phˆ
u.c ta.p, gi´
up gia’m
CBSD) l`
a mˆ
o.t trong nh˜
u ng k˜
.
.
.
.
.
`an mˆ
`em. C´
`an thu o ng ma.i (COTS) dang
th`
o i gian, cˆong s´
ac th`
anh phˆ

u c v`
a gi´
a th`
anh xˆ
ay du. ng phˆ
`an dˆe’ xˆ
`eu trong cˆong nghˆe. phˆ
`an mˆ
`em du..a th`
anh phˆ
´.ng
ay c`ang nhiˆ
du.o..c su’. du.ng ng`
ay du..ng c´ac u
.
.
`au mˆ
`an mˆ
`em, v`
o c´ac nh`
a ph´
at triˆe’n u
´ ng du.ng d˜
a yˆeu cˆ
o.t sˆ
o´ co chˆe´ dˆe’ mˆ
o ta’, t`ım kiˆe´m,
du.ng phˆ
a do d´
`an COTS. Trong b`

a xˆ
ay du..ng c´ac th`
anh phˆ
ai b´
ao n`
ay ch´
ung tˆ
oi tr`ınh b`
ay gia’i thuˆ
a.t lu..a
lu..a cho. n v`
.
.
.
.
.
.
.

`an COTS tˆ
cho.n c´ac th`
anh phˆ
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
`e xuˆa´t c´o dˆ
`an mˆ

`em cˆ
`an xˆ
a.t to´
an dˆ
ac thu’. nghiˆe.m
a´p nhˆ
a.n du.o..c. C´
o. ph´
u.c ta.p chˆ
phˆ
ay du..ng. Thuˆ
du.o..c thu..c hiˆe.n trˆen mˆ
o’i khuˆ
on da.ng c´ac a’nh khˆong
o.t b`
ai to´
an cu. thˆe’: Thiˆe´t kˆe´ di.ch vu. chuyˆe’n dˆ
gian.

’ . D`
ˆU
1. MO
A
`an (CBSD) cho ph´ep ngu.`o.i ph´at triˆe’n ta.o ra nh˜
`an mˆ
`em du..a th`anh phˆ
u.ng
Ph´at triˆe’n phˆ
`an phˆ
`an mˆ

`em du.o..c go.i l`a c´ac th`anh phˆ
`an. Th`anh phˆ
`an phˆ
`an mˆ
`em
ung mˆo.t phˆ
u
´.ng du.ng d`
.
.
.
.
.
.
.
.
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.
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.
nˆo.i dung d˜a r˜o r`ang, ch´
.
`an phˆ
`an mˆ
`em 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
thˆo´ng m´o i. Th`anh phˆ
`an phˆ
`an mˆ
`em 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)
th`anh phˆ
u., su’.a ch˜
y biˆe´n theo y´ ngu.`o.i su’. d`

u.a v`a tu`
ung, nh˜
u.ng
cho ph´ep d´ong g´oi, phˆan phˆo´i, lu.u gi˜
`an mˆ
`em.
`an n`ay thu.`o.ng l´o.n v`a du.o..c lu.u tr˜
u. trong c´ac kho phˆ
th`anh phˆ
.

`an mˆ
`em du. a nˆ
`en th`anh phˆ
`an COTS ng`ay c`ang tro’. nˆen linh hoa.t l`a do
Viˆe.c ph´at triˆe n phˆ
.
.
.
.
`e chˆa´t lu o. ng v`a su. da da.ng cu’a c´ac sa’n phˆa’m du..a nˆ
`en th`anh phˆ
`an COTS
c´o su. gia t˘ang vˆ


154

´
`

ˆ´T THA
˘ NG, PHA
`
HUYNH
QUYE
. M THI. QUYNH

`eu h`anh, co. so’. d˜
nhu. hˆe. diˆ
u. liˆe.u, hˆe. thˆo´ng tin nh˘a´n, thu. diˆe.n tu’., GIS, GUI builders... C´ac
.
`an ho`an thiˆe.n v`a d˜a c´o m˘a.t trˆen thi. tru.`o.ng
sa’n phˆa’m n`ay gˆo`m c´ac u
´ ng du.ng v`a c´ac th`anh phˆ
`an COTS dang tiˆe´p tu.c gia t˘ang, chˆa´t lu.o..ng c˜
ung nhu. kha’
CNTT. Sˆo´ lu.o..ng c´ac th`anh phˆ
.
.
.
.
.
`an mˆ
`em du..a trˆen
u a, ph´at triˆe’n phˆ
n˘ang u
´ ng du.ng cu’a n´o ng`ay c`ang du o. c ca’i thiˆe.n. Ho n n˜
`an 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
`an mˆ
`em

´.ng du.ng phˆ
c´ac th`anh phˆ
.
.
u ho..p v´o.i
u d´o, n´o c´o thˆe’ ph`
thˆong qua c´ac h`am APIs, c´ac ngˆon ng˜
u plug- ins v`a script. T`
`au su’. du.ng cu’a t`
u.ng mu.c d´ıch, r`ang buˆo.c kh´ac nhau.
nhu cˆ
`an mˆ
`em du..a th`anh phˆ
`an COTS, viˆe.c lu..a cho.n th`anh phˆ
`an COTS
Trong ph´at triˆe’n phˆ
.
.
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
ph`
u ho. p l`a mˆo.t trong nh˜
v`ao nghiˆen c´
u.u mo’. rˆo.ng gia’i thuˆa.t lu..a
`an u
´.ng cu’. viˆen
cho.n c´ac tˆo’ ho..p th`anh phˆ
`an mˆ
`em cˆ
`an xˆay

COTS cho kiˆe´n tr´
uc phˆ
.
.
du. ng. C´ac mo’ rˆo.ng trong gia’i thuˆa.t lu..a
cho.n n`ay du.o..c xˆay du..ng trˆen 2 tiˆeu ch´ı:
`an v`a
u.a d˜
u. liˆe.u cu’a c´ac th`anh phˆ
du. th`
.
.
´
`an. Y tu o’ ng ch´
gi´a th`anh cu’a th`anh phˆ
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..c tr`ınh b`ay
.
`e tiˆe´n tr`ınh xˆay
nhu sau. Mu.c 2 tr`ınh b`ay vˆ
.
.
`
`
`an COTS.
du. ng phˆan mˆem du. a th`anh phˆ
Mu.c 3 s˜e tr`ınh b`ay gia’i thuˆa.t COTSCon`e c´ac kha’ n˘ang mo’.

figs v`a nh˜
u.ng d´anh gi´a vˆ
.
rˆo.ng v`a tˆo´i u u thuˆa.t to´an. Tiˆe´p theo, Mu.c
`e xuˆa´t cho thuˆa.t to´an
4 l`a c´ac mo’. rˆo.ng dˆ
COTSConfigs. Trong Mu.c 5 l`a c´ac mo’.
rˆo.ng thˆong tin trong d˘a.c ta’ COTS Doc`an.
u. gi´a th`anh th`anh phˆ
ument dˆe’ lu.u tr˜
.
Mu.c 6 tr`ınh b`ay c´ac d´anh gi´a thu’ nghiˆe.m
`e xuˆa´t,
d˜a thu..c hiˆe.n v´o.i c´ac gia’i thuˆa.t dˆ
`an mˆ
`em
H`ınh 1. Tiˆe´n tr`ınh xˆay du..ng phˆ
.
.
.
cuˆo´i c`
ung l`a kˆe´t luˆa.n v`a hu ´o ng ph´at triˆe’n.
`an COTS
du. a trˆen c´ac th`anh phˆ
ˆ´N TR`INH PHAT
´ TRIE
ˆ’ N PH`
ˆ N M`E
ˆM
2. TIE

A
.
`
ˆ
´
`
ˆ
DU
. A TREN CAC THANH PHAN COTS
`an mˆ
`em hu.´o.ng th`anh phˆ
`an du..a trˆen c´ac th`anh phˆ
`an
Mˆo h`ınh tiˆe´n tr`ınh ph´at triˆe’n phˆ
.
.

COTS, mˆo ta trong H`ınh 1, du o. c chia th`anh ba giai doa.n ([1, 5, 6]):
Giai doa.n 1: Su’. 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
`an mˆ
`em. Mˆa˜u d˘a.c ta’ du.o..c xˆay du..ng v`a tr`ınh b`ay
uc phˆ
Rose) dˆe’ mˆo ta’ v`a thiˆe´t kˆe´ kiˆe´n tr´
trong [1, 5].
y ph´ap UML - RT
Giai doa.n 2: Su’. 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´
˜
th`anh c´ac mˆau d˘a.c ta’ XML.
`an u

Giai doa.n 3: Tiˆe´n tr`ınh COTSTrader, thu..c hiˆe.n t`ım kiˆe´m danh s´ach c´ac th`anh phˆ
´.ng cu’.


.
´ GIA’I THUA
ˆ. T T`IM KIE
ˆ´M VA
` LU
`
ˆ N COTS TO
ˆ´I U.U
CAC
PH`A
. A CHO
. N THANH

155

viˆen trong kho ch´
u.a mˆa˜u XML. Co. so’. cu’a tiˆe´n tr`ınh n`ay l`a gia’i thuˆa.t COTSTrader. Gia’i
.
.
thuˆa.t d˜a du o. c tr`ınh b`ay chi tiˆe´t trong [1].
`an t`
u.
Tiˆe´p theo tiˆe´n tr`ınh t`ım kiˆe´m l`a tiˆe´n tr`ınh COTSConfigs lu..a cho.n tˆo’ ho..p th`anh phˆ
.
.
`an u

`an mˆ
`em yˆeu
danh s´ach th`anh phˆ
´ 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ˆ
.
.
.
`au. 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
ung d˜a du.o..c tr`ınh
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˜
b`ay trong [5, 6].
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
Bu.´o.c cuˆo´i c`
.
.
.
´ ng du.ng ho`an chı’nh.
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
.
.

Tro.ng tˆam cua 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
.
.
`an.

lu. a cho.n tˆo’ ho. p th`anh phˆ
.
.
ˆ’ HO
ˆ. T TOAN
´ COTSConfigs LU
3. THUA
. A CHO
. N TO
.P
´ THANH
`
ˆ N COTS
CAC
PH`
A
3.1. Mˆ
o ta’ b`
ai to´
an
`an u
´.ng viˆen l`a mˆo.t qu´a tr`ınh quan tro.ng
Tiˆe´n tr`ınh sinh c´ac cˆa´u h`ınh t`
u. tˆa.p c´ac th`anh phˆ
`an COTS. Tiˆe´n tr`ınh n`ay s˜e lu..a cho.n tˆa.p c´ac
trong to`an bˆo. qu´a tr`ınh t`ım kiˆe´m c´ac th`anh phˆ
.
.
`an mˆ
`em cˆ

`an xˆay du..ng. Diˆ
`eu kiˆe.n ph`
`an ph`
uc phˆ
u ho..p o’. dˆay
th`anh phˆ
u ho. p nhˆa´t v´o i kiˆe´n tr´
`an 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
l`a pha’i lu..a cho.n c´ac th`anh phˆ
.
.
`au cu’a kiˆe´n tr´
`an mˆ
`em cˆ
`an xˆay du. ng.
uc phˆ
v´o i tˆa.p di.ch vu. yˆeu cˆ
.
.

`an COTS du.o..c ph´at biˆe’u nhu. sau ([1]): Cho mˆo.t
B`ai to´an lu. a cho.n tˆo ho. p c´ac th`anh phˆ
.
`an mˆ
`em A. C´o mˆo.t kho B ch´
`an u
kiˆe´n tr´
uc phˆ
u a to`an bˆo. c´ac th`anh phˆ

´.ng viˆen COTS ph`
u ho..p
`an 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ˆ
`an
dˆe’ lu..a cho.n t´ıch ho..p v`ao A. Cˆ
.
u.c n˘ang m`a A yˆeu
´.ng c´ac di.ch vu./ch´
u
´ ng viˆen COTS c´o trong B, sao cho cˆa´u h`ınh S d´ap u
`an d´ap u
`eu kiˆe.n:
`au. Nhu. vˆay cˆa´u h`ınh S cˆ
´.ng hai diˆ

.
.
.
.
˜
`an cu’a S pha’i tr`

ung v´o.i tˆa.p c´ac di.ch vu.
(i) Tˆa.p c´ac di.ch vu. du o. c hˆo tro. bo i c´ac th`anh phˆ
.
.
.
.
.
du o. c hˆo˜ tro. bo’ i A (t´

u c l`a khˆong c´o c´ac lˆo˜ hˆo’ng di.ch vu.).
`an n`ao cu’a S cung cˆa´p c`
(ii) Khˆong c´o hai th`anh phˆ
ung mˆo.t di.ch vu. chung (t´
u.c l`a khˆong
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.t COTSConfigs
1
function COTSconfigs(i, Sol, S)
2
// 1
i
size(CB(A)) kha’o s´at qua tˆa´t ca’ c´ac kha’ n˘ang c´o trong kho CB(A)
`an u
(ch´
u.a danh s´ach c´ac th`anh phˆ
´.ng cu’. viˆen)
.
3
// Sol 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
4
// S ch´
u.a du..ng tˆa.p ho..p tˆa´t ca’ c´ac cˆa´u h`ınh c´o gi´a tri. dˆo´i v´o.i kiˆe´n tr´
uc A
5
if i size(CB(A)) then
6

for j := 1 to size(Ci.R) do//thu..c hiˆe.n v´o.i tˆa´t ca’ c´ac di.ch vu. trong C1
7
// thu’. gom di.ch vu. Ci.Ri v`ao Sol
8
if {Ci.Ri} ∩ Sol.R = ∅ then // Ci.Ri ∈ Sol : R?
9
Sol := Sol ∪ {Ci.Ri}
10
if A.R ⊆ Sol.R then // Kiˆe’m tra xem Sol c´o l`a mˆo.t cˆa´u h`ınh khˆong?


´
`
ˆ´T THA
˘ NG, PHA
`
HUYNH
QUYE
. M THI. QUYNH

156

S := S ∪ {Sol} // Nˆe´u Sol l`a mˆo.t cˆa´u h`ınh, n´o s˜e du.o..c gom nh´om v`ao
trong S
ung nhau
12
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`
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) // tiˆe´p tu.c trong CB(A)
19
endif
20
endfunction
`eu
C´ac kho’.i ta.o cu’a gia’i thuˆa.t l`a S =; Sol =; configs (1; Sol; S). Mˆo˜i cˆa´u h`ınh (d`ong 9) dˆ
.
.
.
.
.
.
`an c´ac di.ch vu. Cj.Rj c`on chu.a
´ ng cu’ viˆen, kˆe´t ho. p dˆ
du o. c sinh ra b˘`a ng c´ach thu’ tˆa´t ca’ c´ac u
u.ng di.ch vu. m`a A d˜a c´o rˆo`i (d`ong 8 v`a d`ong 10). Khi gia’i thuˆa.t
ch´
u.a trong A, v`a bo’ di nh˜
.
`an thiˆe´t.
kˆe´t th´

uc, biˆe´n S s˜e ch´
u a tˆa´t ca’ c´ac cˆa´u h`ınh cˆ

11

`e gia’i thuˆ
3.2. D´
anh gi´
a nhˆ
a.n x´
et vˆ
a.t
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
u. tˆa.p ho..p c´ac u
´.ng cu’. viˆen trong kho B : CB(A) =
cho.n c´ac cˆa´u h`ınh ho..p lˆe.. N´o s˜e sinh t`
`an mˆ
`em cˆ
`an xˆay du..ng A, mˆo.t tˆa.p S c´ac cˆa´u h`ınh ho..p lˆe. (d`ong
{C1 , ..., Ck}, v`a t`
u. kiˆe´n tr´
uc phˆ
.
.
.
11). Khˆong c´o tru `o ng ho. p c´ac cˆa´u h`ınh trong S c`on tˆo`n ta.i c´o lˆo˜ hˆo’ng di.ch vu. (mˆo.t di.ch vu.
n`ao d´o khˆong du.o..c d´ap 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
.

.
.
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
`an
u.c ta.p l`a O(2n ), trong d´o n l`a sˆo´ lu.o..ng c´ac di.ch vu. m`a tˆa´t ca’ c´ac th`anh phˆ
ca.n, v´o.i dˆo. ph´
.
.
.
.

`
´ ng viˆen l´o n, th`ı s˜e dˆa˜n
´ ng. Khi d´o v´o i mˆo.t kho c´ac th`anh phˆan u
trong CB(A) c´o thˆe d´ap u
.
.
.
t´o i b`
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.
’ I TIE
’ I THUA
ˆ XUA
ˆ´T CA
ˆ´N GIA
ˆ T COTSCONFIGS
´ D`E
4. CAC
.
.

ˆ’ HO.P CAC
´ THANH
`
ˆ N COTS
A
CHO
N
T
O
PH`
A
LU
.
.
.
`e xuˆa´t thay b˘`a ng gia’i thuˆa.t
ung ta c´o thˆe’ dˆ
Dˆe’ gia’m dˆo. ph´
u.c ta.p cu’a thuˆa.t to´an trˆen, ch´
.
.
.


nh´anh cˆa.n (brand and bound). Tu tu o ng cua 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,
`an 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
ut khˆong cˆ

u.c l`a c´o thˆe’ lu.o..c b´o.t mˆo.t sˆo´ n´

.
thˆe’ du a v`ao dˆe’ t˘ang hiˆe.u qua’ t`ım kiˆe´m nhu.:
`an v´o.i du. th`
- Lu..a cho.n th`anh phˆ
u.a d˜
u. liˆe.u l`a tˆo´i thiˆe’u.
`an v´o.i tˆo’ng gi´a th`anh l`a tˆo´i thiˆe’u.
- Lu..a cho.n th`anh phˆ
`an v´
4.1. Ca’i tiˆ
e´n gia’i thuˆ
a.t lu..a cho.n th`
anh phˆ
o.i du. th`
u.a d˜
u. liˆ
e.u tˆ
o´i thiˆ
e’u
`an mˆ
`em yˆeu cˆ
`au, ch´
Khi xˆay du..ng c´ac cˆa´u h`ınh ph`
u ho..p v´o.i kiˆe´n tr´
uc phˆ
ung ta c´o thˆe’
.
.
.
`

´
´
´
thu du o. c nhiˆeu kˆet qua’ cˆa u h`ınh ([1, 2, 5, 6]). Trong d´o, s˜e c´o nh˜
u ng cˆa u h`ınh l`a tˆo’ ho..p c´ac
.
`an mˆ
`em d˜a yˆeu cˆ
`au, c`on c´o nh˜
`an m`a ngo`ai nh˜
uc phˆ
u.ng di.ch
th`anh phˆ
u ng di.ch vu. m`a kiˆe´n tr´
`an d`
vu. du. th`
u.c ta.p dˆa˜n t´o.i
u.a khˆong cˆ
ung. Nˆe´u su’. du.ng c´ac cˆa´u h`ınh n`ay s˜e l`am t˘ang dˆo. ph´
.
.
.
.
.
.
`an cu’a hˆe. thˆo´ng phˆ
`an mˆ
`em du o. c xˆay du. ng. Dˆay l`a nh˜
u.ng cˆa´u
du th`

u a d˜
u liˆe.u v`a th`anh phˆ


.
´ GIA’I THUA
ˆ. T T`IM KIE
ˆ´M VA
` LU
`
ˆ N COTS TO
ˆ´I U.U
CAC
PH`A
. A CHO
. N THANH

157

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

Gia’i thuˆa.t nh´anh cˆa.n t`ım kiˆe´m lu. a cho.n c´ac th`anh phˆ
`e xuˆa´t nhu. sau.
du.o..c dˆ
Gia’i thuˆ
a.t COTSConfigs ca’i tiˆ
e´n v´
o.i du. th`
u.a d˜
u. liˆ
e.u tˆ
o´i thiˆ
e’u
1
total = numOfInterfaces(CB(A)) //tˆo’ng sˆo´ di.ch vu. cu’a mˆo.t cˆa´u h`ınh
2
function brandAndBound(i, Sol, S) //gia’i thuˆa.t nh´anh cˆa.n
3
if i size(CB(A)) then
4
for j := 1 to size(Ci.R) do //thu..c hiˆe.n v´o.i tˆa´t ca’ c´ac di.ch vu. trong C1
// thu’. gom di.ch vu. Ci.Ri v`ao Sol
5
if {Ci.Ri} ∩ Sol.R = ∅ then // Ci.Ri ∈ Sol : R?
6
Sol := Sol ∪ {Ci.Ri}
7
if A.R ⊆ Sol.R then //
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

`e sˆo´ di.ch vu. cu’a mˆo.t cˆa´u h`ınh
//dˆay l`a mˆo.t gi´a tri. cu’a ngu.˜o.ng vˆ
m´o.i
9
total := numberOfInterface(S ) // cˆa.p nhˆa.t ngu.˜o.ng m´o.i
10
S := // x´oa c´ac kˆe´t qua’ c˜
u
.
11
S := S ∪ {Sol} // du a Sol v`ao tˆa.p kˆe´t qua’ S
12
else if numberOfInterface(S ) = total then
`e sˆo´ di.ch vu.
//tho’a m˜an ngu.˜o.ng vˆ
13
S := S ∪ {Sol} // du.a Sol v`ao tˆa.p kˆe´t qua’ S
14
endif
15
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
16
configs(i, Sol, S) // t`ım trong Ci...
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
`an u
Ta c´o, mˆo.t cˆa´u h`ınh tˆo´i da s˜e l`a tˆa.p ho..p cu’a to`an bˆo. c´ac c´ac th`anh phˆ
´.ng viˆen. Nhu.
vˆa.y, t´
u.c l`a sˆo´ c´ac di.ch vu. tˆo´i da cu’a mˆo.t cˆa´u h`ınh s˜e l`a tˆo’ng cu’a c´ac di.ch vu. du.o..c cung cˆa´p
.
`an u
´.ng viˆen. Vˆa.y, tru.´o.c tiˆen, ta go.i biˆe´n total l`a biˆe´n lu.u tˆo’ng sˆo´ di.ch vu.
bo’ i c´ac th`anh phˆ
cu’a mˆo.t cˆa´u h`ınh (d`ong 1). Kho’.i ta.o biˆe´n n`ay b˘`a ng tˆo’ng sˆo´ di.ch vu. cu’a to`an bˆo. c´ac th`anh
`an u
`e tˆo’ng sˆo´ d˜
phˆ
´.ng viˆen. Dˆay ch´ınh l`a ngu.˜o.ng vˆ
u. liˆe.u cu’a mˆo.t cˆa´u h`ınh.



´
`
ˆ´T THA
˘ NG, PHA
`
HUYNH
QUYE
. M THI. QUYNH

158

`an lu.o..t thu’. c´ac cˆa´u h`ınh
Tu.o.ng tu.. nhu. gia’i thuˆa.t chuˆa’n COTSConfigs ch´
ung ta c˜
ung lˆ
ung,
(d`ong 5 v`a 6). Ch´
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 d´
.
.
.



´
´
`
kiˆe m tra cˆa u h`ınh n`ay c´o tˆoi thiˆe u vˆe d˜
u liˆe.u khˆong (d`ong 9). Gia’ su’ ta.i mˆo.t th`o i diˆe m trong
`an n di.ch vu., m`a l´

qu´a tr`ınh t`ım kiˆe´m ta c´o, kiˆe´n tr´
uc A cˆ
uc n`ay Sol d˜a tho’a m˜an du.o..c m
`an n − m di.ch vu. cu’a A n˜
di.ch vu. cu’a A. Nhu. vˆa.y, c`on cˆ
u.a th`ı Sol tho’a m˜an l`a mˆo.t cˆa´u h`ınh.
`eu kiˆe.n
`an kh´ac nhau. Nhu. vˆa.y, diˆ
Tˆo`i nhˆa´t, l`a m − n di.ch vu. n`ay n˘`a m trˆen n − m th`anh phˆ
.


`an nhˆan
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’a Sol cˆo.ng v´o i (n − m) th`anh phˆ
`an) pha’i nho’ ho.n ngu.˜o.ng tˆo’ng sˆo´ di.ch vu..
v´o.i sˆo´ di.ch vu. nho’ nhˆa´t c´o thˆe’ cu’a mˆo.t th`anh phˆ
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.
`an v´
4.2. Ca’i tiˆ
e´n gia’i thuˆ
a.t lu..a cho.n th`
anh phˆ
o.i tˆ
o’ng gi´
a th`
anh tˆ
o´i thiˆ
e’u
`an COTS l`a c´ac th`anh phˆ

`an du.o..c dem ra thu.o.ng ma.i. V`ı
Nhu. ta d˜a biˆe´t, c´ac th`anh phˆ
`an mˆ
`em su’. du.ng c´ac th`anh phˆ
`an COTS, ngo`ai yˆe´u tˆo´ k˜ı thuˆa.t
vˆa.y, khi xˆay du..ng hˆe. thˆo´ng phˆ
.
.
.
`an mˆ
`em, th`ı yˆe´u tˆo´ vˆ
`e m˘a.t gi´a th`anh cu’a COTS c˜
uc phˆ
ung l`a
l`a pha’i d´ap u
´ ng du o. c kiˆe´n tr´
.
.
´
´
´
`
`

mˆo.t yˆeu tˆo rˆa t quan tro.ng. Thˆong tin vˆe gi´a th`anh cua th`anh phˆan COTS du o. c di k`em trong
`e th`anh phˆ
`an, COTS Document. V`ı vˆa.y, thuˆa.t to´an sau dˆay du.o..c dˆ
`e xuˆa´t
t`ai liˆe.u d˘a.c ta’ vˆ
.

.
.
.


`
´
´
´



u ng cˆa u h`ınh ph`
u ho. p dˆo ng th`o i phai thoa m˜an
dˆe cai tiˆen thuˆa.t to´an t`ım kiˆem dˆe du a ra nh˜
mˆo.t gi´a th`anh cho tru.´o.c.
a th`
anh tˆ
o´i thiˆ
e’u
Gia’i thuˆ
a.t COTSConfigs ca’i tiˆ
e´n v´
o.i gi´
1
2
3
4
5
6

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

total = numOfInterfaces(CB(A))
function brandAndBound(i, Sol, S) // gia’i thuˆa.t nh´anh cˆa.n
if i size(CB(A)) then
for j := 1 to size(Ci.R) do // thu..c hiˆe.n v´o.i tˆa´t ca’ c´ac di.ch vu.
// thu’. gom di.ch vu. Ci.Ri v`ao Sol
if {Ci.Ri} ∩ Sol.R = ∅ then // Ci.Ri ∈ Sol : R?
Sol := Sol ∪ {Ci.Ri}
if A.R ⊆ Sol.R then
if totalCost(S) maxCost then
S := S ∪ {Sol} // du.a Sol v`ao tˆa.p kˆe´t qua’ S
endif
else // nhu.ng nˆe´u vˆa˜n c`on c´ac di.ch gˆo´i v`a di.ch vu. tr u
`ng
configs(i, Sol, S) // t`ım trong Ci...

endif
Sol := Sol − {Ci.Ri}
endif
endfor
if (totalCost(S) + (n − m)× minOfCost(CB(A)) maxCost 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
brandAndBound(i + 1, Sol, S)
endif
endif
endfunction


.
´ GIA’I THUA
ˆ. T T`IM KIE
ˆ´M VA
` LU
`
ˆ N COTS TO
ˆ´I U.U
CAC
PH`A
. A CHO
. N THANH

159

`au 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
Tru.´o.c tiˆen, thuˆa.t to´an yˆeu cˆ
.

`an s˜e
thu. 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ˆ
.
.
.
.
.
nho’ ho n ngu ˜o ng gi´a cho tru ´o c
maxCost := kho’.i ta.o mˆo.t gi´a tri. ngu.˜o.ng gi´a .
`an lu.o..t thu’. c´ac cˆa´u h`ınh
Tu.o.ng tu.. nhu. gia’i thuˆa.t chuˆa’n COTSConfigs ch´
ung ta c˜
ung lˆ
(d`ong 5 v`a 6). Ch´
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
`e gi´a hay khˆong.
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ˆ
.
.

´
`an n di.ch vu., m`a


uc A cˆ
Gia su ta.i mˆo.t th`o i diˆe m trong qu´a tr`ınh t`ım kiˆem ta c´o, kiˆe´n tr´
.
.
.
`an n − m di.ch vu. cu’a A n˜

u.a

uc n`ay Sol d˜a tho’a m˜an du o. c m di.ch vu. cu’a A. Nhu vˆa.y, c`on cˆ
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 di.ch vu. n`ay n˘`a m trˆen m − n th`anh
`an kh´ac nhau. Nhu. vˆa.y, diˆ
`eu 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
phˆ
.
`an nhˆan v´o.i gi´a nho’ nhˆa´t c´o thˆe’ cu’a mˆo.t th`anh phˆ
`an) pha’i
Sol cˆo.ng v´o i (m − n) th`anh phˆ
.
.
.
.
.
.
nho’ ho n ngu ˜o ng gi´a cho tru ´o c o’ trˆen.
`e hai gia’i thuˆ
4.3. Nhˆ
a.n x´
et vˆ
a.t ca’i tiˆ
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
`an duyˆe.t trong
ut cˆ

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´
`eu. V`ı khi ch´
ung ta kiˆe’m tra ngu.˜o.ng m`a thˆa´y khˆong tho’a
hai gia’i thuˆa.t s˜e gia’m di rˆa´t nhiˆ
u.a. Tuy nhiˆen, trong tru.`o.ng ho..p tˆo`i
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.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 ).
nhˆa´t th`ı dˆo. ph´
`e tˆo´i thiˆe’u h´oa du.
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ˆ
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
th`
u.a d˜
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..
˜ U TAI
’ I TIE
ˆ´N MA
ˆ
` LIE
ˆ U COTSDocument,
5. CA
.
’ THANH
˘. C TA
`
ˆ N COTS
DA
PH`
A

`au tiˆen l`a
`an COTS th`ı viˆe.c dˆ
Dˆe’ phu.c vu. cho mu.c d´ıch t`ım kiˆe´m v`a lu..a cho.n th`anh phˆ
.
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. c hiˆe.n d˘ang k´
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)
`an mˆo ta’ thˆong tin vˆ
`e 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

`
˜
mˆo.t mˆau d˘a.c ta’ gˆo m c´o ([1]):
`an theBuffer
// Di.nh ngh˜ıa IDL cu’a giao diˆe.n th`anh phˆ
module theBuffer {
// giao diˆe.n cung cˆa´p
interface Buffer {
void write(in long x)
long read()
}
}
`au
// giao diˆe.n yˆeu cˆ
interface out {



´
`
ˆ´T THA
˘ NG, PHA
`
HUYNH
QUYE
. M THI. QUYNH

160

oneway void print(in long x)
}
}

?xml-stylesheet

type=“text/xsl”

href=“ />COTS-XMLStyle.xsl”?

COTScomponent name=“theBuffer”
xmlns=“ />xmlns:types=“ />functional ... /functional
properties ... /properties
packaging ... /packaging
marketing ... /marketing
/COTScomponent
`an dˆ

`au tiˆen mˆo ta’ tˆa´t ca’
• C´ac mˆo ta’ mang t´ınh ch´
u.c n˘ang (Functional description) ([1]): Phˆ
`an, bao gˆo`m tˆa.p c´ac giao diˆe.n cung cˆa´p
c´ac kh´ıa ca.nh mang t´ınh chˆa´t t´ınh to´an cu’a th`anh phˆ
`au. Phˆ
`an n`ay c´o 3 phˆ
`an ch´ınh du.o..c go.i l`a providedInterfaces, requiredInterfaces, v`a
v`a yˆeu cˆ
serviceAccessProtocols. ([1, 5, 6]).
• C´ac mˆo ta’ khˆong mang t´ınh ch´
u.c n˘ang (Non-functional description): su’. du.ng c´ac kiˆe’u W3C
cho mˆo ta’ c´ac loa. i thˆong tin n`ay.
`an trˆen, c´ac thˆong tin
`e d´ong g´oi/kiˆe´n tr´
uc: Ch´
u y´ r˘`a ng, c˜
ung giˆo´ng nhu. phˆ
• C´ac r`ang buˆo.c vˆ
.
.
.


`e g´oi v`a ph´at triˆe n c´ac th`anh phˆ
`an c´o thˆe du o. c mˆo ta’ tru. c tiˆe´p theo mˆo.t k´

y ph´ap d˘a.c biˆe.t
v`a miˆeu ta’ trong the’ description cu’a mˆa˜u XML, ho˘a.c du.o..c lu.u o’. ngo`ai v`a su’. du.ng tham
chiˆe´u href dˆe´n n´o.

`e xuˆ
`an bˆ

a´t th`
anh phˆ
o’ sung trong COTS DOCUMENT
`e marketing: C´ac loa.i thˆong tin diˆe’n h`ınh o’. dˆay cˆ
`an mˆo ta’ bao gˆo`m: ba’n
C´ac thˆong tin vˆ
.
`en, ch´
u y´ thˆong tin trong the’ expirydate v`a the’
quyˆ
u ng nhˆa.n, thˆong tin nh`a cung cˆa´p... Ch´

cost l`a rˆa´t quan tro.ng, th´
uc dˆa y c´ac di.ch vu. d˜a c˜
u du.o..c nˆang cˆa´p nhanh ho.n v`a t˘ang t´ınh
.
.
.
.
ca.nh tranh trong mˆoi tru `o ng mo’ . Thˆong tin lu u trong hai the’ n`ay du.o..c c´ac trader t`ım kiˆe´m
`an tˆo´i u.u theo gi´a th`anh.
v`a lu..a cho.n th`anh phˆ
marketing
license href=“ />/license.html”/
certificate href=“ />/lcard.pgp”/
vendor
companyname Vendor 3 Corp. /companyname

webpage /webpage
mailto /mailto
address
zip 04120 /zip
street Ctra Sacramento s/n /street
city Almeria /city
country Spain /country


.
´ GIA’I THUA
ˆ. T T`IM KIE
ˆ´M VA
` LU
`
ˆ N COTS TO
ˆ´I U.U
CAC
PH`A
. A CHO
. N THANH

161

street Campus de Teatinos /street
city Malaga /city
country Spain /country
/address
/vendor
cost 500 /cost

currency USD /currency
/marketing
u.ng thˆong tin d˘a.c ta’ trˆen du.o..c coi l`a t`ai liˆe.u chuˆa’n m`a c´ac nh`a cung cˆa´p
Nhu. vˆa.y, nh˜
u. d´o, c´ac trader m´o.i c´o co. chˆe´ t`ım kiˆe´m v`a lu..a cho.n th´ıch ho..p.
d`
ung d˘a.c ta’ c´ac di.ch vu.. T`
.
`an c˜
ung c´o thˆe’ du.o..c d´anh gi´a thˆong qua t`ai liˆe.u d˘a.c ta’
Ch´
u c n˘ang v`a gi´a th`anh cu’a th`anh phˆ
n`ay. T´om la.i, thˆong tin trong mˆa˜u t`ai liˆe.u d˘a.c ta’ XML COTSDocument du.o..c thˆe’ hiˆe.n qua
H`ınh 2.

`an
H`ınh 2. C´ac thˆong tin c´o trong mˆa˜u d˘a.c ta’ th`anh phˆ
ˆ N CAC
´ THUA
ˆ T TOAN
´
ˆ P TR`INH THU.C HIE
6. LA
.
.
.
.
.
ˆ. M
´

´ THU’ NGHIE
` DANH
GIA
VA
`an mˆ
`em thu’. nghiˆ
6.1. Xˆ
ay du..ng phˆ
e.m
Cˆong cu. lu..a cho.n: Visual C#, .NET. Dˆay l`a mˆoi tru.`o.ng, ngˆon ng˜
u. tiˆen tiˆe´n hiˆe.n nay.
Diˆe’m ma.nh cu’a mˆoi tru.`o.ng n`ay cho ph´ep ch´
ung ta dˆ˜e d`ang ta.o c´ac u
´.ng du.ng nhanh trˆen
`eu h`anh Windows, dˆ˜e d`ang ta.o giao diˆe.n mˆo.t c´ach thˆan thiˆe.n. Diˆ
`eu d˘a.c biˆe.t quan
`en hˆe. diˆ

.
.
.
.
.
˜
tro.ng, l`a ngˆon ng˜
u n`ay hˆo tro. nh˜
u ng thu viˆe.n xu’ l´
y c´ac v˘an ba’n XML rˆa´t tˆo´t. Dˆe’ phu.c vu.
ung KS. Nguyˆ˜en Thu Thuy’ v`a KS.
thu’. nghiˆe.m c´ac gia’i thuˆa.t, hˆe. thˆo´ng d˜a du.o..c xˆay du..ng c`

.
.
Nguyˆ˜en Lˆe Minh, Khoa CNTT, Tru `o ng DHBK H`a Nˆo.i bao gˆo`m c´ac l´o.p co. ba’n l`a: Interface,
InterfaceSet, COTSComponent, Configure, Architecture, Repository. Dˆay l`a nh˜
u.ng l´o.p mˆo ta’
.
.
`e tˆa.p giao diˆe.n cu’a mˆo.t th`anh
c´ac kh´ai niˆe.m co ba’n phu.c vu. cho gia’i thuˆa.t nhu : kh´ai niˆe.m vˆ
.
`
´
`
`em. Tiˆe´p theo, hˆe. thˆo´ng xˆay
`
´
uc phˆan mˆ
phˆan, cˆa u h`ınh, kho ch´
u a c´ac th`anh phˆan, kiˆen tr´
.
.
du. ng c´ac l´o p ConfigGenerator, StandardConfigGenerator, MinCostConfigGenerator, MinDatu.u tu.o..ng mˆo ta’ qu´a tr`ınh t`ım
aConfigGenerator. Trong d´o, l´o.p ConfigGenerator l`a mˆo.t l´o.p tr`
.
.
.
u.a t`
u. ConfigGenerator
kiˆe´m, sinh ra c´ac cˆa´u h`ınh. L´o p StandardConfigGenerator du o. c kˆe´ th`
`e cˆa.p o’. trˆen. Tu.o.ng

s˜e l˘a´p d˘a.t cu. thˆe’ gia’i thuˆa.t sinh cˆa´u h`ınh, dˆay l`a gia’i thuˆa.t v´et ca.n d˜a dˆ
.
.
tu. MinCostConfigGenerator v`a MinDataConfigGenerator c˜
ung kˆe´ th`
u a t`
u. ConfigGenerator
s˜e l˘a´p d˘a.t c´ac thuˆa.t to´an lu..a cho.n cˆa´u h`ınh tˆo´i u.u theo gi´a th`anh, v`a lu..a cho.n cˆa´u h`ınh gia’m
u.a d˜
u. liˆe.u.
thiˆe’u du. th`
e.m c´
ac thuˆ
a.t to´
an
6.2. Thu’. nghiˆ


162

´
`
ˆ´T THA
˘ NG, PHA
`
HUYNH
QUYE
. M THI. QUYNH

`an mˆ

`em thu’. nghiˆe.m c´ac gia’i
Du..a trˆen thu. viˆe.n d˜a ph´at triˆe’n ta xˆay du..ng chu.o.ng tr`ınh phˆ
.
.
`e
u.a d˜
u. liˆe.u vˆ
thuˆa.t d˜a tr`ınh b`ay. Chu o ng tr`ınh cho ph´ep na.p v`ao c´ac tˆe.p XML, mˆo.t tˆe.p ch´
.
.
.
`
`
´
`
`
`
´ ng viˆen, v`a mˆo.t tˆe.p mˆo ta’ vˆe kiˆen tr´
uc phˆan mˆem cˆan xˆay du. ng.
kho ch´
u a c´ac th`anh phˆan u
Thu..c nghiˆe.m c´ac thuˆa.t to´an d˜a du.o..c tiˆe´n h`anh trˆen hai tˆe.p XML:
`e kho ch´
`an u
- GTSCandidates.xml: Tˆe.p ch´
u.a d˜
u. liˆe.u vˆ
u.a c´ac th`anh phˆ
´.ng viˆen.
.

.
`e kiˆe´n tr´
`an mˆ
`em cˆ
`an xˆay du..ng.
u liˆe.u vˆ
uc phˆ
- GTSArchitecture.xml: Tˆe.p ch´
u a d˜
`an xˆay du..ng v`a c´ac th`anh phˆ
`an u
`an u
´.ng viˆen
C´ac tˆa.p XML mˆo ta’ c´ac th`anh phˆ
´.ng viˆen cˆ
c´o trong kho du.o..c lˆa´y t`
u. b`ai to´an diˆe’n h`ınh ([1, 2, 3]): 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, c´o tˆen go.i l`a GTS (Geographic Translator Service). Nˆe´u t`ım kiˆe´m
`au th`ı sˆo´ lu.o..ng n´
theo thuˆa.t to´an v´et ca.n ban dˆ
ut trˆen cˆay t`ım kiˆe´m pha’i duyˆe.t qua l`a 958
.
.
`e

ut, v`a kˆe´t qua’ thu du o. c l`a 24 cˆa´u h`ınh tho’a m˜an. Nˆe´u t`ım kiˆe´m theo gia’i thuˆa.t tˆo´i u.u vˆ
.
.
´
´

ung nhˆa.p v`ao gi´a th`anh l`a 2200 USD th`ı s˜e chı’ cho mˆo.t kˆet qua’ cˆa u
gi´a th`anh. Khi ngu `o i d`
`an duyˆe.t qua l`a 855. Nˆe´u t`ım kiˆe´m theo gia’i thuˆa.t tˆo´i u.u vˆ
`e d˜
h`ınh tho’a m˜an, v`a sˆo´ n´
ut cˆ
u.
`e khˆong du. th`
u.a c´ac di.ch vu.. Kˆe´t qua’ thu du.o..c chı’ l`a mˆo.t cˆa´u h`ınh duy
liˆe.u, t´
u.c tˆo´i u.u vˆ
.
`an mˆ
`em
u.a d´
uc phˆ
nhˆa´t, v´o i sˆo´ di.ch vu. tˆo’ng cˆo.ng chı’ l`a 7, v`
ung dˆo´i v´o.i sˆo´ di.ch vu. m`a kiˆe´n tr´
.
.
.
.
`au. Kˆe´t qua’ so s´anh thu’ nghiˆe.m c´ac gia’i thuˆa.t du o. c tˆo’ng ho. p trong Ba’ng 1.
yˆeu cˆ
Ba’ng 1. Kˆe´t qua’ thu’. nghiˆe.m v´o.i c´ac thuˆa.t to´an
(*) (**) (***)
`an duyˆe.t
Sˆo´ n´
ut cˆ
958 823

855
.
.
´
´
Sˆo cˆa u h`ınh thu du o. c 24
1
1
(*) Gia’i thuˆa.t COTSConfigs chuˆa’n
`an COTS tˆo´i u.u theo du. th`
(**) Gia’i thuˆa.t t`ım kiˆe´m th`anh phˆ
u.a d˜
u. liˆe.u
.
`an COTS tˆo´i u u theo gi´a th`anh
(***) Gia’i thuˆa.t t`ım kiˆe´m th`anh phˆ
anh gi´
a v`
a kˆ
e´t luˆ
a.n
6.3. D´
Kˆe´t qua’ thu’. nghiˆe.m cho thˆa´y ´ap du.ng tu. tu.o’.ng nh´anh cˆa.n trong thuˆa.t to´an lu..a cho.n v`a
t`ım kiˆe´m c´ac cˆa´u h`ınh ho..p lˆe. cho gia’i thuˆa.t COTSConfigs d˜a du.a la.i hiˆe.u qua’ tˆo´t. Sˆo´ lu.o..ng
`an duyˆe.t d˜a gia’m di l`a do ta khˆong cˆ
`an t`ım kiˆe´m to`an bˆo. c´ac tˆo’ ho..p cˆa´u h`ınh trong
c´ac n´
ut cˆ
`an lu..a cho.n nh´anh ph`
u ho..p dˆe’ du.a ra kˆe´t qua’ t`ım kiˆe´m cuˆo´i c`

ung.
b`ai to´an duyˆe.t cˆay m`a chı’ cˆ
.
`an lu..a cho.n - tˆo´i u.u theo du. th`
u.a
Viˆe.c du a v`ao c´ac tiˆeu ch´ı t`ım kiˆe´m cho c´ac cˆa´u h`ınh cˆ
`an mˆ
`em du..a trˆen c´ac

u. liˆe.u v`a tˆo´i u.u theo gi´a th`anh l`am cho phu.o.ng ph´ap xˆay du..ng phˆ
.
.
.
`an COTS tro’ nˆen kha’ thi ho n trong thu. c tˆe´. Trong b`ai b´ao d˜a tr`ınh b`ay c´ac gia’i
th`anh phˆ
`an COTS, ph´at triˆe’n gia’i
ph´ap nˆang cao hiˆe.u qua’ tiˆe´n tr`ınh t`ım kiˆe´m v`a lu..a cho.n th`anh phˆ
.
.
.
.
`an COTS tˆo´i u u theo hu ´o ng gia’m thiˆe’u du. th`
u.a d˜
u. liˆe.u
thuˆa.t t`ım kiˆe´m v`a lu. a cho.n th`anh phˆ
`an COTS v`a thu’. nghiˆe.m gia’i thuˆa.t v`ao hˆe. thˆo´ng GTS (Geographic
v`a gi´a th`anh cu’a th`anh phˆ
Translator Service).
B`ai b´ao d˜a tr`ınh b`ay d´anh gi´a thu’. nghiˆe.m c´ac gia’i thuˆa.t t`ım kiˆe´m, lu..a cho.n c´ac th`anh
`e quan tro.ng trong ph´at triˆe’n phˆ

`an mˆ
`em
`an phˆ
`an mˆ
`em theo c´ac tiˆeu ch´ı. Dˆay l`a mˆo.t vˆa´n dˆ
phˆ
.
.
.
.
.
`an cho ph´ep lu. a cho.n th`anh phˆ
`an ph`
`an xˆay
hu ´o ng th`anh phˆ
u ho. p nhˆa´t v´o i d˘a.c ta’ kiˆe´n tr´
uc cˆ
.
du. ng.
ung d˘a´n cu’a c´ac d˘a.c ta’
Mˆo.t sˆo´ hu.´o.ng ph´at triˆe’n cu’a b`ai to´an n`ay nhu. kiˆe’m tra t´ınh d´
.
.
`an theo c´ac d˘a.c ta’ XML mˆo.t c´ach tu. dˆo.ng, mo’ rˆo.ng tiˆeu ch´ı lu..a cho.n c´ac th`anh
th`anh phˆ
`an phˆ
`an mˆ
`em du..a trˆen d´anh gi´a c´ac tu.o.ng t´ac cu’a n´o v´o.i c´ac th`anh phˆ
`an d˜a c´o s˘a˜n trong
phˆ



.
´ GIA’I THUA
ˆ. T T`IM KIE
ˆ´M VA
` LU
`
ˆ N COTS TO
ˆ´I U.U
CAC
PH`A
. A CHO
. N THANH

163

kiˆe´n tr´
uc, v.v. Hiˆe.n ta.i ch´
ung tˆoi dang ph´at triˆe’n c´ac nghiˆen c´
u.u theo c´ac di.nh hu.´o.ng n`ay.
’O
` LIE
ˆ U THAM KHA
TAI
.
[1] Luis Iribarne, Jose M. Trova, Antonio Vallecillio, A trading service for COTS components,
The Computer Journal 47 (3) (2004).
[2] G. T. Heineman, W. T. Councill, Component-Based Software Engineering (Putting the
pieces together) Addison Wesley, 2001. ISBN 0-201-70485-4.

[3] B. Meyer, Object-Oriented Software Construction, 2nd Ed. Series on Computer Science,
Prentice Hall, 1997.
[4] N. Medvidovic, and R. N. Taylor, A classification and comparison framework for software architecture description languages, IEEE Transactions on Software Engineering (3)
(2000) 70–93.
`an - tiˆe´n
`an mˆ
`em hu.´o.ng th`anh phˆ
[5] Hu`
ynh Quyˆe´t Th˘a´ng, Phan Thˆe´ Da.i, Ph´at triˆe’n phˆ
.
.
.
.
`an mˆ
`em ph´
`en th`anh phˆ
`an COTS, Ky’ yˆe´u
u c ta.p du. a nˆ
tr`ınh tu. dˆo.ng h´oa khi xˆay du. ng phˆ
.
.

´
`
at triˆe n v`
a ´u ng du.ng Cˆ
ong nghˆe. thˆ
ong tin

o.i tha’o khoa ho.c quˆ

oc gia vˆe Nghiˆen c´u u ph´
`e n thˆ
`an th´u. II, H`a Nˆo.i 24-25/9/2004 (165–174).
v`
a truyˆ
ong ICT.RDA lˆ
`an - lu..a
`an mˆ
`em hu.´o.ng th`anh phˆ
[6] Hu`
ynh Quyˆe´t Th˘a´ng, Dˆo˜ Tuˆa´n D˜
ung, Ph´at triˆe’n phˆ
.
`an phˆ
`an mˆ
`em hˆo˜ tro. da giao diˆe.n, Ky’ yˆe´u Hˆ
cho.n v`a d´anh gi´a c´ac th`anh phˆ
o.i tha’o Khoa
.
.
.
.
´
´
`
a t - Nghiˆen c´u u co ba’n v`
a ´u ng du.ng Cˆ
ong nghˆe. thˆ
ong tin FAIR
ho.c Quˆ

oc gia lˆ
an th´u nhˆ
2003, H`a Nˆo.i 4-5/10/2003 (423– 433).
[7] Hu`
ynh Quyˆe´t Th˘a´ng, Pha.m Thi. Qu`
ynh, Mo’. rˆo.ng c´ac ph´ep do kha’ n˘ang t´ıch ho..p v`a kha’
.
.
`an mˆ
`em hu.´o.ng th`anh phˆ
`an, Ky’
n˘ang t´ai su’ du.ng v`a xˆay du. ng ph´ep do tˆo’ng ho..p cho phˆ
.
.

`e Nghiˆen c´u u ph´
at triˆe n v`
a ´u ng du.ng Cˆ
ong nghˆe. thˆ
ong
yˆe´u Hˆ
o.i tha’o khoa ho.c quˆ
o´c gia vˆ
`e n thˆ
`an th´u. III, H`a Nˆo.i 22-23/5/2006 (257–267).
tin v`
a truyˆ
ong ICT.RDA lˆ
Nhˆ
a.n b`

ai ng`
ay 19 - 10 - 2006
.
Nhˆ
a.n la.i sau su’ a ng`
ay 29 - 6 -2007



×