Tài liệu Đặc tả hình thức - Design by contract - Nguyễn Thị Minh Tuyền: LOGO 
Đặc tả hình thức 
Nguyễn Thị Minh Tuyền 
Design by contract 
Nguyễn Thị Minh Tuyền 1 
Đặc tả hình thức 
Từ mô hình đến cài đặt 
v Alloy là một phương tiện để thiết kế 
hệ thống và diễn giải các thuộc tính. 
v Ta cần các thiết kế hệ thống này để 
cải thiện chất lượng của việc cài đặt. 
v Làm thế nào để chuyển đổi các thông 
tin thiết kế này thành mã nguồn? 
§  Thông tin tĩnh ( multiplicity, invariant...) 
§  Thông tin về các thao tác (điều kiện trước, điều kiện 
sau, frame condition, ...) 
2 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Design by contract (DBC) 
v Là một phương pháp chú trọng vào 
việc mô tả chính xác về ngữ nghĩa 
interface 
§  không chỉ về cú pháp, ví dụ như signature 
§  mà còn cả về các hành vi, ví dụ như hiệu ứng việc 
triệu gọi một phương thức. 
v Được hỗ trợ bằng công cụ 
§  cho phép các thuộc tính ngữ nghĩa của thiết kế (mô 
hình) được chuyển tải thành mã nguồn. 
§  hỗ trợ một số hình thức thẩm định các thuộc tính đó. 
3 ...
                
              
                                            
                                
            
 
            
                 22 trang
22 trang | 
Chia sẻ: putihuynh11 | Lượt xem: 651 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang mẫu tài liệu Đặc tả hình thức - Design by contract - Nguyễn Thị Minh Tuyền, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LOGO 
Đặc tả hình thức 
Nguyễn Thị Minh Tuyền 
Design by contract 
Nguyễn Thị Minh Tuyền 1 
Đặc tả hình thức 
Từ mô hình đến cài đặt 
v Alloy là một phương tiện để thiết kế 
hệ thống và diễn giải các thuộc tính. 
v Ta cần các thiết kế hệ thống này để 
cải thiện chất lượng của việc cài đặt. 
v Làm thế nào để chuyển đổi các thông 
tin thiết kế này thành mã nguồn? 
§  Thông tin tĩnh ( multiplicity, invariant...) 
§  Thông tin về các thao tác (điều kiện trước, điều kiện 
sau, frame condition, ...) 
2 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Design by contract (DBC) 
v Là một phương pháp chú trọng vào 
việc mô tả chính xác về ngữ nghĩa 
interface 
§  không chỉ về cú pháp, ví dụ như signature 
§  mà còn cả về các hành vi, ví dụ như hiệu ứng việc 
triệu gọi một phương thức. 
v Được hỗ trợ bằng công cụ 
§  cho phép các thuộc tính ngữ nghĩa của thiết kế (mô 
hình) được chuyển tải thành mã nguồn. 
§  hỗ trợ một số hình thức thẩm định các thuộc tính đó. 
3 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Ý tưởng cơ bản 
v Phần mềm được xem là 
§  một hệ thống của các component giao tiếp với nhau 
§  tất cả các tương tác đều dựa vào ràng buộc 
(contract) 
v Ràng buộc có tính hai chiều 
§  cả hai phần được ràng buộc lẫn nhau. 
4 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Ràng buộc 
v Hai phần của một ràng buộc: 
§  Supplier thực hiện một tác vụ 
§  Client yêu cầu tác vụ đó phải được thực hiện. 
v Mỗi phần 
§  có các obligation. 
§  nhận một số benefit. 
v Ràng buộc đặc tả các obligation và 
các benefit đó. 
5 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Air travel 
Client(Hành khách) 
§  Obligation 
•  Check in 30 phút trước 
khi máy bay cất cánh 
•  Ít hơn 3 kiện hành lý 
•  Trả tiền vé 
§  Benefit 
•  đến đích 
6 Nguyễn Thị Minh Tuyền 
Supplier(Hãng 
hàng không) 
§  Obligation 
•  Đưa hành khách đến 
đích. 
§  Benefit 
•  Không cần đợi các 
hành khách đi trễ 
•  Không cần thiết phải 
lưu trữ số lượng 
hành lý 
•  Nhận tiền 
Đặc tả hình thức 7 Nguyễn Thị Minh Tuyền 
 /*@ requires x >= 0.0; 
 @ ensures JMLDouble.approximatelyEqualTo(x, 
 @ \result * \result, eps); 
 @*/ 
