Khóa luận Kiểm chứng mô hình Aspect-UML bằng Alloy

ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Bùi Duy Hải  
KIM CHNG MÔ HÌNH ASPECT-UML BNG  
ALLOY  
KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
NI - 2010  
ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Bùi Duy Hải  
KIM CHNG MÔ HÌNH ASPECT-UML BNG  
ALLOY  
KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
Cán bộ hưng dn: Phm ThKim Dung  
NI - 2010  
LỜI CÁM ƠN  
Đầu tiên tôi xin gi li cảm ơn sâu sắc ti cô giáo Ths.Phm ThKim  
Dung, bmôn công nghphn mm, khoa công nghệ thông tin, trường đại hc  
công nghệ, đại hc Quc Gia Hà Ni – người đã định hướng đề tài và tn tình  
hướng dn chbo tôi trong sut quá trình thc hin khóa lun tt nghip này.  
Tôi cũng xin trân trọng cảm ơn quý thy cô trong Khoa Công nghthông tin  
trường Đại hc Công nghệ, Đai học Quc Gia Hà Nội đã tn tình ging dy,  
truyền đạt nhng kiến thc quý báu trong sut bốn năm học làm nn tng cho tôi  
thc hin khóa lun tt nghip này.  
Con xin cảm ơn cha mẹ và gia đình đã sinh ra và nuôi dy con khôn ln,  
luôn bên cạnh động viên và ng hộ con trên con đường mà con yêu thích và la  
chn.  
Cám ơn các bạn sinh viên Khoa công nghthông tin khóa 2006-2010. Các  
bạn đã giúp đỡ ng htôi rt nhiu cũng như đóng góp nhiều ý kiến quý báu,  
qua đó, giúp tôi hoàn thiện khóa lun tốt hơn.  
Mặc dù đã rt nlc, cgắng nhưng chắc hn khóa lun ca tôi vn còn  
nhiu thiếu sót. Tôi rt mong nhận được nhiu nhng ý kiến đánh giá quý, phê  
bình ca quý thy cô, ca anh chvà các bn.  
Mt ln na tôi xin chân thành cảm ơn!  
Hà Nội, tháng 5 năm 2010  
Bùi Duy Hi  
Mc Lc  
1 Chương 1 : MỞ ĐẦU........................................................................................6  
1.1 Đặt vấn đ...................................................................................................6  
1.2 Cấu trúc khóa luận ......................................................................................6  
2 Chương 2: Giới thiệu về mô hình UML và lập trình hướng Aspect...................7  
2.1 Mô hình UML (Unifined Model Language)................................................7  
2.1.1 Lịch sử phát triển của UML..................................................................7  
2.1.2 Ứng dụng của mô hình UML ................................................................9  
2.1.3 Các loại biểu đồ UML.........................................................................12  
2.2 Ngôn ngữ ràng buộc đối tượng (OCL) ......................................................13  
2.3 Lập trình hướng khía cạnh (Aspect Oriented Programming) .....................15  
2.3.1 Phương pháp lập trình hướng khía cạnh..............................................15  
2.3.2 Các khái niệm trong Aspect ................................................................21  
3 Chương 3: Kiểm chứng mô hình Aspect-UML ...............................................23  
3.1 Giới thiệu về Alloy ...................................................................................23  
3.1.1 Alloy là gì? .........................................................................................23  
3.1.2 Tính chất của ngôn ngữ alloy..............................................................23  
3.1.3 Cấu trúc một chương trình Alloy ........................................................24  
3.1.4 Khai báo trong alloy............................................................................24  
3.2 Đặc tả mô hình Aspect-UML trong Alloy .................................................28  
3.2.1 Mô hình Aspect UML.........................................................................28  
3.2.2 Mô hình viễn thông.............................................................................30  
3.2.3 Đặc tả mô hình Aspect UML bằng Alloy............................................32  
3.2.4 Kiểm chứng mô hình Aspect UML sử dụng Alloy..............................37  
4 Chương 4 : Kết luận........................................................................................40  
DANH MC HÌNH VẼ  
Hình 1: Hp nhất các phương pháp thiết kế bng UML ....Error! Bookmark not defined.  
Hình 2: Mô hình UML không biu din hết đặc t............Error! Bookmark not defined.  
Hình 3:OPP ......................................................................Error! Bookmark not defined.  
Hình 4: Sơ đồ lp ca bài toán vhình ...........................................................................16  
Hình 5: Dùng AOP gii quyết bài toán vhình .................Error! Bookmark not defined.  
Hình 6: Mô hình class cho hthng vin thông.................Error! Bookmark not defined.  
DANH MC BNG BIU  
Bng 1: Ánh xgia các loại join point và pointcut tương ứng.......Error! Bookmark not  
defined.  
Bng 2: Chuyển đổi thành phn cu trúc mô hình Aspect UML sang Alloy............Error!  
Bookmark not defined.  
DANH MC NHNG TVIT TT  
OOP  
UML  
OCL  
AOP  
Object Oriented Programming  
Unifined Model Language  
Object Contraint Language  
Aspect Oriented Programming  
1 Chương 1 : MỞ ĐẦU  
1.1 Đặt vấn đề  
Ngày nay, công nghthông tin ngày càng phát triển và được ng dng vào tt cả  
các lĩnh vực ca cuc sng xã hi. Nó to ra mt din mo mi cho xã hi và nhờ đó  
nền văn minh nhân loại được nâng lên mt tm cao mi. Công nghphn mm là mt  
phn không thtách ri trong công nghthông tin. Hin nay ngành công nghphn  
mm trên thế giới đã và đang phát triển như vũ bão. Nhng tiến bca khoa hc kĩ thuật  
phn cứng đã tạo điều kin thun li cho công nghphn mm ngày càng phát trin  
không ngng.  
Phn mềm được coi là sn phm chính ca công nghphn mm.Quá trình phát  
trin phn mm gm nhiều giai đoạn: thu thp yêu cu, phân tích, thiết kế,xây dng,  
kim chng , trin khai và bo trì. Trong đó việc kim chng phn mm là hết sc quan  
trọng để đm bo chất lượng ca mt phn mm.  
Kim chng mô hình UML cũng đóng góp vào vic kim chng phn mm.Vic  
kim chng mô hình UML + OCL đã được gii quyết [2]. Vấn đề đặt ra bây gilà  
kim chng mô hình Aspect-UML(là mt mô hình UML đơn giản được mrng vi  
vic sdng Aspect). NhAspect và các ràng buc ca nó mà mô hình Aspect UML  
được cung cp thêm thông tin. Mô hình Aspect UML có thể được kim chng tcác  
xung đột tương tác Aspect, để làm tự động công vic kim chng mô hình Aspect  
UML là chuyển đổi mô hình Aspect UML sang ngôn ngữ đặc tAlloy. Alloy cung cp  
mt ngôn ngữ đặc tmô hình đơn giản da trên logic cũng như công cụ mô phng[].  
Trong phm vi khóa lun này tôi schra quy tc chuyển đổi mt mô hình Aspect  
UML sang ngôn ngAlloy.  
1.2 Cấu trúc khóa luận  
Chương 1: Phn mở đầu.  
Chương 2: Gii thiu vmô hình UML và lp trình hướng Aspect.  
Chương 3: Kim chng mô hình Aspect- UML bng Alloy  
Chương 4: Kết luận và hướng nghiên cứu trong tương lai.  
2
Chương 2: Giới thiệu về mô hình UML và lập trình hướng Aspect  
2.1 Mô hình UML (Unifined Model Language)  
2.1.1 Lịch sử phát triển của UML  
Theo [1] những năm đầu ca thp k90 có rt nhiều phương pháp phân tích, thiết  
kế hthống hướng đối tượng và cùng vi chúng là các ký hiu riêng cho từng phương  
pháp. Số lượng các phương pháp trong khoảng từ 10 đã lên đến gn 50 trong nhng  
năm từ 1989 đến 1994. Ba phương pháp phổ biến nht là OMT (Object Modeling  
Technique) [James Rumbaugh], Booch91 [Grady Booch] và OOSE (Object-Oriented  
Software Enginering) [Ivar Jacobson]. Mỗi phương pháp đều có những điểm mnh và  
yếu. Như OMT mạnh trong phân tích và yếu khâu thiết kế, Booch91 thì mnh thiết  
kế và yếu phân tích. OOSE mnh phân tích các ng xử, đáp ứng ca hthng mà  
yếu trong các khâu khác.  
Do các phương pháp chưa hoàn thiện nên người dùng rt phân vân trong vic chn  
ra một phương pháp phù hợp nhất để gii quyết bài toán ca họ. Hơn nữa, vic các ký  
hiu khác nhau của các phương pháp đã gây ra nhng smp m, nhm ln khi mà  
mt ký hiu có thmang nhng ý nghĩa khác nhau trong mỗi phương pháp. Ví dụ như  
mt hình tròn được tô đen biểu hin mt multiplicity trong OMT li là mt  
aggregation trong Booch). Thi knày còn được biết đến vi tên gi là cuc chiến  
giữa các phương pháp. Khoảng đầu năm 94, Booch đã ci tiến phương pháp của mình  
trong đó có ứng dng những ưu điểm của các phương pháp của Rumbaugh và  
Jacobson. Tương tự Rumbaugh cũng cho đăng một loạt các bài báo được biết đến vi  
tên gọi phương pháp OMT-2 cũng sử dng nhiều ưu điểm của phương pháp của  
Booch. Các phương pháp đã bắt đầu hp nhất, nhưng các kí hiệu sdng các  
phương pháp vẫn còn nhiều điểm khác bit.  
Cuc chiến này chkết thúc khi có sự ra đời ca UML – mt ngôn ngmô hình  
hóa hp nht. Ti sao li là hp nhất? Đó là do có sự hp nht các cách kí hiu ca  
Booch, OMT và Objectory cũng như các ý tưởng tt nht ca mt số phương pháp  
khác như hình vsau:  
Hình 1:Hp nhất các phương pháp thiết kế bng UML  
Bng cách hp nht các kí hiu sdng trong khi phân tích, thiết kế ca các  
phương pháp đó, UML cung cp mt nn tng chun trong vic phân tích thiết kế. Có  
nghĩa là các nhà phát trin vn có thtiến hành theo phương pháp mà họ đang sử dng  
hoc là có thtiến hành theo một phương pháp tổng hợp hơn( do thêm vào những  
bước ưu điểm ca từng phương pháp). Nhưng điu quan trng là các ký hiu giờ đây  
đã thng nht và mi ký hiu chun ca tchc OMG (Object Management Group)  
vào tháng 7-1997.  
2.1.2 Ứng dụng của mô hình UML  
UML là một ngôn ngữ dùng để:  
Trực quan hóa  
Cụ thể hóa  
Sinh mã ở dạng nguyên mẫu  
Lp và cung cấp tài liệu  
UML là một ngôn ngữ bao gồm một bảng từ vựng và các quy tắc để kết hợp các từ  
vựng đó phục vụ cho mục đích giao tiếp. Một ngôn ngữ dùng cho việc lập mô hình là  
ngôn ngữ mà bảng từ vựng( các ký hiệu) và các quy tắc của nó tập trung vào việc thể  
hiện về mặt khái niệm cũng như vật lý của một hệ thống.  
Mô hình hóa mang lại sự hiểu biết về một hệ thống. Một mô hình không thể giúp  
chúng ta hiểu rõ một hệ thống, thường là phải xây dựng một số mô hình xét từ những  
góc độ khác nhau. Các mô hình này có quan hệ với nhau.  
UML sẽ cho ta biết cách tạo ra và đọc hiểu được một mô hình đươc cấu trúc tốt,  
nhưng nó không cho ta biết những mô hình nào nên tạo ra và khi nào tạo ra chúng. Đó  
là nhiệm vụ của quy trình phát triển phần mềm.  
2.1.2.1 UML là ngôn ngữ dùng để trực quan hóa  
Đối vi nhiu lp trình viên, không có khong cách nào gia ý tưởng để gii quyết  
mt vấn đề và vic thhiện điều đó thông qua các đoạn mã. Hnghĩ ra và hviết mã.  
Trên thc tế, điều này gp mt svấn đề. Thnht, việc trao đi vcác ý tưởng gia  
những người lp trình sgặp khó khăn, trừ khi tt cả đều nói cùng mt ngôn ng.  
Thm chí ngay ckhi không gp trngi vngôn ngthì đối vi tng công ty, tng  
nhóm cũng có những “ngôn ng” riêng ca họ. Điều này gây trngi cho mt người  
mới vào để có thhiểu được nhng việc đang đưc tiến hành. Hơn na, trong lĩnh vực  
phn mm, nhiu khi khó có thhiểu được nếu chỉ xem xét các đoạn mã lnh. Ví dụ  
như sự phân cp ca các lp, ta có thphi duyt rt nhiều đoạn lệnh để hiểu được sự  
phân cp ca các lp. Và nếu như người lp trình không mô tcác ý tưởng mà anh ta  
đã xây dng thành mã lnh thì nhiu khi cách tt nht là xây dng lại trong trường hp  
một người khác đảm nhn tiếp nhim vkhi anh ta ri khi nhóm  
Đối vi nhiu lp trình viên, không có khong cách nào gia ý tưởng để gii quyết  
mt vấn đề và vic thhiện điều đó thông qua các đoạn mã. Hnghĩ ra và hviết mã.  
Trên thc tế, điều này gp mt svấn đề. Thnht, việc trao đi vcác ý tưởng gia  
những người lp trình sgặp khó khăn, trừ khi tt cả đều nói cùng mt ngôn ng.  
Thm chí ngay ckhi không gp trngi vngôn ngthì đối vi tng công ty, tng  
nhóm cũng có những “ngôn ng” riêng ca họ. Điều này gây trngi cho một người  
mới vào để có thhiểu được nhng vic đang được tiến hành. Hơn na, trong lĩnh vực  
phn mm, nhiu khi khó có thhiểu được nếu chỉ xem xét các đoạn mã lnh. Ví dụ  
như sự phân cp ca các lp, ta có thphi duyt rt nhiều đoạn lệnh để hiểu được sự  
phân cp ca các lp. Và nếu như người lp trình không mô tcác ý tưởng mà anh ta  
đã xây dng thành mã lnh thì nhiu khi cách tt nht là xây dng lại trong trường hp  
một người khác đảm nhn tiếp nhim vkhi anh ta ri khi nhóm.  
Xây dng mô hình sdng ngôn ngữ UML đã gii quyết được các khó khăn  
trên.Khi trthành mt chun trong vic lp mô hình, mi kí hiu mang mt ý nghĩa rõ  
rang và duy nht, mt nhà phát trin có thể đọc đưc mô hình xây dng bng UML do  
một người khác viết.Nhng cu trúc mà vic nm bắt thông qua đọc mã lnh là khó  
khăn nay đã được thc hin trc quan.Mt mô hình rõ ràng, sáng sủa làm tăng khả  
năng giao tiếp, trao đổi gia các nhà phát trin.  
2.1.2.2 UML là ngôn ngữ để chi tiết hóa  
Có nghĩa là xây dng các mô hình mt các tm, rõ ràng, đầy đủ ở các mức độ chi  
tiết khác nhau. Đặc bit là UML thc hin vic chi tiết hoá tt ccác quyết định quan  
trng trong phân tích, thiết kế và thc thi mt hthng phn mm.  
2.1.2.3 UML là ngôn ngữ dùng để sinh ra mã ở dạng nguyên mẫu  
Các mô hình xây dng bi UML có thánh xti mt ngôn nglp trình cthể  
như : Java, C++… thậm chí ccác bng trong mt CSDL quan hệ hay CSDL hướng  
đối tượng.  
Vic các yêu cu có khả năng thường xuyên thay đổi trong quá trình phát trin hệ  
thng dẫn đến vic các cu trúc và hành vi ca hthống được xây dng có thkhác  
mô hình mà ta đã xây dựng. Điu này có thlàm cho mt mô hình tt trnên vô nghĩa  
vì nó không còn phản ánh đúng hệ thng na. Cho nên phi có một cơ chế để đồng bộ  
xhóa gia mô hình và mã lnh.  
UML cho phép cp nht mt mô hình tcác mã thc thi ( ánh xạ ngược). Điều này  
to ra snht quán gia mô hình ca hthống và các đoạn mã thc thi mà ta xây dng  
cho hthống đó.  
2.1.2.4 UML là ngôn ngữ dùng để lập và cung cấp tài liệu  
Mt tchc phn mm ngoài vic tạo ra các đon mã lnh( thc thi) thì còn to ra  
các tài liu sau:  
Ghi chép vcác yêu cu ca hthng  
Kiến trúc ca hthng  
Thiết kế  
Mã ngun  
Kế hoch dán  
Test  
Các nguyên mu  
2.1.3 Các loại biểu đồ UML  
2.1.3.1 Biểu đồ lớp(class diagram)  
Bao gm mt tp hp các lp, các giao din, các collaboration và mi quan hgia  
chúng. Nó thhin mt tĩnh của hthng.  
2.1.3.2 Biểu đồ đối tượng(Object diagram)  
Bao gm mt tp hợp các đối tượng và mi quan hgiữa chúng. Đối tượng là mt  
thhin ca lp, biểu đồ đối tưng là mt thhin ca biều đồ lp.  
2.1.3.3 Biểu đồ use case  
Khái nim actor: là những người, hthng khác bên ngoài phm vi ca hthng  
mà có tương tác với hthng.  
Biểu đồ Use case bao gm mt tp hp các Use case, các actor và thhin mi  
quan hệ tương tác giữa actor và Use case. Nó rt quan trng trong vic tchc và mô  
hình hóa hành vi ca hthng.  
2.1.3.4 Biểu đồ trình tự(Sequence Diagram)  
Là mt dng biểu đồ tương tác (interaction), biểu din sự tương tác giữa các đối  
tượng theo thtthi gian. Nó mô tả các đối tượng liên quan trong mt tình hung cụ  
thể và các bước tun ttrong việc trao đổi các thông báo(message) giữa các đối tượng  
đó để thc hin mt chức năng nào đó của hthng.  
2.1.3.5 Biểu đồ hợp tác (Collaboration)  
Gn giống như biểu đồ Sequence, biểu đồ Collaboration là một cách khác để thể  
hin mt tình hung có thxy ra trong hthống. Nhưng nó tập trung vào vic thể  
hin việc trao đổi qua li các thông báo giữa các đối tượng chứ không quan tâm đến  
thtcủa các thông báo đó. Có nghĩa là qua đó chúng ta sẽ biết được nhanh chóng  
giữa 2 đối tưng cthể nào đó có trao đổi nhng thông báo gì cho nhau.  
2.1.3.6 Biểu đồ chuyển trạng thái (Statechart)  
Chra mt máy chuyn trng, bao gm các trạng thái, các bước chuyn trng và  
các hoạt động. Nó đặc bit quan trng trong vic mô hình hóa hành vi ca mt lp  
giao din(interface class) hay collaboration và nó nhn mạnh vào các đáp ứng theo sự  
kin ca một đối tượng, điều này rt hu ích khi mô hình hóa mt hthng phn  
ng(reactive).  
2.1.3.7 Biểu đồ hoạt động(Activity)  
Là mt dạng đặc bit ca biểu đồ chuyn trng. Nó chra luồng đi từ hoạt động  
này sang hoạt động khác trong mt hthống. Nó đặc bit quan trng trong vic xây  
dng mô hình chức năng của hthng và nhn mnh ti vic chuyển đổi quyn kim  
soát giữa các đối tượng.  
2.1.3.8 Biểu đồ thành phần (Component)  
Chra cách tchc và sphthuc ca các thành phn(component). Nó liên quan  
ti biểu đồ lớp, trong đó một thành phần thường ánh xti mt hay nhiu lp, giao  
din , collaboration.  
2.2 Ngôn ngữ ràng buộc đối tượng (OCL)  
OCL (Object constraint language) là ngôn ngxây dng mô hình phn mềm được  
định nghĩa như một chun thêm vào UML cho phân tích và thiết kế hướng đối tượng .  
Các biu thc viết trong OCL phthuc vào các kiu lp, giao diện, …) được định  
nghĩa trong các biểu đồ UML.  
Các biu thc viết trong OCL thêm các thông tin quan trng cho các mô hình  
hướng đối tượng. Các thông tin này thường khôn thbiu din trong biểu đồ. Trong  
UML phiên bản 1.1 các thông tin này được gii hn bi các ràng buc, mi ràng buc  
được định nghĩa như một hn chế vgiá trnhận được( mt hay nhiu) ca mhệ  
thng hay mô hình hướng đối tượng. Trong UML phiên bn 2, mt mô hình có thể  
cha nhiều thông tin thêm hơn là chỉ có ràng buc. Tt ccác công việc như định  
nghĩa truy vấn, các giá trtham chiếu, các quy tăc nghiệp vụ hay các điều kin trng  
thái được viết bng biu thc trong mt mô hình. OCL là ngôn ngchuẩn trong đó các  
biu thức đưc viết mt cách rõ ràng dhiu.  
Mt mô hình thường có nhng thiếu sót do nhng hn chế ca các biểu đồ. Mt  
biểu đồ đơn giản không thbiu din hết các phát biểu đặc t.  
Hình 2: Mô hình UML không biu din hết đặc tả  
Trong mô hình, quan hgia lp Flight và lp Person , phía lp Person có bn số  
là 0…* tc là skhách hang là không gii hn. Trong thc thế skhách hàng bgii  
hn bi sghế mà máy bay có, và gii hn này không thbiu din trong biểu đồ.  
Trong ví dnày có mt cách chỉ định ràng buc vbn sthhin là thêm vào biu  
đồ ràng buc OCL sau:  
context Flight  
inv: passengers->size() <= plane.numberOfSeats.  
2.3 Lập trình hướng khía cạnh (Aspect Oriented Programming)  
2.3.1 Phương pháp lập trình hướng khía cạnh  
Có lcác khái nim vlp trình hướng khía cnh (AOP) hiện nay đã được nhiu  
người biết đến, vì vy ở đây tôi sẽ chtrình bày li ngn gn các khái niệm cơ bản và  
đặc điểm chính của AOP. Để trlời được câu hi AOP là gì? Ti sao phi có AOP?  
chúng ta sbắt đầu tìm hiu shn chế của các phương pháp lập trình hin ti trong  
việc đáp ứng các yêu cu ngày càng phc tp ca các hthng phn mm.  
2.3.1.1 Shạn chế của lập trình hướng đối tượng(OOP)  
Như chúng ta đ ã bi ết trong OOP người ta cgng mô tthế gii thc thành các  
đối tượng vi các thuộc tính và phương thức; cùng vi các tính cht ca lp trình  
hướng đối tượng như: tính trừu tượng, tính đóng gói, tính kế thừa và đa h ình đã làm  
thay đi hoàn toàn ngành công nghip phn mm.  
Hình 3: OOP  
Ta xét mt ví dcthxây dựng chương trình vhình đơn giản.  
Một phân tích đơn giản cho yêu cu ca bài toán:  
- Các hình học cơ bản : điểm, đoạn thng, hình chnht , hình tròn,…  
- Hin thcác hình các vtrí khác nhau trong khung vẽ  
- Phi cp nht li hình ti vtrí mi mi khi di chuyn, co giãn hình.  
Sdng OOP ta smô hình hóa yêu cầu thành các đối tượng sau :  
- Lp Shape: là mt lp Abstract chứa phương thức moveBy(int,int) di  
chuyn hình  
- Lp Display: hin thhình nh.  
- Lp Point: mô tả 1 điểm hình hc cha hai thuc tính là tọa độ x, y được kế  
tha tlp Shape.  
- Lp Line: mô tả 1 đoạn thng, cha 2 thuộc tính là điểm đầu và điểm cui  
của đoạn thẳng và được kế tha tlp Shape.  
Dưới đây là sơ đồ lp ca bài toán  
Figure 1  
Hình 4: Sơ đồ lp ca bài toán vhình  
Mô hình hóa thành các lớp như vậy ta thấy bài toán đã tương đối n. Bây givn  
đề đặt ra là mỗi khi ta thay đổi tọa độ ca một điểm hay co giãn hình, di chuyn hình  
ta li phi vli hình vtrí mi – tc là phi update li Display.  
Xét lớp đơn giản nht là lớp Point, Khi đặt li tọa độ x, tọa độ y, hay di chuyn  
Point tvtrí này sang vị trí khác, ta đều phi update lại Display thông qua phương  
thc display.update(this). Như vậy, cùng một phương thức display.update(this), ta  
phi gõ li ba vtrí khác nhau ng vi ba sự thay đổi. Hãy thử tưởng tượng xem nếu  
chương trình của chúng ta đủ ln và có khong vài ngàn sự thay đổi kiểu như thế thì  
dòng mã ngun display.update(this) sphi xut hin hàng ngàn chkhác nhau.  
Đối vi lp Line hay các lp khác cũng vậy. Mi khi có sự thay đổi hình thì ngay  
sau sự thay đổi đó scó dòng mã nguồn display.update(this) đi kèm theo nó.  
Ta có thchia các chức năng của mt phn mm ra làm hai loi chính:  
- Thnht là các chức năng thực hin các nghip vchính, nghip vụ cơ  
bn ca hthng (ví dụ như chức năng vẽ điểm, vẽ đoạn thng, vhình  
khi trong bài toán vhình trên).  
- Thhai, nhng chức năng dàn trải trên rt nhiu các mô-đun nghiệp vụ  
chính – được gi là các chức năng cắt ngang hthng (ví d: cp nht hình,  
lưu vết, bo mật) hay đưc gi là crosscutting concern.  
OOP có thgii quyết rt tt nhng chức năng chính của hthống, nhưng lại gp  
rt nhiều khó khăn trong vic gii quyết các chức năng cắt ngang hthng. Khi sử  
dụng OOP để thc hin các chức năng cắt ngang hthng, hthng sgp phi hai  
vấn đề chính, đó là: chồng chéo mã ngun (Code tangling) và dàn tri mã ngun  
(Code scattering).  
- Chng chéo mã ngun: Mô-đun chính của hthng ngoài vic thc hin  
các yêu cu chính, nó còn phi thc hin các yêu cầu khác như: tính đồng  
b, bo mật, lưu vết, lưu trữ. Như vậy, trong một mô đun có rất nhiu loi  
mã khác nhau, hiện tượng này gi là chng chéo mã nguồn. Điều này làm  
cho tính mô-đun hóa của hthng giảm đi, khả năng sử dng li mã ngun  
thp, khó bo trì hthng.  
- Dàn tri mã ngun: : Cùng mt mã ngun ca các chức năng cắt ngang hệ  
thống được cài đặt lặp đi lặp li rt nhiu ln nhiu mô-đun chính của hệ  
thng. Ví dụ như trong chương trình vhình trên, mã ngun ca chc  
năng cp nht hình, lưu vết xut hin tt ccác mô-đun của hthng.Hin  
tượng này gi là dàn tri mã ngun.  
2.3.1.2 Lập trình hướng khía cạnh  
Lp trình hướng khía cạnh được xây dng trên các phương pháp lập trình hin ti  
như lập trình hướng đối tượng, lp trình có cu trúc, bsung thêm các khái nim và  
cấu trúc để mô-đun hóa các chức năng cắt ngang hthng (crosscutting concern). Vi  
AOP, các quan hệ cơ bản sdụng các phương pháp cơ bn. Nếu sdng OOP, sthc  
thi các quan hệ cơ bản dưới hình thc lp(class). Các aspect trong hthống đóng gói  
các chức năng cắt ngang hthng li vi nhau. Chúng sẽ quy định cách các mô-đun  
khác nhau gn kết với nhau để hình thành lên hthng cui cùng.  
Nn tảng cơ bản ca AOP khác vi OOP là cách qun lý các chức năng cắt ngang  
hthng. Vic thc thi ca tng chức năng cắt ngang AOP bỏ qua các hành vi được  
tích hp vào nó. Ví dmt mô-đun nghiệp vskhông quan tâm nó cần được lưu vết  
hoặc được xác thực như thế nào, kết qulà vic thc thi ca tng concern tiến trin  
một cách đc lp.  
Quay trli vi ví dvề chương trình vhình đơn giản phn trên. Nếu sdng  
AOP, các chức năng cắt ngang hthng: cp nht hình, lưu vết sẽ được gii quyết theo  
cách sau:  
Thay vì tích hp chức năng các mô-đun cắt ngang hthng (cp nht hình, l ưu  
vết) ngay trong mô-đun nghiệp vchính; lp trình viên stách chúng ra thành các mô-  
đun mới, gi là aspect. Hình 2.5 minh ha cho vic thc thi chức năng cập nht hình  
bằng AOP và dưới đây là mã ngun của aspect đó:  
public aspect UpdateSignaling{  
pointcut updateDisplay():execution(void *.setX(int))  
|| execution(void*.setY(int))  
|| execution(void*.moveBy(int, int));  
after(): updateDisplay(){  
display.update(this);  
}
}
Hình 5: Dùng AOP gii quyết bài toán vhình  
Sau khi định nghĩa một aspect như vậy thì bt ckhi nào có sự thay đổi vhình  
(setX, setY, moveBy) chương trình stự động gi chức năng cập nht hình, cthể ở  
đây là phương thức display.update(this) mà ta không cn phi lc li lại các đoạn mã  
nguồn để thêm nó dòng mã ngun này vào.  
2.3.1.2.1 Phương pháp luận của AOP  
Vấn đề ct lõi ca AOP là cho phép chúng ta thc hin các vấn đề riêng bit mt  
cách linh hot và kết ni chúng lại để to nên hthng cui cùng. AOP bxung cho  
OOP bng vic htrmt dng mô-đun khác, cho phép kéo theo thể hin chung ca  
các vấn đề đan nhau vào một khi. Khi này gi là ‘aspect’(tm dch là ‘lát’ – hàm ý  
ct ngang qua nhiu lớp đối tượng). Tch‘aspect’ này chúng ta có mi phương pháp  
lp trình mi: Aspect-Oriented Programming. Nhđược tách riêng bit, các vấn đề  
đan xen nhau trở nên dkiểm soát hơn. Các aspect của hthng có thể thay đổi, thêm  
hoc xóa lúc biên dch và có thtái sdng. Mt dng biên dịch đặc bit có tên là  
Aspect Weaver thc hin vic kết hp các thành phn riêng lthành mt hthng  
thng nht.  
2.3.1.2.2 Ưu điểm của AOP  
AOP là mt kthut mới đầy trin vng, ha hẹn đem lại nhiu li ích cho vic  
phát trin phn mềm, dưới đây là một sli ích cthca AOP :  
- Mô-đun hóa những vấn đề đan xen nhau: AOP xác định vấn đề mt cách  
riêng bit, cho phép mô-đun hóa những vấn đề liên quan đến nhiu lớp đối  
tượng.  
- Tái sdng mã ngun tốt hơn: Các aspect là những mô-đun riêng biệt, được  
kết hợp linh động – đây chính là yếu tquan trọng để tái sdng mã ngun.  
- Cho phép mrng hthng dễ dàng hơn: Một thiết kế tt phải tính đến cả  
nhng yêu cu hin tại và tương lai, việc xác định các yêu cầu trong tương  
lai là mt công việc khó khăn. Nhưng nếu bqua các yêu cầu trong tương  
lai, có thbn sphải thay đổi hay thc hin li nhiu phn ca hthng.  
Vi AOP, người thiết kế hthng có thể để li quyết định thiết kế cho  
nhng yêu cầu trong tương lai nhờ thc hin các aspect riêng bit.  
2.3.2 Các khái niệm trong Aspect  
2.3.2.1 Join point  
Join point là bt kỳ điểm nào có thể xác định được khi thc hiện chương trình. Ví  
d: li gi hàm, khi tạo đối tượng. Join point chính là vị trí mà các hành động thc  
thi cắt ngang được đan vào. Trong Aspect mọi thứ đều xoay quanh join point.  
2.3.2.2 Pointcut  
Pointcut là mt cấu trúc chương trình mà nó chn các join point và ngcnh ti  
các join point đó.Ví dụ mt pointcut có thchn mt join point là li gọi đến mt  
phương thức và ly thông tin ngcnh của phương thức đó như đối tượng cha  
phương thức đó, các tham số của phương thức đó.  
Bng 1:Ánh xgia các loại join point và pointcut tương ướng  
Loi join point  
Cú pháp point cut  
Thc hiện phương thức  
Gọi phương thức  
Thc hin hàm dng  
Gi hàm dng  
execution(MethodSignature)  
call(MethodSignature)  
execution(ConstructorSignature)  
call(ConstructorSignature)  
staticinitialization(TypeSignature)  
get(FieldSignature)  
Khi to lp  
Đọc thuc tính  
Ghi thuc tính  
set(FieldSignature)  
Thc hiện điều khin ngoi lệ  
Khi tạo đối tượng  
execution handler (TypeSignature)  
initialization(ConstructorSignature)  
Tin khi tạo đối tượng  
Thc hin advice  
preinitialization(ConstructorSignature)  
adviceexecution()  
2.3.2.3 Advice  
Advice là mã thc hin ti một join point mà được chn bi pointcut [7, 12]. Hay  
nói cách khác, nếu ta coi pointcut là khai báo tên phương thức, thì advice là phn thân  
của phương thức đó.Pointcut và advice shình thành nên các lut dan kết các quan hệ  
đan xen.  
Advice được chia ra làm ba loi sau:  
- Before : đưc thc hiện trước join point.  
- After: được thc hin sau join point.  
- Around: Thc thi xung quanh join point  
2.3.2.4 Aspect  
Aspect là phn ttrung tâm ca Aspect, giống như class trong Java. Aspect chứa  
mã thhin các luật đan kết cho các concern. Join point, pointcut, advice được kết hp  
trong aspect.  
Tuy có gn giống các đặc điểm của class trong Java như: chứa thuộc tính, phương  
thc, có thkhai báo trừu tượng, có thkế tha… Tuy nhiên, Aspect có mt skhác  
biệt cơ bản sau:  
- Aspect không thkhi to trc tiếp.  
- Aspect không thkế tha tmt aspect cth(không phi trừu tưng).  
Aspect có thể được đánh dấu là có quyn bằng định danh privileged. Nhờ đó nó có  
thtruy cập đến các thành viên ca lp mà chúng ct ngang.  
3 Chương 3: Kiểm chứng mô hình Aspect-UML  
3.1 Giới thiệu về Alloy  
3.1.1 Alloy[4] là gì?  
Trong công nghphn mm, Alloy là mt ngôn ngữ đặc tmô hình hóa cho nhng  
biu thsràng buc ca nhng cu trúc phc tp trong công nghphn mm. Alloy  
là mt công cmô hình hóa đơn giản da trên thbậc logic đầu tiên.Nn tng toán  
hc ca ngôn ngnày bị ảnh hưởng nng lbi các phép biu din. Mc dù cú pháp  
ca ngôn ngữ này có trách nhiêm hơn so vi ngôn ngữ khác như hạn chế về đối tượng  
ngôn ngữ. Alloy xác định mc tiêu to nên nhng mô hình vi mô để sau này nó tự  
động kim tra cho sự đứng đắn ca các mô hình y. Mặc dù Alloy được thiết kế vi  
phân tích tự động trong suy nghĩ, khác với nhiu ngôn ngữ đặc tthiết kế cho mô hình  
kim tra chỗ nó cho phép định nghĩa các mô hình vô hạn .Các đặc tAlloy có thbị  
kim tra bng cách sdng Alloy Analyzer. Alloy Analyzer được thiết kế để thc  
hin kim tra phm vi hu hn, ngay ctrên các mô hình vô hn.  
3.1.2 Tính chất của ngôn ngữ alloy  
Đối các mô hình hu hn alloy có thhu hn phm vi kim tra: phân tích  
được đầy đủ các đối tượng đặc tả  
Alloy cho phép kim tra vô hn các mô hình vì kim tra hu hn không nhn  
được phản ánh đúng tmô hình cần đặc tả  
Alloy có khả năng đt quan hlogic giữa các đối tượng trong mô hình  
Tự động phân tích và kiểm tra tính đứng đắn ca các mô hình  
Vcu trúc dliu:  
o Xlý vng về  
o Chức năng đquy khó din tả  
3.1.3 Cấu trúc một chương trình Alloy  
module ….  
sig A{…}  
fact F {…}  
assert a { …}  
check a scope  
pred P () {…}  
run P  
Ý nghĩa:  
– sig A: Thiết lp mt lớp đối tượng A  
– fact F: nghĩa là gisràng buc F vng chc  
assert a: tin tưng rng A sau F  
–check a : tìm mt ví dụ không đáp ứng A và F  
pred: đnh nghĩa sự ràng buc P  
– run: tìm ra 1 instance tha mãn P và F  
3.1.4 Khai báo trong alloy  
Dòng đầu tiên khai báo modul  
-
Sig Object{} định nghĩa một lớp đối tượng  
- Trừu tượng sig Object ()là trừu tượng sig không có các thành phn ngoi trừ  
nhng phn mrng ca nó  
- SigFile extends Object ()-sthiêt lp này có thể được gii thiu là mt tp hp  
con ca tp khác  
3.1.4.1 Các ký hiệu  
Sig A{}  
sig B extends A {} (nghĩa là B trong A)  
sig C extends A {}(C trong A)  
3.1.4.2 Khai báo các liên kết  
Liên kết được khai báo như các trường và các ký hiu  
sigObject{}  
sigDir extends Object {  
entries: set Object,  
parent: lone Dir  
}
3.1.4.3 Các trường  
Sig A{f: set X}  
Sig B extends A{g:set Y}  
Nghĩa là : B in A  
f: A-> X  
g: B->Y  
3.1.4.4 Các dạng thiết lập  
Lone: chkhông hoc mt  
All: bt kì snào  
One: chduy nht mt  
Some: mt hoc nhiều hơn  
3.1.4.5 Facts và Assertions  
Fact  
o Hn chế được nhng giả đình luôn luôn gi(ví dụ như sử dng các  
không gian hn chế ca các bộ đếm)  
o Mt mô hình có thcó bt kcác con sca fact  
sigA {}  
fact { all z: A | F }  
Assert: sliên kết có ý đi theo các fact ca mô hình có thkim tra bng  
cách sdng các lnh kim tra  
3.1.4.6 Các hằng số và các toán tử  
Ngôn ngca các mi quan hcó các hng và toán tca mình chúng  
Hng:  
o None = tp rng.  
o Univ = tp phbiến  
o Iden = đồng nht.  
Các toán t(Operators):  
o Set operators:  
. +: hp nht  
sig Vehicle{} {Vehicle = Car+ Truck}  
. &: giao nhau  
fact DisSubtrees{all t1, t2: Tree | (t1.^children)&(t2.^children)=  
none}  
. -: hiu số  
fact dirinothers { all d: Directory - Root | some contents.d }  
. in : tp con  
sibling = (brother + sister)  
sister in sibling  
. =: bng nhau  
o Relational operators:  
. . : dot (phép ni)  
. ->: mũi tên (product)  
. ^ : transitive closure  
. *: reflexive- transitive closure  
. ~: đo vế  
. [] : box (join)  
. <: : domain restriction  
. :> : range restriction  
. ++ : override  
o Toán tlogic  
. ! : negation  
. && : conjunction (and)  
. || : disjunction (OR)  
. => : implication  
. else : alternative  
. <=> : bi-implication (IFF)  
o Logic Cardinalities  
. = equals  
. < less than  
. > greater than  
. =< less than or equal to  
. >= greater than or equal to  
. #r number of tuples in r  
. 0,1,... integer literal  
. + plus  
. - minus  
3.1.4.7 Predicates  
- Mt pred là tên ca mt ràng buc  
- Không hoc nhiều hơn sự khai báo cho nhng lí lun  
- Có thsdụng để đi din cho mt quá trình thc thi  
- Chỉ được dùng khi được gọi (không như fact)  
3.2 Đặc tả mô hình Aspect-UML trong Alloy  
3.2.1 Mô hình Aspect UML  
Vì việc đặc tmô hình UML+ OCL đã được nghiên cu và hoàn thành do vy  
chúng ta chỉ xem xét đến mô hình Aspect- UML. Phương pháp đặc ttrong bài lun  
này sẽ xem xét cách phân tích các tương tác aspect trong mô hình A-O được viết trong  
Aspect UML [5,6]. Aspect-UML là mt mô hình đơn giản mrng ca UML và sử  
dng các khái niệm cơ bản ca AOP (aspect, các advice, point cut, joint point và các  
crosscutting). Nó cũng cho phép các chú thích hình thc ví dụ như pre , post  
conditions, để đặc tchính xác các trng thái ca các thành phn như join points và  
advices cũng như context ở pointcut. Nhcó các chú thích này, mô hình Aspect UML  
cung cấp thêm thông tin để phân tích các tương tác aspect từ các điểm ngnghĩa của  
khung nhìn. Công việc này do đó đi một bước xa hơn các phương pháp truyển thng  
dựa trên phân tích chương trình tĩnh mà thường quên đi việc gii quyết ngnghĩa gây  
ra xung đột gia các aspect.  
Mô hình Aspect-UML có thể được kim tra từ các xung đột tương tác aspect. Mt  
cách để tự động quá trình kim chng là chuyển đổi mô hình Aspect- UML sang ngôn  
ngữ đặc tAlloy. Alloy cung cp mt ngôn ngữ đặc tmô hình đơn giản da trên logic  
đầu tiên như phân tích mô hình và công cmô phng[]. Mt mô hình Alloy được son  
tho tmt tp hợp các signature xác đinh tập hợp đối tượng và các mi quan hgia  
chúng. Mô hình này có thể được thêm các rang buc bi predicates và assertions. Mt  
mô hình là trừu tượng cái mà thc sự xác định mt tp hp có thvô hn ca mt mô  
hình hu hn. Alloy thực thi đặc tmô hình bng cách tìm kiếm mô hình cá biệt đáp  
ng mt số đặc điểm của đặc t. Mt mô hình có thể được kim tra là có giá trhay là  
tha mãn bên trong các ràng buc mt mô hình cá bit. Tht vy, các phân tích Alloy  
gii hn vic tìm kiếm các mô hình cá bit cái mà kích c(về các đối tượng) là thp  
hơn cho một sràng buc cố đinh bời người sdng. Alloy khẳng định hướng tiếp cn  
đặc tca nó bng việc đề xut githuyết phm vi nhmà theo đó các counterexample  
phế bmt mô hình có khuynh hướng xy ra trong các ví dmô hình nh.  
Để kim chng mô hình Aspect UML, trước hết chúng ta giả định rng hthống cơ  
bn và Aspect cả 2 đều được chứng minh là đúng. Bằng vic chuyển đổi mô hình  
Aspect UML sang Alloy, quá trình đặc thình thc ca chúng ta có mục đích biểu lộ  
nhng loi vấn để tương tác aspect sau đây: (1) vi phạm tài nguyên địa phương, một  
pre/post condition ca adive hoc point cut là vi phm do kết hp ca 1 aspect; (2) vi  
phm ca mt lp, aspect hoc bt biến hthng do thêm vào mt aspect.  
3.2.2 Mô hình viễn thông  
Để minh ha cho việc đặc tmô hình Aspect UML bng alloy ta sdng ví dụ ứng  
dụng điện thoi. ng dng này là mt phỏng đơn giản ca mt hthống điện thoi,  
trong đó khách bắt đầu chp nhn, thvà hp nht các cuc gi trong ni bộ và đường  
dài. Hthng cung cp các chức năng lõi để mô tvà kết ni khách hàng. Trong các  
chức năng cơ bản, một người có ththêm gi, thanh toán và ngắt các tính năng được  
mô tả dưới đây:  
Tính năng thời gian được liên quan ti thi gian kết ni và githi gian kết  
ni tng scho mi khách hàng. Nó xy ra trong khoảng đầu đến cui ca  
mi kết ni.  
Tính năng thanh toán có liên quan ti vic tính phí khách hàng cho các cuc  
gi ca h. Mt tính phí cho mõi kết ni được tính toán và khi chm dt kết  
nôi nó đưc bổ sung vào hóa đơn của khách hàng phù hp  
Tính năng ngắt được sdụng đxử lý các đường truyn bn bng cách ngt  
cuc gi. Nó can thip vào lúc bt du kết ni bng cách kim tra nếu đích  
là bận , trong trưng hp này cuc gi bị gián đoạn.  

Tải về để xem bản đầy đủ

pdf 41 trang yennguyen 13/04/2025 140
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Kiểm chứng mô hình Aspect-UML bằng Alloy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_kiem_chung_mo_hinh_aspect_uml_bang_alloy.pdf