1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop

40 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kiểm chứng Một Số ràng Buộc Trong Chương Trình Java Sử Dụng AOP
Tác giả Lê Ngục Minh
Người hướng dẫn TS Trịnh Thanh Bình
Trường học Trường Đại Học Công Nghệ, Đại Học Quốc Gia Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Luận văn Thạc sĩ
Năm xuất bản 2015
Thành phố Hà Nội
Định dạng
Số trang 40
Dung lượng 0,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hiện nay, đã có một vải phường pháp khác nhau được đề xuất nhằm kiểm tra tính đứng dắn của kịch bản tại các giai doạn thiết kế và m8 nguồn chương trình như các phương pháp kiểm chứng |1

Trang 1

ĐẠI HỌC QUOC GIA HANOI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Lê Ngục Minh

KIEM CHUNG MOT SO RANG BUOC TRONG

CHƯƠNG TRÌNH JAVA SỬ DUNG AOP

LUAN VAN TIIAC SI

HANOI - 2015

Trang 2

BALHOC QUOC GIA HA NOL

TRƯỜNG ĐẠI HỌC CÔNG NGHỊ:

1ê Ngọc Minh

KIEM CHỨNG MỘT SỐ RÀNG BUỘC TRONG

CHƯƠNG TRÌNH JAVA SỬ DỤNG AOP

Trang 3

LOI CAM DOAN

Tôi xin cam doan dây lả công trình nghiên cửu của riêng tôi Các kết quá trinh bảy trong luân văn là hoàn toàn trung thực, chưa được công bố trong bắt kỷ công trình

Trang 4

LOI CAM ON

Trong quá trình thực hiện để tải, tôi đã gặp rất nhiều khỏ khăn và bỡ ngỡ Nếu không có sự piúp đỡ, động viên chân thành của các thầy cô và bạn bè dỗng nghiệp

có lẽ tôi khó có thể hoàn thành tốt luận văn nảy

Trước hết tôi xin tỏ lỏng biết ơn sâu sic dén TS Trịnh Thanh Bình đã tận tình hướng dẫn trong suốt quá trình viết luận văn

Tôi xin trân trọng cảm ơn quý Ihầy, Cô và bạn bè trong khoa Công nghệ thông tin, rường Đại học Công nghệ, Đại học Quốc Gia Hà Nội đã tận tình truyền

đạt kiến thức, sắt cảnh và trấi nghiệm củng tôi trong suốt những năm học lập tại

đây Với vẫn kiến thức được tiếp thu trong quả trình học là nền Ling cho quá trình nghiễn cứu luận văn

Tôi xin trân trọng cảm ơn Đảng ủy, Ban Giám hiệu, Ban chủ nhiệm khoa Công nghệ thông tin trường Đại học Hải Phỏng dã tạo diễu kiện cho tôi trong suốt quả trình học tập và lâm luận văn này

Cuối cùng tôi gửi lời cảm ơn đến vợ con, gia đình đã động viên giúp đỡ tôi trong những lùc khó khăn trong công Tác và học tập

Xin trân trọng câm ơnl

Trang 5

DANH MUC CAC BANG

21 Ảnh xạ giữa các loại foin point va pointcut tuong ing 8

2.2 Vidu vé một khía cạnh với mã hành vì trước vả sau 9

3.1 Đặc tả kịch bản mô tả chức năng rút tiền tự động của máy 14

ATM

41 Cài đặt chương trình cho kịch bân kiểm tra các assertion 23

42 Cài đặt kịch bản mô tá chức năng rút tiền từ tài khoắn 24

4.3 | Cai dat kich ban mé ta chite nang chuyén khoản 28

Trang 6

11 Kịch bán biểu diễn phép chia hai số nguyên 1

21 Điểm nối thực thị va triệu pọi phương thức 7

2.2 | Ví dụ minh họa về đặc tả JMI "

3.1 |Phương pháp kiểm chứng ràng buộc của kịch bán trong | 15

chương trình Java sử dụng ADP

43 Kết quả kiểm chứng kịch bản 1 vi pham đặc tả 22

4.4 | Kết quả kiếm chứng kịch bản 1 không vi phạm 22

45 là kết quá kiểm tra các assertion cho kịch bản được cải đặt sai 24

46 Kết quả kiếm tra các assertion cho kịch bản cải đặt đúng 24

47 M6 tA tao Aspect vai bai toán rút tiền đơn giản 27

tỉ

Trang 7

IDK {Java I3evelonment Kit

J]PE Java Path kinder

