1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiểm chứng sự tương tác giữa các thành phần trong chương trình đa luồng sử dụng lập trình hướng khía cạnh

8 13 0

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

THÔNG TIN TÀI LIỆU

Nội dung

Cài đặt (chương trình) thường không tự sinh ra từ đặc tả nên nó có thể vẫn có lỗi mặc dù thiết kế của nó đã được kiểm chứng là đúng. Để giải quyết các vấn đề này, tác giả đã đề xuất một phương pháp kiểm chứng sự tuân thủ của cài đặt so với đặc tả vào thời điểm thực thi. Phương pháp này có thể kiểm chứng được sự nhất quán giữa chương trình Java và đặc tả giao thức tương tác của nó, các vi phạm được phát hiện trong bước kiểm thử.

Kiểm chứng tương tác thành phần chương trình đa luồng sử dụng lập trình hướng khía cạnh Checking Interaction Protocol in Multi-threaded Program using AOP Trịnh Thanh Bình, Trương Anh Hồng, Nguyễn Việt Hà Abstract: Interaction protocol specifies allowed method call sequences among classes or objects in a program We propose an approach to verify interaction protocol for multi-thread programs Our approach processes interaction protocol specified by extended regular expressions or protocol state machines in UML 2.0 and generates aspect code to weave with the programs for runtime verification The aspect code will monitor the execution of the program and check the conformance between the programs and their specifications We implemented the approach as a tool for generating aspect code in AspectJ and checking Java programs The experimental results show that our approach is convenient to use in practice I GIỚI THIỆU Phần mềm ngày đóng vai trị quan trọng xã hội đại Tỷ trọng giá trị phần mềm hệ thống ngày lớn Tuy nhiên, nhiều hệ thống, lỗi phần mềm gây hậu đặc biệt nghiêm trọng, khơng mặt kinh tế mà cịn người [16], đặc biệt phần mềm điều khiển hệ thống thiết bị giao thông Các phương pháp kiểm chứng hình thức chứng minh định lý [8] kiểm chứng mơ hình [6, 7] đạt thành công định kiểm chứng đặc tả phần mềm Cài đặt mã chương trình thường thực sau đặc tả kiểm chứng Tuy nhiên, cài đặt (chương trình) thường khơng tự sinh từ đặc tả nên có lỗi thiết kế kiểm chứng [16] Để giải vấn đề này, đề xuất phương pháp kiểm chứng tuân thủ cài đặt so với đặc tả vào thời điểm thực thi [1,10] Phương pháp kiểm chứng quán chương trình Java đặc tả giao thức tương tác nó, vi phạm phát bước kiểm thử Bài báo này, mở rộng nghiên cứu [1,10] để kiểm chứng tuân thủ cài đặt đặc tả giao thức tương tác chương trình đa luồng sử dụng lập trình hướng khía cạnh (Aspect-Oriented Programming - AOP) [5] Trong [10] sử dụng máy trạng thái giao thức (Protocol State Machine – PSM) UML 2.0 để đặc tả giao thức tương tác Việc sử dụng biểu đồ PSM để đặc tả giao thức tương tác có ưu điểm trực quan Tuy nhiên, biểu đồ nhiều hạn chế khả biểu diễn, khơng tương thích cơng cụ UML xuất biểu đồ sang định dạng XMI Do đó, chúng tơi mở rộng biểu thức quy (Regular Expression - RE) để đặc tả giao thức tương tác Mã aspect tự động sinh từ đặc tả đan với chương trình để kiểm chứng tn thủ so với đặc tả giao thức tương tác Các phần lại báo cấu trúc sau Mục II giới thiệu số kiến thức AOP Mục III thảo luận số nghiên cứu liên quan Mục IV trình bày phương pháp đặc tả giao thức tương tác máy trạng thái giao thức, biểu thức quy mở rộng phương pháp kiểm chứng tuân thủ chương trình đặc tả Mục V số kết thực nghiệm Các kết luận hướng phát triển trình bày Mục VI II LẬP TRÌNH HƯỚNG KHÍA CẠNH Phương pháp lập trình hướng khía cạnh (AspectOriented Programming - AOP) [5,11] phương pháp lập trình phát triển tư tách biệt mối quan tâm khác thành môđun khác Ở đây, mối quan tâm thường chức nghiệp vụ cụ thể đóng gói mà khía cạnh (thuộc tính) chung mà nhiều mơđun phần mềm hệ thống nên có, ví dụ lưu vết thao tác lỗi (error logging) Với AOP, cài đặt mối quan tâm chung cắt ngang hệ thống môđun đặc biệt gọi aspect thay dàn trải chúng mơđun nghiệp vụ liên quan Các aspect sau kết hợp tự động với môđun nghiệp vụ khác trình gọi đan (weaving) biên dịch đặc biệt AspectJ [3] công cụ AOP cho ngơn ngữ lập trình Java Trình biên dịch AspectJ đan xen chương trình Java với aspect thành tệp mã bytecode chạy máy ảo Java III MỘT SỐ NGHIÊN CỨU LIÊN QUAN Đã có vài phương pháp đề xuất để kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác đề xuất Jin[15] đề xuất phương pháp hình thức để kiểm chứng tĩnh tuân thủ cài đặt mã nguồn đặc tả thứ tự thực phương thức (Method Call Sequence MCS) chương trình Java Phương pháp sử dụng automat hữu hạn trang thái để đặc tả MCS, chương trình Java biến đổi thành văn phạm phi ngữ cảnh (Context Free Grammar- CFG) sử dụng công cụ Accent1 Ngôn ngữ sinh ôtômát L(A) so sánh với ngôn ngữ sinh CFG L(G), L(G) ⊆ L(A) chương trình Java tuân thủ theo đặc tả MCS Ưu điểm phương pháp vi phạm phát sớm, thời điểm phát triển biên dịch chương trình mà khơng cần chạy thử chương trình Tuy nhiên, phương pháp chưa kiểm chứng chương trình đa luồng Hơn nữa, phương pháp phải giải trọn vẹn toán bao phủ ngôn ngữ (Language Inclusion Problem) Trong phương pháp JML[9,13,14], MCS phải đặc tả dạng tiền hậu điều kiện kết hợp với phần thân phương thức chương trình bất biến vòng lặp, hay tập câu lệnh Các tiền hậu điều kiện viết dạng chuẩn để biên dịch chạy đan với chương trình nguồn Các vi phạm phát vào thời điểm chạy chương trình Với phương pháp người lập trình phải đặc tả rải rác mã kiểm tra nhiều điểm chương trình Do khó kiểm sốt, khơng đặc tả độc lập, tách biệt đặc tả MCS Yoonsik Perumandla [14] mở rộng ngơn ngữ đặc tả trình biên dịch JML để biểu diễn MCS biểu thức quy Các biểu thức quy biên dịch thành mã thực thi đan xen với mã nguồn chương trình gốc để kiểm chứng tuân thủ cài đặt so với đặc tả MSC Các hành vi chương trình gốc khơng bị thay đổi ngoại trừ thời gian thực thi kích thước Deline Fahndrich [12] đề xuất phương pháp kiểm chứng vào thời điểm thực thi tuân thủ cài đặt http://accent.compilertools.net/Accent.html đặc tả MCS Phương pháp sử dụng máy trạng thái để đặc tả MCS Đặc tả MCS sau biên dịch sang mã nguồn đan xen với mã nguồn chương trình để kiểm chứng động tuân thủ cài đặt so với đặc tả MCS Các mệnh đề tiền hậu điều kiện phương thức MSC đặc tả kiểm chứng Các phương pháp nói chưa kiểm chứng chương trình đa luồng, giao thức kiểm chứng đơn thứ tự thực phương thức Trong báo đề xuất cách tiếp cận việc kiểm chứng quán cài đặt so với thiết kế thời điểm thực thi Trong phương thức giao thức thực song song với phải thỏa mãn mệnh đề tiền hậu điều kiện IV PHƯƠNG PHÁP KIỂM CHỨNG SỰ TUÂN THỦ GIỮA THỰC THI VÀ ĐẶC TẢ GIAO THỨC TƯƠNG TÁC Giả sử giao thức tương tác hàng đợi tương tranh (Concurrent Queue - CQ) với bốn phương thức cài đặt cho phép gọi lúc luồng cung cấp Producer đẩy phần tử vào hàng đợi, nhiều luồng Consumer thao tác với phần tử hàng đợi ( Hình 1) Tại trạng thái trừu tượng OPENED, luồng Consumer gọi phương thức enqueue() dequeue() để bổ sung loại bỏ phần tử hàng đợi Khi luồng Producer gọi phương thức close() để chuyển sang trạng thái trừu tượng CLOSED phần tử khác không bổ sung loại bỏ từ hàng đợi [Pre:Q.Full = False] enqueue(Q,x) [Post: Q.x = True] OPENED close(Q) Thứ tự thực phương thức chương trình phải tuân thủ theo cung Hình đường từ trạng thái đầu đến trạng thái kết thúc Trong đó, hai phương thức dequeue(Q,x) enqueue(Q,x) gọi đồng thời luồng khác Khi phương thức enqueue(Q,x) thực tiền điều kiện hàng đợi chưa đầy hậu điều kiện x phải đẩy vào hàng đợi Với phương thức dequeue(Q,x) tiền điều kiện x thuộc hàng đợi hậu điều kiện x loại bỏ khỏi hàng đợi Giả sử đặc tả thiết kế giao thức đắn Tuy nhiên, cài đặt mã nguồn chương trình vi phạm đặc tả thiết kế giao thức Thông thường vi phạm khó phát bước kiểm thử liệu đầu vào đầu Do đề xuất phương pháp kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác chương trình đa luồng sau (Hình 2) Sử dụng biểu thức quy mở rộng (RE) máy trạng thái giao thức (PSM) để đặc tả giao thức tương tác (IP), Người lập trình cài đặt ứng dụng dựa đặc tả IP, Tự động sinh mã aspect từ đặc tả IP, CLOSED open(Q) [Pre: Q.x = True] dequeue(Q,x) [Post : Q.x = False] Khi tốn kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác chương trình đa luồng đặc tả sau: Hình Giao thức tương tác hàng đợi tương tranh Các mã aspect sinh tự động đan với mã chương trình ứng dụng để kiểm chứng động tuân thủ thực thi đặc tả IP Kết thực nghiệm Mục V cho thấy chương trình thực mã đan xen vào phát xác vị trí vi phạm có chương trình với đặc tả IP Trong đó, hành vi chương trình gốc khơng bị thay đổi ngoại trừ thời gian thực kích thước chương trình Đặc tả (PSM, RE) Cài đặt + [p1]o1.m1()[q1]→([p2]o2.m2()[q2]|[p3]o3.m3()[q3]) →(o1.m1()||o4.m4()) biểu diễn IP Trong đó, tiền điều kiện p1 thỏa mãn phương thức o1.m1() thực trước thỏa mãn hậu điều kiện q1, sau nhiều lần thực phương thức o2.m2() o3.m3() với tiền điều kiện p2, p3 hậu điều kiện q2, q3 Tiếp theo phương thức o1.m1() o4.m4() thực song song Cuối o5.m5() với điều kiện p5 q5 →[p5]o5.m5()[q5] Chương trình Biên dịch Bộ sinh mã Mã aspect Ví dụ RE: Đan xen mã Chạy kiểm thử phát lỗi Hình Sơ đồ hoạt động hệ thống Đặc tả giao thức tương tác 1.1 Biểu thức quy mở rộng cho biểu diễn giao thức tương tác RE mở rộng để biểu diễn IP độc lập với mã nguồn để sinh mã aspect định nghĩa sau 1.2 Biểu đồ PSM cho biểu diễn giao thức tương tác Biểu đồ PSM UML2.0 biểu diễn thứ tự thực phương thức với ràng buộc mệnh đề tiền hậu điều kiện sử dụng để đặc tả IP Chúng tơi định nghĩa hình thức sau: Định nghĩa (Máy trạng thái giao thức) Protocol State Machine - PSM bẩy thành phần PSM = Trong đó, S tập hữu hạn trạng thái, M tập phương thức, Pre, Post tập tiền điệu kiện hậu điều kiện σ ⊆ S×Pre×M×Post→S hàm chuyển trạng thái s0,f∈S trạng thái đầu kết thúc {PSM Diagram} Định nghĩa (Biểu thức quy mở rộng) Regular Expression - RE năm RE = Trong đó, [P1] M1( ) [Q1] [P4] M4( ) [Q4] [P7] M7( ) [Q7] [P2] M2( ) [Q2] 1 M = {m1,m2,…,mn} bảng chữ Sigma gồm tập hữu hạn phương thức, [P5] M5( ) [Q5] [P3] M3( ) [Q3] [P6] M6( ) [Q6] O = {o1,o2,…,op} tập hữu hạn đối tượng, Pre, Post tập hữu hạn tiền hậu điều kiện, S = {s1,s2,…,sk} tập hạn biểu thức biểu diễn phương thức, s ::= [Pre]o.m[Post]|s->s|s|s| s||s |s*|s+|(s) Trong đó: m ∈ M, s ∈ S, o ∈ O s→s kết hợp hai nhiều biểu thức tuần tự, s|s: phép hoặc, s||s: phép song song, + s*: không nhiều phép lặp, s : nhiều phép lặp, (s): biểu thức kết hợp Hình Biểu đồ PSM cho giao thức tương tác Hình biểu diễn biểu đồ PSM cho IP, thứ tự thực phương thức thể cung biểu đồ Trong đó: • S={1,2,3,4}∪{s0,f}, • Pre={P1 P7};Post={Q1 Q7};M={M1 M7}, • σ={s0P1M1Q1→1;1P2M2Q2→2;…;3P7M7Q7→f; 4P6M6Q6→f} 2 Sinh mã aspect Mục trình bày thuật tốn tự động sinh mã kiểm chứng aspect từ đặc tả IP Với đặc tả dạng PSM sinh đồ thị có hướng để biểu diễn IP thuật toán Bảng Với đặc tả RE mở rộng đưa dạng RE chuẩn phép biến đổi s=[Pre]o.m[Post] thành ký tự a∈∑ (một ký tự thuộc bảng chữ biểu thức RE chuẩn) Từ dạng RE chuẩn chuyển sang máy trạng thái hữu hạn (Finite State Machine-FSM) thuật toán [2] Mã aspect sau sinh tự động từ đặc tả PSM FSM Bảng Sinh đồ thị biểu diễn IP từ đặc tả PSM Đầu vào: đặc tả PSM Đầu ra: Đồ thị G = đặc tả giao thức Trong đó: • V • thị, M= {[Pre1]m1[Post1],[Pre2]m2[Post2], , [Pren]mn[Postn]} tập phương thức với tiền hậu điều kiện thuộc giao thức, • tập đỉnh đồ thị (được biểu diễn tập số nguyên), M tập cung đồ Các cung đồ thị gán nhãn phương thức thuộc M, đỉnh gán nhãn số nguyên Các cung thể mối quan hệ phụ thuộc phương thức IP Tạo hàm song ánh µ: M → {1 |M|},|M| lực lượng tập M, số nguyên tập đỉnh đồ thị Tạo đỉnh vào gán nhãn 0, với m thuộc M0 (tập đỉnh vào máy trạng thái (ο → M0) tạo cung từ đỉnh vào đến đỉnh µ(m), gán nhãn [prem]m[postm] Với cung dạng m → m’ thuộc PSM tạo nút µ(m) tới µ(m’) gán nhãn {prem’}m’{postm’} Tạo đỉnh kết thúc, với m → Θ thuộc đỉnh kết thúc PSM, tạo cung từ µ(m) tới đỉnh kết thúc vừa tạo Quá trình tự động sinh mã aspect gồm ba bước sau Bước Khởi tạo mẫu aspect sinh từ đặc tả gao thức tương tác sau static final String aspectTemplate = "import org.aspectj.lang.JoinPoint;\n" + "public aspect ProtocolCheck {\n" + "#CONSTS#\n" + "#ADVICES#\n\n" + " void log(JoinPoint jp); \n"; Trong aspect mẫu xâu “#CONST#” thay trạng thái phương thức giao thức Xâu “# ADVICES#” thay điều kiện kiểm tra trước sau (pointcut) phương thức thực Phương thức log(JoinPoint jp) thơng báo phương thức vị trí vi phạm đặc tả Bước Khởi tạo mẫu pointcut sinh từ đặc tả gao thức tương tác sau static String pointcutTemplate = "\n" +" pointcut pc_#SIG_NM#(#CLS_NM# o):\n"+" target(o)\n"+ " &&call(#SIG#);\n"+" before(#CLS_NM# o):pc_#SIG_NM#(o){\n"+ " if (!(#PRE_COND#))\n" +" log(thisJoinPoint);\n"+" }\n"+ " after(#CLS_NM# o):pc_#SIG_NM#(o) {\n"+" o.state = ST_#SIG_NM#;\n"+”#POST_COND# "+” }\n"; Trong pointcut mẫu xâu “#SIG_NM#” thay tên phương thức giao thức, “# CLS_NM#” thay tên lớp tương ứng Xâu “#PRE_COND#” ”#POST_COND# thay biểu thức tiền hậu điều kiện Bước Các biểu thức tiền hậu điều kiện chia làm hai loại Loại kiểm tra thứ tự thực phương thức giao thức Loại hai đặc tả điều kiện trước sau phương thức phải thỏa mãn thực Bước 3.1 Với biểu thức tiền hậu điều kiện loại phương thức giao thức tự động sinh biến trạng thái có tiền tố ST_, theo sau tên phương thức Mỗi phương thức thực biến trạng thái gán trạng thái phương thức Hàm sinh biểu thức tiền điều kiện cài đặt sau static String genCondition( Entry e, Set entrySigs) { String src = ""; if (entrySigs.contains(e.getKey())) src += "o.state==ST_START"; for (String s: e.getValue()){ if (s.equals("START")) continue; if (src.length() > 0) src += ""; src += "o.state==ST_" +getMethodName(s); } return src; } Bước 3.2 Với biểu thức tiền hậu điều kiện loại hai, giới hạn đặc tả dạng biểu thức logic Java (bước 3, thuật toán Bảng 2) Các biểu thức đọc trực tiếp từ đặc tả đưa vào pointcut mẫu bước Đan mã aspect AspectJ cho phép đan xen mã aspect với chương trình Java ba mức khác nhau: mức mã nguồn, mã bytecode thời điểm nạp chương trình chương trình gốc chuẩn bị thực Đan mức mã nguồn, AspectJ nạp mã aspect Java mức mã nguồn (.aj java), sau thực biên dịch để sinh mã đan xen bytecode, dạng class Đan xen mức mã bytecode, AspectJ dịch lại sinh mã dạng class từ các mã aspect Java biên dịch dạng (.class) Đan xen thời điểm nạp chương trình (load time weaving), mã aspect Java dạng class cung cấp cho máy ảo Java (JVM) Khi JVM nạp chương trình để chạy, nạp lớp AspectJ thực đan mã chạy chương trình Với việc đan xen mức mã bytecode thời điểm nạp chương trình phương pháp sử dụng mà khơng u cầu phải có mã nguồn Khi thay đổi đặc tả phải sinh biên dịch lại mã aspect V THỰC NGHIỆM Chúng cài đặt phương pháp thành công cụ kiểm chứng PVG (Protocol Verification Generator PVG) Đầu vào cơng cụ PVG FSM đồ thị có hướng biểu diễn giao thức tương tác Đầu mã kiểm chứng aspect AspectJ Thực nghiệm tiến hành lớp StreamBuffer với ba phương thức open(), read() close() Giao thức tương tác đặc tả biểu thức quy open()->(read())*>close() mơ tả phương thức open() thực trước sau nhiều lần gọi phương thức read(), cuối phương thức close() gọi để giải phóng tài nguyên Bảng minh họa chương trình cài đặt tuân thủ theo giao thức bên trái sai bên phải (do phương thức close( ) không gọi) Các chương trình đa luồng xây dựng để tính tổng số nguyên file Thực kiểm thử chương trình với input/output khác nhau, kết cho thấy hai chương trình cho kết Tuy nhiên đan mã chương trình với mã aspect sinh từ công cụ PVG phát vi phạm ràng buộc chương trình cài đặt sai bên phải Bảng 2– Chương trình cài đặt – sai public class Mytest extends Thread { private int num; public void run() { try { InputStream f = new FileInputStream("file.txt"); //open() int c, s=0; while ((c=f.read())!=-1){ System.out.print((char)c) s=s+c; } f.close(); System.out.print(s); }catch(Exception e) { e.printStackTrace(); } } public Mytest (int n) { super(); num=n; } public static void main(String[] args) { Mytest t1=new Mytest (1); t1.start(); }} public class Mytest extends Thread { private int num; public void run() { try { InputStream f = new FileInputStream("file.txt"); //open() int c, s=0; while ((c=f.read())!=-1){ System.out.print((char)c) s=s+c; } // phương thức f.close() không dược gọi System.out.print(s); }catch(Exception e) { e.printStackTrace(); } } public Mytest (int n) { super(); num=n; } public static void main(String[] args) { Mytest t1=new Mytest (1); t1.start(); } } n τ = ∑ ts − tt i =1 i n i × 100% Trong đó, tsi tti thời gian thực chương trình trước sau đan mã aspect lượt chạy thứ i, n tổng số lượt chạy chương trình trước sau đan mã Thời gian thực chương trình trước sau đan mã tính hiệu thời gian hệ thống trước chương trình thực với thời gian hệ thống sau chương trình thực xong Kết thực nghiệm Bảng Đối với giao thức mơ tả cột 1, Bảng kết thực nghiệm cho thấy: (i) aspect sinh so với đặc tả giao thức, quán biểu thức quy máy trạng thái giao thức, (ii) aspect không làm Lớp (.java) Phát đúng/sai Tỷ lệ gia tăng thời gian (%s) Các chương trình mơ trước sau đan mã AspectJ chạy 20 lần với lần chạy số luồng tăng dần từ đến 20 luồng Để đánh giá thời gian thực chương trình trước đan mã aspect so với thời gian thực sau đan mã chúng tơi tính tỷ lệ gia tăng thời gian trung bình cơng thức sau: Bảng 3- Kết thực nghiệm Số test đúng/sai Trong đó, lớp cột bên trái Bảng tương ứng với số phương thức giao thức cột Chúng xây dựng chương trình mơ cho lớp với số ca kiểm thử sai khác cột 3, kết qủa phát cột Với ca kiểm thử lớp cài đặt tuân thủ đặc tả giao thức Ngược lại, với ca kiểm thử sai có phương thức thực không đặc tả (các vi phạm thứ tự thực hiện, tiền hậu điều kiện) Các giao thức đặc tả hai dạng RE PSM thay đổi hành vi chương trình gốc ngoại trừ thời gian chạy kích thước chương trình, (iii) phát vi phạm tương tác (thứ tự thực hiện), tiền hậu điều kiện phương thức cài đặt mà không tuân thủ theo đặc tả IP, (iv) thời gian chạy sau đan mã aspect tăng tỷ lệ thuận với số luồng chương trình số phương thức mô tả giao thức Số phương thức Bên cạnh giao thức này, thử nghiệm với giao thức khác [1,4,12,13,15] Các giao thức đặc tả RE PSM Với đặc tả sử dụng công cụ PVG để sinh mã aspect AspectJ đan tự động với chương trình Java mơ để kiểm chứng tuân thủ cài đặt đặc tả giao thức Các kết thực nghiệm Bảng Applet StreamReader ReadWrite Iterator Stack LinkedList ConcurrentQueue Roster 10/20 5/15 6/10 2/3 2/5 5/15 3/5 2/2 10/20 5/15 6/10 2/3 2/5 5/15 3/5 2/2 0.915 0.923 0.974 0.533 0.915 1.542 0.974 0.323 VI KẾT LUẬN Giao thức tương tác đặc tả ràng buộc thứ tự thực phương thức lớp thành phần phần mềm, biểu thức tiền hậu điều kiện phương thức thực Sự vi phạm cài đặt đặc tả giao thức thời điểm thực thi gây lỗi hệ thống Tuy nhiên, thiết kế giao diện thành phần phần mềm đặc tả ràng buộc kiểu liệu giá trị trả phương thức Hơn nữa, trình biên dịch khơng kiểm tra ràng buộc giao thức Trong báo này, đề xuất phương pháp kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác sử dụng lập trình hướng khía cạnh Phương pháp sử dụng máy trạng thái giao thức UML biểu thức quy để đặc tả giao thức tương tác Các mã aspect tự động sinh từ đặc tả đan tự động với mã ứng dụng để kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác Chúng cài đặt phương pháp thành công cụ kiểm chứng chạy thử nghiệm với ngơn ngữ lập trình Java thơng qua số giao thức thực tế Kết thực nghiệm ban đầu cho thấy phương pháp đề xuất phát vi phạm ràng buộc thiết kế giao thức tương tác chương trình đa luồng Hạn chế phương pháp phương pháp kiểm chứng động khác phải thực thi chương trình, vị phạm phát bước kiểm thử Hơn nữa, mã aspect đan vào làm tăng kích thước thời gian thực thi chương trình Trong tương lai, chúng tơi tiếp tục mở rộng phương pháp để kiểm chứng bất biến đối tượng (object invariants), ràng buộc thời gian (timing constraints), ràng buộc khác chương trình đa luồng Tiến tới phát triển môi trường kiểm chứng hồn thiện dựa lập trình hướng khía cạnh để kiểm chứng tuân thủ thiết kế với cài đặt mã nguồn chương trình TÀI LIỆU THAM KHẢO Anh-Hoang Truong, et.al Checking interface interaction protocols using Aspect-oriented programming In SEFM’08: Proceedings of the Sixth IEEE International Conference on Software Engineering and Formal Methods IEEE Computer Society, pages 382–386, 2008 Ayesha Hanif, et.al Regular Expression to Finite State Machine Journal of Applied Sciences Research, pages 1359-1362, 2006 Colyer and A Clement Aspect-oriented programming with AspectJ IBM Syst J., pages 301– 308, 2005 Cl´ement Hurlin Specifying and Checking Protocols of Multithreaded Classes Proceedings of the ACM symposium on Applied Computing, Pages 587-592, 2009 Filman R E., et.al Aspect-Oriented Software Development Addison-Wesley, Boston, 2005 Gerard J.Holzmann The SPIN Model Checker Primer and Reference Manual Addison-Wesley, 2003 Joost-Pieter Katoen, Concepts, Algorithms, and Tools for Model Checking, Lecture Notes of the Course Mechanised Validation of Parallel Systems, 1999 Jones, C.B Theorem proving and software engineering Software Engineering Journal Vol.3, Digital Object Identifier, 1998 L Burdy, Y Cheon An overview of JML tools and applications Software Tools for Technology Transfer, pages 212–232, 2005 10 Thanh-Binh Trinh, Anh-Hoang Truong, and Viet-Ha Nguyen Checking protocol-conformance in component models using Aspect oriented programming In Advances in Computer Science and Engineering, Actapress, pages 150–155, 2009 11 Reade, Chris Elements of Functional Programming Addison-Wesley Longman Publishing Co, Boston, USA, 1989 12 R DeLine and M Fahndrich The fugue protocol checker: Is your software baroque Technical Report MSR-TR-2004-07, Microsoft Research, 2004 13 Y Cheon and A Perumandla Specifying and checking method call sequences in JML Software Engineering Research and Practice, CSREA Press, pages 511–516, 2005 14 Y Cheon and A Perumandla Specifying and checking method call sequences of Java programs Software Quality Control, pages 7–25, 2007 15 Y Jin Formal verification of protocol properties of sequential Java programs In COMPSAC’07: Proc of the 31st Annual International Computer Software and Applications Conference, Washington, DC, USA, IEEE CS, Vol 1, pages 475–482, 2007 16 Willem Visser, et.al Model Checking Programs, 15th IEEE International Conference on Automated Software Engineering (ASE'00), 2000 ... đặc tả giao thức tương tác chương trình đa luồng đặc tả sau: Hình Giao thức tương tác hàng đợi tương tranh Các mã aspect sinh tự động đan với mã chương trình ứng dụng để kiểm chứng động tuân thủ... giao thức tương tác sử dụng lập trình hướng khía cạnh Phương pháp sử dụng máy trạng thái giao thức UML biểu thức quy để đặc tả giao thức tương tác Các mã aspect tự động sinh từ đặc tả đan tự động... buộc khác chương trình đa luồng Tiến tới phát triển mơi trường kiểm chứng hồn thiện dựa lập trình hướng khía cạnh để kiểm chứng tuân thủ thiết kế với cài đặt mã nguồn chương trình TÀI LIỆU THAM

Ngày đăng: 09/05/2021, 14:32

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w