Đề tài nghiên cứu khoa học cấp trường xây dựng công cụ kiểm chứng tính nhất quán của mô hình phần mềm sau tiến trình tái cấu trúc

Tài liệu nghiên cứu Đề tài nghiên cứu khoa học cấp trường xây dựng công cụ kiểm chứng tính nhất quán của mô hình phần, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên

Trường đại học

Đại học Hải Phòng

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

báo cáo tổng kết đề tài nghiên cứu khoa học cấp trường

2017 - 2018

44
4
0

Phí lưu trữ

30 Point

Mục lục chi tiết

MỞ ĐẦU

1. CHƯƠNG 1: KIẾN THỨC CƠ SỞ

1.1. Ngôn ngữ ràng buộc đối tượng OCL

1.2. Lôgic vị từ bậc 1

1.3. Tổng quan về bài toán kiểm chứng tính nhất quán trong tái cấu trúc hệ thống phần mềm

2. XÂY DỰNG KIẾN TRÚC CÔNG CỤ KIỂM CHỨNG

2.1. Kiến trúc của công cụ CVT

2.2. Chuyển đổi biểu thức OCL sang công thức FOL

3. CÀI ĐẶT VÀ THỰC NGHIỆM

3.1. Cài đặt công cụ CVT

3.2. Mô tả hệ thống ARTC

3.2.1. Biểu đồ lớp của hệ thống ARTC

3.2.2. Biểu đồ tuần tự của hệ thống ARTC

3.2.3. Một số hạn chế của hệ thống ARTC trước tái cấu trúc

3.2.4. Biểu diễn các hành vi bằng OCL

3.2.5. Kiểm chứng tính nhất quán trong tái cấu trúc mô hình hệ thống ARTC

KẾT LUẬN

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Kiến thức cơ sở

Chương này giới thiệu các kiến thức nền tảng cần thiết để hiểu và xây dựng công cụ kiểm chứng tính nhất quán của mô hình phần mềm sau tái cấu trúc. Các khái niệm chính bao gồm ngôn ngữ ràng buộc đối tượng (OCL)logic vị từ bậc nhất (FOL). OCL được sử dụng để biểu diễn các ràng buộc và hành vi của mô hình phần mềm, trong khi FOL là nền tảng toán học để kiểm chứng tính nhất quán. Chương cũng tổng quan về bài toán kiểm chứng tính nhất quán trong tái cấu trúc hệ thống phần mềm, nhấn mạnh sự cần thiết của việc đảm bảo tính nhất quán giữa các phiên bản trước và sau tái cấu trúc.

1.1 Ngôn ngữ ràng buộc đối tượng OCL

OCL là ngôn ngữ được sử dụng để biểu diễn các ràng buộc và hành vi của mô hình phần mềm. Nó được tích hợp vào UML để khắc phục các hạn chế của UML trong việc biểu diễn chi tiết các khía cạnh của thiết kế hệ thống. OCL có thể biểu diễn các ràng buộc bất biến, khởi tạo giá trị thuộc tính, tính toán giá trị dẫn xuất, truy vấn dữ liệu và tiền/hậu điều kiện của các phương thức. Ví dụ, OCL có thể được sử dụng để đảm bảo rằng tất cả các đối tượng của một lớp thỏa mãn một điều kiện nhất định.

1.2 Logic vị từ bậc nhất FOL

FOL là nền tảng toán học được sử dụng để kiểm chứng tính nhất quán của mô hình phần mềm. FOL cho phép biểu diễn các mệnh đề logic và kiểm tra tính đúng đắn của chúng. Trong đề tài này, FOL được sử dụng để chuyển đổi các biểu thức OCL thành các công thức logic, từ đó kiểm chứng tính nhất quán của mô hình phần mềm sau tái cấu trúc.

II. Xây dựng kiến trúc công cụ kiểm chứng

Chương này trình bày kiến trúc của công cụ CVT (Consistency Validator Tool), được thiết kế để kiểm chứng tính nhất quán của mô hình phần mềm sau tái cấu trúc. CVT bao gồm các thành phần chính như chuyển đổi biểu thức OCL sang FOL, kiểm tra tính tương thích của biểu thức OCL với mô hình UML, và kiểm chứng tính nhất quán giữa các phiên bản trước và sau tái cấu trúc. Công cụ này nhận đầu vào là các mô hình phần mềm và biểu thức OCL, sau đó thực hiện quá trình kiểm chứng và đưa ra kết quả.