Trang 8

4.2 Công cụ và môi trường xây dựng dương trình thực —- Xeeereerev T7

4.2.1 JDK he lái N — ú i eee LT

vi

Trang 10

CHƯƠNG 1 GIỚI THIỆU

1.1 Đặt vấn đề

Phân tích va dặc tả yêu cầu đóng vai trỏ quan trọng trong quá trình xây dựng và phát triển phần mềm Các yêu cầu phần mồm thưởng được đặc tả dưới đạng cae

ca sử dụng {use case LIC) m6 14 loan b6 sur tương tác giữa người dùng và hệ

thống Trong mỗi tài liệu đặc tả, mô hình UC biểu diễn kịch bản mô tả các bướu

mà hệ thống cần tuân thủ để thực hiện mệt nhiệm vụ Một kịch bản thường, sâm

các thành phần như : sự kiện, sự tương tác giữa các sự kiện, các biểu thức tiền

điêu kiện (precondition) vả hậu điều kiện (postcondition), xác nhận (assertion)

Trong đé, tiên điều kiện và hậu điều kiện định nghĩa các ràng buộc mà kịch bản buộc phải thỏa mãn khi bắt đầu và kết thúc thực thi một nhiệm vụ assertion đặc

tả một thuộc tính mả kịch bản phải thoả mãn tại một thời điểm nào đó Cuối

củng, kịch bản sẽ được được cài dặt bởi các doạn mã nguồn chương trình Hình

1.1 biểu diễn một kịch bản ở mức mã nguẫn thực hiện phép cha hai số nguyễn dương, với biểu thức tiền diều kiện là y khác không va hậu điều kiện là kết quá

của phép chia x cho y

