Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
2,81 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM VĂN TRƯỜNG NGHIÊN CỨU KỸ THUẬT CHUYỂN ĐỔI MƠ HÌNH SANG VĂN BẢN VÀ ỨNG DỤNG VÀO SINH MÃ NGUỒN JAVA LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2020 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM VĂN TRƯỜNG NGHIÊN CỨU KỸ THUẬT CHUYỂN ĐỔI MƠ HÌNH SANG VĂN BẢN VÀ ỨNG DỤNG VÀO SINH MÃ NGUỒN JAVA Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số học viên: 17025008 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2020 LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu cá nhân tơi, thực qua hướng dẫn tận tình thầy TS Đặng Đức Hạnh Các nội dung nghiên cứu kết thực nghiệm trình bày luận văn hồn tồn trung thực, cá nhân tơi cài đặt, cấu hình lên kịch Các kiến thức hàn lâm chắt lọc từ tài liệu tham khảo mạng, sách báo khoa học tác giả uy tín lĩnh vực nghiên cứu Hà Nội, tháng 12 năm 2020 Người thực Phạm Văn Trường i LỜI CẢM ƠN Lời đầu tiên, xin dành lời cảm ơn sâu sắc tới giảng viên hướng dẫn tôi, TS Đặng Đức Hạnh – Giảng viên 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ệ - ĐHQGHN, người trực tiếp định hướng hướng dẫn tơi hồn thành luận văn Tôi xin cảm ơn hỗ trợ đề tài nghiên cứu khoa học cấp Đại học Quốc gia Hà Nội, mã số QG.20.54 Với cá nhân tơi, lĩnh vực lĩnh vực hồn tồn vô trừu tượng, thời điểm ban đầu cịn gặp nhiều khó khăn việc nghiên cứu cách tiếp cận, qua định hướng kĩ chuyên môn phương pháp nghiên cứu Thầy, thu kiến thức định sau thực luận văn Bên cạnh đó, khoảng thời gian học tập tham gia nghiên cứu Trường Đại học Công nghệ – ĐHQGHN, với giảng dạy giúp đỡ Thầy/Cô bạn học viên, học nhiều kiến thức bổ ích có nhiều tính thực tiễn Những kiến thức gặt hái giúp tơi có khả tư duy, phân tích, tổng hợp vấn đề cách khoa học, chí áp dụng nhiều vào công việc làm Một lần nữa, xin gửi lời cảm ơn chân thành tới Thầy/Cô bạn Tôi xin gửi lời cảm ơn tới gia đình ln ln động viên tơi vượt qua khó khăn hồn thành tốt công việc học tập nghiên cứu Do lĩnh vực nghiên cứu đề cập luận văn lạ, chưa áp dụng nhiều, giai đoạn phát triển, tơi gặp khơng khó khăn việc nghiên cứu Hạn chế mặt thời gian phát sinh từ công việc khiến chưa tập trung hết khả sáng tạo để khai thác vấn đề cách kỹ đầy đủ Do luận văn nhiều hạn chế, mong nhận ý kiến đóng góp Thầy/Cô bạn đọc quan tâm Xin chân thành cảm ơn Hà Nội, tháng 12 năm 2020 Người thực Phạm Văn Trường ii LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC HÌNH ẢNH VÀ ĐỒ THỊ DANH MỤC BẢNG BIỂU MỞ ĐẦU CHƯƠNG KIẾN THỨC NỀN TẢNG 1.1 Phát triển phần mềm hướng mơ hình 1.1.1.Các thuật ngữ 1.1.2.Các cấp độ MDSE 1.1.3.Meta-model 1.1.4 Unified Modeling Language 1.1.5 Biểu đồ lớp 1.1.6 Công cụ 1.2 Chuyển đổi mơ hình 1.2.1.Chuyển đổi mơ hình sang mơ hình 1.2.1.1.Chuyển đổi mơ hình phân loại 1.2.1.2.Ngoại sinh chuyển đổi bên 1.2.1.3.Nội sinh chuyển đổi nội 1.2.1.4.Chuỗi chuyển đổi mơ hình 1.2.2.Chuyển đổi mơ hình sang văn 1.2.2.1.Mơ hình định nghĩa mã nguồn 1.2.2.2.Sinh mã nguồn tự động 1.2.2.3.Những lợi ích ngơn ngữ chuyển đổi mơ hình sang văn bả 1.3 Tổng kết chương CHƯƠNG TỔNG QUAN KỸ THUẬT SINH MÃ NGUỒN 2.1 Giới thiệu iii 2.2.Sinh mã nguồn ngơn ngữ lập trình 2.3.Sinh mã nguồn ngơn ngữ chuyển đổi mơ hình 2.4.Kỹ thuật sinh mã nguồn sử dụng ngôn ngữ chuyển đổi Acceleo 2.4.1 Tổng quan 2.4.2 Ví dụ 2.5.Tổng kết chương CHƯƠNG SINH TỰ ĐỘNG MÃ NGUỒN JAVA TỪ BIỂU ĐỒ LỚP BẰNG ACCELEO 3.1.Giới thiệu 3.2.Nghiên cứu tình 3.2.1 Biểu đồ lớp 3.2.2.Cách thức thực 3.3.Đặc tả chuyển Acceleo 3.3.1.Quy tắc chuyển đổi 3.3.1.1.Quy tắc chuyển đổi tĩnh 3.3.1.2.Quy tắc chuyển đổi mở rộng 3.4.Template liệu mẫu 3.5.Tổng kết chương CHƯƠNG CÀI ĐẶT VÀ THỰC NGHIỆM 4.1.Môi trường cài đặt 4.1.1.Cấu hình phần cứng, phần mềm 4.1.2.Dữ liệu đầu vào 4.1.3.Cách thức thực 4.1.3.1.Cài đặt liệu mẫu 4.1.3.2.Cài đặt mã nguồn Acceleo 4.2.Kết thực nghiệm 4.3.Tổng kết chương KẾT LUẬN TÀI LIỆU THAM KHẢO iv Chữ viết tắt MDSE IDE MDD MDA UML XMI M2M M2T ATL OCL PIM PSM JSP MOF XSTL v DANH MỤC HÌNH ẢNH VÀ ĐỒ THỊ Hình 1 Mối quan hệ thuật ngữ viết tắt MD* Hình Tổng quan phương pháp MDSE (quy trình từ xuống) Hình Mối quan hệ conformsTo instanceOf Hình Sự phân cấp model, metamodel meta-metamodel Hình Phâm loại biểu đồ UML Hình Phân tách mơ hình dựa lớp Hình Các thành phần lớp biểu đồ lớp Hình Cơng cụ papyrus Hình Chế độ view thuộc tính Papyrus Hình 10 Vai trị định nghĩa phép biến hình mơ hình Hình 11 Các loại chuyển đổi mơ hình sang mơ hình ngoại sinh Hình 12 Các loại chuyển đổi mơ hình sang mơ hình nội sinh Hình 13 Các giai đoạn thực thi chuyển đổi ATL Hình 14 Vòng đời phát triển ứng dụng áp dụng sinh mã nguồn [9] Hình 15 Mẫu, cơng cụ mẫu mơ hình nguồn để tạo văn Hình API model tạo từ đoạn trích sMVCML metamodel Hình 2 Tạo mã thơng qua ngơn ngữ lập trình – mã Java tạo mã Java Hình Đoạn trích mơ hình sMVCML mã nguồn tương ứng Hình Sinh mã nguồn dựa ngơn ngữ lập trình (Java) Hình Một ứng dụng điển hình chuyển Hình Ngơn ngữ chuyển đổi MOFScript Hình Khung triển khai ngơn ngữ Acceleo Hình Mơ-đun trình chỉnh sửa Acceleo với cú pháp Hình Sinh mã nguồn dựa Acceleo Hình 10 Vùng bảo vệ phương thức Java Hình Biểu đồ lớp cho chức đặt hàng (ordering) Hình Thuộc tính phương thức lớp Table Hình 3 Thuộc tính phương thức lớp Category Hình Thuộc tính phương thức lớp Item Hình Ánh xạ từ lớp biểu đồ sang lớp mã nguồn Java [8] Hình Mã nguồn Acceleo chuyển đổi tĩnh Hình Mã nguồn Acceleo chuyển đổi phương thức showItem Hình Mã nguồn Acceleo chuyển đổi phương thức chooseItem Hình Mã nguồn Acceleo chuyển đổi phương thức register notification Hình Tạo dự án Acceleo Eclipse Hình Import gói thư viện vào dự án Acceleo Hình Trích xuất file UML mơ hình hóa hệ thống Hình 4 Import cấu hình model đầu vào cho dự án Acceleo Hình Cài đặt module template mã nguồn Acceleo Hình 10 Cài đặt thư viện hỗ trợ biến kiểu nguyên thủy Java Acceleo Hình 11 Lớp mã nguồn Java tạo Hình 12 Template showTable chooseTable vi Hình Hình 13.Template showCategory chooseCate 14.Template showItem chooseItem Hình 15.Template register notification vii CHƯƠNG CÀI ĐẶT VÀ THỰC NGHIỆM 4.1 Môi trường cài đặt Phần luận văn mô tả môi trường cho việc cài đặt cấu phần cần thiết cho việc thực nghiệm ví dụ Mơi trường cài đặt gồm yêu cầu phần cứng, phần mềm, liệu đầu vào cuối trình bày bước thức 4.1.1 Cấu hình phần cứng, phần mềm Chương vào cài đặt chương trình thực nghiệm mã nguồn sau sinh tự động Về mặt cấu hình phần cứng, bảng mơ tả cấu hình tối thiểu phần cứng đáp ứng việc thực nghiệm Thành phần Bộ xử lý (CPU) Bộ nhớ (RAM) Bộ nhớ trống Về mặt cấu hình phần mềm cần cài đặt ứng dụng phần mềm bổ trợ sau, Acceleo thêm vào trình cài thêm (plugin) Eclipse: Thành phần Hệ điều hành Java JDK Eclipse Acceleo Sau cài đặt ứng dụng cần thiết, phần tạo dự án Acceleo trình Eclipse theo bước hình đây: 49 Hình Tạo dự án Acceleo Eclipse Sau tạo dự án Acceleo, điều cần phải làm bổ sung thư viện hỗ trợ, gói jar nhằm hỗ trợ việc nhập xuất liệu mẫu Cụ thể gói cần thiết là: gson-2.8.6.jar json-20201115.jar, nạp vào phần thư viện chung dự án mơ tả hình sau: Hình Import gói thư viện vào dự án Acceleo 50 4.1.2 Dữ liệu đầu vào Với việc chuyển đổi mơ hình sang văn liệu đầu vào quan trọng mơ hình, cụ thể biểu đồ lớp mơ hình hóa tính Ordering Sau vẽ biểu đồ lớp với cơng cụ hỗ trợ, ta trích xuất file UML hình sau đây: Hình Trích xuất file UML mơ hình hóa hệ thống Sau tạo dự án Acceleo, cần đưa file UML mơ hình đầu vào sau: Hình 4 Import cấu hình model đầu vào cho dự án Acceleo 51 Chú ý sau import file UML, cần chọn metamodel UML với Type Class hình 4.1.3 Cách thức thực 4.1.3.1 Cài đặt liệu mẫu Như trình bày chương trước, liệu mẫu giúp cho mã nguồn sau chuyển đổi thực thi với input liệu cấu hình sẵn Với tốn áp dụng chức Ordering hệ thống POS, liệu mẫu giả lập dạn JSON sau: Bảng Bảng liệu mẫu dạng JSON Dữ liệu Table Dữ liệu Category Dữ liệu Item 4.1.3.2 Cài đặt mã nguồn Acceleo Sau nạp liệu mẫu, mô hình mẫu, luận văn tiến hành cài đặt mã nguồn Acceleo Mã nguồn Acceleo gồm phần bản: module template, chuyển đổi tĩnh chuyển đổi mở rộng Thứ module template, phần định nghĩa mơ hình đầu vào UML, mã nguồn sinh dạng Java class 53 Hình Cài đặt module template mã nguồn Acceleo Hình module template thực nghiệm, mã nguồn bên trái điều kiện đọc vào từ mô hình, tên lớp ứng với PosSystem, Dashboard MainProcessing tương ứng với lớp mã nguồn sinh PosSystem Trong mã nguồn bên phải mã nguồn Java cài đặt sẵn lớp PosSystem, gồm import gói thư viện, khởi tạo biến toàn cục… Tiếp đến cài đặt mã nguồn Acceleo cho quy tắc chuyển đổi trình bày Chương Lưu ý: đặc thù ngôn ngữ nên chuyển đổi từ mơ hình sang mã nguồn cần thay ký tự đặc biệt ký hiệu, chuỗi ký tự bất kỳ, sau chuyển đổi thay ngược trở lại ký tự đặc biệt Ví dụ ký tự “[]”, Acceleo mơn câu lệnh mang tính cú pháp, không sinh chuyển đổi Luận văn thay “[]” thành chuỗi ký tự “_SQUARE_BRACKET_” Để thực thi mã nguồn sau chạy cần import thư viện cần thiết: json-simple-1.1.jar Ngồi nạp mơ hình (biểu đồ lớp) khơng thể nạp kiểu liệu nguyên thủy, mà cần cấu hình thêm thư viện: 54 Hình Cài đặt thư viện hỗ trợ biến kiểu nguyên thủy Java Acceleo 4.2 Kết thực nghiệm Sau chuẩn bị liệu đầu vào gồm biểu đồ lớp, liệu mẫu cài đặt mã nguồn Acceleo, tiến hành chạy mã nguồn với trình IDE Kết cuối bao gồm Java class Cụ thể có file sinh liệu mẫu PosData.java, ba file java tương ứng ba lớp Table.java, Category.java, Item.java, file mã nguồn chứa thân hàm logic sinh PosSystem.java Hình Lớp mã nguồn Java tạo Kết template mẫu kết hợp mã nguồn sinh cho giao diện sau: • Hiển thị chọn bàn: 55 Hình Template showTable chooseTable • Hiển thị chọn danh mục Hình Template showCategory chooseCategory • Hiển thị chọn item 56 Hình 10 Template showItem chooseItem • Hiển thị kết order: Hình 11 Template register notification Sau chạy thực nghiệm, kết chuyển từ mơ hình sang mã nguồn Java với mong đợi cài đặt Dưới luận văn thông số mô tả phép đo khối lượng đầu vào va kết sau sinh mã nguồn Thứ nhất, trình cài đặt chạy thực nghiệm kéo dài khoảng 10 – 15 phút Thứ hai, mã nguồn sau sinh có tổng cộng 549 dịng lệnh, nhiên cần phải bổ sung 135 dòng lệnh cho việc lấy liệu mẫu, 34 dòng lệnh nhằm xử lý mã nguồn sau sinh đảm bảo cú pháp ngôn ngữ chuyển 57 đổi Như cần đến 169 dịng lệnh hỗ trợ chiếm 23.5% khối lượng cơng việ để đến kết cuối Như vậy, sau nghiên cứu sở lý thuyết thực luận văn tác giả có nhìn bao quát lĩnh vực nghiên cứu liên quan đến mơ hình nói chung phương pháp phát triển phần mềm định hướng mơ hình nói riêng Q trình sau thực nghiệm, có vài phát sinh lưu ý Điều phát sinh thực nghiệm cần bổ sung thêm thư viện gói jar nhằm mục đích đọc liệu mẫu xử lý chúng Thứ hai cần phải lưu ý việc thay đổi mơ hình, thay đổi phương thức tên thuộc tính Việc thay đổi không chỉnh sửa mã nguồn chuyển đổi phải thay đổi cấu hình, lưu lại mã nguồn Acceleo cấu hình biến kiểu nguyên thủy (đã cấu hình trước đó) bị đè cấu hình mặc định, cần phải chép lại, tốn nhiều thời gian Cuối cùng, file mã nguồn sau sinh tự động đặt chung hết package, điều không ảnh hưởng tới việc thực thi cần cấu trúc lại sang package hợp lý hơn, theo số mơ hình có MVC (Model – View – Controller)… 4.3 Tổng kết chương Với kết thu qua thực nghiệm, thấy phần việc quan trọng nhiều công sức nằm quy tắc chuyển đổi mở rộng việc mơ hình hóa hệ thống dạng biểu đồ lớp Tuy nhiên việc mơ hình hóa phải đầy đủ cho kết tốt Nhìn chung việc sinh mã nguồn tự động đạt tỉ lệ tỉ tự động cao, cần lưu ý vài điểm phát sinh bên cạnh việc triển khai đoạn mã cách thủ cơng để chương trình sau sinh mã nguồn thực thi 58 KẾT LUẬN Qua trình nghiên cứu, tìm hiểu thực đề tài “Nghiên cứu kỹ thuật chuyển đổi mơ hình sang văn ứng dụng vào sinh mã nguồn Java”, luận văn có số đóng góp định mở hướng phát triển tương lai Về mặt kiến thức, luận văn trình bày kiến thức tổng quát phát triển hướng mơ hình, trình bày thuật ngữ phạm vi nghiên cứu phát triển hướng mô hình Trong bật kiến thức mơ hình chuyển đổi mơ hình, từ áp dụng chuyển đổi mơ hình vào sinh mã nguồn Java từ biểu đồ lớp class diagram qua thực tiễn sử dụng ngôn ngữ dựa mẫu Acceleo cài đặt liệu mẫu Về mặt thực nghiệm, luận văn định nghĩa quy tắc chuyển đổi mơ hình, xây dựng luật chuyển áp dụng cho ví dụ cụ thể sử dụng ngôn ngữ chuyển đổi mô hình để thực hóa quy tắc chuyển đổi nêu Qua trình nghiên cứu tìm hiểu thực nghiệm, luận văn cho thấy hướng phát triển sinh mã nguồn từ mơ hình biểu đồ lớp Tuy khơng cịn việc sinh mã nguồn Java đáp ứng chức cho phương thức mơ hình biểu đồ lớp chưa có nghiên cứu cụ thể đưa áp dụng Bên cạnh đó, việc sinh mã nguồn mang ý nghĩa giúp mở hướng nghiên cứu xoay quanh quy tắc chuyển đổi, để cải thiện nâng cao tính tự động quy tắc chuyển đổi Tuy nhiên số thiếu xót hạn chế mà thời gian ngắn luận văn chưa thể thực Điều tính đơn giản tốn áp dụng, biểu đồ lớp mơ hình hóa ví dụ cịn chưa có nhiều phương thức khó, giống với thực tế Tiếp đến, việc sinh mã nguồn cần xây dựng mẫu thiết kế, lập trình thêm mặt giao diện, giao diện chưa phù hợp mặt trải nghiệm người dùng Trong lương lai có hội, tác giả tìm hiểu sâu hướng mơ hình việc sinh mã nguồn Java cải tiến chất lượng đầu nhằm tăng tỉ lệ chạy tự động mà phải cài đặt hay cấu hình thủ cơng Nếu cải tiến quy tắc chuyển đổi nhằm tăng khả tự động áp dụng vào tốn khó nhằm khẳng định tính hiệu phương pháp 59 TÀI LIỆU THAM KHẢO Tiếng Anh: Alfred V Aho, Monica S Lam, Ravi Sethi, and Jeffrey D Ullman, AddisonWesley, 2007 Compilers: Principles, Techniques, and Tools, 2nd ed Cuadrado, J.S., Molina, J.G., Tortosa, M.M In Rensink, A., Warmer, J (eds.) ECMDA-FA 2006 LNCS, vol 4066, pp 158–172 Springer, Heidelberg (2006): RubyTL: A Practical, Extensible Transformation Language Frédéric Jouault, Freddy Allilaire, Jean Bézivin, and Ivan Kurtev 72(1-2):31– 39, 2008 ATL: A model transformation tool Science of Computer Programming Hartmut Ehrig, Karsten Ehrig, Ulrike Prange, and Gabriele Taentzer Springer, 2006 Fundamentals of Algebraic Graph Transformation Jean Bézivin, 2005 On the unification power of models: Software and System Modelling Kolovos, D.S., Paige, R.F., Polack, F.A.C In: Vallecillo, A., Gray, J., Pierantonio, A (eds.) ICMT 2008 LNCS, vol 5063, pp 46–60 Springer, Heidelberg (2008) The Epsilon Transformation Language Krzysztof Czarnecki and Simon Helsen IBM Systems Journal, 45(3):621–645, 2006 Feature-based survey of model transformation approaches Marco Brambilla, Jordi Cabot, Manuel Wimmer: Model-Driven Software Engineering in Practice, Second Edittion Markus Völter In Kevlin Henney and Dietmar Schütz, editors, Proc of the 8th European Conference on Pattern Languages of Programs (EuroPLoP’03), pages 285–320, 2003 A catalog of patterns for program generation 10 Nickel, U., Niere, J., Zăundorf, (ICSE 2000), pp 742745 (2000) The FUJABA environment In: Int Conf on Software Engineering 11 “OMG Unified Modeling Language”, [Online] Available: http://www.uml.org [Accessed: Sept 24, 2010] 12 Sébastien Gérard, Patrick Tessier, Bran Selic, Cedric Dumoulin Papyrus: A UML2 Tool for Domain-Specific Language Engineering of Embedded Real-Time Systems Modeling Model-Based 13 Shane Sendall and Wojtek Kozaczynski IEEE Software, 20(5):42–45, 2003 Model transformation: The heart and soul of model-driven software development 60 14 Taentzer, G In: Pfaltz, J.L., Nagl, M., Băohlen, B (eds.) AGTIVE 2003 LNCS, vol 3062, pp 446–453 Springer, Heidelberg (2004) AGG: A Graph Transformation Environment for Modeling and Validation of Software 15 Tom Mens and Pieter Van Gorp Electronic Notes in Theoretical Computer Science, 152:125–142, 2006 A taxonomy of model transformation Tiếng Việt: 16 Nguyễn Huy Hồng, (2014) Thao tác mơ hình phát triển hướng mơ hình 61 ... PHẠM VĂN TRƯỜNG NGHIÊN CỨU KỸ THUẬT CHUYỂN ĐỔI MƠ HÌNH SANG VĂN BẢN VÀ ỨNG DỤNG VÀO SINH MÃ NGUỒN JAVA Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số học viên: 17025008 LUẬN VĂN... QUAN KỸ THUẬT SINH MÃ NGUỒN Chương giới thiệu tổng quan kỹ thuật sinh mã nguồn chính, đặc điểm kỹ thuật sinh mã nguồn, đặc biệt kỹ thuật sinh mã nguồn ngôn ngữ chuyển đổi, ngơn ngữ chuyển đổi. .. ? ?Nghiên cứu kỹ thuật chuyển đổi mơ hình sang văn ứng dụng vào sinh mã nguồn Java” nhằm đáp ứng việc nghiên cứu phương pháp chuyển đổi hướng mơ hình Để thực giai đoạn mơ hình hóa, mơ hình cần bổ