2.1 Chuyển đổi biểu thức OCL sang FOL

Một trong những thách thức chính trong việc xây dựng CVT là chuyển đổi các biểu thức OCL phức tạp sang công thức FOL. Quá trình này đòi hỏi việc phân tích cú pháp và ngữ nghĩa của OCL để đảm bảo tính chính xác của việc chuyển đổi. CVT sử dụng các quy tắc chuyển đổi được xây dựng dựa trên cơ sở toán học của FOL để thực hiện công việc này.

2.2 Kiểm tra tính tương thích

CVT cũng thực hiện kiểm tra tính tương thích giữa các biểu thức OCL và mô hình UML. Điều này đảm bảo rằng các biểu thức OCL được sử dụng để mô tả hành vi của mô hình phần mềm là hợp lệ và phù hợp với cấu trúc của mô hình.

III. Cài đặt và thực nghiệm

Chương này mô tả quá trình cài đặt và thực nghiệm công cụ CVT trên hệ thống điều khiển giao thông đường bộ ARTC (Adaptive Road Traffic Control). CVT được cài đặt bằng ngôn ngữ lập trình Java và sử dụng Windows Builder/SWT để thiết kế giao diện người dùng. Quá trình thực nghiệm bao gồm việc kiểm chứng tính nhất quán của mô hình ARTC trước và sau tái cấu trúc, từ đó đánh giá độ tin cậy và hiệu quả của công cụ.

3.1 Cài đặt công cụ CVT

CVT được cài đặt bằng ngôn ngữ Java, với giao diện người dùng được thiết kế bằng Windows Builder/SWT. Công cụ này cho phép người dùng nhập các mô hình phần mềm và biểu thức OCL, sau đó thực hiện quá trình kiểm chứng tính nhất quán.

3.2 Thực nghiệm trên hệ thống ARTC

CVT được thử nghiệm trên hệ thống ARTC, một hệ thống điều khiển giao thông đường bộ. Quá trình thực nghiệm bao gồm việc kiểm chứng tính nhất quán của mô hình ARTC trước và sau tái cấu trúc. Kết quả thực nghiệm cho thấy CVT có khả năng phát hiện các vấn đề về tính nhất quán và đảm bảo tính chính xác của mô hình phần mềm sau tái cấu trúc.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI từ nội dung tài liệu gốc; tài liệu do người dùng đóng góp và được kiểm duyệt trước khi xuất bản. Báo lỗi nội dung.

21/02/2025
Đề tài nghiên cứu khoa học cấp trường xây dựng công cụ kiểm chứng tính nhất quán của mô hình phần mềm sau tiến trình tái cấu trúc

Trích đoạn nội dung tài liệu

Chương 1 KIẾN THỨC CƠ SỞ Trong chương này, các Mục 1.2 sẽ lần lượt trình bày về ngôn ngữ ràng buộc đối tượng (OCL) và lôgic vị từ bậc một (FOL), đây là các phương tiện sử dụng để biểu diễn hành vi cần kiểm chứng của mô hình phần mềm.3 mô tả một cách tóm tắt bài toán kiểm chứng tính nhất quán đã được thực hiện trong các nghiên cứu trước đây. Việc giới thiệu lại bài toán này nhằm mục tiêu giúp người đọc có được cái nhìn rõ hơn về kiến trúc được đề xuất của công cụ CVT.1 Ngôn ngữ ràng buộc đối tượng OCL Ngôn ngữ ràng buộc đối tượng OCL (Object Constraint Language) ra đời nhằm mục tiêu khắc phục các hạn chế của UML trong việc biểu diễn một cách chính xác các khía cạnh chi tiết của bản thiết kế hệ thống [13]. OCL được phát triển lần đầu bởi tổ chức IBM vào năm 1995 và được tích hợp vào UML năm 1997. Thời gian đầu, OCL chỉ được sử dụng như là một ngôn ngữ ràng buộc đối tượng bổ sung cho UML, tuy nhiên nó nhanh chóng được mở rộng phạm vi và trở thành một thành phần quan trọng trong bất kỳ kỹ nghệ hướng mô hình nào.