return (x / yy;

Hink 1.1 phép chia hai sb nguyén

Việc kiểm tra tính đúng đắn của một kịch bản bao gồm kiểm tra các biểu thức tiền-hậu điều kiện và cdc assertion có thể thực hiện ở các giai đoạn đặc tả hoặc

mã nguồn chương trinh Hiện nay, đã có một vải phường pháp khác nhau được

đề xuất nhằm kiểm tra tính đứng dắn của kịch bản tại các giai doạn thiết kế và m8 nguồn chương trình như các phương pháp kiểm chứng |1 J, kiểm thử|4| Mẫ: phương pháp đều có những ưu và nhược điểm nhất dịnh Các phương pháp kiểm

thử yêu cầu phải có mã nguồn và các ca kiểm thứ (test case) thường chỉ phát

hiện được các lỗi về giá trị đầu ra (output) nhung khéng phat hiện được các lỗi

vị pham rảng buộc thiết kế 'Irong khi đỏ một vi pham ràng buộc thiết kế có thể gây ra lỗi hệ thẳng, đặc biệt khi tích hợp nhiều médun thì việc xác định chính xác vị trí gây lỗi sẽ rất khó khăn làm cho chỉ phí phát triển tăng cao [1] Các phương pháp kiếm chứng như chứng mình định lý (theorem proving)[5] va kiém

1

Trang 11

chứng mô hình (model checking) |3| đã được ứng dụng thánh công để kiểm chứng bản thiết kế phần mềm nhằm phát hiện sớm những lỗi tiềm Ấn, giảm thời

gian vả chỉ phí phát triển Ngược lại, các phương pháp kiểm chứng tại mức mã

nguồn nhằm kiểm tra sự tuân thủ giữa bản thiết kế và cải dặt của phần mềm

1.2 Mục tiêu

14 mụơ liêu la nghiên cứu về một sẽ kĩ thuật kiểm hứng phần

Luận văn đã

mềm từ dó dễ xuất cách tiếp cân kiểm chứng các biểu thức tiễn-hậu điều kiện và

các xác nhận của kịch bản lại mức mã nguồn sử dụng phương pháp lập trình

hướng khía canh (Aspect oriented nroprammine-AOP) Các mục tiêu cụ thể cần

đạt được là:

© Khảo cứu một số phương pháp kiếm chứng chương trình; mô hình ca sử

dụng trung phân tích thiết kế và đặc tã yêu câu phần mềm; phương pháp

lập trình hưởng khía cạnh, ngôn ngữ mô hình hoá IML (lava modchng language)

® Dễ xuất một cách tiếp cân để kiểm chứng các biểu thức tiền-hậu điều kiện

và xác nhận của kịch bản sử dụng phương pháp lập trình hưởng khía

cạnh;

® Xây dựng và thử nghiệm thảnh công công cụ kiểm chứng một số rằng

buộc của kịch bản tại mức mã nguồn chương trình

1.3 Đóng góp của luận văn

Đông góp chính của luận văn lá đề xuất và xây dựng thành công một công cụ kiểm chứng một số ràng buộc uửa một kịch bản tại thời điểm thực thi (mức mã nguồn) Các kết quả chính như sau

«Tìm hiểu vả trình bày một số phương pháp kiểm chứng, kiểm thử phần

mềm, phương pháp lập trình hướng khía cạnh vii Java (Aspect!) ngôn

ngữ mô hình hóa TMI.,

© Đề xuất va xây dựng thành công một công cụ để kiểm tra một số Tảng

buộc kịch bản tại thời điểm thực thi, ap dung cho các kịch bản được cải

dất trên ngôn ngữ lập trình Java

1.4 Cấu trúc luận văn

Luận văn gồm 4 chương chính được câu trúc như sau:

* Chương 1: Giới thiệu bài toán kiếm chứng một số ràng buộc của kịch bản,

mục tiêu và các đóng góp của luận văn,

© Chuong 2: Trình bảy một số kiến thức cơ sở cho mục tiêu nghiền cứu và

các đóng góp của luận văn;

2

Trang 12

Chuong 3: Dé xuat phuong phap kiém chimg mét số rằng buộc của kịch bản trong chương trinh Java,

Chương 4: Giới thiệu chương trình thực nghiệm và các đóng gúp,

Chương 5: Kết luận và hướng phát triển của luận văn

Trang 13

CHƯƠNG 2 KIEN THỨC CƠ SỞ

Trong chương này luận văn trình bảy một số kiến thức nền về kiểm chứng phần

mềm tại thời điểm thực thị, phương pháp lập trình hướng khía cạnh, ngôn ngữ

mô hình hóa IML Đây là các kiến thức cơ sở được sử dụng cho các đóng góp của luận văn trong chương 3 và chương 4

2.1 Kiếm chứng phần mềm

Kiểm chimg phan mém (software verification) la tap các nguyên lý phương

pháp vả công cụ nhằm báo dấm tính đúng đấn của phần mềm, trong mục này luận văn trình bày hai phương pháp kiểm chứng phần mềm là kiếm chứng hình

thức và kiểm chứng tại thời điểm thực thị chương trình

2.1.1 Kiểm chứng hình thức

Thương pháp kiếm chứng mô hình (model checking)|3| dược sử dụng dé xac

định tính hợp lệ của một hay nhiều tính chất mà người dùng quan tâm trong một

mô hình phần mềm cho trước Cho mô hình M và thuộc tính p cho trước, nó

+kiểm tra liệu thuộc tỉnh p có thỏa mãn trong mô hỉnh M hay không, kỷ hiệu M =

p Về mặt thực thị, kiểm chứng mô hình sẽ duyệt qua oác trạng thái, các đường,

thực thi có thể có trong mô hình M để xác định tính khả thỏa của p Trong đó,

các thuộc tính được đặc tả bằng logic thời gian LTL hoặc CTL Mồ hình XI là

một cấu trúc Kripke gồm bến thành phần M = (8, So, L,R) với § là một tập hữu han cdc trang thai, Sy € S 1a trang thai du, R C SxS 1a quan hệ chuyển trang thái, 1: 8 > 247 a ham gan nhãn với AP là tập hữu hạn các mệnh dé nguyén tit được xây dựng từ hệ thông

Một bộ kiếm chứng mô hình (model checker ) sẽ kiếm tra tắt cả các trang thái có

thể có của mô hình để tìm ra tất cá các đường thực thi có thé gây ra lỗi Do đó

không gian trạng thái thường là vô củng lớn nếu không muôn nói là vô hạn Vì

vậy việc phải duyệt qua tất sả các trạng thái là bất khả thi Để đối phó với bài

toán bùng nỗ không gian trạng thái đã có một vải nghiên cứu liên quan đến các

kỹ thuật làm giám khéng gian trang thai nhy Abstraction, Slicing

2.12 Chứng minh định lý

Phương pháp chứng minh định lý (theorem proving) [5] sử đựng các kĩ thuật suy

luận để chứng mình tính đúng đắn của một công thức hay tính khả thỏa của một

công thức F với tất cả các mô hình, ký hiểu |= F Một hệ chứng mình bao gồm các luật suy điễn bao gồm các Liên đề, Một hệ thông được gọi là đúng

(sound) C la nó đều được chimg minh

2.1.3 Kiểm chứng tại thời diễm thực thí

Kiểm chứng Lại thời điểm thực thi (runtirme verilication)[1 | là kĩ thuật kết hợp

giữa kiểm chứng hình thức và thực thi chương trình nhằm phát hiện oáu lỗi của

hệ thống dựa trên quá trình quan sát đầu vao (input), dau ra (outpul) trong khi

thực thi chương trình, các Biát trị đầu ra được quan sát để kiểm tra tỉnh thỏa được

so với đặc tả yêu cầu phần mềm So với phương pháp kiểm chứng tĩnh thi kiểm

4

Trang 14

chứng tại thời điểm thực thi được thực hiện trong khi chạy chương trình

Phương pháp này thường được sử dụng để kiểm tra sự tuân thủ giữa bản thiết kế

sự cải đặt của nó áp dụng cho các ngôn ngữ lập trình cụ thể, điển hinh là lava

với các công cụ kiểm chứng như IPF [8,15], JLO, ESC/1ava, Một số tru điểm

của phương pháp kiểm chứng tại thời điểm thực thi[ 14] như sau:

2.2 Phương pháp lập trình hướng khia cạnh

Phương pháp lập trinh hung khia canh (Aspeet-Oriented Programming) [8,12]

là phương pháp lập trình phát triển trên tự đuy tách biệt các mỗi quan tấm khá

nhau thành các môđun khác nhau Ở đề một mỗi quan tâm thường không phải

là một chức năng nghiệp vụ eụ thể và e d ú a

(thuộc tinh) chung mà nhiều môđun phần mềm trong cùng hệ thống nên có, ví

đụ như lưu vết thao tác va Ii (error logging) Với AOP, chúng ta có thể cài dat các mối quan tâm chung, cắt ngang hệ thống bằng các môđun đặc biệt gọi lá khía canh (aspect) thay vì đàn trải chúng trên các môđun nghiệp vụ liên quan Các khía cạnh sau đó được kết hợp tự động với các môđun nghiệp vụ khác bằng quá trinh gọi là dan (weaving) bằng bộ biên dịch đặc biệt Các wu điểm của phương

pháp AOP được tóm tắt như sau[8,12]

-_ Mô-đun hóa những vấn đề đan xen nhau: AOP xác định vẫn đề một cách

biệt, cho phép mô-đun hóa những vẫn đề liên quan đến nhiễu lứn

-_ Cho phép mở rộng hệ thống đễ đảng hơn: Một thiết kể tốt phải tính đến

cả những yêu cầu hiện tại và tương lai, việc xác định các yêu cầu trong

tương lai là một công việc khó khăn Nhưng nếu bỏ qua các yêu cầu trong tương lai, có thể bạn sẽ phải thay đổi hay thực hiện lại nhiều phần của hệ

thống Với AOP, người thiết kế hệ thống có thể để lại quyết định thiết kế

cho những yêu cầu trong tương lai nhờ thực hiên các aspcct riêng biết

AspectJ [12] là một phương pháp lập trình AOP áp dụng cho ngôn ngữ Java

Trinh bién dich AspectJ sé dan xen chuong trinh Java chính với các khía canh

thành các tệp mã byiecode chạy trên chỉnh máy ảo Java Trong các mục tiếp theo của luận văn, tôi trình bảy một số khái niệm liên quan trong AspectJ được

3

Trang 15

„ Ậ 5 Lad án với cáp rẻ ấn về biến thức Đến và

sứ dụng để sinh mã kiểm chứng kịch bản với các rằng buộc về biểu thức tiễn và

Am điền kiên và cá ñ

hậu điều kiện và các assertion

2.2.1 Thực thí cắt ngang

Trong AspectJ, quả trình trình biên dich thực thi các quy tắc dan dễ dan kết ác

môdun cất ngang vào môdun nghiệp vụ chính dược gọi là thực thi cắt ngang (erosscutting) AspccUT định nghĩa hai loại thực thì cắt ngàng là thực thí cất

ngang động và thực thị cắt ngang tĩnh:

© Thực thi cắt ngang động (đynamie crosscutting) la việc đan các hành vi

mới vào quá trình thực thí một chương trính Trình biên dich sé dua vau

tập các quy tắc dan dé xac dinh điểm dan và chèn thêm hoặc thay thể

luồng thực thi chương trình chính bằng môđun cắt ngang, từ đó làm thay đổi hành vi của hệ thống Hầu hết việc thực thi cắt ngang trong ÀspectT

đều là thực thi cắt ngang đông

«_ Thực thi cắt ngang tĩnh (sLatic crosscutting) là quá trình đan một sửa đổi vào cấu trúc tĩnh của lớp, piao diễn hay các khía cạnh hệ thống Chức

năng chính của thực thi cắt ngang tĩnh là hỗ trợ cho thực thi cắt ngang

động Vỉ dụ như thêm đữ liệu và phương thức mới vào lớp dã có nhằm

định nghĩa trang thái và hành vi của lớp đó để sử dụng trong các hành vi cắt ngang động Thực thi cắt ngang tĩnh còn được sử dụng nhằm khai báo

các cảnh báo và lỗi tại thời điểm biên dịch cho nhiều môđun

rong AOP, mỗi khía canh được coi lả biểu diễn của một quy tắc đan, né chỉ ra

môdun cần được dan, vị trí dan trong, médun do, hành vị sẽ dược đan vào thông,

qua các định nghĩa của điểm nỗi, hướng cắt va mã hành vì

2.2.2.Diém néi

Điểm nối Goinpoint) 1a mét điểm có thể xác định trong quá trình thực thi một

chương trình, điểm này chỉnh là vị trí mà các hành động thực thị cắt ngang được

dan vảo Trong Aspect] cỏ môt số loại điểm nối được chia thành hai loại thực

