ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KIỂM CHỨNG CÀI ĐẶT BIỂU ĐỒ TƯƠNG TÁC
VỚI UML 2.0
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành:Công nghệ phần mềm
HÀ NỘI - 2010
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KIỂM CHỨNG CÀI ĐẶT BIỂU ĐỒ TƯƠNG TÁC
VỚI UML 2.0
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ phần mềm
HÀ NỘI - 2010
Tóm tắt
!"#$"%
&'()'(*+(!#$
%,-*"./0
1"2*3/456+7877968:
;3<-6+7=>33/$
?/@*+0"./<A
BC(D-EFGH((B?/<*IJK"+"
)L B<*M-EAB/B?-
/$ (%&1 (D*IJK"!
BN;3H((B")68"
'(B!?/M"(2?<* 1+C
6+7=%OO-/$3<O""(
N776+7%+C6+7=H1P%(
AOP 6+79877
FSM Y7T7J7
OOP 8 Z7877
XML 7R7+ "7J/(K(7
XMI RJKJ7S77
UML I[7J7""(7
Chương 1. Mở đầu
1.1. Đặt vấn đề
P<-<C$O!"W
>+EC%?G&$O1!B$O$?G&
$O*B$OL$"3(MU+\<
-<NMMMC"L-C%?@
""H%3J%'()QN<-<"N<-
]N;3+ 2Q<-$C.
N<-
^-?"+\4Q<-<?'(
*"<>'('(*HU_(*
"(`(2H((?4?B/B??/
?/ *aE3?- !"Q
"<;'()bM?!U"/?c+0
".+'(*+(!?M"<-Q
/d--".(%*2('("3?E(
><+$+0".?24M" %-EG(?
M/! N4*21-
".+3(<+$+0e>a--&".
?/$5d7[:\c5d":fgh
#$"/7BMB/Bee
U/<H((/<F\c"M+.Q
/,/7M$H((Q)/<
JO44Q/$""(+E".
56n:
f6{nh
P/M"(2M?'(B%+E!`
9 J3mGA/%+E$1
9 NmM/ (D>?U (D767
IJKaE3?$< ,IJKzA"H*<O/<
-
2
9 d-%+6+7+-6+7+
+(M"("a+0O6+7*MZ7
B
9 6+7+MZ7F$"? !/o"3M
%1$<A(*(c(OQ6+9
7a(?(/H".
9 F"-(RJS(Q<OC()m$
B
G/M"(2H?<C'(B!H6+7
+BlZ7;H3["7k$/$
aB/B7IJKz|?N(/-"U?")+0O<%
%"?"6+7+M +/%1$
>;!(
b+/(&<IJKz|3?H!(e"(&
j6+7+j/(+3A<OdkG<O
dk<CL(;3U$ ,IJKz|
n l(3("% (L(IJKz|? (D
,<O6"I7"z|}|U6"I7"z|}|"(?
(D+(!3RJST(M?"!<B
EQ (D(%5YTJ:K2*H+
6+
}
3H("%7J7"U&
"-(%E?c*MN•2~??U% B
MM7cRJK"€TTaU&"-("%2c$&
<l)?1 <EMN•?3% *
7M D`H+W* ?H+W? "(?
J7/<"•+H(&"-(•%+E>GcGB6+
Bd-
2.1.2. Ưu điểm của annotations
6+"%/‚(23)?$ƒ"("4
-?3"%+E"4Q+
− F>`P*"3H M!„O4
− a1
− F!(".>`"2*?e>
!+".>K. A/( Hc>4(
'(BM A"2*H".>"
&"./Mc(?/M/@?!(>*(H69
+"%\".e'(*!(*Q/( Hc
PW" HcM "2*H%+E!(*+"e
cPB(;1">e4?(%4URJK*
".m > Ae1("&"-(@
− rO1`d-;cRJKeE
>? %3(LGRJK+EM6SX
1"-b8JUT6Rj"%Ab;6+*…
!(
1
`††Z+(†+† /+†("†Z†Z88†+"
5
2.1.3. Cấu trúc annotaions
− ‡F75•"77F7N8PTF€INF8€:•uO+(+
− ‡F75•"77F7K8N6Kˆd6€S6nK•:•u O B c
1
− ‡F75•"77F76PP8F6FS8PˆFŽ•:•K*(H E"%e
4
d4O`
@Target(ElementType.METHOD)
public @interface Test_Target {
public String dosomething();
}
6+HcWe1$?3
4"+75:a+0O+*HM31$
d4O`
@Test_Target(“test”)
Public void test(){
// do something
}
aE3+?B(McW;"E
*MmMe"EMP+A4OH?Mm
MeE"%1$PB(+0OMe%"++
U% B*+2".
2.2. Aspect
2.2.1. Lập trình hướng khía cạnh AOP
d
•
H
‘
<
•
"
/H
•
1
”
(
•
"
”
H
“
”
HH
”
<
•
+((
‘
68 <
“
+(/
’
(
”
"
”
•
‘
1
•
H
‘
(
‘
<
”
/<
•
#<
•
‘
1
”
”
"
‘
–6+7—5
”
”
"
‘
–"
•
—˜
‘
“
‘
H
‘
1
•
`6+7977P1
‘
’
1
”
•
H?
•
H
‘
(1
“
HH’/H
“
+
•
1N
•
6+7(
“
H
”
”
H
”
@
”
H
”
•
H"
‘
6+7™77
”
H
”
/H
•
1
”
•
‘
‘
H"7
“
(
‘
•
H
‘
(
− R
”
H
“
H
”
‘
•
H
‘
H H
”
− F<
“
1
”
•
H
“
N(Q68fšh`
− J<(
•
’
•
H
‘
(`68
•
”
•
•
H
‘
<
”
•
•
H
”
”
•
<
•
1
”
− bH’
‘
•
H
“
H
”
<
•
`dH
”
H
•
@1
•
•
H
“
”
H
”
<
•
?
•
6+7H
”
•
+7
’
/H
•
1
•
(
•
‘
”
H+
”
•
H
“
@
”
7
’
“
H(
‘
(H
”
”
‘
1"?H
”
•
”
H(
‘
(1""
‘
<
”
<H
”
/
•
/@PH
•
(
“
+
<
•
d1
•
68?1
‘
H
•
/H
•
H
”
<
•
•
H
“
H
“
"
”
•
'(H
•
”
H
<(H H
”
?1
”
/H
•
1
”
"<
”
˜•
•
"
‘
H
•
(<
•
'(
”
H
“
•
+
“
(
”
f7+++7[7h((975f+h:`(97[•
d4O`
public pointcut test() : call(String Start()) || call(boolean end());
JCAGZ9)7NM("7` 7[7
93Z9?[79+(MP?67"C+
-%Z9) A%(
67""+(`
− n7[7`a-3Z9
− 6(`a-+(Z9
− 6[[7`a-+(Z9
6+7=gM(A%1+36+7=3M?%
ž 2"MM+0O+=g%Z9F<>
+>cW%7+F7
+McW"3?1$U%
/F/M"(2Q<?<+0O+cW1$
9
d3%+cW1$PM+e3%
1$M#M6+7+cW1$M3+(`
‡FHˆ+FHˆ1ˆ$5+E+E:
d4O`
pointcut test() : call(@Implement * m());
d4OH?(/4/%3$5: e A
+‡S"77)
2.3. UML 2.0
2.3.1. khái niệm về UML
IJK5I[7J7"K(7:"%<&(\-OM?
'(M?"-(%-E?j<
*-&-E/IJKH(%"/‚(2<
-E!C/$<(-E"3$
IJK"%'()-3E
"Q (Db3"%4O (D(
Hình 2.3.2a: Quá trình đăng nhập ATM
FB7?<+3-(Q (D(IJKz|
I"z|CM+L/$ (X (D(a(H"
11
e4 (D?UHe4%/(?
/(+0O%IJKz|f}hJ%/((
!%3 (D?cc4E'(-Q
(Db3?"</(
Hình 2.3.2b mô tả một khung cơ bản
d3 (D(?M!}z"%cW`"?? 7/?
?+7'?+?7?"?7?+7?++7?"PHBmMš
"+0OQB(M"`"??" 7/T(<+* š
"
2.3.2.1. Alt
JO4"*/B+")LMB"¡(&
U(*<-N+B +<*ML5[
7"+7:pB(*y54O`B(<( $*<}g¢•U<
}|¢:
12
^*z~z} (D*+0O"
2.3.2.2. Opt
J/B5+;):+0O<*%*+?
+0(/-!c•B(/<*+/<T;)
+0O<%-1p[7y5B(*:54O`B(M41g
H *Hz &:
Ne4Q/B;)1E3/BB?G
MmM%/< iMp7"+7y
13
Hình 2.3.2.2 biểu đồ dùng opt
private boolean isMultiObject;
16
String objectName;
/////
}
F"-(RJS?%>+EcW£"[7"7MM
'()`
9 BQ>+E
9 7<HQ>+E
aE31$L&>+EU<'("3J7++7
K3U+(`
public class Message implements Comparable<Message>{
private String id, name;
private String sendEventId, receiveEventId;
String className;
Lifeline from, to;
String sourceState, targetState;
//////////
}
F"-(RJS?<<-U£7++7?3%
<-M4+(`
9 <Q<-
9 7<HQ<-
9 +7•7S<(D?1 l(<-
9 777•7S<1BQ<-
9 [<- l(DG>+E
9 F<-/BeA>+E
9 +(7T7 B l(Q<-
9 7T7 B/BeQ<-
17
18
/M"(2Q<aO<O+6+7%aD><j
* (21
Chương 3. Xây dựng cộng cụ tự động sinh Aspect từ máy trạng thái
19