OCL được coi như một ngôn ngữ mặc định dùng biểu diễn các truy vấn trên mô hình hoặc siêu mô hình, thực hiện và đặc tả các yêu cầu. OCL cũng thường được sử dụng để mô tả các phép biến đổi mô hình (như là một phần của các mô hình nguồn và mô hình đích trong các quy tắc biến đổi), biểu diễn sự hợp lệ của các quy tắc (như là một phần của định nghĩa đặc tả các miền mới), hoặc các mẫu sản sinh mã nguồn (mô tả các mẫu và quy tắc sản sinh mã), v. Để đáp ứng các mục tiêu này, OCL được phát triển và phát hành một số các phiên bản. OCL được 7 Đề tài nghiên cứu khoa học cấp trường năm học 2017-2018 8 phát triển như là một chuẩn công nghiệp bởi tổ chức Object Management Group 1 (OMG) [14].

Phiên bản mới nhất của OCL là 2.4 được ra đời vào năm 2014, phiên bản này tương thích với phiên bản 2. Mỗi biểu thức trong OCL đều xác định một kiểu nhất định (kiểu này có thể được định nghĩa trước trong OCL hoặc là một kiểu được định nghĩa trong mô hình với các ràng buộc được mô tả bởi OCL). Kiểu của các biểu thức trong OCL cũng phải phù hợp với các quy tắc và các phép toán được áp dụng trên kiểu đó. Chú ý rằng OCL chỉ là một ngôn ngữ đặc tả thuần túy, bởi vậy khi các biểu thức OCL được thực thi, nó không gây bất cứ ảnh hưởng nào đến trạng thái của mô hình phần mềm mà nó đặc tả.

Ngoài ra, tất cả các vấn đề liên quan đến cài đặt cũng nằm ngoại phạm vi và không thể biểu diễn bằng OCL. OCL có thể được sử dụng để mô tả nhiều loại ràng buộc khác nhau trong mô hình UML, sau đây là một số loại ràng buộc tập trung chủ yếu vào tác dụng của nó trên biểu đồ lớp: – Biểu diễn các ràng buộc bất biến của lớp (class invariants); – Khởi tạo giá trị cho thuộc tính của các biến trong biểu thức OCL; – Biểu diễn cách tính giá trị của các phần tử dẫn xuất dựa trên giá trị của các phần tử nguồn; – Thực hiện các câu lệnh truy vấn; – Biểu diễn tiền/hậu điều kiện (pre/post-conditions) của các phương thức có trong mô hình. Các khả năng biểu diễn trên của OCL sẽ lần lượt được cụ thể hóa như sau: OCL được dùng để biểu diễn các ràng buộc bất biến (Invariants): Các ràng buộc toàn vẹn trong OCL được biểu diễn dưới dạng các bất biến được định nghĩa trong một Context cụ thể, với tên của Context là kiểu của ràng buộc. Phần thân của context, là các điều kiện logic (sau từ khóa inv) phải được kiểm tra và thỏa mãn bởi tất cả các thể hiện của Context đó.

Các bất biến là các biểu thức được sử dụng phổ biến nhất trong OCL vì nó cho phép các nhà thiết kế dễ dàng đặc tả tất cả các loại điều kiện mà hệ thống phải tuân thủ. Ngoài ra, bất biến còn có thể hạn chế giá trị của các đối tượng đơn lẻ. Biểu thức dưới đây phát biểu rằng, tất cả các quotes phải có giá trị dương. Chú ý rằng biến self đại diện cho một thể hiện tùy ý của lớp Quote và dấu chấm được sử dụng để truy cập vào các tính chất (thuộc tính hoặc phương thức) của 1.org/ Đề tài nghiên cứu khoa học cấp trường năm học 2017-2018 9 biến self trong lớp Quote.