thi và triệu hồi phương thức sau

« Điểm nối thực thi phương thức (method execution joinpoinÐ: diễm này

nằm trên chỉnh phần thân của phương thức thực thi, nó gồm toản bộ các lệnh nằm trong thân phương thức,

©_ Điểm nối triệu gọi phương thức (method oall jompoinl): điểm này nằm

trên phần chương trình pợi phương thức dang xét, nẻ chỉnh lả diễm mà

phương thức đang xét dược gợi

Trang 16

2 : pe class Datakccess { 2 public aspect LogbateAccessAspect {

3 //private Log log = new Log(); 3 prate Log log = new Log();

public void creatData(){ pointcut dataAccessExecution() : (execution(public * DataAccess.*( )));

5 {Mog Legh call create data’); a before() : datakccessExecution(}{

6 Systen.out.println("Create Data Record "); ý Jog loghessage("call "+ thisloinPointStaticPart.getSignature());

public void updatedata(){ after() : dataàccessfxecutien(){

ÍIlog.1ogfessage("caÌ1 update date");

systen.out.printin("Update Data Record, ");

}

S145 pubic void deleteata(){

System.out.println("After execution call”);

iệu gọi phương thức

Trong Aspect], điểm nối thường được sử dụng trong một hướng, cắt (pointcut), mỗi hướng cắt chứa một nhóm các điểm nối cùng với ngữ cảnh của nó Ta có thể khai báo hướng cắt trong một khía cạnh, một lớp hoặc một giao diện Giống như phương thức, có thể sử dụng định danh truy cập (public, private) dé gidi han quyền truy cập đến hướng cắt Các hướng cắt có thể có tên hoặc không tên Các

hướng cắt khong tên, giông như các lớp không tên, được đính nghĩa tại nơi sử

dụng Các hướng cắt được đặt tên thì có thể được tham chiều từ nhiều nơi khác

Cú pháp khai báo hướng cắt như trong sau [12] [15]

[access specifier] pointcut pointcut-name([args]):

pointcut-definition

Vidu: pointcut callSayHello(): call(* *.sayHello());

Trong do [access specifier] khai bao định danh truy cập có thé 1a public hoặc private, [pointcut name] khai báo tên của hưởng cắt, [args] khai báo các tham sô, cuôi củng [pointcut-definition]là định nghĩa hướng cắt

Bang 2.1 Ánh xạ giữa cac loai join point va pointcut tương ứng

Cu phap pointcut Loai join point

execution (MethodSignature) “Thực hiện phương thức

call (MethodSignature) Gọi phương thức execution (ConstructorSignature) | Thực hiện hàm dựng

Trang 17

call (Conscructorsi mature} Goi ham dung

execazion handier(Typesignature} Thực hiện điều khiển ngoại lệ

‡aitializatien (Constzuetor3izaat+ Khởi tạo đối tượng

fEeisiLiaLizaL ten (EonsL casLorEig=- Tiền khởi lạo đối tượng

advi seexecution (] ‘Vhue hién advice

2.2.4 Ma hanh vi

Mũ hành vị (advicc) là doan mã định nghĩa hành vi được dan vào mã nguồn tại

điểm điểm nối [12][15] Mã hành vị được thực thi trước (before advice), sau (aller advioe}), hoặc xung quanh (around advice) một điểm nổi Mã hành vi có

thể được St dụng để đưa ra thông báo trước khi đoạn mã tại điểm nôi được thực thi lưu vết hoặc kiểm tra lỗi Trong Aspect] định nghĩa ba loại mã hành vi sau

© Mã hành vi trước lả loại mã được thực thi trước các điểm nối,

© Ma hanh vi sau là loại mã được thực thì ngay sau các điểm nối,

© Mã hành vi xung quanh lá loại mã mạnh nhất, nó bao gầm cả mã hành vi trước và sau Mã hành vi xung quanh có thể chỉnh stra doan mã Lại điểm

nối, nó có thể thay thế, thậm chỉ bó qua sự thực thì của điểm nổi dó Mã

hành vị xung quanh phái khai báo giá trị trả về cùng kiểu với kiểu trả về

của diễm nối Trong mã hảnh vi xung quanh, sự thực thi cia diém nối được thể hiện thông qua proceed(Q) Nếu trong mã hành vi không gợi

proceed(Q) thì sự thực thi của điểm nếi sẽ bị bỏ qua

Bảng 22 biểu điển một khía cạnh với mã hành vị trước vả sau Như vậy diễm

nổi và mã hảnh vi kết hợp với nhau tạo nên quy tắc thực thì cắt ngàng, động

hưởng cắt xác định các điểm cắt cần thiết còn mã hành vi cung cấp cá hành

động sẽ xây ra tại điểm nói đó

Bang 2.2 Ví dụ về một khía cạnh với mã hành vi trước và sau

Trang 18

Ta cỏ thể xây dựng các ađvice như sau:

-_ Before advice thực hiện lưu vẽt

đặc điểm sau, Bang 2.3

© Cd thé sit dung cdc dinh danh pham vi truy cap ({public, private, proteoL})

cho nó Ngoài ra khía cạnh còn có thể có định danh phạm vi truy cập

“privileged”, dinh danh nay cho phép khía cạnh có thể truy cập đến các

thành viên riêng của các lớp mà chúng cắt ngang,

©_ Có thể khai báo khía cạnh trừu tượng bằng từ khóa ahstract,

® Khia cạnh không thé được thé hiện hỏa trực tiếp,

© Khia cạnh có thể kế thừa các lớp và các khía cạnh trừu tượng khác, có thể

thực thí các giao điện nhưng không thể kế thừa từ các khía cạnh cụ thể

(không trừu tượng),

© Khia cạnh có thể nằm trong các lớp và các giao diện

Bảng 2.3 Cầu trúc cơ bản của một khía cạnh

Trang 19

2.3 Ngôn ngữ mô hình hóa JML {Java modeling language)

TML (Iava Modeling Language)[7][10] là ngôn ngữ đặc tả hành vị, được sử dung dé đặc tả hành vi của các mô đun trong ngôn ngữ lava TML là sự kết hợp phương pháp thỏa thuận với phương pháp đặc tả dựa trên mô hình của ngôn ngữ Larch [13] JML str dung logic Hoare [14] kết "hợp với việc đặc tả các tiển/

hậu điền kiện (pre-4post-condition) và các bất biến (imvariant) của các thuộc

tính, các cầu trúc

Các đặc tả TML được thêm vàu mã Java dưới đạng các chú giải (annotalion}

bên trong các chú thích (comment) Các chú thích trong ngôn ngữ lava được hiểu như là các chú giải TML khi nó bắt đầu bằng ký tự “@” Vị dụ trong Tinh

2 mỉnh họa việc sử dụng JML đặc tá cho lớp Purse Trong đó, trường balance được đặc tả với bất biến (mvariant) là balance luôn trong đoạn từ 0 đến MAX BALAMNCL Trường pm là một mảng thuộc kiểu byte với bất biến là pin

có đúng 4 phần tử và các phần tử chỉ có giá tri tir 0 dén 9

public class Purse { final int MAX_BALANCE; int balance;

/{@ invariant 0 <= balance &&

balance <= MAX_BALANCE;

byte[] pin;

/*@ invariant pin [= null &&

pin.length == 4 && (\forall int i; 0<=i&&i<4;

int debit(int amount} thraws PurseException {

if (amount <= balance) { balance -= amount; return balance; }

else { throw new PurseException{""overdrawn by " + amount); }

10

Trang 20

Hình 2.2: Ví dụ minh họa về đặc tả JML

Thương thức debit nhận vào đối số amount là đầu vào Phương thửc nảy số trừ

amount vào balance và trả về giá trị của balance sau khi trừ trong trường hợp

balanoe lớn hơn hoặc bằng amounL 'Trong trường hợp balance nhỏ hơn arount,

một ngoại lệ PurseException sẽ được trả về Tiền điều kiện (requires) của phương thức này là amount phải lớn hơn hoặc bằng 0; hậu điều kiện (ensures) là balance bị trừ đi một lượng amount và trả về kết quả sau khi trừ

Phương thức này còn có một hậu điêu kiện nữa cho trường hợp phương thức trả

về ngoại lệ (signals)

2.4 Kết luận

Trong chương này luận văn đã trình bây một số kiến thức cơ sở được sử dụng

cho phương pháp kiếm chứng một số ràng buộc của kịch bản tại thời điểm thực thi được trình bảy trong chương 3 và chương 4

il

Ngày đăng: 21/05/2025, 18:58

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Trinh Thanh Binh, Luan an TS, “Kiém chimg các thành phần Java tương tranh”, DHQGHN, 2011 Sách, tạp chí
Tiêu đề: Kiém chimg các thành phần Java tương tranh
Tác giả: Trinh Thanh Binh, Luan an TS
Nhà XB: DHQGHN
Năm: 2011
2. Vũ Sỹ Vương, Khóa luận tốt nghiệp, “Kiểm chứng đặc tả UMI cho tác tử phần mềm ”, Đại học Công nghệ, ĐHQG Hà Nội, 2009.Tiếng Anh Sách, tạp chí
Tiêu đề: Khóa luận tốt nghiệp
Tác giả: Vũ Sỹ Vương
Nhà XB: Đại học Công nghệ, ĐHQG Hà Nội
Năm: 2009
3. B. Berard, M. Bidoit, A. Finkel, F. Laroussinie, A. Petit, L. Petrucci, and P. Schnoebelen. 2010.Systems and Software Verification: Model- Checking Techniques and Tools (1st ed.). Springer Publishing Company,Incorporated Sách, tạp chí
Tiêu đề: Systems and Software Verification: Model- Checking Techniques and Tools
Tác giả: B. Berard, M. Bidoit, A. Finkel, F. Laroussinie, A. Petit, L. Petrucci, P. Schnoebelen
Nhà XB: Springer Publishing Company, Incorporated
Năm: 2010
4. Glenford J. Myers and Corey Sandler. 2004. The Art of Software Testing. John Wiley &amp; Sons Sách, tạp chí
Tiêu đề: The Art of Software Testing
Tác giả: Glenford J. Myers, Corey Sandler
Nhà XB: John Wiley & Sons
Năm: 2004
5. Melvin Fitting. 1990. First-Order Logic and Automated Theorem Proving. David Gries (Ed.). Springer-Verlag New York, Inc., New York,NY, USA Sách, tạp chí
Tiêu đề: First-Order Logic and Automated Theorem Proving
Tác giả: Melvin Fitting
Nhà XB: Springer-Verlag New York, Inc.
Năm: 1990
6. Andreas Bauer, Martin Leucker, and Christian Schallhart. 2011. Runtime Verification for LTL and TLTL. ACM Trans. Softw. Eng. Methodol. 20, 4, Article 14 (September 2011), 64 pages Sách, tạp chí
Tiêu đề: Runtime Verification for LTL and TLTL
Tác giả: Andreas Bauer, Martin Leucker, Christian Schallhart
Nhà XB: ACM Trans. Softw. Eng. Methodol.
Năm: 2011
7. G. Booch, J. Rumbaugh, and I Jacopson. The Unified Modeling Language User Guide, 2" edition. Addison-Wesley, 2005 Sách, tạp chí
Tiêu đề: The Unified Modeling Language User Guide
Tác giả: G. Booch, J. Rumbaugh, I Jacopson
Nhà XB: Addison-Wesley
Năm: 2005
8. Colyer, A. Clement, G. Harley, and M. Webster. Eclipse AspectJ: Aspect- Oriented Programming with AspectJ: and the Eclipse AspectJ Development Tools. Addison Wesley Professional Publisher, 2004 Sách, tạp chí
Tiêu đề: Eclipse AspectJ: Aspect- Oriented Programming with AspectJ: and the Eclipse AspectJ Development Tools
Tác giả: A. Clement Colyer, G. Harley, M. Webster
Nhà XB: Addison Wesley Professional
Năm: 2004
9. Alan O'Callagan The Object Constraint Language, CSCI3007 Component Based Development Sách, tạp chí
Tiêu đề: The Object Constraint Language
Tác giả: Alan O'Callagan
10.M. Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3" Edition. Addison Wesley, 2003 Sách, tạp chí
Tiêu đề: UML Distilled: A Brief Guide to the Standard Object Modeling Language
Tác giả: M. Fowler
Nhà XB: Addison Wesley
Năm: 2003
12.Ramnivas Laddad. AspectJ in Action Practical Aspect-Oriented Programming. Manning Publications Co.,2003, Chapter 3 Sách, tạp chí
Tiêu đề: AspectJ in Action Practical Aspect-Oriented Programming
Tác giả: Ramnivas Laddad
Nhà XB: Manning Publications Co
Năm: 2003
13.0MG. Unified Modeling Language. OMG, Version 2.0 March 2006 Sách, tạp chí
Tiêu đề: Unified Modeling Language
Tác giả: OMG
Nhà XB: OMG
Năm: 2006
14.R.8. Pressman. Software Engineering, A Practitioner's Approach, 5" edition. Thomas Casson, 2001 Sách, tạp chí
Tiêu đề: Software Engineering, A Practitioner's Approach
Tác giả: Pressman
Nhà XB: Thomas Casson
Năm: 2001
11.Truong Anh Hoang, Nguyen Thanh Binh, Nguyen Viet Ha. Checking method call sequences using aspect-oriented programming Khác

HÌNH ẢNH LIÊN QUAN

Bảng  22  biểu  điển  một  khía  cạnh  với  mã  hành  vị  trước  vả  sau.  Như  vậy  diễm - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
ng 22 biểu điển một khía cạnh với mã hành vị trước vả sau. Như vậy diễm (Trang 17)
Bảng  2.3  Cầu  trúc  cơ  bản  của  một  khía  cạnh - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
ng 2.3 Cầu trúc cơ bản của một khía cạnh (Trang 18)
Bảng  3.1.  Đặc  tả  kịch  bản  mô  tả  chức  năng  rút  tiền  tự  động  của  máy  ATM - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
ng 3.1. Đặc tả kịch bản mô tả chức năng rút tiền tự động của máy ATM (Trang 21)
Hình  3.1:  Phương  pháp  kiểm  chứng  ràng  buộc  của  kịch  bản  trong  chương  trình  Java  sử  dụng  AOP - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 3.1: Phương pháp kiểm chứng ràng buộc của kịch bản trong chương trình Java sử dụng AOP (Trang 23)
Bảng  3.2.  Mẫu  aspect  tổng  quát - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
ng 3.2. Mẫu aspect tổng quát (Trang 23)
Hình  4.1:  Giao  diện  chính  của  chương  trình. - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.1: Giao diện chính của chương trình (Trang 27)
Hình  4.2:  Sinh  ma  Aspect  cho  kich  ban  1. - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.2: Sinh ma Aspect cho kich ban 1 (Trang 28)
Hình  4.3:  Kết  quả  kiểm  chứng  kịch  bản  1  vi  phạm  đặc  tả. - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.3: Kết quả kiểm chứng kịch bản 1 vi phạm đặc tả (Trang 29)
Hình  4.6.  Kết  quả  kiểm  tra  các  assertion  cho  kịch  bản  cài  đặt  đúng. - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.6. Kết quả kiểm tra các assertion cho kịch bản cài đặt đúng (Trang 31)
Bảng  4.2.  Cài  đặt  kịch  bản  mô  tả  chức  năng  rút  tiền  từ  tài  khoản - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
ng 4.2. Cài đặt kịch bản mô tả chức năng rút tiền từ tài khoản (Trang 31)
Hình  4.5  là  kết  quả  kiểm  tra  các  assertion  cho  kịch  ban  được  cài  đặt  sai - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.5 là kết quả kiểm tra các assertion cho kịch ban được cài đặt sai (Trang 31)
Hình  4.7,  bên  trái, - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.7, bên trái, (Trang 33)
Hình  4.7:  Mô  tả - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.7: Mô tả (Trang 34)
Hình  4.9:  Kết  quả  kiểm  chứng. - Luận văn kiểm chứng một số ràng buộc trong chương trình java sử dụng aop
nh 4.9: Kết quả kiểm chứng (Trang 35)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w