public static double sqrt(double x) {  } 
Obligation Benefit 
Client Chuyển một số 
không âm x 
Lấy xấp xỉ căn bậc 
hai của x 
Supplier Tính toán và trả về 
căn bậc hai của 
một số 
Giả sử rằng tham 
số đầu vào là 
không âm 
Đặc tả hình thức 
Ràng buộc 
v Đặc tả cái gì phải làm 
§  các ràng buộc được cài đặt độc lập nhau 
v Có thể được áp dụng cho phần mềm 
sử dụng 
§  Điều kiện trước 
§  Điều kiện sau 
§  Frame condition 
§  Bất biến 
8 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Ví dụ 
Class Flight { 
 /*@ requires time < this.takeoff – 30 && 
 l.number < 3 && 
 p in this.ticketed 
 ensures \result = this.destination 
 @*/ 
 Destination takeFlight(Person p, Luggage l) {} 
} 
9 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Ngôn ngữ đặc tả hay ngôn ngữ lập trình 
v Tại sao không phải là cả hai? 
v Phương pháp tinh chỉnh 
§  Thay vì chỉ phát triển các signature 
§  Phát triển đặc tả ràng buộc 
§  Phân tích tính nhất quán client-supplier 
§  Thêm vào các chi tiết cài đặt 
§  Kiểm tra rằng mã nguồn thỏa mãn ràng buộc 
v Tiến trình tự nhiên từ thiết kế đến mã 
nguồn. 
10 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Ví dụ 
Class Mystack { 
 private Object[] elems; 
 private int top, size; 
 public MyStack (int s) {  } 
 public void push (Object obj) {  } 
 public Object pop() { ... } 
 public boolean isEmpty() { ... } 
 public boolean isFull() { ... } 
} 
11 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
/*@ invariant top >= -1 && top < size; @*/ 
Class Mystack { 
 private Object[] elems; 
 private int top, size; 
} 
12 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Class Mystack { 
 private Object[] elems; 
 private int top, size; 
 /*@ requires s > 0; 
 ensures size == s && 
 elems != null && top = -1; @*/ 
 public MyStack (int s) {  } 
} 
13 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Class Mystack { 
private Object[] elems; 
private int top, size; 
/*@ requires !isFull() && obj != null; 
 ensures top == \old(top) + 1 && 
 elems[top] == obj;@*/ 
public void push (Object obj) {  } 
public boolean isFull() { ... } 
} 
14 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Class Mystack { 
 private Object[] elems; 
 private int top, size; 
 /*@ requires !isEmpty(); 
 ensures top == \old(top) - 1 && 
 \result == elems[\old(top)];@*/ 
 public Object pop() {  } 
 public boolean isEmpty() { ... } 
} 
15 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Class Mystack { 
 private Object[] elems; 
 private int top, size; 
 /*@ ensures \result top == -1; @*/ 
 public boolean isEmpty() { ... } 
} 
16 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Class Mystack { 
 private Object[] elems; 
 private int top, size; 
 /*@ ensures \result top == size – 1; @*/ 
 public boolean isFull() { ... } 
} 
17 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Ví dụ 2 
import java.util.Vector; 
public interface Company { 
 public Vector getEmployees(); 
 public Vector getRooms(); 
 public void hire(Employee e); 
 public void move(Employee e, Room r); 
 public boolean roomsAvailable(); 
} 
public interface Employee{ 
 public boolean hasOffice(); 
 .... 
} 
18 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
import java.util.Vector; 
public interface Company { 
public Vector getEmployees(); 
public Vector getRooms(); 
public boolean roomsAvailable(); 
/* Contract for hire(Employee e) */ 
/*@ requires e != null; 
 requires !getEmployees().contains(e); // do not employ twice 
 requires !e.hasOffice(); // does not own an office somewhere else 
 requires roomsAvailable(); // there must be an office left 
 ensures getEmployees().contains(e); // added to list of employees 
 ensures getRooms().contains(e.getOffice()); // assign one of our offices 
 ensures e.hasOffice(); // office assigned 
 @*/ 
 public void hire(Employee e); 
} 
19 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Công cụ hỗ trợ 
v Jtest(Jcontract) 
§  Sản phẩm thương mại 
v iContract 
§  Phần mềm miễn phí, nhưng cần nhiều công cụ hỗ trợ 
v JML 
§  dự án nghiên cứu 
§  có vài công cụ hỗ trợ miễn phí 
v ... 
20 Nguyễn Thị Minh Tuyền 
Đặc tả hình thức 
Design by Contract trong môn học này 
v Tập trung vào Java và sử dụng 
§  JML như là một đặc tả 
§  ESC/Java 2 là công cụ kiểm tra chính 
21 Nguyễn Thị Minh Tuyền 
LOGO 
            Các file đính kèm theo tài liệu này:
 dac_ta_hinh_thuc_09_design_by_contract_6769_1994200.pdf dac_ta_hinh_thuc_09_design_by_contract_6769_1994200.pdf