Jin [58] dé xuất một phương pháp hình thức để kiểm chứng tĩnh sự tuân thủ giữa cài đất mã nguồn và đặc tả thứ tự thực hiện của các phương thức method call sequenee - WC8 trong các chươ
Ngôn ngữ mô hình hóa UML
Ngôn ngữ mô hình hóa thống nhất UML (Unified Modeling Language) là một sản phẩm của tổ chức OMG (Object Management Group) UML cung cấp một tập hợp các ký pháp đồ họa thống nhất, được sử dụng rộng rãi và hiệu quả trong việc đặc tả và thiết kế các hệ thống phần mềm theo phương pháp hướng đối tượng.
Mẫu lệnh hứa hệ thống bằng UML mang lại tính trực quan, giúp dễ dàng xác định các thành phần chính, cấu trúc tĩnh và các hành vi động của hệ thống.
UML 2.0 bao gồm mười ba biểu đồ để mô tả các khía cạnh khác nhau của hệ thống Trong chương này, chúng tôi sẽ giới thiệu một số biểu đồ liên quan được sử dụng trong các Chương 5 và 6 của luận án.
Biểu đồ tuần tự (Sequence Diagram - SD) là một loại biểu đồ phổ biến trong UML, được sử dụng để thể hiện các phần tử logic của hệ thống Biểu đồ này bao gồm hai phần chính: các trục đọc biểu diễn các đối tượng hoặc tiến trình, và các mũi tên nằm ngang thể hiện thứ tự trao đổi thông điệp giữa các đối tượng một cách tuần tự Hình 3.6 minh họa một biểu đồ tuần tự cho giao thức rút tiền của hệ thống.
ATM Một số quy ước khi biểu diễn bằng biểu đồ tuần tự như sau
1 Cúc thông điệp song song được mô tả trong khung Par,
3 Các biểu thức tiền và hậu điều kiện phải được biểu diễn trong cặp dầu ngoặc
Biểu đồ tuần tự
Máy trạng thái giao thức 22
Biểu đồ máy trạng thái giao tiếp (Protocol State Machine - PSM) là một dạng đặc biệt của biểu đồ SD được bổ sung vào UML 2.0 PSM được sử dụng để mô tả giao thức tương tác và thứ tự thực hiện của các phương thức giữa các đối tượng, chẳng hạn như giao thức truy cập cơ sở dữ liệu với các phương thức như open( ) và close( ).
Các phương thức như Query( ), fetch( ), cancel( ), create( ) và ki11( ) được thể hiện qua biểu đồ PSM trong Hình 2.7 Thứ tự thực hiện của các phương thức được minh họa bằng các cung trong biểu đồ Khi mô tả một giao thức tương tác bằng PSM, cần tuân thủ các nguyên tắc nhất định.
1 Các trạng thái có thể được biểu diễn bằng tên của các sự kiên, nhưng không thể biểu diễn các hành động vào, ra và các hành động bên trong hoặc sư thực thi của các hành động,
Chương 9 Kiến thức cơ sở: 23 everett eal que / emnAvee xi
HÌNH 2.7 ~ Máy trạng thái biểu diễn giao thức tương tác truy cập cơ sở dữ liệu
9 Các phép chuyển trạng thái chí thể hiện các phép toán, không biểu diễn các hành động hoặc sự kiện,
3 Các biển thức tiền và hậu điều kiên phải được biểu diễn trong cập dấu ngoặc
[I ví du [queryStatement null] query / [comArea set] (Hinh 2.7),
4 Các biểu tiền điều kiện phải được thỏa mãn trước khi đối tượng chuyển tiếp từ trạng thái này sang trạng thái khác Ví dụ trong Hình 2.7 khi tiền điều kiện queryStatementnu11 thỏa mãn và đối tượng ở trạng thái 0pened thì sẽ chuyển sang trạng thái queried
Biểu thức hậu điều kiện phải được thỏa mãn khi đối tượng kết thúc và chuyển trạng thái mới.
Biểu đồ thời gian
Biểu đồ thời gian (Timing Diagram - TD) là một loại biểu đồ mới được giới thiệu trong UML 9.0, nhằm mô hình hóa hành vi của các đối tượng cùng với các ràng buộc thời gian liên quan TD thường được áp dụng để đặc tả ràng buộc thời gian trong các hệ thống thời gian thực và hệ thống nhúng, nhưng cũng có thể được sử dụng để mô hình hóa các hệ thống nghiệp vụ khác.
Bid đỗ thời gian L diễn tả sự thay đổi trạng thái hoặc giá trị của các sự kiện theo thời gian, đồng thời thể hiện sự tương tác giữa các sự kiện này Có ba dạng biểu đồ thời gian: biểu đồ giá trị (value lifeline), biểu đồ trạng thái (state lifeline) và dạng kết hợp giữa biểu đồ giá trị và biểu đồ trạng thái.
Biểu đồ trạng thái thể hiện sự biến đổi của các sự kiện theo thời gian, trong đó trục x đại diện cho các đơn vị thời gian và trục y thể hiện danh sách các trạng thái.
Biểu đồ giá trị thể hiện sự biến động của các sự kiện theo thời gian, với trục x đại diện cho các đơn vị thời gian Giá trị của các sự kiện được hiển thị giữa hai đường thẳng song song nằm ngang Sự thay đổi của cặp đường thẳng này phản ánh sự thay đổi giá trị của các sự kiện.
Biểu đồ kết hợp giữa biểu đồ trạng thái và biểu đồ giá trị thể hiện các đơn vị thời gian trên trục x, cho phép truyền tải thông điệp giữa hai loại biểu đồ Mỗi phép chuyển trạng thái hoặc sự kiện đều có thể được định nghĩa với một ràng buộc thời gian và một khoảng thời gian xác định cho từng sự kiện.
5 state2 ee Ễ state Time Constraint)
HÌNH 9.8 — Dạng trạng thái của biểu đồ thời gian
Chương 9 Niến thức cơ sở td Value Liteline ; tPraienrenarang af
HINH 3.9 - Dạng giá trị của biểu đỗ thời gian td Timing Diagam Ệ pe = g le
HINH 2.10 ~ Biểu đồ thời gian dạng kết hợp.
Lập trình hướng khía cạnh
Diễm nối 3 9/63 Hướng cất 27
là định nghĩa hướng cất c lệnh)
(): pointcut_definition;
DANH SácH 3.4 - Cấu trúc cơ bản của hướng cất.
Mã hành vị
Mã hành vi (ađuiee) là đoạn mã xác định hành vi, được tích hợp vào mã nguồn tại điểm nối Mã hành vi được thực thi trước (before advice) và sau (after advice) khi có yêu cầu.
Mã hành vi có thể được sử dụng để thông báo trước khi đoạn mã tại điểm nối được thực thi, giúp lưu vết hoặc kiểm tra lỗi Trong AspeetJ, có ba loại mã hành vi được định nghĩa.
1 Mã hành vi trước là loại mã được thực thi trước các điểm nối,
3 Mã hành vì sau là loại mã được thực thi ngay sau các điểm nối,
Mã hành vi xung quanh là loại mã mạnh nhất, bao gồm cả mã hành vi trước và sau Nó có khả năng chỉnh sửa đoạn mã tại điểm nối, thay thế hoặc bỏ qua sự thực thi của điểm nối đó Để hoạt động hiệu quả, mã hành vi xung quanh cần khai báo giá trị trả về cùng kiểu với kiểu trả về của điểm nối Sự thực thi của điểm nối trong mã hành vi xung quanh được thể hiện thông qua preceedQ; nếu không gọi preceedQ, sự thực thi của điểm nối sẽ bị bỏ qua.
Danh sách 9.6 thể hiện mối liên hệ giữa mã hành vi trước và sau Điểm nối và mã hành vi kết hợp để hình thành quy tắc thực thi cắt ngang động, trong đó 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ác hành động sẽ diễn ra tại những điểm đó.
Chương 9 Kiến thức cơ sở 29
Trong AspectJ, khía cạnh (aspect) đóng vai trò trung tâm tương tự như lớp trong Java Nó bao gồm sự kết hợp của hướng cắt, mã hành vi, điểm nối, cùng với các dữ liệu và phương thức khác Một khía cạnh thông thường có những đặc điểm đặc trưng riêng.
Các định danh phạm vi truy cập như public, private, và protected có thể được áp dụng cho các khía cạnh Bên cạnh đó, còn có định danh "privileged", cho phép khía cạnh truy cập đến các thành viên riêng của các lớp mà chúng cắt ngang.
9 Có thể khai báo khía cạnh trừu tượng bằng từ khóa abstract,
3 Khía cạnh không thể được thể hiện hóa trực tiếp,
Các khía cạnh có khả năng kế thừa từ các lớp và các khía cạnh trừu tượng khác, đồng thời có thể thực thi các giao diện, nhưng không thể kế thừa từ các khía cạnh eu thể.
5, Khía cạnh có thể nằm trong các lớp và các giao diện
Cầu trúc cơ bản của khía cạnh như trong Danh sách 3.5 [61]
(privilege] [static] aspect
DANH SÁCH 3.5 ~ Cấu trúc cơ bản của một khía cạnh
In d6, the access_type defines the scope of access (public or private), and the privilege may or may not be present; if it exists, it allows access to specific elements of the class being intersected The aspect_name refers to the name of the aspect, while instantiation may also be optional, determining the instantiation type of the aspect (singleton, perthis, pertarget, percflow, perflowbelow) The public aspect ProtocolCheck includes a static integer for state management, with the initial state set to ST_START It defines a pointcut for the initialization of an Applet and logs the join point if the Applet's state is not ST_START before the initialization occurs.
} after(Applet o):pc-init(o) { o.state = §T init;
DANH SÁCH 2.6 — Khía cạnh với mã hành vi trước và sau để kiểm tra trang thái khởi tạo của phương thức init()
Trong chương này, chúng tôi trình bày tổng quan về kiến thức nền cho các đóng góp của luận án, bao gồm các phương pháp kiểm chứng hình thức và kiểm chứng tại thời điểm thực thi Các kết quả được trình bày theo hai hướng tiếp cận này Chúng tôi giới thiệu ngôn ngữ đặc tả hình thức Event-B, được sử dụng để đặc tả và kiểm chứng các bài toán trong các chương 3 và 4 Ngoài ra, chúng tôi cũng đề cập đến một số biểu đồ của ƯML và phương pháp lập trình hướng khía cạnh AOP, được áp dụng để kiểm chứng sự tuân thủ của chương trình so với đặc tả của nó, với kết quả được trình bày trong các chương 5 và 6 Cuối cùng, chúng tôi thảo luận về một số vấn đề trong các chương trình Java tương tranh và giới thiệu bộ công cụ JPF để kiểm chứng mã Java.
Ràng buộc thứ tự giữa các tiến trình tương tranh
Trong một hệ thống tương tranh, các tiến trình cần được đồng bộ hóa để hoạt động hiệu quả Sự đồng bộ hóa này được chia thành hai loại: cộng tác và cạnh tranh Một ví dụ điển hình về sự cộng tác giữa các tiến trình là bài toán cung cấp-tiêu thụ, trong đó tiến trình producer cung cấp dữ liệu và tiến trình consumer tiêu thụ dữ liệu đó.
Cấp phát tài nguyên cho các tiến trình phải giải quyết vấn đề xung đột khi nhiều
Khi sử dụng tài nguyên chia sẻ như dữ liệu, tệp, và máy móc, tính nhất quán của dữ liệu có thể bị phá vỡ nếu hai tiến trình đọc-ghi cập nhật cùng một tệp tại cùng một thời điểm Chương trình Java tương tranh được trình bày trong danh sách 3.1 giải quyết vấn đề tiêu thụ, trong đó các tiến trình không cộng tác với nhau, dẫn đến nguy cơ phát sinh lỗi tương tranh dữ liệu Do đó, cần thiết phải đặt ra các ràng buộc về thứ tự thực hiện để đảm bảo tính nhất quán.
[33, 67] (giao thức tương tác) giữa các tiến trình nhằm bảo đảm tính nhất quần của dữ liệu chia sẻ và dữ liệu đầu vào-đầu ra
31 class Producer implements Runnable { public void run() { while (true) {
} class Consumer implements Runnable { public void run() { while (true) {
DANH SÁCH 3.1 - Chương trình Java cho vấn đề cung cấp tiêu thụ
Để phát hiện lỗi ở mức thiết kế, luận án này đề xuất một phương pháp tiếp cận nhằm đặc tả và kiểm chứng giao thức tương tác giữa các tiến trình sử dụng phương pháp hình thức với Event-B Phương pháp này đã giải quyết các vấn đề như vùng xung đột, cung cấp-tiêu thụ và đọc-ghì dữ liệu Các đặc tả này sẽ được cài đặt để phát sinh mã cho các chương trình Java tương tranh hoặc tương đương Kết quả chính của phương pháp được trình bày trong [TT].
Chương 3, đồng buộc thứ tự giữa các tiến trình tương tranh, 3g
3.2 Đặc tả và kiểm chứng ràng buộc thứ tự giữa các tiến trình tương tranh
Chỳng tụi định nghĩa mất hệ thắng tương tranh với giaa thức tương tỏc ẽ như sau Định nghĩa 3.1 (Hệ thống tương tranh) 416£ bệ thống tương tronh (Concurrent
CS = (Po, Br,o,T), Trong đó : systcrI-OS)) là ruột bộ bi
~ PC : lập bữu hạn các liên trình,
~ Br : lập hữn hạn các hành ta a6 thể trong C8,
— &: Dr —t De hàm gần mỗi chức năng của CẾ mà tiễn trình thực biến hành sả đó,
TĂ giao thỳc tương tỏc đặc 1d thỳ tự thực hiển của cỏc tiến trỡnh, T % p | P,ứ |
T |p Voip © Pa, sán bi biện ”,^ tà || lẫn lượt biểu điễn các tiễn trình được thực hiến tuần tự tà sững song
Trong Fxeni~B, trạng thái của mô hình được xác định bởi một tập hợp các biến biển điển cha bất kỳ Đối tượng toán học này nằm trong lý thuyết tập hợp Ngoài các định nghĩa về biển, các bất biến được biểu diễn qua logic vị từ bậc một và lý thuyết tập hợp Sự kết hợp giữa các biển và bất biến tạo thành trạng thái, một trạng thái dũa rn6 hình là một tập trừu tượng.
Một sự kiện của Máy có thể được biểu diễn trừu tượng bằng một quan hệ nhị phân giữa các trạng thái Quan hệ này thể hiện sự kết nối giữa hai trạng thái trước và sau khi một sự kiện diễn ra Trong ký pháp của Event H, một sự kiện được chia thành hai phần: điều kiện và hành động Các hành động của một sự kiện được giả thiết là thực hiện đồng thời trên các biến khác nhau Nếu biến không được gán giá trị, nó sẽ không thay đổi.
Các điều kiện của sự kiện biểu diễn điều kiện cầu là cần thiết để kích hoạt một sự kiện Khi một sự kiện được kích hoạt, sự chuyển đổi trạng thái sẽ diễn ra Giả sử có hai sự kiện el và e2 được mô tả như sau: el = khi g1 thì al kết thúc, e2 = khi g2 thì a2 kết thúc.