A Pattern-Based Approach to Model Software Performance
Jos ´e Merseguer
Dpto. de Inform ´atica e Ingenier´ıa de Sistemas, University of Zaragoza, Spain
[email protected]
Javier Campos
Dpto. de Inform ´atica e Ingenier´ıa de Sistemas, University of Zaragoza, Spain
[email protected]
Eduardo Mena
Dpto. de Inform ´atica e Ingenier´ıa de Sistemas, University of Zaragoza, Spain
[email protected] ABSTRACT
.B>CD )A#E* D*. > F&".GH I#&% J I% G(?% (#6-% *D
W%](* C!^%W!X"!_8`C Da' RbCK% !P)A C!/
eJ[)3% WfI(* (LRY* !5% E*Y )Q8Og7h
% # #?%'i&% ,% Q%P(**%6h 5[ )3%6)AC!6L^#
(0"!,PlXmn op8
Keywords
1. INTRODUCTION
^ '!KQw% 6RX'%Z$ QxJy0z'{w|B} ~, Jy'&3J {4&~y"'JxxDH@
kQlXm" opD
cflZop8PcC*)A3G)&%"M?A(*Rs"!2%&!
ZoN&% YE*)A]%3>*1,L "%
Y. >Q&% E5!M?6*#E!h.GXRh]# K9OeH
n? 3 c#&% `Bg0HY8
#&%Z'%*!R()&% WEdA Y0 !1 DI*'% (5 0 (
##E*% 6RGJ$%4 ;.66X>C ".GP JxR A} {w{7J~J xAlop8HD
.4%Z^010)AQ5!*68fNM? ".%*! %1DK010)Ah%
@ 6X1d!#6Z1?"!.GX 3 ,#E[ )3% h<#E"!C1
6 8^g7WA%h*)A)A^#'%JR,Y!M?6*#E]50]
#E@)3%Y VX4010)A*6X1=.G 3 J13&%"M?;ELR)=
# 6)AC!S8cC-.4%Z2#E[ )3% Pu&6R!lXm o=` "!
cM?'%6Y%##?% J,jR$% %2 %"M?`E:##E*"!.GX
!().G66aE />?1L3*)] E U8;C D&.B]#*#EW%
K-.% =(* Y.G66NEW% 6]3"% #/[ &%6J
b X)A K%/.6R6%W#EJ[)3% A"b )A 8Qgt'!J
8L /# D"%66"!PeN
eG "DSK%6h "!5.GX
64-*)+ !M?6#E"!$)AC!68
`6R%(* %(*5##E*"!j¡l
# %*8aeI
eh##E*BJ)A a6R%(*&% (*B.GX
)3%=(?%6W%&!`. >6*%*!^!Ju& X*Da*'% (j¢# %
.GX\#EJ[)3% £ ¤8g7^lopD_
kQ¥lXm" oN'%ZR\"!
%*!M? "%Z[; Y V qkQrt '% *Pl§"oE"% aX
eJ[)3% A;"b X)ACO[
(Aea%Z 8
¤
X1 8qkQr2.G66NE]J"!Q.GX\#E@)3% W% '%ZR D
.B=.G6R6I ] =#*#E*% 6H0'%Z"!tlXmn op8L9O J##E*%6
$% '% ])AW%#EYR5qkQr2&%"M?KE50'% !`@
%6XpR)Au 6R!\l opD @.GXh!Xv_CGM?8
'%Z* D $ JR,.GX$Y(*R!G(*M?, 1LeI eD
#EJ[)3% L% '% "!PqkQr:!R%( '%)A/[ ]L010)Q8$g
'!;3*'%hC )A"% 6S6XO@)+ /qkQr^% '% "!
!R%('% )AW[ = L)A# 6L010)QDa.,#*)A L$$
qkQrd!R%('% )A8] @*DS K)AC!6RYB]010)ª)W0
g7W N.4%1 D H%##?% JA*)W a&~0}"A}{w@x'©} EBzy~'A}*X®
@{w¯8
lXm"§ZoE/!R(L%&!]R)A#6)A N 4010)A8NC D*.O% G#X
)3%Z61tCJ0"!Pt 30 !1\G#&%Z /&%Z]u/.66B@
;>C&!La @7.4% 8
50Q/5# %#E,,(*%Rs"!³% $@*66Z.G8´c§
d%' M*teN
#*#E"! 1deI e¶t)AC!6G#E[ )3% `%&!2[ * %6
Q*Q8
2. PROP PATTERNS
o% dº7 JxJ~'&{wpy xLy0zAy=®
§4.BB<# 6R% R
2.1 Basics on design patterns
% G#*#E"!,tl
Â^ÃOÄ ÅÅÆCÇÈ2ÈVÄ&É\Æ
Â^ÊÈ_ÅÆÈSÅ
Â^˵Ì&Å"Í@ÎÄ ÅÍ@ÌEÈ
,6RM*;# 6)Q8
Â^ÏLÐÐÑ[Í[Ò*ÄÓaÍ[Ñ[Í@Å'Ô
%# #6R!S8
ÂÕSÅÇ ÖÒ*Å"ÖUÇ Æ
×
( kQ:'% EØJ8
Â^ÃOÄ ÇZÅ"Í@Ò?Í@ÐÄ ÈSÅ"Ù
ÂÚKÌEÑ[Ñ@ÄÓNÌ&ÇZÄ Å"Í@Ì&ÈÙ
Á4 ".i Y#&% # % G*66R%E '% *8
ÂÚKÌEÈÙÆÛSÖVÆÈÒ*ÆÙ
Â^ÊÉ\ÐaÑ-Æ É5ÆÈ_ÅÄÅ"Í@ÌEÈ
ÁVJ Rb aEG !W.G A)A# 6
)A R(K#&%ZU8
ÂÕSÄEÉ\ÐÑ@ÆAÒ*ÌSÜVÆ
ÁC!@'% (*)A % N66R0'% 4Z.^1?*
)AR( GR)A#6)A B#&% J,h4ÝÝ¡YcC)3%66X'%6>E8
Â^ÞQÈVÌßAȵÖÙÆÙ
ÁO<%)A#6RW# % `[ &!`\"% 6
010)A8
Â^à3ÆÑ@ÄÅÆÜ+ÐÄ ÅÅÆÇ ÈÙ
* 8
#&%Z 8
§*Øa J.JR I.GR66&E;%! !!] 46R%(*&% (*G.GX= G%)A
6".GR(8
2.2 Adding performance features to design pat- terns
6R%(*&% (*K% #*#E"!S8
.G66VE/% '% "!_8
K)A"% (3NW% '% *Yh ]!R%( '%)ADE/J
Rb GA'% RQ)´% !,O!'% 6RO * !$A!J
<C !W G= )Q89OH%A<%)A#6*D*G%*!JB)3%1]
^¸(*Qm*D'% >?\-*)âlXm"nZoDaA% '% *]tE6R!\w% *8
c)AA4)#C/L6*%*!P43#&% '% )A/P
{1K}
{100K}
{100K}
{100K}
{1K}
{0.9}
{1K}
{1K}
{1K}
{1K}
{1K}
{1K}
{1K}
{1K..100K}
refine_catalog(refinement_plus) select_sw_service(info)
c1:Catalog create_catalog(info_plus)
observe_GUI_catalog(c1)
select_sw(name)
[info_need] more_information(refinement2, ci)
{1K}
{prob} {1K..100K}
[satisfied]
create_salesman(info_sale) [not satisfied]
1..n show_catalog_GUI(c1)
create_browser(c1) get_catalog(info_plus)
refine_catalog(refinement)
electronic_commerce
info_sale_plus request(info_sale)
delete_browser select_sw(name)
c i+1
Salesman BrowserAgent
SwManager Alfred
æ
Í-çEÖVÇZÆ^è&é/ÏLÈÈVÌ&ÅÄÅÆÜjÙÆÛUÖUÆÈVÒ*ÆhÜÍ@Äç&ÇZÄEÉê
$ëì-íî"ïí
×
't% Käôõ,\,öZñï óî"ï'÷óøíù
(&%Z'!&ØJ8
×
c¹ØU[I"% JW#&% # % I)W 0E
Kc¹¡.G66VE% '% !$.GX, M? 46?%*!_D #
% 6XRa(*&%Z'!O% !$ )AA#E@)+ /% * 8
JRE G.4%13L.GR'$% '%ZR G%Z! *8I9;BX4
# W`'%^ $% '% "!2c¹À% &!t L)A"% (h
/% '%Z* ;%Z(*M?Q\lmn op8
#EJ[)3% @"% Á
Â^ÃOÆCÇZúÌ&ÇÉ\Ä&ÈÒÆQç&Ì&Ä Ñ[Ù
6s"% *S8
ÂPû¡Ì&Ç üSÑ@Ì&Ä ÜÜUÆCýaÈÍ@Å"Í@Ì&ÈÙ
oE*(*J H.GA; &% )A
,"% '% 6R(^#C!µl oO* '% A7. 1^Q!(*
)3%32%66; )Q85cDa 1t*6-!PE*)ALeN
eµ#&%Z
8A9 ])A*)A "DE.BA% = 6X15*"!\% E* *
.G 'j%Zh%##*#R% Q[ $%\ ,@7.4%Z`J *6(1_Á
O.GXQ XYZ.G`#E@)3% [% DUG ;.GR66aE
Y C0; a[Y. >C8
L.4%12\Q%5eI
!M?6*#DU ($KJ Rb O(*M?5dlXm"nZopDV W% '%Z"!
('% )A[K A*66R%E'%Z (5*C08Q9 A)A*)AC"DU*6X1
%2¢# £$ H]010)ª&% YE5)AC!6R6"!_8\¢7# £$
"%!1=KEO"!3RAYeN eP# 8cC*$8mO<# 6R%
e2# 8
3. THE PROP PROCESS
e# á@) ".
Q'%tA#E[ )3%A&!K 4 A010)½ % J1
Do:add_info4 WAIT
get_catalog(info_plus)
request(info_sale)
{1K}
^salesman.reply(info_sale_plus) Do:get_info
{1sg}
{1sg}
(b) (a)
{0.5sg..50sg}
{100K}
{1K..100K}
{1K}
^browser.reply(catalog) ^catalog.create_catalog(info_plus)
Do: create_catalog
^browser.create_browser(ci) more_information(refinement2,ci)
{1K}
{1K}
{1K}
{1 min}
Do: create_browser
^user.observe_GUI_catalog(ci) show_catalog_GUI(ci)
<<more_services>>
WAIT Do:create_GUI(c)
Do:add_info2
^browser.refine_catalog(refinement_plus) {100K}
{1K}
{1K}
{1K}
[not ^user.satisfied]refine_catalog(refinement) {0.9}
{0.1} {1K}
[^user.satisfied]select_sw(name)
{1K}
Do:add_info3
{1sg}
select_sw_service(info) ^SwManager.get_catalog(info_plus)
^browser.select_sw(name)
{1sg}
Do:add_info1
{100K}
{1K}
{1sg}
{1sg}
æ
Í@çEÖUÇ Æ
éSÄEÉ\ÐaÑ-ÆÙ]Ì&úOÄ ÈÈVÌ&ÅÄ ÅÆÜiÕ ,Ù*ê
(3)
Performance Model PROP results (take decisions)
Software Requeriments
UML annotated diagrams
(1) (2)
æ
Í@ç&ÖVÇZÆ_é UÆhÃà=Ã+ÐÇZÌUÒÆÙ"Ù*ê
M*% 6R % *S8
#*)A CK*6*8t9O] '% *SDI.B,#*#E*LqkQri% '% "!
`#'%()3% `)AC!6;Q% JRM?"!SD;%P@)3%6O)AC!6;.G6R6YE
'% R"!-*)X"8g2 ,6R% 0$0#UDB$@)3%6G)AC!6.G6R6
J Rb 8
J[GW )QÁ
0 ,.GXheI e2#&%Z 8
§ 84qYIeN
(W@)3% 6U)AC!6w8
e¶^*6M?Q
[ )3%6S)AC!6w8
3.1 Modelling system requirements
hqkQr³% '%Z"!j!R% ('%)ADB@*) Q-.4%Zh"b X
)ACDC.Gh%W010)©;E (=)AC!66"!S8
)
!R% ('%)A]% !P%JRMCX=!R%('% )A8h9/ K0'%(*3qkQrjR)=
# 6)AC'%Z*Q!R%('% )A;% /%"M?*R!"!S8
0&!C1P L"b X)A = Y,010)·d'!J=tR!CX-1
.G J=, =eI
'Z L<#E`% !d h010) '&%Z'%08¡ *
!R% ('%)A;% &!$/c¹G% OXG.4% G#*#E"!,PlXm"nZop8
3.2 PROP translation rules
9a I#E* "D*.4 %"M?4)AC!66"!]010)¡.GXAqkQr,'%Z
*SDS'% >CR(3R $%* O K6R*%*!``]bC W!-% ('% )
a010)+&% GE,'% R"!S8
"!
×
% %6X1C3J Rb Q L!M?6*#E!tqkQr:!-% ('% )A8`TB
.G66&E4<# 6R%"!=W 4<CH*U8g7IHHR *]&%
H[)3% 6)AC!6 "% =E*'% !K@)¡ #'%()3% )AC!6
Í@ç&ÖVÇZÆUé/Ï$ÙÔUÈÒ VÇZÌEÈVÌEÖVÙAÒ*Ì_ÉPÉêÓIÆCÅ'ß]ÆCÆÈ2Å VÆhÅ'ß]ÌtÃOÆCÅÇ Í4ÈVÆCÅ=Ò*ÌEÉ\ÐNÌEÈVÆÈSÅÙ=Ì&ÓÅÄ Í[ÈVÆÜjú7ÇZÌ_É Å VÆ\Õ ,Ù=Í@È Í@çVê ê
¸X0"DH.,)] 0]*'%%`0 '&%0heJ4 =@A%'d010
)6R%D4^yYy EJ {K _J{wx8
CMCR 6X1 DI h% '% "!
6G#*#E"!,PlXm"nZop8
cC&!SDS ]"b A!-% ('% )A.GR66IE]=(*-!W,'% R
.GXK I%)AB %)AIK7.!Xv_ )A#E* JDH
×
ëî"ïîñ;W¸(B?ØJ8N I.4%1
|H}@{xJ=} {wwxh% !j Ey*®p|H}[{/xJA} {wpxD.$#*#Eh%`01
' =)A#E*X*
×
×
9;%`<% )A# 6*DS¸(*=$".G ".¡*íJï ëîZï0î
UD_.GX\p.4% )3% DS01 '*sOW)A#E*
eJ J8NeN "!(K=4%)A4.4%1K 4)A# 6G N@
010)¥.G66VE*'% !S8
@)3% &!8
3.3 PROP techniques to solve the formal model
#6R!$=*'%Q#E@)3% (?%6G[ O010)Q8
% % Q !6X1 (=)3%Z )3%ZR%6_ *6V@O*)A# (W#E
@)3% 5&!QK 0"8¥9O)A*(P )QD;b (2
.B>CG#&%Z'%*!()
×
°Y'ØOlZoD0 '&%0/eS J
×
ceN°Y'ØOlXmJoD
% &!,0 '&% 0# O%6('%
×
ceS9;'ØYlZop8H¸ O%66Sa)QD
%*!"b &%ZO[ G Y)AC!66R(W )AC!6R% 4010)ADC O#C
#E@)3%`M%6&%ZR:.*6R!j)3%>?Q) !A6L2
^"%6;%## 6"% 8^¦P3. 6R!2 (*(0LceI°O]'% = %
°Y)AC!6/E"%= 15 6R !3% P<# 6XK#)AXRM*W[
)AC!66R(=N01J* s"%Z*Q)A'&% )
×
%$x¯ E'²C~0y ¼"®
[ A{w~0} x[{wpy SØB @Y1L% #ER%66X1Q%!"b &%ZO@G
[ AE^$M%6R! %ZRd Y6(*"%6;##E= OL010)
×
*8
×
#E@)3%M%6&%Z*EØJ8
~'[J t 'y Yyx[{wpy P} &}*¯ x'@x{7'² Jx[ ceI°O;%G *
)3%=M%6 % *P)AJ C!8Wg\*/# /CJ<"DV*C0J
6X[K6R%*!; /!u&hN h¢7*)A#E £
×
7. >'Ø
V eJS"D% !3R4)AC! 6R% GMC.i V Y)AC!6E4
VE*&!U"%/EI*)A#"!;[V N0"%*!C1C70'%ZH#EJ[)3%
&%Z4'%>?#uGa Y)AC! 6R%ZGM. IeU8
=!(*\%,010)QDSR5.G '\)3% C1`# % '% )A%ZA
>C ".GL%'% 61 8HcCM?'% 6E%6X % M?H[B *O#&%Z'%)A
# '% *2v_ "8^¦:X%*! !XR&% 64*)A#'% CM?0)AC"D
J;B%/6R%Z(*;)WEI V% # #Z<)3% =J Rb a@0
MC.Ga I)AC!6w8a9;# #Z<)3% IM%6 U[aH#EJ[)3%
#&%Z'%)AJ% ]5( J'%6a)AKARC6X1`!M?"!, %h
<%J*8g7Q Y* <C"DS%A#'%()3% K*)A#*)A$E
&% &!6R!jC1 5!(* JQ]%^010)â*$ 5!u&
*A Ew%X[ 6 )AC!6D* % I)3%1WE4M*1K*)A#6RJ<]<% 6X1
% &% 61 .G % G)3%136"%*!3] O N%##"<)3% *LN00
E ! (5J Rb 'ØJDH3)A#6RXu "!d)AC!6DB[ 3.G Jd<C
*0J% '%1^'%!v)W0]EA'% >?^ `% =P
4. CONCLUSIONS
%66"!3eI
)AC!6
×
J Rb
×
9;t)A#E'% /%)A H. >\)] 0EWRCM?0"!\` W@
*Á
ÂÂ
E##E*"!_8
Â
\0 '&% 0RQeG
×
3% C12 =#E[ )3%
"!L[)3% 6R)LØJ8
Â
6R!E` ('%Z"!i%\ *6%&! 12. 6R!'%>*
5. REFERENCES
lmJoKk\8 9I0)A /kQ%Z%SD#"]8ETB%6ED&%&!$"]8EB *8
«;J~[zy ~J=} E'%\y"?x/y0z%`{w&~0y"JJxxJy~ & ¯ x{7JWx8Sk,g0
l§"o "]8 TB JSD&g'8('?% **SDE% !)'8O)W % (U8 k*"
qYXu&"!,k,C!6 (3rU% (&% (*/#EXu&% *SD!'* Wm**C8
M?tm*88
l
C0JYUJ 6R(1
l
0]JxR ,«G}{w{7J~' x.:2GRJAJ {wxKy0zOþGJxJ}?±R
l
<' {7J~' E} {wpy E}A@IyY {7J~Y«;J~[zy~J=} E'K} E
0]7J &?}?±w@{w¯6&¯Oyx[CWD
#&%(m"n*§B&mm"C8_g0fIfHf4cC7eNDE9O#6Nm**C8
l
"]8
D -UxE@I}x0~'[J D
l D
lZoH=89H/% C"8(<' {w~y"{wpy 5{y*@IyY&C{7J~& ¯ x{7J
«OJ~@zy~'A} &'C24 } } {wpy 8Ek, "O'%.47¨O6R6wDUm"**§C8
lZoKea87H (W%&!$K8e *61 8 qY (WqkQr5=!M?
0 J %0KeUG)AC!68g$'8ETI'%*!61,% !
°]8¹%"MCRD "!XD&«4~0y"J[ xKy0z{@² 5IHzJ{7J {@²
D
}
-#J¶«;J~[zy ~J=} E'C2 C[ EJ~J[ LK,y~NM x0²y'&D&# %(*O?B 8
TH0*6wD!'*6X1\m**C8
¬KJ{wxEP &2I«H¬*QRSTSTSVUW|Hy~WM x0²yJ\|I@{@²C[ `{@² RX x{
<' {7J~' E}{wpy E}*A@Iy "z"J~J E'Wy D ?Ep}{wwy \} EY+U² y~'¯
y0z;«OJ{w~'N¬/J{wxDE9O% C D¹)3% >EDF'* K§nn*n8&V
%# #E% "8
%# #6R% *8_«~y"' [ Cx]y0z{@² <=2>2>24D *
×
ØJÁ mVBC*nCD
9O#6am"*C8
lXmZ§"oKfG8 eIX'%A% !)"]8&c% )3% '%8!0K} {}E%\} &}" J3J {Ezy ~
%\y?±wR@IyO&C{w[ C8H6 .J49O%*!)AROeN 6 JDSm*8
lXm"Zo '8 ; )]&% (*SDk\8&TH6-% &%CD ¦¡8 eN)A6R% wD&fG8 ¸"!J>ED
[ CL} E
0]JxR 8 ea R¨%66wDVm*Cm*8
lXm o]k\8EcCR6M%=% !$'8E%)A#E8&e@)3% M%6 % *Q
¹fI¹c3.GXQF&;% &!$01J* s"%Z* ÁI°O7!M?
<' {7J~' E}{wpy E}*[K,y~WM x0²yJ^y $0[xJ~J{7[24J {1& ¯ x{7JWxD
#&%(;*\B m"CDU%(*6R% wD_g'%6X1 D9O ( 0m**C8Eg0fIf
B* *6w8
lXmZ"o]O8EcC)A$% !QrI8("]8¦:6R6R%)A8&e[ )3%
(R (WM*% 6&% ha "!,010)A.GX
ceIf
Â
@Iy "z"J~J E'Wy )%\y"?[[ C*+_'²C JxK} EY+Ey"y*xNzy~
@IyY&C{7J~Y«;J~[zy ~J=} E'C2 }*}{wpy D # %(Km?`B&mZZDUc "8
kQ%6D&¸'%*D9'* =m"**C8 K8&kQ% *D O%6w8 !8 rU
°Y;QB*)A# OcR *D78I*6w8Um"§ ?CD
c#(*8I6R%(8
lXm"Zo]O8 qK8EcC)AS8«OJ~@zy~'A} E'C2 C[ E'J~'[ ,y0zC&Ey0z'{w|B} ~
& ¯ x'{7J]x8E KcCVcG`c @7.4% KfN (R (8
9.GR! %&!$%##?% J$=C('% (A#E[ )3%
&Ey0zJ{w|H}~«;J~[zy ~J=} E'P\K5ÿ1&C«EQ_bUZDUm"*8