Tất cả các thể hiện của lớp Quote phải được đánh giá là thỏa mãn bất biến này và biến (self) đương nhiên cũng phải thỏa mãn ràng buộc bất biến đó. 1 context Quote inv QuoteOverZero: self.value > 0 OCL sử dụng để khởi tạo giá trị cho thuộc tính của các biến: OCL có thể được sử dụng để khởi tạo giá trị ban đầu cho các thuộc tính của một đối tượng khi đối tượng đó được tạo ra. Để thực hiện công việc này, kiểu của biểu thức OCL khởi tạo và kiểu của thuộc tính được dùng khởi tạo phải phù hợp với nhau. Biểu thức OCL sau đây khởi tạo giá trị là false cho thuộc tính premium của Customer (trạng thái của premium sẽ được chuyển thành true khi khách hàng đã thuê một số xe).

1 context Customer::premium: boolean init: false Biểu thức OCL xác định các quy tắc tính toán giá trị của các thuộc tính trong mô hình dẫn xuất: các phần tử dẫn xuất là các phần tử mà có giá trị được suy dẫn từ các giá trị của các phần tử thuộc vào mô hình nguồn. OCL là một lựa chọn phổ biến cho việc xác định các quy tắc dẫn xuất này. Hãy xem xét quy tắc sau đây cho việc chiết khấu các phần tử dẫn xuất từ lớp Customer, phát biểu rằng các khách hàngs có trạng thái của thuộc tính premium là true thì được hưởng 30%, các khách hàng có trạng thái của thuộc tính premium là false và có ít nhất 5 chiếc xe cho thuê thì được giảm giá 15%, còn lại tất cả các khách hàng khác đều không được giảm giá. 1 context Customer::discount: integer derive: 2 if not self.premium then 3 if self.category=’high’)->size()>=5 4 then 15 else 0 endif 5 else 30 endif Quy tắc này trong OCL sẽ cho phép tính các giá trị dẫn xuất phù hợp với từng trường hợp tương ứng.

Câu lệnh truy vấn: biểu thức OCL dạng này thực hiện truy vấn trên cơ sở dữ liệu hệ thống và trả về thông tin cho người dùng. Câu lệnh truy vấn sau sẽ trả về giá trị là true nếu chiếc car là chiếc được dùng nhiều nhất trong hệ thống xe cho thuê. 1 context Car::mostPopular(): boolean Đề tài nghiên cứu khoa học cấp trường năm học 2017-2018 10 2 body: Car::allInstances()->forAll(c1|c1<>self 3 implies c1.rentalAgreement->size()<=self.rentalAgreement->size()) Biểu diễn tiền/hậu điều kiện của các phép toán: có hai cách tiếp cận để kiểm tra sự thỏa mãn của các ràng buộc về tiền/hậu điều kiện đối với các phép toán. Cách thứ nhất là dùng các câu lệnh chỉ thị và cách thứ hai là đặc tả các ràng buộc thông qua hợp đồng (contract).

Trong cách tiếp cận đầu tiên, người thiết kế xác định rõ ràng tập các câu lệnh cấu trúc và các cấu trúc này sẽ được thực thi khi thực hiện phép toán. Theo cách tiếp cận thứ hai, nhà thiết kế sẽ cung cấp cho mỗi hoạt động một hợp đồng của nó. Mỗi hợp đồng bao gồm một tập các điều khoản về tiền/hậu điều kiện. Tiền điều kiện xác định một tập hợp các ràng buộc đầu vào trước khi hoạt động được thực thi, còn hậu điều kiện cho biết các ràng buộc mà hệ thống phải thỏa mãn khi kết thúc giao dịch.

OCL là ngôn ngữ thường được lựa chọn để biểu diễn cho tiền/hậu điều kiện của hoạt động mức độ mô hình. 1 context Rental::newRental(id:Integer, price:Real, startingDate:Date, 2 endingDate:Date, customer:Customer, carRegNum:String, pickupBranch: Branch, dropOffBranch: Branch) 3 pre: customer.licenseExpDate>endingDate 4 post: Rental.endingDate=endingDate and r.startingDate= startingDate 6 and r.driver=customer and r.pickupBranch=pickupBranch and r. dropOffBranch=dropOffBranch 7 and r.regNum=carRegNum)) Biểu thức tiền điều kiện được đặt sau từ khóa pre và hậu điều kiện được đặt sau từ khóa post. Trong phần này, đề tài đã mô tả một số đặc trưng cơ bản của ngôn ngữ ràng buộc đối tượng OCL.

