https://mkienthuc.blogspot.com/2017/06/do-an-khao-sat-he-thong-thuy-luc-tren-may-ui-komatsu.html https://mkienthuc.blogspot.com/2017/06/ung-dung-logic-mo-trong-chan-doan-hong-he-thong-phanh.html
Trang 1C ´AC GIA’I THU ˆA T T`IM KIˆE´M V `A LU A CHO. N THANH 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 U
HU ` YNH QUYˆ E ´T TH˘A´NG 1
, PHA.M THI QU` YNH2
1Khoa CNTT, Tru.`o.ng DHBK H`a Nˆo.i
2Khoa CNTT, Tru.`o.ng DHSP H`a Nˆo.i
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 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 Ph´at triˆe’n phˆa ` n mˆe ` m hu.´o.ng th`anh phˆa ` n (ComponentBased Software Development -CBSD) l` a mˆ o.t trong nh˜u.ng k˜y thuˆa.t tiˆeu biˆe’u xˆay du ng c´ac phˆa ` n mˆe ` m l´o.n, ph´u.c ta.p, gi´up gia’m th` o.i gian, cˆong s´ u.c v` a gi´ a th` anh xˆ ay du. ng phˆ` n mˆe a ` m C´ac th`anh phˆa ` n thu.o.ng ma.i (COTS) dang 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 ` 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,
lu. a cho.n v`a xˆ ay du. ng c´ac th`anh phˆ ` n COTS Trong b`ai b´ao n`ay ch´ung tˆoi tr`ınh b`ay gia’i thuˆa.t lu a 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ˆe a ` m cˆa ` n xˆay du ng Thuˆa.t to´an dˆe ` 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 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` 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
´
u.ng du.ng d`ung mˆo.t phˆa` n phˆa` n mˆe` 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` 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` 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 th`anh phˆa` n phˆa` n mˆe` 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) 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` 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
Viˆe.c ph´at triˆe’n phˆa` n mˆe` m du a nˆe` n th`anh phˆa` n COTS ng`ay c`ang tro.’ nˆen linh hoa.t l`a do c´o su. gia t˘ang vˆ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ˆe` n th`anh phˆa` n COTS
Trang 2nhu 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 ´u.ng du.ng v`a c´ac th`anh phˆa` n ho`an thiˆe.n v`a d˜a c´o m˘a.t trˆen thi tru.`o.ng 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 ´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` n mˆe` m du a trˆen c´ac th`anh phˆa` 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 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`u ho p v´o.i nhu cˆa` u su.’ du.ng cu’a t`u.ng mu.c d´ıch, r`ang buˆo.c kh´ac nhau
Trong ph´at triˆe’n phˆa` n mˆe` m du a th`anh phˆa`n COTS, viˆe.c lu a cho.n th`anh phˆa`n COTS ph`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
H`ınh 1 Tiˆe´n tr`ınh xˆay du. ng phˆa` n mˆe` m
du. a trˆen c´ac th`anh phˆa` n COTS
v`ao nghiˆen c´u.u mo.’ rˆo.ng gia’i thuˆa.t lu a
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. 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´ı:
du th`u.a d˜u liˆe.u cu’a c´ac th`anh phˆa` 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. c tr`ınh b`ay
nhu sau Mu.c 2 tr`ınh b`ay vˆe` tiˆe´n tr`ınh xˆay
du. ng phˆa` n mˆe` m du a th`anh phˆa`n COTS
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.’ rˆo.ng dˆe` xuˆa´t cho thuˆa.t to´an
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. c hiˆe.n v´o.i c´ac gia’i thuˆa.t dˆe` xuˆa´t,
cuˆo´i c`ung l`a kˆe´t luˆa.n v`a hu.´o.ng ph´at triˆe’n
2 TIˆE´N TR`INH PH ´AT TRIˆE’N PH ˆA` N Mˆ` ME
DU A TR. 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` n du a trˆen c´ac th`anh phˆa`n 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 Rose) dˆe’ mˆo ta’ v`a thiˆe´t kˆe´ kiˆe´n tr´uc phˆa` n mˆe` m Mˆa˜u d˘a.c ta’ du.o c xˆay du ng v`a tr`ınh b`ay trong [1, 5]
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´y ph´ap UML - RT th`anh c´ac mˆa˜u d˘a.c ta’ XML
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ˆa` n ´u.ng cu.’
Trang 3viˆ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]
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ˆa. ` n t`u danh s´ach th`anh phˆa` 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` m yˆeu cˆa` 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 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`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 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. a cho.n tˆo’ ho p th`anh phˆa. ` n
3 THU ˆA T TOAN COTSConfigs LU´ A CHO. N TOˆ’ HO P.
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`u tˆa.p c´ac th`anh phˆa` n ´u.ng viˆen l`a mˆo.t qu´a tr`ınh quan tro.ng 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` 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` u kiˆe.n ph`u ho p o.’ dˆay l`a pha’i lu. a cho.n c´ac th`anh phˆa` 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 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` n xˆay du ng
B`ai to´an lu. a cho.n tˆo’ ho p c´ac th`anh phˆa. ` n COTS du.o c ph´at biˆe’u nhu sau ([1]): Cho mˆo.t kiˆe´n tr´uc phˆa` n mˆe` 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 dˆe’ lu. a cho.n t´ıch ho p v`ao A Cˆa. ` 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
´
u.ng viˆen COTS c´o trong B, sao cho cˆa´u h`ınh S d´ap ´u.ng c´ac di.ch vu./ch´u.c n˘ang m`a A yˆeu cˆa` u Nhu vˆay cˆa´u h`ınh S cˆa` n d´ap ´u.ng hai diˆe` u kiˆe.n:
(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. 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.)
(ii) Khˆong c´o hai th`anh phˆa` 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 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 6 i 6 size(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 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
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
8 if {Ci.Ri} ∩ Sol.R = ∅ then // Ci.Ri 6∈ Sol : R?
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?
Trang 411 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
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`ung nhau
18 configs(i + 1, Sol, S) // tiˆe´p tu.c trong CB(A)
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ˆe` u du.o. c sinh ra b˘a`ng c´ach thu’ tˆa´t ca’ c´ac ´u.ng cu.’ viˆen, kˆe´t ho p dˆa`n c´ac di.ch vu Cj.Rj c`on chu.a. ch´u.a trong A, v`a bo’ di nh˜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 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ˆa` n thiˆe´t
3.2 D´anh gi´a nhˆa n x´et vˆ` gia’i thuˆe 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 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 ng A, mˆo.t tˆa.p S 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 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 ca.n, v´o.i dˆo ph´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ˆa` n trong CB(A) c´o thˆe’ d´ap ´u.ng Khi d´o v´o.i mˆo.t kho c´ac th`anh phˆa` n ´u.ng viˆen l´o.n, th`ı s˜e dˆa˜n 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
4 C ´AC Dˆ` XU ˆE A´T CA’I TIˆE´N GIA’I THU ˆA T COTSCONFIGS
LU A CHO. N TO’ HOˆ P C. 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´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` 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 thˆe’ du.a v`ao dˆe’ t˘ang hiˆe.u qua’ t`ım kiˆe´m nhu.:
- Lu. a cho.n 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
- Lu. a cho.n th`anh phˆa` n v´o.i tˆo’ng gi´a th`anh l`a tˆo´i thiˆe’u
4.1 Ca’i tiˆe´n gia’i thuˆa.t lu a cho.n th`. anh phˆ` n v´a o.i du th`u.a d˜u liˆe.u tˆo´i thiˆe’u 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ˆa` n mˆe` m yˆeu cˆa` u, ch´ung ta c´o thˆe’ thu du.o. c nhiˆe` u kˆe´t 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 th`anh phˆa` n m`a ngo`ai nh˜u.ng di.ch vu m`a kiˆe´n tr´uc phˆa`n mˆe` m d˜a yˆeu cˆa` u, c`on c´o nh˜u.ng di.ch
vu du th`u.a khˆong cˆa` n d`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´u.c ta.p dˆa˜n t´o.i
du th`u.a d˜u liˆe.u v`a th`anh phˆa` n cu’a hˆe thˆo´ng phˆa`n mˆe` m du.o c xˆay du ng Dˆay l`a nh˜u.ng cˆa´u
Trang 5h`ınh khˆong du.o. c lu a cho.n V`ı vˆa.y ch´. ung ta cˆa` n pha’i xˆay du ng gia’i thuˆa.t t`ım kiˆe´m, lu a cho.n 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. c dˆe` xuˆa´t nhu sau
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
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
//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
//tho’a m˜an ngu.˜o.ng vˆe` sˆo´ di.ch vu
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
21 if (numberOfInterface(S) + (n − m)× minOfInterface(CB(A))
⇐ total then
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ˆa` n ´u.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
bo.’ i c´ac th`anh phˆa` n ´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 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 phˆa` n ´u.ng viˆen Dˆay ch´ınh l`a ngu.˜o.ng vˆe` tˆo’ng sˆo´ d˜u liˆe.u cu’a mˆo.t cˆa´u h`ınh
Trang 6Tu.o.ng tu. nhu 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 xem Sol c´o l`a mˆo.t cˆa´u h`ınh khˆong v`a nˆe´u d´ung, kiˆe’m tra cˆa´u h`ınh n`ay c´o tˆo´i 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 qu´a tr`ınh t`ım kiˆe´m ta c´o, kiˆe´n tr´uc A cˆa` n n di.ch vu., m`a l´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ˆa` n n − m di.ch vu cu’a 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 m − n di.ch vu n`ay n˘a`m trˆen n − m th`anh phˆa` n kh´ac nhau Nhu vˆa.y, diˆe`u kiˆe.n 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ˆ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.t lu a cho.n th`. 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` n du.o c dem ra thu.o.ng ma.i V`ı vˆa.y, khi xˆay du ng hˆe thˆo´ng phˆa` n mˆe` m su.’ du.ng c´ac th`anh phˆa`n COTS, ngo`ai yˆe´u tˆo´ k˜ı thuˆa.t l`a pha’i d´ap ´u.ng du.o. c kiˆe´n tr´uc phˆa` n mˆe` m, th`ı yˆe´u tˆo´ vˆe` m˘a.t gi´a th`anh cu’a COTS c˜ung l`a 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` n COTS du.o c di k`em trong t`ai liˆe.u d˘a.c ta’ vˆe` th`anh phˆa` n, COTS Document V`ı vˆa.y, thuˆa.t to´an sau dˆay du.o c dˆe` xuˆa´t 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.t COTSConfigs ca’i tiˆe´n v´o.i gi´a th`anh tˆo´i thiˆe’u
2 function brandAndBound(i, Sol, S) // gia’i thuˆa.t nh´anh cˆa.n
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
// thu.’ gom di.ch vu Ci.Ri v`ao Sol
11 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
// 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
Trang 7Tru.´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. 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` n s˜e nho’ ho.n ngu.˜o.ng gi´a cho tru.´o.c
maxCost := hkho.’ i ta.o mˆo.t gi´a tri ngu.˜o.ng gi´ai
Tu.o.ng tu. nhu 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 xem Sol c´o l`a mˆo.t cˆa´u h`ınh khˆong v`a nˆe´u Sol d˜a 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.’ 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 A cˆa`n n di.ch vu., m`a l´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ˆa`n n − m di.ch vu cu’a 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 di.ch vu n`ay n˘a`m trˆen m − n th`anh phˆa` n kh´ac nhau Nhu vˆa.y, diˆe` 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 Sol cˆo.ng v´o.i (m − n) th`anh phˆa` 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 nho’ ho.n ngu.˜o.ng gi´a cho tru.´o.c o.’ trˆen
4.3 Nhˆa n x´et vˆ` hai gia’i thuˆe 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 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˜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 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 U COTSDocument,
D ˘A C TA’ 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. 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) cˆa` n 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ˆ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 long x)
long read()
}
}
// giao diˆe.n yˆeu cˆa` u
interface out {
Trang 8oneway void print(in long x)
}
}
h?xml-stylesheet type=“text/xsl” href=“http://www.cotstrader.com/
COTS-XMLStyle.xsl”?i hCOTScomponent name=“theBuffer”
xmlns=“http://www.cotstrader.com/COTS-XMLSchema.xsd”
xmlns:types=“http://www.w3.org/2000/10/XMLSchema”i
hfunctionali h/functionali
hpropertiesi h/propertiesi
hpackagingi h/packagingi
hmarketingi h/marketingi
h/COTScomponenti
• C´ac mˆo ta’ mang t´ınh ch´u.c n˘ang (Functional description) ([1]): Phˆa` n dˆa` u tiˆen mˆo ta’ tˆa´t ca’ c´ac kh´ıa ca.nh mang t´ınh chˆa´t t´ınh to´an cu’a th`anh phˆa` n, bao gˆo`m tˆa.p c´ac giao diˆe.n cung cˆa´p v`a yˆeu cˆa` u Phˆa` n n`ay c´o 3 phˆa` n ch´ınh du.o c go.i l`a providedInterfaces, requiredInterfaces, v`a 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
• C´ac r`ang buˆo.c vˆe` d´ong g´oi/kiˆe´n tr´uc: Ch´u ´y r˘a`ng, c˜ung giˆo´ng nhu phˆa` n trˆen, c´ac thˆong tin vˆe` g´oi v`a ph´at triˆe’n c´ac th`anh phˆa` n 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’ hdescriptioni 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
Dˆ` xuˆe a´t th`anh phˆ` n bˆa o’ sung trong COTS DOCUMENT
C´ac thˆong tin vˆe` marketing: C´ac loa.i thˆong tin diˆe’n h`ınh o.’ dˆay cˆa`n mˆo ta’ bao gˆo`m: ba’n quyˆe` n, ch´u.ng nhˆa.n, thˆong tin nh`a cung cˆa´p Ch´u ´y thˆong tin trong the’ hexpirydatei v`a the’ hcosti 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 v`a lu. a cho.n th`anh phˆa` n tˆo´i u.u theo gi´a th`anh
hmarketingi
hlicense href=“http://www.cotstrader.com/samples/vendors/vendor3/theBuffer
/license.html”/i hcertificate href=“http://www.cotstrader.com/samples/vendors/vendor3/theBuffer
/lcard.pgp”/i hvendori
hcompanynameiVendor 3 Corp.h/companynamei
hwebpageihttp://www.cotstrader.com/samples/vendors/vendor3h/webpagei
hmailtoisales@cotstrader.vendor3.comh/mailtoi
haddressi
hzipi04120h/zipi
hstreetiCtra Sacramento s/nh/streeti
hcityiAlmeriah/cityi
hcountryiSpainh/countryi
Trang 9hstreetiCampus de Teatinosh/streeti
hcityiMalagah/cityi
hcountryiSpainh/countryi
h/addressi
h/vendori
hcosti500h/costi
hcurrencyiUSDh/currencyi
h/marketingi
Nhu vˆa.y, nh˜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 d`ung d˘a.c ta’ c´ac di.ch vu T`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 Ch´u.c n˘ang v`a gi´a th`anh cu’a th`anh phˆa` n 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’ 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
H`ınh 2 C´ac thˆong tin c´o trong mˆa˜u d˘a.c ta’ th`anh phˆa` n
6 L ˆA P TR`INH THU C HI. Eˆ N CAC THU ˆ´ A T TOAN´
V `A D ´ANH GI ´A THU’ NGHIˆ. E M 6.1 Xˆay du. ng phˆ` n mˆa ` m thu.e ’ nghiˆ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 nˆe` n hˆe diˆe`u h`anh Windows, dˆe˜ d`ang ta.o giao diˆe.n mˆo.t c´ach thˆan thiˆe.n Diˆe`u d˘a.c biˆe.t quan 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 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`ung KS Nguyˆe˜n Thu Thuy’ v`a KS Nguyˆe˜n 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’ 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ˆe` tˆa.p giao diˆe.n cu’a mˆo.t th`anh phˆa` n, cˆa´u h`ınh, kho ch´u.a c´ac th`anh phˆa` n, kiˆe´n tr´uc phˆa` n mˆe` m Tiˆe´p theo, hˆe thˆo´ng xˆay
du. ng c´ac l´o.p ConfigGenerator, StandardConfigGenerator, MinCostConfigGenerator, MinDat-aConfigGenerator Trong d´o, l´o.p ConfigGenerator l`a mˆo.t l´o.p tr`u.u tu.o ng mˆo ta’ qu´a tr`ınh t`ım kiˆe´m, sinh ra c´ac cˆa´u h`ınh L´o.p StandardConfigGenerator du.o. c kˆe´ th`u.a t`u ConfigGenerator 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ˆe` cˆa.p o.’ trˆen Tu.o.ng
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 thiˆe’u du th`u.a d˜u liˆe.u
6.2 Thu.’ nghiˆe.m c´ac thuˆa.t to´an
Trang 10Du. 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ˆa`n mˆe`m thu.’ nghiˆe.m c´ac gia’i 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´u.a d˜u liˆe.u vˆe` kho ch´u.a c´ac th`anh phˆa` n ´u.ng viˆen, v`a mˆo.t tˆe.p mˆo ta’ vˆe` kiˆe´n tr´uc phˆa` n mˆe` m cˆa` n xˆay du ng 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:
- GTSCandidates.xml: Tˆe.p ch´u.a d˜u liˆe.u vˆe` kho ch´u.a c´ac th`anh phˆa` n ´u.ng viˆen
- GTSArchitecture.xml: Tˆe.p ch´u.a d˜u liˆe.u vˆe` kiˆe´n tr´uc phˆa` n mˆe` m cˆa` n xˆay du ng
C´ac tˆa.p XML mˆo ta’ c´ac th`anh phˆa` n ´u.ng viˆen cˆa` n xˆay du ng v`a c´ac th`anh phˆa`n ´u.ng viˆen 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 theo thuˆa.t to´an v´et ca.n ban dˆa` u th`ı sˆo´ lu.o ng n´ut trˆen cˆay t`ım kiˆe´m pha’i duyˆe.t qua l`a 958 n´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ˆe` gi´a th`anh Khi ngu.`o.i d`ung nhˆa.p v`ao gi´a th`anh l`a 2200 USD th`ı s˜e chı’ cho mˆo.t kˆe´t qua’ cˆa´u h`ınh tho’a m˜an, v`a sˆo´ n´ut cˆa` n 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˜u liˆe.u, t´u.c tˆo´i u.u vˆ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 nhˆa´t, v´o.i sˆo´ di.ch vu tˆo’ng cˆo.ng chı’ l`a 7, v`u.a d´ung dˆo´i v´o.i sˆo´ di.ch vu m`a kiˆe´n tr´uc phˆa` n mˆe` m yˆeu cˆa` u 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
Ba’ng 1 Kˆe´t qua’ thu.’ nghiˆe.m v´o.i c´ac thuˆa.t to´an
Sˆo´ n´ut cˆa` n duyˆe.t 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
(**) Gia’i thuˆa.t t`ım kiˆe´m th`anh phˆa` n COTS tˆo´i u.u theo du th`u.a d˜u liˆe.u
(***) Gia’i thuˆa.t t`ım kiˆe´m th`anh phˆa` n COTS tˆo´i u.u theo gi´a th`anh
6.3 D´anh gi´a v`a kˆe´t luˆa n
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 c´ac n´ut cˆa` n duyˆe.t d˜a gia’m di l`a do ta khˆong cˆa`n t`ım kiˆe´m to`an bˆo c´ac tˆo’ ho p cˆa´u h`ınh trong b`ai to´an duyˆe.t cˆay m`a chı’ cˆa` n 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 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ˆa` n lu a cho.n - tˆo´i u.u theo du th`u.a d˜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ˆa` n mˆe` m du a trˆen c´ac th`anh phˆa` n 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 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ˆa` n COTS, ph´at triˆe’n gia’i thuˆa.t t`ım kiˆe´m v`a lu a cho.n th`anh phˆa` n COTS tˆo´i u.u theo hu.´o.ng gia’m thiˆe’u du th`u.a d˜u liˆe.u v`a gi´a th`anh cu’a th`anh phˆa` n COTS v`a thu.’ nghiˆe.m gia’i thuˆa.t v`ao hˆe thˆo´ng GTS (Geographic 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 phˆa` n phˆa` n mˆe` m theo c´ac tiˆeu ch´ı Dˆay l`a mˆo.t vˆa´n dˆe` quan tro.ng trong ph´at triˆe’n phˆa`n mˆe` m hu.´o.ng th`anh phˆa` n cho ph´ep lu a cho.n th`anh phˆa`n ph`u ho p nhˆa´t v´o.i d˘a.c ta’ kiˆe´n tr´uc cˆa`n xˆay
du. ng.
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´ung d˘a´n cu’a c´ac d˘a.c ta’ th`anh phˆa` n 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 phˆa` n phˆa` n mˆe` m 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ˆa`n d˜a c´o s˘a˜n trong