Luận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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 JavaLuận văn Thạc sĩ Công nghệ thông tin: 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
ĐẠ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 MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC HÌNH ẢNH VÀ ĐỒ THỊ vi DANH MỤC BẢNG BIỂU viii MỞ ĐẦU .1 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 10 1.1.5.1 Định nghĩa 10 1.1.5.2 Các thành phần 11 1.1.6 1.2 Chuyển đổi mơ hình 12 1.2.1 Chuyển đổi mơ hình sang mơ hình 14 1.2.1.1 Chuyển đổi mơ hình phân loại 14 1.2.1.2 Ngoại sinh chuyển đổi bên .16 1.2.1.3 Nội sinh chuyển đổi nội .18 1.2.1.4 Chuỗi chuyển đổi mơ hình 19 1.2.2 1.3 Công cụ 11 Chuyển đổi mơ hình sang văn 19 1.2.2.1 Mơ hình định nghĩa mã nguồn .20 1.2.2.2 Sinh mã nguồn tự động 21 1.2.2.3 Những lợi ích ngơn ngữ chuyển đổi mơ hình sang văn M2T 21 Tổng kết chương 23 CHƯƠNG TỔNG QUAN KỸ THUẬT SINH MÃ NGUỒN 24 2.1 Giới thiệu 24 iii 2.2 Sinh mã nguồn ngơn ngữ lập trình 24 2.3 Sinh mã nguồn ngơn ngữ chuyển đổi mơ hình .29 2.4 Kỹ thuật sinh mã nguồn sử dụng ngôn ngữ chuyển đổi Acceleo 31 2.4.1 Tổng quan 31 2.4.2 Ví dụ 33 2.5 Tổng kết chương 35 CHƯƠNG SINH TỰ ĐỘNG MÃ NGUỒN JAVA TỪ BIỂU ĐỒ LỚP BẰNG ACCELEO 36 3.1 Giới thiệu 36 3.2 Nghiên cứu tình .36 3.2.1 Biểu đồ lớp 37 3.2.2 Cách thức thực 41 3.3 Đặc tả chuyển Acceleo .43 3.3.1 Quy tắc chuyển đổi .43 3.3.1.1 Quy tắc chuyển đổi tĩnh .43 3.3.1.2 Quy tắc chuyển đổi mở rộng .45 3.4 Template liệu mẫu 47 3.5 Tổng kết chương 48 CHƯƠNG CÀI ĐẶT VÀ THỰC NGHIỆM 49 4.1 Môi trường cài đặt .49 4.1.1 Cấu hình phần cứng, phần mềm .49 4.1.2 Dữ liệu đầu vào 51 4.1.3 Cách thức thực 52 4.1.3.1 Cài đặt liệu mẫu 52 4.1.3.2 Cài đặt mã nguồn Acceleo 53 4.2 Kết thực nghiệm 55 4.3 Tổng kết chương 58 KẾT LUẬN 59 TÀI LIỆU THAM KHẢO 60 iv DANH MỤC KÝ HIỆU CÁC CHỮ VIẾT TẮT Chữ viết tắt Chú giải MDSE Model-Driven Software Enginerring IDE Integrated Development Environment MDD Model-Driven Development MDA Model-Driven Architecture UML Unified Modeling Language XMI XML Metadata Interchange M2M Model To Model M2T Model To Text ATL ATLAS Transformation Language OCL Object Constraint Language PIM Platform-Independent Model PSM Platform-Specific Models JSP Java Server Pages MOF Meta-Object Facility XSTL eXtensible Stylesheet Language Transformations 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 8 10 11 12 12 14 15 16 17 20 22 25 26 27 28 30 31 31 32 34 35 37 38 39 40 43 45 46 46 47 50 50 51 51 54 55 55 56 Hình 13 Template showCategory chooseCategory Hình 14 Template showItem chooseItem Hình 15 Template register notification vii 56 57 57 DANH MỤC BẢNG BIỂU Bảng Quy tắc ánh xạ từ biểu đồ lớp sang mã nguồn Java Bảng Quy tắc ánh xạ từ phương thức showItemList() sang mã nguồn Java Bảng 3 Quy tắc ánh xạ phương thức chooseItem() sang mã nguồn Java Bảng Quy tắc ánh xạ phương thức register() notification() sang mã nguồn Java Bảng Sử dụng Acceleo ánh xạ từ biểu đồ lớp sang mã nguồn Java Bảng Cấu hình phần cứng Bảng Cấu hình phần mềm Bảng Bảng liệu mẫu dạng JSON viii 41 42 42 42 44 49 49 52 Nếu tên phương thức duyệt chứa “chooseItem” sinh mã nguồn tương ứng, mã nguồn cài đặt sẵn RadioButton trường hợp chọn (click), sau kiểm tra trạng thái item, hợp lệ gán vào biến kết Quy tắc số 4: Đăng ký lưu, hiển thị kết Cuối quy tắc chuyển đổi phương thức thông báo đăng ký (notification, register) Phương thức đăng ký tính giá item gán kết cuối vào biến toàn cục ghi kết file (có thể dùng cho in hóa đơn sau cần) Phương thức thông báo chủ yếu gán kết cuối vào biến toàn cục nhằm hiển thị thông tin thời điểm thao tác (VD: chọn bàn, chọn danh mục hay chọn món…) Hình Mã nguồn Acceleo chuyển đổi phương thức register notification 3.4 Template liệu mẫu Luận văn áp dụng quy tắc chuyển đổi nhằm sinh mã nguồn từ class diagram, nhiên thực thi mã nguồn lập tức, mà phải dựa template cụ thể, xây dựng sẵn áp dụng cho toán cụ thể Template mẫu giao diện người dùng, áp dụng mã nguồn Java swing với component sau: JFrame, ButtonGroup, ImageIcon, JButton, JLabel, JMenu, JRadioButton Trong JFrame nhằm khởi tạo khung template mẫu, ButtonGroup, JButton, JRadioButton để hỗ trợ việc hiển thị danh sách phần tử áp dụng Quy tắc số 2, Quy tắc số 3, bên cạnh component JOptionPanel, JFrame hỗ trợ việc thông báo, đăng ký Quy tắc số Bên cạnh đó, để thực thi mã nguồn, template mã nguồn chuyển đổi, cần liệu mẫu để kiểm tra tính quy tắc Tính đắn kiểm tra dựa 47 theo liệu mẫu, xem output hiển thị có với liệu mẫu hay khơng Bộ liệu mẫu đưa vào dạng JSON (JavaScript Object Notation) nạp vào biến mã nguồn 3.5 Tổng kết chương Từ khía cạnh chuyển đổi mơ hình sang văn bản, sinh mã nguồn Java từ biểu đổ lớp toán cụ thể Biểu đồ lớp biểu đồ UML thiết kế gồm nhiều thành phần, chủ yếu xoay quanh thuộc tính phương thức lớp Sau có mơ hình đầu vào, để chuyển đổi mơ hình tự động yếu tố quan trọng phép chuyển đổi, cụ thể quy tắc chuyển đổi Để áp dụng sinh mã nguồn Java từ biểu đồ lớp cần quy tắc chuyển đổi tĩnh quy tắc chuyển đổ mở rộng Ngoài việc sinh mã nguồn tĩnh, chưa thể thực thi quy tắc tĩnh, quy tắc mở rộng linh động hơn, có nhiều mã nguồn logic sinh tự động nhằm mơ tả xác thành phần hệ thống mô hình hóa Tuy nhiên quy tắc mở rộng cần áp dụng dựa mơ hình cho miền ứng dụng cụ thể Luận văn nghiên cứu tình với tính Ordering miền ứng dụng POS cụ thể hóa quy tắc chuyển đổi ngơn ngữ Acceleo Bên cạnh cần bổ sung template mẫu liệu mẫu nhằm chuẩn bị liệu cho việc thực thi mã nguồn sau sinh tự động 48 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 Bảng Cấu hình phần cứng Thành phần Cấu hình tối thiểu / phiên Bộ xử lý (CPU) 1GHZ Bộ nhớ (RAM) 1GB Bộ nhớ trống 16GB 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: Bảng Cấu hình phần mềm Thành phần Cấu hình tối thiểu / phiên Hệ điều hành Windows / macOS / Linux Java JDK 7u80 Eclipse Eclipse 2020-06 Acceleo 3.1 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 "tableInformation": [ { "id": "1", "name": "Table number "status": true }, { "id": "2", "name": "Table number "status": true }, { "id": "3", "name": "Table number "status": true }, { "id": "4", "name": "Table number "status": false }, { "id": "5", "name": "Table number "status": true } ] { "categoryInformation": [ { "id": "1", "name": "Fish", "type": "Food", "status": true }, { "id": "2", "name": "Chicken", "type": "Food", "status": true }, { "id": "3", "name": "Pizza", "type": "Food", "status": true }, { "id": "4", "name": "Beer", "type": "Drink", "status": true }, { "id": "5", "name": "Water", "type": "Drink", "status": false } ] 52 1", 2", 3", 4", 5", } Dữ liệu Item { "itemInformation": [ { "id": "1", "name": "Shark", "price": 75000, "discount": 0, "type": "Fish", "status": true }, { "id": "2", "name": "Ray", "price": 60000, "discount": 0, "type": "Fish", "status": true }, { "id": "3", "name": "Turkey", "price": 50000, "discount": 10000, "type": "Chicken", "status": true }, { "id": "4", "name": "Cock", "price": 25000, "discount": 5000, "type": "Chicken", "status": false }, { "id": "5", "name": "Seafood pizza", "price": 30000, "discount": 0, "type": "Pizza", "status": true } ] } 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 tồ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) 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 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 Modeling Model-Based Engineering of Embedded Real-Time Systems 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 ... 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ã. .. 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ổ