5.3 Cài đặt và thực nghiệm
Công cụ CVT4 được phát triển để hỗ trợ cho q trình kiểm chứng tính nhất qn về mặt hành vi trong tái cấu trúc mơ hình phần mềm. Cơng cụ CVT sẽ nhận đầu vào là (i) các mơ hình (biểu đồ lớp và biểu đồ tuần tự) và (ii) hành vi (biểu diễn bằng các biểu thức OCL) của các hệ thống trước và sau khi tái cấu; sau quá trình kiểm tra, kết quả trả về là một trong ba khả năng sau: (1) hai hệ thống nhất quán toàn phần, (2) hai hệ thống nhất quán một phần hoặc (3) hai hệ thống không nhất quán. Chúng tơi sẽ mơ tả cơng cụ CVT thơng qua q trình cài đặt và thực nghiệm cụ thể như sau.
Chúng tôi cài đặt công cụ bằng ngôn ngữ Java (soạn thảo bằng Eclipse Mars phiên bản 4.5.2). Giao diện chương trình được xây dựng bằng Windows Builder/SWT5. Hình 5.2 mơ tả giao diện người dùng của cơng cụ CVT.
Như trong Hình 5.1 đã miêu tả về kiến trúc của CVT, bao gồm hai khối chính với ba chức năng cơ bản là: (1) Kiểm tra kiểu, (2) Chuyển đổi OCL sang FOL and (3) Kiểm tra sự nhất quán giữa hai hệ thống. Bởi vậy, giao
diện chính của CVT cũng bao gồm ba chức năng tương ứng với kiến trúc này.
4. Our code is open-source and available at: https://github.com/huongdt1901/ARTC 5. http://www.eclipse.org/windowbuilder/download.php
Hình 5.3: Cơng thức FOL dạng tiền tố tương ứng với biểu thức OCL
Trước khi nhập liệu cho cơng cụ CVT bắt đầu q trình kiểm chứng, người dùng có thể sử dụng bất kỳ cơng cụ hỗ trợ nào để vẽ các biểu đồ lớp và biểu đồ tuần tự của UML. Công việc này được tiến hành với cả hai hệ thống trước và sau khi tái cấu trúc. Kế tiếp là soạn thảo các biểu thức OCL mô tả hành vi của các hệ thống này bằng phần mềm như Xtext6 tích hợp trong mơi trường Eclipse. Như vậy, chúng ta sẽ có sáu tệp dữ liệu đầu vào (bốn tệp biểu diễn mơ hình và hai tệp mơ tả hành vi). Tất cả các tệp này được lưu dưới định dạng XML (eXtensible Markup Language) trước khi nhập liệu.
Sau khi nhập các tệp trên vào, công cụ CVT sẽ bắt đầu với chức năng
well-formedness checking để kiểm tra sự tương thích về kiểu giữa các biểu thức OCL và các đặc tả thành phần của mơ hình UML. Trong trường hợp biểu thức OCL khơng tương thích với các thành phần của mơ hình UML, CVT sẽ có thơng báo lần vết và u cầu nhập lại các tệp dữ liệu đầu vào. Chức năng này được tiến hành một cách tự động khi nhập liệu, nên trong Hình 5.2 người dùng sẽ khơng thấy nút chức năng này.
CVT cịn có thể chuyển đổi các biểu thức OCL sang các cơng thức FOL, trong Hình 5.2, nếu người dùng lựa chọn vào menu OCL2FOL, công việc này sẽ được thực hiện và cho ra kết quả là công thức FOL dạng tiền tố tương ứng với biểu thức OCL đã nhập vào. Hình 5.3 minh họa hai cơng
thức FOL dạng tiền tố tương ứng với hai biểu thức OCL biểu diễn hành vi của các hệ thống ARTC [55] trước và sau khi tái cấu trúc.
Trong hình5.2cịn có một số nút chức năng cơ bản bao gồm Check Inva- riants, Check Pre-conditions, Check Post-conditions và Total Consistency.
Các nút chức năng này bắt nguồn từ việc các biểu thức OCL có ba thành phần chính (bất biến, tiền điều kiện và hậu điều kiện). Nếu mơ hình tái cấu trúc bảo tồn đối với tất cả các ràng buộc trên thì nó được coi là nhất qn tồn phần (Total Consistency), nếu mơ hình tái cấu trúc vi phạm một trong ba loại ràng buộc thì nó là nhất qn bộ phận (Partial Consistency), trong các trường hợp cịn lại các mơ hình phần mềm được coi là khơng nhất qn (Inconsistency). Trong q trình thực thi, CVT cho phép người dùng lựa chọn một chức năng con để kiểm tra nhất quán bộ phận hoặc thực hiện đồng bộ tất cả các chức năng cùng lúc bằng nút Total Check Consistency để có được kết quả kiểm tra cuối cùng giữa hai mơ hình phần mềm.
Hình 5.4 và 5.5 minh họa cho kết quả kiểm tra tính nhất qn của mơ hình hệ thống điều khiển lưu lượng giao thông đường bộ (ARTC) [55] sau tiến trình tái cấu trúc.
Hình 5.4: Minh họa kết quả kiểm chứng trong trường hợp nhất quán
Hình 5.5: Minh họa kết quả kiểm chứng trong trường hợp không nhất quán
5.4 Kết chương
Trong chương này, chúng tôi đã xây dựng công cụ CVT hỗ trợ kiểm tra tính nhất quán trong tái cấu trúc mơ hình phần mềm. Các mơ hình hệ thống trước và sau khi tái cấu trúc được biểu diễn bằng các mơ hình UML, hành vi cần kiểm chứng được mô tả bởi các biểu thức OCL. Công cụ CVT nhận các tệp dữ liệu đầu vào là các thành phần trên và trả lại kết quả về khả năng nhất quán giữa hai mơ hình phần mềm trước và sau khi tái cấu trúc. So với các công cụ hỗ trợ tái cấu trúc trước đây, CVT thể hiện tính đặc biệt trong ngữ cảnh. Nó được áp dụng vào trong một tiến trình cụ thể là kiểm chứng tính nhất qn trong tái cấu trúc mơ hình phần mềm. CVT cũng đáp ứng một cách cơ bản các chức năng của một công cụ kiểm chứng bao gồm Kiểm tra tính hợp lệ về dữ liệu và Kiểm tra tính nhất quán về mặt hành vi. Hơn nữa, CVT còn thực hiện thêm chức năng chuyển đổi các biểu
thức OCL sang các công thức FOL.
Công cụ CVT cho phép người dùng có thể lựa chọn việc kiểm tra tính nhất quán từng phần trên các ràng buộc về bất biến, tiền và hậu điều kiện hoặc thực hiện ở chế độ lô và trả về kết quả kiểm tra giữa hai mơ hình hệ thống tức thời.
Hiện tại, phần mềm CVT mới chỉ dừng lại ở một số chức năng cơ bản và các biểu thức OCL vẫn còn được tạo lập một cách thủ công, trong các nghiên cứu tiếp theo chúng tôi sẽ quan tâm đến việc cải thiện các chức năng, cũng như xem xét quá trình sản sinh các biểu thức OCL một cách tự động. Kết quả nghiên cứu nêu trên đã được công bố tại Kỷ yếu của Hội nghị quốc tế lần thứ 9 về Knowledge and Systems Engineering - KSE 2017 (cơng trình khoa học số 3*).
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 Các đóng góp của luận án
Tái cấu trúc là một kỹ thuật mạnh mẽ, được sử dụng phổ biến trong các hoạt động cải tiến chất lượng phần mềm (mở rộng, mơ đun hóa, tái sử dụng, giảm độ phức tạp, tăng hiệu quả thực thi, v.v.). Tái cấu trúc giúp người phát triển có được kiến trúc phần mềm chắc chắn, là nền tảng quan trọng cho các giai đoạn phát triển tiếp theo của chính phần mềm đó. Ý tưởng chính của tái cấu trúc là phân bố lại các lớp, các thuộc tính và các phương thức xung quanh mối quan hệ phân cấp giữa các thành phần của hệ thống. Kiểm chứng nhất quán trong tái cấu trúc hệ thống phần mềm là một bài tốn mở và mang tính chuyên biệt miền. Giải quyết bài toán này cần gắn liền với các yếu tố đặc trưng về miền ứng dụng hoặc mối quan tâm cụ thể của các nhà phát triển phần mềm. Do đó, cần phải xử lý bài tốn này theo cách thực tế, với những nguyên tắc kiểm tra chặt chẽ. Đơi khi người phát triển phải tìm sự thỏa hiệp giữa các vấn đề về chấp nhận nhược điểm của việc khơng bảo tồn một số ràng buộc nào đó mà điều này không làm ảnh hưởng đến mục tiêu bảo tồn nói chung của hệ thống phần mềm. Sau một thời gian nghiên cứu và giải quyết bài toán này, luận án đã có một số những đóng góp như sau:
mơ hình phần mềm. Luận án thực hiện tái cấu trúc biểu đồ lớp của
UML thơng qua năm phép tốn liên quan đến quan hệ phân cấp trong kế thừa, cụ thể là Folding, Abstraction, Composition, Factoring và Unfolding. Để giải quyết bài toán này, đầu tiên luận án hình thức hóa biểu đồ lớp cùng với các ràng buộc về bất biến bằng các ký pháp tốn học. Kế tiếp, luận án định nghĩa khn mẫu (template) để mơ tả các phép tốn tái cấu trúc. Cuối cùng, bằng việc xây dựng các luật tái cấu trúc đối với từng phép tốn, q trình tái cấu trúc trên biểu đồ lớp được tiến hành theo cách bảo toàn các bất biến. Luận án cũng đã chứng minh tính đúng đắn của các luật tái cấu trúc đã được xây dựng, điều này thể hiện tính tin cậy của phương pháp đề xuất.
2) Đề xuất phương pháp kiểm chứng sự bảo toàn hành vi trong tái cấu trúc hệ thống phần mềm có sử dụng mẫu thiết kế. Phương pháp đề
xuất được áp dụng đối với các giai đoạn thiết kế và cài đặt chương trình phần mềm. Quy trình kiểm chứng bao gồm các bước chính sau đây: (i) đặc tả các hệ thống thống cùng với các ràng buộc về hành vi của nó (bất biến, tiền/hậu điều kiện) bằng phương pháp hình thức; (ii) tiến hành tái cấu trúc bằng mẫu Strategy; (iii) tính tốn các ràng buộc về hành vi của phiên bản tiến hóa sau tái cấu trúc và (iv) Xây dựng tập luật nhất quán là cơ sở lý thuyết cho quá trình kiểm chứng. Chú
ý rằng, luận án tập trung đề xuất cơ sở lý thuyết để kiểm chứng tính sự bảo toàn về mặt hành vi với đối tượng là các kịch bản (scenarios)
tham gia vào tiến trình tái cấu trúc. Hệ thống phần mềm được coi là nhất quán với phiên bản tái cấu trúc của nó nếu các kịch bản này bảo toàn các ràng buộc về bất biến, tiền và hậu điều kiện.
3) Xây dựng công cụ CVT hỗ trợ kiểm chứng sự bảo toàn hành vi trong tái cấu trúc mơ hình phần mềm. CVT nhận đầu vào là mơ hình các
hệ thống trước và sau tái cấu trúc cùng với các đặc tả về hành vi của chúng (bất biến, tiền và hậu điều kiện). Sau quá trình kiểm tra, CVT thông báo về khả năng nhất qn giữa hai mơ hình hệ thống này. Kiến trúc của CVT bao gồm ba chức năng chính: (i) Kiểm tra tính hợp lệ về ràng buộc OCL trên mơ hình, (ii) Chuyển đổi biểu thức OCL sang công thức FOL và (iii) Thực hiện kiểm tra.
4) Đóng góp cuối cùng của luận án là minh họa các phương pháp đề xuất
Các ràng buộc về hành vi đã được kiểm chứng dựa trên cơ sở lý thuyết ở Chương 4 và thực nghiệm ở Chương 5. Kết quả kiểm chứng sự bảo toàn hành vi ở hai chương là hồn tồn tương thích. Điều này phần nào thể hiện được tính khả thi của các phương pháp đề xuất.
Các ràng buộc về bất biến của lớp và hành vi của hệ thống (tiền và hậu điều kiện) là các đặc trưng cơ bản đối với một hệ thống phần mềm. Luận án giải quyết bài tốn kiểm chứng tính nhất qn trong tái cấu trúc hệ thống phần mềm bao phủ cả hai loại đặc trưng trên. Một cách tuần tự, ở Chương 3, luận án đề xuất phương pháp bảo toàn các bất biến của lớp, Chương 4 luận án tiếp tục giải quyết bài tốn kiểm chứng về sự bảo tồn hành vi. Thêm vào đó, để hồn thiện hơn nữa cơ sở lý thuyết đã đề xuất, Chương 5 luận án xây dựng công cụ hỗ trợ kiểm chứng một cách tự động. Như vậy, luận án đã xem xét bài tố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 trên nhiều khía cạnh, từ các đóng góp về lý thuyết đến các minh chứng bằng thực nghiệm và xuyên suốt từ giai đoạn thiết kế đến cài đặt trong vòng đời phát triển phần mềm. Có thể nói, các đóng góp của luận án có ý nghĩa trong việc bổ sung và hồn thiện các kỹ thuật sử dụng trong lĩnh vực cải tiến chất lượng phần mềm.
Các kết quả của luận án đã cơng bố trong các cơng trình khoa học được đăng tải trên các tạp chí, hội nghị chuyên ngành trong nước và quốc tế có phản biện.
6.2 Hướng phát triển
Luận án đã đề xuất các phương pháp bảo toàn bất biến của lớp và hành vi của hệ thống phần mềm trong tái cấu trúc. Bước đầu, các phương pháp đề xuất đã đạt được một số kết quả nhất định. Tuy nhiên, đối với mỗi bài toán tương ứng ở từng chương của luận án, cịn có nhiều hướng mở cần được xem xét và giải quyết. Một số hướng nghiên cứu tiếp theo của luận án có thể được thực hiện là:
1) Đối với bài tốn kiểm chứng tính bất biến trong tái cấu trúc mơ hình phần mềm. Cần tiếp tục xem xét, giải quyết các vấn đề sau:
– Hiện tại luận án mới chỉ xem xét q trình bảo tồn bất biến trên biểu đồ lớp và liên quan đến năm phép tốn có quan hệ phân cấp
trong kế thừa. Vì vậy, phương pháp đề xuất chưa có được cái nhìn tổng qt trong giải quyết các vấn đề về bảo tồn bất biến nói chung đối với một tiến trình tái cấu trúc bất kỳ;
– Các phép toán được giới thiệu một cách rời rạc, sẽ là nhiều ý nghĩa hơn đối với hơn đối với các nhà phát triển nếu có sự xem xét và kết hợp các phép toán này tạo ra một chiến lược (strategy) tái cấu trúc, giải quyết một tình huống thực tế có tính phức tạp hơn; – Luận án mơ tả sự biến đổi của các thành phần trong lớp và các ràng buộc của nó, đồng thời đã liệt kê ảnh hưởng của các phép toán đối với các liên kết (associations) của các nghiên cứu trước đây. Tuy nhiên luận án cần đưa ra được các ví dụ minh họa chi tiết cho sự biến đổi trên các lớp và các liên kết.
2) Đối với bài tốn kiểm chứng sự bảo tồn hành vi trong tái cấu trúc. Cần tiếp tục xem xét, giải quyết các vấn đề sau:
– Đối tượng nghiên cứu sự bảo toàn hành vi là các kịch bản (biểu đồ tuần tự), bởi vậy các nghiên cứu tiếp theo có thể quan tâm đến bảo toàn hành vi của một số loại biểu đồ khác trong UML như biểu đồ ca sử dụng, biểu đồ trạng thái, biểu đồ hoạt động v.v.; – Nghiên cứu xây dựng một case study với nhiều đặc tả hành vi
phức tạp hơn cần kiểm chứng. Phương pháp đề xuất sẽ là ý nghĩa hơn nếu đưa ra được một phản ví dụ minh họa cho phương pháp đề xuất;
– Phần cơ sở lý thuyết cịn có những giả thiết khá mạnh, kịch bản ln được coi là hợp lệ để có thể thực thi. Cần phân tích q trình thực thi của kịch bản một cách chi tiết và đưa ra các điều kiện đầy đủ hơn đáp ứng các giả thiết này;
– Kịch bản được xem xét cịn khá đơn giản, chưa có xuất hiện các yếu tố phức hợp (các phân đoạn rẽ nhánh, phân đoạn lựa chọn, v.v.). Luận án hướng tới nghiên cứu và giải quyết bài tốn bảo tồn hành vi đối với các kịch bản này.
3) Công cụ kiểm chứng CVT bao gồm ba chức năng cơ bản (kiểm tra sự hợp lệ của biểu thức OCL đối với mơ hình, chuyển đổi biểu thức OCL sang công thức FOL, thực hiện kiểm tra). Tuy nhiên, có thể thấy giao diện của CVT cịn khá đơn giản, việc tạo lập các ràng buộc OCL còn
tiến hành một cách thủ cơng. Do đó, trong các nghiên cứu tiếp theo, luận án sẽ thực hiện sản sinh các biểu thức này một cách tự động từ mơ hình và hướng đến kiểm chứng tính nhất quán trong tái cấu trúc đối với tất cả các ràng buộc về bất biến cũng như hành vi, từ giai đoạn thiết kế đến giai đoạn cài đặt trong vòng đời phát triển của phần mềm.
I. CÁC CƠNG TRÌNH LIÊN QUAN ĐẾN LUẬN ÁN
1*. Thi Huong Dao, Hong Anh Le, and Ninh Thuan Truong (2016).
An approach to analyzing execution preservation in Java program refactoring. International Conference on Context-Aware Systems
and Applications, pp.101-110, Springer, 2016.
2*. Hong Anh Le, Thi Huong Dao, and Ninh Thuan Truong (2017).
A Formal Approach to Checking Consistency in Software Refac- toring. Mobile Networks and Application, Vol.22.2, pp.356–366,
Springer, 2017. (ISI indexed)
3*. Thi Huong Dao, Thanh Binh Trinh, and Ninh Thuan Truong
(2017).A Tool Support for Checking Consistency in Model Refac- toring. In Proc. of the 9th International Conf. on Knowledge and
Systems Engineering, pp. 108-113, Springer LNCS, 2017.