Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 132 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
132
Dung lượng
3,19 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đào Thị Hường MỘT SỐ PHƯƠNG PHÁP KIỂM CHỨNG TÁI CẤU TRÚC PHẦN MỀM LUẬN ÁN TIẾN SỸ CÔNG NGHỆ THÔNG TIN Hà Nội - 2018 LỜI CAM ĐOAN Tôi xin cam đoan luận án “Một số phương pháp kiểm chứng tái cấu trúc phần mềm” cơng trình nghiên cứu riêng Các số liệu, kết trình bày luận án hồn tồn trung thực chưa công bố cơng trình khác Tơi trích dẫn đầy đủ tài liệu tham khảo, cơng trình nghiên cứu liên quan nước quốc tế Ngoại trừ tài liệu tham khảo này, luận án hoàn toàn cơng việc riêng tơi Trong cơng trình khoa học công bố luận án, thể rõ ràng xác đóng góp đồng tác giả tơi đóng góp Luận án hồn thành thời gian làm Nghiên cứu sinh Bộ môn Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội Tác giả: Hà Nội: i ii LỜI CẢM ƠN Trước hết, muốn bày tỏ biết ơn đến PGS.TS Trương Ninh Thuận, cán hướng dẫn, người trực tiếp giảng dạy định hướng suốt thời gian học cao học, thực luận văn thạc sĩ luận án Thầy không hướng dẫn cho kiến thức học thuật mà bảo cho kinh nghiệm quý báu sống Một vinh dự lớn cho học tập, nghiên cứu hướng dẫn Thầy Tôi xin bày tỏ biết ơn sâu sắc đến Thầy Cô Bộ mơn Cơng nghệ phần mềm giúp đỡ Thầy Cơ đóng góp hữu ích cho luận án Tơi xin trân trọng cảm ơn Khoa Cơng nghệ thơng tin, Phịng Đào tạo Ban giám hiệu trường Đại học Công nghệ tạo điều kiện thuận lợi cho tơi suốt q trình thực luận án Tôi bày tỏ biết ơn đến Ban giám hiệu Trường Đại học Hải Phòng tạo điều kiện thời gian tài cho thực luận án Tôi muốn cảm ơn đến Ban chủ nhiệm, cán bộ, giảng viên Khoa Công nghệ thông tin - Trường Đại học Hải Phòng cổ vũ động viên sát cánh bên tơi suốt q trình nghiên cứu Một phần nghiên cứu thực khuôn khổ đề tài nghiên cứu khoa học số 102.03-2014.40 (Nafosted) Xin cảm ơn trao đổi trợ giúp thành viên đề tài Tôi muốn cảm ơn đến tất người bạn tơi, đến tồn thể Anh/Chị/Em NCS người chia sẻ, động viên tôi cần ghi nhớ điều Cuối cùng, tơi xin bày tỏ lịng biết ơn vô hạn cha mẹ, chồng, gia đình ln ủng hộ u thương tơi cách vơ điều kiện Nếu khơng có ủng hộ gia đình chồng tơi khơng thể hồn thành luận án Một lần xin trân trọng cảm ơn tất NCS Đào Thị Hường iii TĨM TẮT Trong qúa trình phát triển hệ thống phần mềm, tái cấu trúc (refactoring) biết đến “như tiến trình cải thiện cấu trúc bên (internal structure) mà không làm ảnh hưởng đến hành vi bên (external behaviour) hệ thống” Tuy nhiên, hoạt động tái cấu trúc thực hệ thống phần mềm dễ phát sinh lỗi đặc biệt trường hợp người phát triển không tuân thủ cách nghiêm ngặt quy trình tiêu chuẩn phát triển phần mềm Bởi vậy, tiến trình tái cấu trúc cần kiểm soát cách chặt chẽ đồng thời phải đánh giá ảnh hưởng tiến trình đặc trưng chất lượng xem xét bảo tồn đặc tính quan trọng hệ thống phần mềm Luận án đề xuất số phương pháp bảo toàn ràng buộc hệ thống phần sau tiến trình tái cấu trúc Cụ thể, luận án quan tâm đến tiến trình tái cấu trúc áp dụng hệ thống hướng đối tượng với đặc trưng bất biến (invariants) hành vi (behaviors) Các đóng góp luận án tóm tắt sau: (i) Đề xuất phương pháp bảo toàn bất biến tái cấu trúc biểu đồ lớp UML Các phần tử biểu đồ lớp với ràng buộc bất biến hình thức hóa ký pháp toán học Tái cấu trúc biểu đồ lớp thực thơng qua phép tốn Folding, Abstraction, Composition, Factoring Unfolding Luận án đề xuất luật tái cấu trúc (refactoring rules) cho phép toán đồng thời chứng minh đắn luật phương pháp tốn học Tiến trình tái cấu trúc áp dụng phép toán khẳng định bảo tồn bất biến lớp mơ hình ban đầu mơ hình tái cấu trúc (ii) Đề xuất phương pháp kiểm chứng bảo toàn hành vi tái cấu trúc hệ thống phần mềm cách áp dụng mẫu thiết kế Phần mềm ban đầu với ràng buộc hành vi (pre/post-conditions) kịch (scenarios) tham gia vào tiến trình tái cấu trúc hình thức hóa Hoạt động tái cấu trúc thực thi gây ảnh hưởng trực tiếp đến thành phần cấu tạo ràng buộc hành vi iv Bởi vậy, ràng buộc hành vi tính tốn lại so sánh với với ràng buộc hệ thống ban đầu Chú ý rằng, đối tượng quan tâm đến khía cạnh bảo toàn hành vi kịch tham gia vào tiến trình tái cấu trúc Đóng góp chủ yếu luận án giải tốn bảo tồn hành vi việc xây dựng định nghĩa biểu diễn hình thức khái niệm kịch sử dụng định nghĩa quy trình kiểm chứng đề xuất Bài tốn bảo tồn hành vi giải giai đoạn thiết kế cài đặt vòng đời phát triển phần mềm (iii) Xây dựng công cụ CVT (Consistency Validator Tool) hỗ trợ cho q trình kiểm chứng tính qn tái cấu trúc mơ hình phần mềm CVT nhận liệu đầu vào mơ hình với ràng buộc hành vi hệ thống trước sau tái cấu trúc Sau trình thực thi, CVT trả lại kết luận khả quán mơ hình Từ khóa: tái cấu trúc, bảo toàn bất biến, bảo toàn hành vi, kiểm chứng tính quán Mục lục Lời cam đoan i Lời cảm ơn ii Tóm tắt iii Mục lục v Danh mục từ viết tắt viii Danh mục bảng ix Danh mục hình vẽ x Danh mục đặc tả xii Chương MỞ ĐẦU 1.1 Đặt vấn đề 1.2 Nội dung nghiên cứu 1.3 Cấu trúc luận án 1 Chương KIẾN THỨC CƠ SỞ 2.1 Tái cấu trúc (refactoring) 2.2 Mơ hình hướng đối tượng 2.3 Ngơn ngữ mơ hình hóa thống UML 2.3.1 Biểu đồ lớp 2.3.2 Biểu đồ 2.4 Mẫu thiết kế 2.5 Ngôn ngữ ràng buộc đối tượng OCL (Object Constraint Language) 2.6 Ngôn ngữ đặc tả cho Java (Java Modeling Language - JML) 2.7 Logic vị từ bậc (First-Order Logic - FOL) 2.8 Kết chương 9 12 14 15 16 17 v 21 25 26 27 Contents Chương PHƯƠNG PHÁP BẢO TOÀN BẤT BIẾN TRONG TÁI CẤU TRÚC 3.1 Giới thiệu 3.2 Các nghiên cứu liên quan 3.3 Tái cấu trúc biểu đồ lớp UML 3.3.1 Tái cấu trúc lớp với mối quan hệ phân cấp 3.3.2 Tái cấu trúc liên kết biểu đồ lớp 3.4 Phương pháp bảo toàn bất biến tái cấu trúc biểu đồ lớp UML 3.4.1 Quy trình kiểm tra bảo tồn bất biến tái cấu trúc biểu đồ lớp UML 3.4.2 Mơ hình hóa biểu đồ lớp UML 3.4.3 Khuôn mẫu biễu diễn phép toán tái cấu trúc 3.4.4 Xây dựng luật tái cấu trúc 3.4.5 Chứng minh tính đắn luật tái cấu trúc 3.4.6 Kiểm chứng bảo toàn ràng buộc bất biến sau tái cấu trúc 3.5 Kết chương vi 28 28 30 33 33 35 36 37 38 42 43 54 58 59 Chương PHƯƠNG PHÁP KIỂM CHỨNG SỰ BẢO TOÀN HÀNH VI TRONG TÁI CẤU TRÚC 62 4.1 Giới thiệu 62 4.2 Các nghiên cứu liên quan 64 4.3 Phương pháp kiểm chứng bảo toàn hành vi tái cấu trúc hệ thống phần mềm 67 4.3.1 Quy trình kiểm chứng bảo tồn hành vi tái cấu trúc hệ thống phần mềm 67 4.3.2 Phương pháp kiểm chứng tính qn tái cấu trúc mơ hình phần mềm 69 4.3.3 Phương pháp kiểm chứng tính quán tái cấu trúc chương trình phần mềm 76 4.4 Áp dụng phương pháp kiểm chứng bảo toàn hành vi hệ thống điều khiển lưu lượng giao thông đường (ARTC) 77 4.4.1 Mô tả hệ thống ARTC 78 4.4.2 Một số hạn chế hệ thống ARTC trước tái cấu trúc 82 4.4.3 Xác định hành vi cần bảo toàn 84 4.4.4 Kiểm chứng tính qn tái cấu trúc mơ hình hệ thống ARTC 88 Contents vii 4.4.5 Kiểm chứng tính quán tái cấu trúc chương trình phần mềm ARTC 4.5 Kết chương Chương CÔNG CỤ KIỂM CHỨNG 5.1 Giới thiệu 5.2 Xây dựng công cụ kiểm chứng CVT 5.2.1 Kiến trúc công cụ kiểm chứng CVT 5.2.2 Chuyển đổi biểu thức OCL sang công thức 5.3 Cài đặt thực nghiệm 5.4 Kết chương FOL 90 90 93 93 95 95 97 102 105 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 107 6.1 Các đóng góp luận án 107 6.2 Hướng phát triển 109 DANH MỤC CÁC CƠNG TRÌNH KHOA HỌC 113 TÀI LIỆU THAM KHẢO 114 DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Dạng đầy đủ Diễn giải/Tạm dịch ATM Automated Teller Machine ARTC Adaptive Road Traffic Control Hệ thống điều khiển giao thông AST Abstract Syntax Tree Cây cú pháp trừu tượng CVT Consistency Validator Tool Cơng cụ kiểm chứng tính qn CD Class Diagram Biểu đồ lớp FOL First-Order Logic Logic vị từ bậc JML Java Modeling Language Ngôn ngữ đặc tả cho Java OCL Object Constraint Language Ngôn ngữ ràng buộc đối tượng OOM Object Oriented Modeling Mơ hình hóa hướng đối tượng SD Sequence Diagram Biểu đồ SMT Satisfiability Modulo Theories Tính khả thỏa lý thuyết mơđun UML Unified Modeling Language Ngơn ngữ mơ hình hóa thống XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng viii Hệ thống rút tiền tự động DANH MỤC CÁC BẢNG 3.1 Khn mẫu biểu diễn phép tốn tái cấu trúc 43 5.1 Biểu thức OCL công thức FOL tương ứng 98 5.2 Các luật sản xuất R văn phạm phi ngữ cảnh G 99 5.3 Tập luật xây dựng AST từ văn phạm phi ngữ cảnh G 100 ix Chương Cơng cụ kiểm chứng 105 Hình 5.5: Minh họa kết kiểm chứng trường hợp không quán 5.4 Kết chương Trong chương này, xây dựng cơng cụ CVT hỗ trợ kiểm tra tính qn tái cấu trúc mơ hình phần mềm Các mơ hình hệ thống trước sau tái cấu trúc biểu diễn mơ hình UML, hành vi cần kiểm chứng mô tả biểu thức OCL Công cụ CVT nhận tệp liệu đầu vào thành phần trả lại kết khả quán hai mơ hình phần mềm trước sau tái cấu trúc So với công cụ hỗ trợ tái cấu trúc trước đây, CVT thể tính đặc biệt ngữ cảnh Nó áp dụng vào tiến trình cụ thể kiểm chứng tính qn tái cấu trúc mơ hình phần mềm CVT đáp ứng cách chức cơng cụ kiểm chứng bao gồm Kiểm tra tính hợp lệ liệu Kiểm tra tính quán mặt hành vi Hơn nữa, CVT thực thêm chức chuyển đổi biểu thức OCL sang công thức FOL Công cụ CVT cho phép người dùng lựa chọn việc kiểm tra tính quán phần ràng buộc bất biến, tiền hậu điều kiện thực chế độ lô trả kết kiểm tra hai mơ hình hệ thống tức thời Chương Công cụ kiểm chứng 106 Hiện tại, phần mềm CVT dừng lại số chức biểu thức OCL tạo lập cách thủ công, nghiên cứu quan tâm đến việc cải thiện chức năng, xem xét trình sản sinh biểu thức OCL cách tự động Kết nghiên cứu nêu công bố Kỷ yếu Hội nghị quốc tế lần thứ Knowledge and Systems Engineering - KSE 2017 (cơng trình khoa học số 3*) Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 Các đóng góp luận án Tái cấu trúc kỹ thuật mạnh mẽ, sử dụng phổ biến 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 thực thi, v.v.) Tái cấu trúc giúp người phát triển có kiến trúc phần mềm chắn, tảng quan trọng cho giai đoạn phát triển phần mềm Ý tưởng tái cấu trúc phân bố lại lớp, thuộc tính phương thức xung quanh mối quan hệ phân cấp thành phần hệ thống Kiểm chứng quán tái cấu trúc hệ thống phần mềm tốn mở mang tính chun biệt miền Giải toán cần gắn liền với yếu tố đặc trưng miền ứng dụng mối quan tâm cụ thể nhà phát triển phần mềm Do đó, cần phải xử lý toán theo cách thực tế, với nguyên tắc kiểm tra chặt chẽ Đôi người phát triển phải tìm thỏa hiệp vấn đề chấp nhận nhược điểm việc khơng bảo tồn số ràng buộc mà điều khơng làm ảnh hưởng đến mục tiêu bảo tồn nói chung hệ thống phần mềm Sau thời gian nghiên cứu giải tốn này, luận án có số đóng góp sau: 1) Đề xuất phương pháp bảo toàn bất biến lớp tái cấu trúc 107 Kết luận 108 mơ hình phần mềm Luận án thực tái cấu trúc biểu đồ lớp UML thơng qua năm phép tốn liên quan đến quan hệ phân cấp kế thừa, cụ thể Folding, Abstraction, Composition, Factoring Unfolding Để giải toán này, luận án hình thức hóa biểu đồ lớp với ràng buộc bất biến ký pháp toán học Kế tiếp, luận án định nghĩa khn mẫu (template) để mơ tả phép tốn tái cấu trúc Cuối cùng, việc xây dựng luật tái cấu trúc phép toán, trình tái cấu trúc biểu đồ lớp tiến hành theo cách bảo toàn bất biến Luận án chứng minh tính đắn luật tái cấu trúc xây dựng, điều thể tính tin cậy phương pháp đề xuất 2) Đề xuất phương pháp kiểm chứng bảo toàn hành vi 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 áp dụng giai đoạn thiết kế cài đặt chương trình phần mềm Quy trình kiểm chứng bao gồm bước sau đây: (i) đặc tả hệ thống thống với ràng buộc hành vi (bất biến, tiền/hậu điều kiện) phương pháp hình thức; (ii) tiến hành tái cấu trúc mẫu Strategy; (iii) tính tốn ràng buộc hành vi phiên tiến hóa sau tái cấu trúc (iv) Xây dựng tập luật quán sở lý thuyết cho trình kiểm chứng Chú ý rằng, luận án tập trung đề xuất sở lý thuyết để kiểm chứng tính bảo tồn mặt hành vi với đối tượng kịch (scenarios) tham gia vào tiến trình tái cấu trúc Hệ thống phần mềm coi quán với phiên tái cấu trúc kịch bảo toàn ràng buộc bất biến, tiền hậu điều kiện 3) Xây dựng công cụ CVT hỗ trợ kiểm chứng bảo toàn hành vi tái cấu trúc mơ hình phần mềm CVT nhận đầu vào mơ hình hệ thống trước sau tái cấu trúc với đặc tả hành vi chúng (bất biến, tiền hậu điều kiện) Sau q trình kiểm tra, CVT thơng báo khả qn hai mơ hình hệ thống Kiến trúc CVT bao gồm ba chức chính: (i) Kiểm tra tính hợp lệ ràng buộc OCL mơ hình, (ii) Chuyển đổi biểu thức OCL sang công thức FOL (iii) Thực kiểm tra 4) Đóng góp cuối luận án minh họa phương pháp đề xuất thơng qua mơ hình Hệ thống điều khiển giao thông đường ARTC Kết luận 109 Các ràng buộc hành vi kiểm chứng dựa sở lý thuyết Chương thực nghiệm Chương Kết kiểm chứng bảo toàn hành vi hai chương hồn tồn tương thích Điều phần thể tính khả thi phương pháp đề xuất Các ràng buộc bất biến lớp hành vi hệ thống (tiền hậu điều kiện) đặc trưng hệ thống phần mềm Luận án giải toán kiểm chứng tính quán tái cấu trúc hệ thống phần mềm bao phủ hai loại đặc trưng Một cách tuần tự, Chương 3, luận án đề xuất phương pháp bảo toàn bất biến lớp, Chương luận án tiếp tục giải toán kiểm chứng bảo tồn hành vi Thêm vào đó, để hoàn thiện sở lý thuyết đề xuất, Chương luận án xây dựng công cụ hỗ trợ kiểm chứng cách tự động Như vậy, luận án xem xét tốn kiểm chứng tính quán tái cấu trúc hệ thống phần mềm nhiều khía cạnh, từ đóng góp lý thuyết đến minh chứng thực nghiệm xuyên suốt từ giai đoạn thiết cài đặt vịng đời phát triển phần mềm Có thể nói, đóng góp luận án có ý nghĩa việc bổ sung hoàn thiện kỹ thuật sử dụng lĩnh vực cải tiến chất lượng phần mềm Các kết luận án công bố cơng trình khoa học đăng tải tạp chí, hội nghị chuyên ngành nước quốc tế có phản biện 6.2 Hướng phát triển Luận án đề xuất phương pháp bảo toàn bất biến lớp hành vi hệ thống phần mềm tái cấu trúc Bước đầu, phương pháp đề xuất đạt số kết định Tuy nhiên, toán tương ứng chương luận án, cịn có nhiều hướng mở cần xem xét giải Một số hướng nghiên cứu luận án thực là: 1) Đối với tốn kiểm chứng tính bất biến tái cấu trúc mơ hình phần mềm Cần tiếp tục xem xét, giải vấn đề sau: – Hiện luận án xem xét q trình bảo tồn bất biến biểu đồ lớp liên quan đến năm phép tốn có quan hệ phân cấp Kết luận 110 kế thừa Vì vậy, phương pháp đề xuất chưa có nhìn tổng quát giải vấn đề bảo toàn bất biến nói chung tiến trình tái cấu trúc bất kỳ; – Các phép toán giới thiệu cách rời rạc, nhiều ý nghĩa hơn nhà phát triển có xem xét kết hợp phép toán tạo chiến lược (strategy) tái cấu trúc, giải tình thực tế có tính phức tạp hơn; – Luận án mô tả biến đổi thành phần lớp ràng buộc nó, đồng thời liệt kê ảnh hưởng phép toán liên kết (associations) nghiên cứu trước Tuy nhiên luận án cần đưa ví dụ minh họa chi tiết cho biến đổi lớp liên kết 2) Đối với toán kiểm chứng bảo toàn hành vi tái cấu trúc Cần tiếp tục xem xét, giải vấn đề sau: – Đối tượng nghiên cứu bảo toàn hành vi kịch (biểu đồ tuần tự), nghiên cứu quan tâm đến bảo toàn hành vi số loại biểu đồ khác UML 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 case study với nhiều đặc tả hành vi phức tạp cần kiểm chứng Phương pháp đề xuất ý nghĩa đưa phản ví dụ minh họa cho phương pháp đề xuất; – Phần sở lý thuyết cịn có giả thiết mạnh, kịch coi hợp lệ để thực thi Cần phân tích trình thực thi kịch cách chi tiết đưa điều kiện đầy đủ đáp ứng giả thiết này; – Kịch xem xét cịn đơn giản, chưa có xuất 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 giải tốn bảo tồn hành vi kịch 3) Công cụ kiểm chứng CVT bao gồm ba chức (kiểm tra hợp lệ biểu thức OCL mơ hình, chuyển đổi biểu thức OCL sang cơng thức FOL, thực kiểm tra) Tuy nhiên, thấy giao diện CVT đơn giản, việc tạo lập ràng buộc OCL Kết luận 111 tiến hành cách thủ cơng Do đó, nghiên cứu tiếp theo, luận án thực sản sinh biểu thức cách tự động từ mô hình hướng đến kiểm chứng tính qn tái cấu trúc tất ràng buộc bất biến hành vi, từ giai đoạn thiết giai đoạn cài đặt vòng đời phát triển phần mềm DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC 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 Refactoring 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 Refactoring In Proc of the 9th International Conf on Knowledge and Systems Engineering, pp 108-113, Springer LNCS, 2017 4* Thi Huong Dao, Xuan Truong Nguyen, and Ninh Thuan Truong Preservation of Class Invariants in Refactoring UML Models (accepted by the Int’l Journal of Software Engineering and Knowledge Engineering - IJSEKE) (ISI indexed) II CÁC CÔNG TRÌNH KHÁC 5* Thi Huong Dao, Thanh Binh Trinh (2014) Verifying the Reliability of Web Services Transactions using Temporal Logic and NuSMV Information and Computer Science (NICS), 2014 1st National Foundation for Science and Technology Development Conference on, pp.43–51, IEEE, 2014 6* Thi Huong Dao, Van Khanh To, Ninh Thuan Truong, Quang Ton Chu and Viet Ha Nguyen (2015) Integrating and checking access permissions in object oriented models Information and Computer Science (NICS), 2015 2nd National Foundation for Science 112 Danh mục cơng trình khoa học 113 and Technology Development Conference on, pp.49–53, IEEE, 2015 TÀI LIỆU THAM KHẢO [1] W Ahrendt, T Baar, B Beckert, R Bubel, M Giese, R Hăahnle, W Menzel, W Mostowski, A Roth, S Schlager, and et el The key tool Software & Systems Modeling, 4(1):32–54, 2005 [2] C Alexander A pattern language: towns, buildings, construction Oxford University Press, 1977 [3] C Alexander The timeless way of building, volume New York: Oxford University Press, 1979 [4] T Baar and S Markovi´c A graphical approach to prove the semantic preservation of UML/OCL refactoring rules In International Andrei Ershov Memorial Conference on Perspectives of System Informatics, pages 70–83 Springer, 2006 [5] M Balazinska, E Merlo, M Dagenais, B Lague, and K Kontogiannis Advanced clone-analysis to support object-oriented system refactoring In Reverse Engineering, 2000 Proceedings Seventh Working Conference on, pages 98–107 IEEE, 2000 [6] C Barrett, C L Conway, M Deters, L Hadarean, D Jovanovi´c, T King, A Reynolds, and C Tinelli Cvc4 In International Conference on Computer Aided Verification, pages 171–177 Springer, 2011 [7] B Beckert, U Keller, and P H Schmitt Translating the Object Constraint Language into first-order predicate logic In Proc of the VERIFY Workshop at Federated Logic Conferences (FLoC), pages 113– 123, 2002 [8] D A Bisztray Compositional verification of model-level refactorings based on graph transformations PhD thesis, University of Leicester, 2010 [9] G Booch, J Rumbaugh, and I Jacobson Unified Modeling Language User Guide, The (2nd Edition) (Addison-Wesley Object Technology Series) Addison-Wesley Professional, 2005 [10] P Bottoni, F Parisi-Presicce, and G Taentzer Coordinated distributed diagram transformation for software evolution Electronic Notes in Theoretical Computer Science, 72(4):59–70, 2003 114 Tài liệu tham khảo 115 [11] B Bruegge and A Dutoit Object-Oriented Software Engineering Using UML, Patterns and Java-(Required), volume 2004 Prentice Hall Press, 2004 [12] J Cabot and M Gogolla Object constraint language (OCL): a definitive guide In Formal methods for model-driven engineering, pages 58–90 Springer, 2012 [13] P Chalin and F Rioux JML Runtime Assertion Checking: Improved Error Reporting and Efficiency Using Strong Validity In Proceedings of the 15th international symposium on Formal Methods, pages 246– 261 Springer-Verlag, 2008 URL http://dx.doi.org/10.1007/ 978-3-540-68237-0_18 [14] M Cinnéide and P Nixon Composite Refactorings for Java Programs In 2nd ECOOP Workshop on Formal Techniques for Java Programs, held in conjunction with European Conference on Object-Oriented Programming (ECOOP 2000), pages 129–135, 2000 [15] M Clavel, M Egea, and M A G de Dios The Pragmatics of OCL and Other Textual Specification Languages at MoDELS 2009 Electronic Communications of the EASST, 24, 2009 [16] D R Cok OpenJML: JML for Java by extending OpenJDK In NASA Formal Methods Symposium, pages 472–479 Springer, 2011 [17] D R Cok OpenJML: software verification for Java using JML, OpenJDK, and Eclipse arXiv preprint arXiv:1404.6608, pages 79–92, 2014 [18] T H Cormen Introduction to algorithms MIT press, 2009 [19] C Dania and M Clavel OCL2FOL+: Coping with Undefinedness OCL@ MoDELS, 1092:53–62, 2013 [20] C Dania and M Clavel OCL2MSFOL: a mapping to many-sorted firstorder logic for efficiently checking the satisfiability of OCL constraints In Proceedings of the ACM/IEEE 19th International Conference on Model Driven Engineering Languages and Systems, pages 65–75 ACM, 2016 [21] H A David, Peter F L., and Octavian P OCL 2.0: Implementing the Standard Technical report, University of Kent, Computing Laboratory, 2003 URL http://kar.kent.ac.uk/13888/ [22] L De Moura and N Bjørner Z3: An efficient SMT solver In International conference on Tools and Algorithms for the Construction and Analysis of Systems, pages 337–340 Springer, 2008 Tài liệu tham khảo 116 [23] J Dong, S Yang, and K Zhang A model transformation approach for design pattern evolutions In Engineering of Computer Based Systems, 2006 ECBS 2006 13th Annual IEEE International Symposium and Workshop on, pages 10–pp IEEE, 2006 [24] A S Evans Reasoning with UML class diagrams In Industrial Strength Formal Specification Techniques, 1998 Proceedings 2nd IEEE Workshop on, pages 102–113 IEEE, 1998 [25] C Flanagan, K R M Leino, M Lillibridge, G Nelson, J B Saxe, and R Stata Extended static checking for Java SIGPLAN Not., 37: 234–245, 2002 URL http://doi.acm.org/10.1145/543552 512558 [26] A Folli and T Mens Refactoring of UML models using AGG Electronic Communications of the EASST, 8, 2008 [27] M Fowler, K Beck, J Brant, W Opdyke, and D Roberts Refactoring: Improving the design of existing programs Addison-Wesley Reading, 1999 [28] Erich G., John V., Ralph J., and Richard H Elements of Reusable Object-Oriented Software Addison-Wesley Professional Computing Series, 1994 [29] M Gogolla and M Richters Transformation rules for UML class diagrams In International Conference on the Unified Modeling Language, pages 92–106 Springer, 1998 [30] D Gupta, P Jalote, and G Barua A formal framework for on-line software version change Software Engineering, IEEE Transactions on, 22(2):120–131, 1996 [31] I Jacobson Object-oriented software engineering: a use case driven approach Pearson Education India, 1993 [32] C Jinhua LL (1) grammars and Sub-LL (1) grammars International Journal of Parallel Programming, 14(4):225–234, 1985 [33] Y Kataoka, T Imai, H Andou, and T Fukaya A quantitative evaluation of maintainability enhancement by refactoring In Software Maintenance, 2002 Proceedings International Conference on, pages 576–585 IEEE, 2002 [34] J Kerievsky Refactoring to patterns Pearson Deutschland GmbH, 2005 [35] A Kupin Design and development of program transformation tool PhD thesis, Master’s thesis, Department of CS (Informatik), University of Munich, 2000 Tài liệu tham khảo 117 [36] G T Leavens Tutorial on JML, the java modeling language In Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering, pages 573–573 ACM, 2007 URL http://doi.acm.org/10.1145/1321631.1321747 [37] G T Leavens, E Poll, C Clifton, Y Cheon, C Ruby, D Cok, P Mă uller, J Kiniry, P Chalin, D M Zimmerman, and et el JML reference manual, 2008 [38] X Li, Z Liu, and J He Consistency checking of UML requirements In Engineering of Complex Computer Systems, 2005 ICECCS 2005 Proceedings 10th IEEE International Conference on, pages 411–420 IEEE, 2005 [39] C Marché, C Paulin-Mohring, and X Urbain The krakatoa tool for certificationof java/javacard programs annotated in jml The Journal of Logic and Algebraic Programming, 58(1):89–106, 2004 [40] S Markovic Model refactoring using transformations PhD thesis, University of Belgrade, Serbie et de nationalité serbe, 2008 [41] F Martin and S Kendall UML Distilled: A Brief Guide to the Standard Object Modeling Language Addison-Wesley, 2003 [42] T Matsumoto, T Sakunkonchak, H Saito, and M Fujita Verification of behavioral consistency in c by using symbolic simulation and program slicer In Model checking for dependable software-intensive systems workshop, pages 80–84, 2003 [43] T Mens and T Tourwé A survey of software refactoring Software Engineering, IEEE Transactions on, pages 126–139, 2004 [44] T Mens, S Demeyer, and D Janssens Formalising behaviour preserving program transformations In ICGT, pages 286–301 Springer, 2002 [45] T Mens, N Van Eetvelde, S Demeyer, and D Janssens Formalizing refactorings with graph transformations Journal of Software: Evolution and Process, 17(4):247–276, 2005 [46] T Mens, G Taentzer, and D Mă uller Challenges in model refactoring In Proc 1st Workshop on Refactoring Tools, University of Berlin, volume 98, pages 1–5, 2007 [47] B Meyer Object-oriented software construction, volume Prentice hall New York, 1988 [48] M Misbhauddin and M Alshayeb UML model refactoring: a systematic literature review Empirical Software Engineering, 20(1):206–251, 2015 Tài liệu tham khảo 118 [49] E Murphy-Hill, C Parnin, and A Black How we refactor, and how we know it IEEE Transactions on Software Engineering, 38(1):5–18, 2012 [50] M Najafi, H Haghighi, and T Zohdi Nasab A Set of Refactoring Rules for UML-B Specifications Computing and Informatics, 35(2): 411–440, 2016 [51] V.E Niels and J Dirk A Hierarchical Program Representation for Refactoring Electronic Notes in Theoretical Computer Science, 82(7): 91 – 104, 2003 [52] W F Opdyke Refactoring: A program restructuring aid in designing object-oriented application frameworks PhD thesis, University of Illinois at Urbana-Champaign, 1992 [53] C Pereira, L Favre, and L Martinez Refactoring UML Class Diagram In Proceedings of 2004 Information Resources Management Association International Conference (IRMA 2004) New Orleans, USA, pages 506– 510, 2004 [54] I Porres Model refactorings as rule-based update transformations In International Conference on the Unified Modeling Language, pages 159– 174 Springer, 2003 [55] K Ranjini, A Kanthimathi, and Y Yasmine Design of adaptive road traffic control system through unified modeling Language International Journal of Computer Applications, 14(7):36–41, 2011 [56] H Rasch and H Wehrheim Checking consistency in UML diagrams: Classes and state machines Formal methods for open object-based distributed systems, pages 229–243, 2003 [57] D Roberts, J Brant, and R Johnson A refactoring tool for Smalltalk Urbana, 51:61801, 1997 [58] D B Roberts and R Johnson Practical analysis for refactoring University of Illinois at Urbana-Champaign, 1999 [59] J Rumbaugh, M Blaha, W Premerlani, F Eddy, and W Lorenson Object-oriented modelling and design, 1991 [60] J Rumbaugh, I Jacobson, and G Booch Unified Modeling Language Reference Manual, The (2nd Edition) Pearson Higher Education, 2004 [61] E Seidewitz UML 2.5: Specification simplification In Third Biannual Workshop on Eclipse Open Source Software and OMG Open Specifications, volume 82, 2012 [62] A Sheneamer and J Kalita A survey of software clone detection techniques International Journal of Computer Applications, 137(10):1–21, 2016 Tài liệu tham khảo 119 [63] R M Smullyan First-order logic Courier Corporation, 1995 [64] G Sunyé, D Pollet, Y Le Traon, and J Jézéquel Refactoring UML models In International Conference on the Unified Modeling Language, pages 134–148 Springer, 2001 [65] G Szo˝ke, C Nagy, R Ferenc, and T Gyimóthy A case study of refactoring large-scale industrial systems to efficiently improve source code quality In International Conference on Computational Science and Its Applications, pages 524–540 Springer, 2014 [66] L Tahvildari and K Kontogiannis A methodology for developing transformations using the maintainability soft-goal graph In Reverse Engineering, 2002 Proceedings Ninth Working Conference on, pages 77–86 IEEE, 2002 [67] J Vlissides, R Helm, R Johnson, and E Gamma Design patterns: Elements of reusable object-oriented software Reading: Addison-Wesley, 49 (120):11, 1995 [68] M P Ward and K H Bennett Formal methods to aid the evolution of software International Journal of Software Engineering and Knowledge Engineering, 5(01):25–47, 1995 [69] I White and C Rational Booch method of object-oriented analysis and design In Object analysis and design, pages 5–13 Wiley-QED Publishing, 1994 [70] J Whittle Transformations and software modeling languages: Automating transformations in UML In International Conference on the Unified Modeling Language, pages 227–242 Springer, 2002 [71] M Wimmer, S M Perez, F Jouault, and J Cabot A Catalogue of Refactorings for Model-to-Model Transformations Journal of Object Technology, pages 2:1–40, 2012 [72] Z Xing and E Stroulia Refactoring practice: How it is and how it should be supported-an eclipse case study In Software Maintenance, 2006 ICSM’06 22nd IEEE International Conference on, pages 458– 468 IEEE, 2006 [73] C Zhao, J Kong, and K Zhang Design pattern evolution and verification using graph transformation In System Sciences, 2007 HICSS 2007 40th Annual Hawaii International Conference on IEEE, 2007