Các biểu thức về bất biến, tiền/hậu điều kiện sẽ là các đối tượng nghiên cứu chính của đề tài.2 Lôgic vị từ bậc 1 Lôgic vị từ bậc 1 (FOL) [9] cung cấp cho chúng ta khả năng biểu diễn các biểu thức logic mệnh đề (propositional logic) và cách thức định lượng hóa trên các đối tượng. Nhờ vào các lượng từ trong FOL chúng ta có thể mô tả các đối tượng và mối quan hệ giữa chúng một cách chính xác. Đây chính là ưu điểm của FOL so Đề tài nghiên cứu khoa học cấp trường năm học 2017-2018 11 với logic mệnh đề. FOL có thể dùng để biểu diễn lý thuyết số, lý thuyết tập hợp và thậm chí biểu diễn sự tính toán trong máy Turing.

Sau đây là một số ký hiệu cơ bản được sử dụng để xây dựng các công thức FOL. Các ký hiệu này được trình bày đầy đủ trong [9]. Các phép toán kết hợp (Logical connectives) (⇒, ∧, ∨, và ⇔), phủ định (¬), và dấu ngoặc. Các phép toán này được sử dụng một để tạo nên các công thức FOL phức hợp.

Các ký hiệu hằng (Constants symbols) là các chuỗi (a, b, c, v.) dùng để biểu diễn thay thế cho các đối tượng. Các ký hiệu biến (Variable symbols) sẽ được sử dụng như những “place holders” cho việc định lượng hóa trên các đối tượng. Các ký hiệu vị từ (Predicate symbols) mỗi ký hiệu được liên kết với arity (ví dụ, số lượng các đối số), có thể là 0 hoặc một số xác định khác. Vị từ được dùng để biểu diễn cho thuộc tính của các đối tượng và mối quan hệ giữa chúng.

Các ký hiệu hàm (Function symbols) mỗi ký hiệu được đặc tả bởi arity (ví dụ, số lượng các đối số nhập vào) đây là một hàm ánh xạ từ một số lượng các đối tượng đến các đối tượng. Các lượng từ với mọi và tồn tại (Universal and existential quantifier symbols) dùng để định lượng hóa trên các đối tượng.3 Tổng quan về bài toán kiểm chứng tính nhất quán trong tái cấu trúc hệ thống phần mềm Trong một nghiên cứu trước đây [15], chúng tôi đã đề xuất phương pháp kiểm chứng tính nhất quán của hệ thống phần mềm trước và sau khi tái cấu trúc. Phương pháp kiểm chứng được mô tả như trong Hình 1.1 bao gồm các tiến trình sau: (1) Tái cấu trúc mô hình phần mềm (Refactoring), (2) Tính toán tiền/hậu điều kiện của các kịch bản trước và sau tái cấu trúc, và (3) kiểm tra tính nhất quán.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu có tiêu đề Xây dựng công cụ kiểm chứng tính nhất quán mô hình phần mềm sau tái cấu trúc tập trung vào việc phát triển một công cụ giúp kiểm tra tính nhất quán của các mô hình phần mềm sau khi chúng được tái cấu trúc. Điều này rất quan trọng trong việc đảm bảo rằng các thay đổi trong mã nguồn không làm ảnh hưởng đến tính năng và hiệu suất của phần mềm. Tài liệu cung cấp các phương pháp và kỹ thuật để thực hiện kiểm chứng, từ đó giúp các nhà phát triển và kiểm thử phần mềm nâng cao chất lượng sản phẩm của họ.

Để mở rộng kiến thức của bạn về lĩnh vực này, bạn có thể tham khảo tài liệu Nghiên cứu khả năng chuyển đổi giữa các đặc tả hình thức và ứng dụng trong kiểm chứng phần mềm, nơi cung cấp cái nhìn sâu sắc về việc chuyển đổi giữa các đặc tả hình thức trong kiểm chứng phần mềm. Ngoài ra, tài liệu Kiểm thử website tính tiền điện hộ cá nhân e energy cũng sẽ giúp bạn hiểu rõ hơn về quy trình và kỹ thuật kiểm thử phần mềm, từ đó áp dụng vào các dự án thực tế. Những tài liệu này sẽ là nguồn tài nguyên quý giá để bạn nâng cao kỹ năng và kiến thức trong lĩnh vực kiểm chứng và kiểm thử phần mềm.