Luận văn ThS 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

67 16 0
Luận văn ThS 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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 MỞ ĐẦU Hiện ngành cơng nghệ thơng tin nói chung phát triển phần mềm nói riêng ngày phát triển xu tất yếu để vươn lên quốc gia Các hệ thống công nghệ thông tin ngày đa dạng, phức tạp cồng kềnh trước nhiều, nhu cầu phát triển tiến hóa mặt kiến trúc Các hệ thống không dừng lại phiên phát triển mà phát sinh nhiều cập nhật Khi trải nghiệm người dùng chức thêm vào với yêu cầu hệ thống đưa ra, phiên phần mềm lại đời cho hoạt động tốt tảng Điều tất nhiên nhằm đáp ứng nhu cầu người dùng thực tế, mặt khác lại gây nhiều phiền phức cho nhà phát triển, lúng túng khâu quản lý, trì phần mềm cách thủ công họ áp dụng phương pháp phát triển cũ Công sức thời gian tiêu tốn cho việc trì lớn Vậy tốn đặt làm để tăng tính tự động, giảm tải chi phí phát sinh bớt khâu thủ công trình phát triển phần mềm Để giải vấn đề này, nhà phát triển chuẩn bị nguồn lực đầu vào cần thiết cách mô hình hóa cách bao qt thành phần hệ thống, phận có liên quan thơng qua quy tắc cú pháp tương ứng cho phương pháp Việc thực thông qua ngôn ngữ mơ hình hóa Kết việc mơ hình hóa giúp việc phát triển phần mềm hướng, giải vấn đề quản lý phiên bản, tăng tính tự động hóa, qua tăng hiệu suất, giảm chi phí phát triển phần mềm Từ yêu cầu phát triển đó, phương pháp phát triển phần mềm hướng mơ hình đời, tập trung mơ hình hóa phần mềm, từ chuyển đổi sang mơ đun, mã nguồn thực thi cơng cụ chuyển đổi mơ hình Từ u cầu thực tế thiết phát triển phần mềm, lựa chọn đề 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” 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ổ sung thêm thơng tin thực chương trình, ví dụ yêu cầu thành phần hệ thống, ràng buộc tảng chức năng, Ngoài ra, hành vi ứng dụng cần mơ hình hóa, tương tác đối tượng, phương thức sử dụng, khai báo xử lý kết trả bên cạnh việc tập trung vào tìm hiểu nghiên cứu kỹ thuật chuyển đổi mơ hình dựa theo giải pháp ModelToText, luận văn hướng tới việc xây dựng quy tắc sinh mã nguồn Java cách tự động áp dụng cho toán cụ thể Kết đạt gồm tệp mã nguồn Java kết hợp với cấu hình cần thiết để thực thi kiểm tra chương trình sau sinh tự động Cấu trúc luận văn chia thành mục sau: Chương 1: Tổng quan phương pháp phát triển hướng mơ hình phát triển phần mềm (MDSD/MDSE) Chương tập trung đề cập đến phương pháp phát triển hướng mơ hình phát triển phần mềm, tìm hiểu thuật ngữ thành phần thiết yếu Sau trình bày cụ thể phạm vi chuyển đổi mơ hình, gồm chuyển đổi mơ hình sang mơ hình mơ hình sang văn Chương 2: Hướng tới khía cạnh cụ thể chuyển đổi mơ hình sang văn bản, với ứng dụng phổ biến sinh mã nguồn tự động (Code generation) Khi áp dụng phương pháp này, chế tác sinh từ mơ hình chương tập trung vào chế tác sinh mã nguồn tự động, sử dụng công cụ chuyển đổi, ngôn ngôn ngữ chuyển đổi, cụ thể áp dụng ngôn ngữ Acceleo Qua thống kê đánh giá mặt tích cực, hạn chế phương pháp áp dụng Chương 3: Với khía cạnh sinh mã nguồn trình bày chương trước, chương tập trung nghiên cứu toán cụ thể sinh mã nguồn Java từ biểu đồ lớp với input/output cần thiết Ứng với toán này, chương mơ tả quy tắc chuyển đổi, ví dụ áp dụng, template, liệu mẫu… Chương 4: Cài đặt ví dụ cụ thể phương pháp áp dụng chuyển đổi mơ hình sang mã nguồn Java kết thực nghiệm, đánh giá kết đạt (kết quả, hạn chế) hướng nghiên cứu, phát triển tương lai CHƯƠNG KIẾN THỨC NỀN TẢNG Chương khái quát kiến thức tảng xoay quanh đề tài nghiên cứu, thuật ngữ công cụ hỗ trợ Chương gồm phần chính: tổng quan phát triển phần mềm hướng mơ hình khái niệm cốt lõi, chuyển đổi từ mô hình sang mơ hình từ mơ hình sang văn bản, phần cuối tổng kết chương 1.1 Phát triển phần mềm hướng mơ hình Mơ hình (model) trừu tượng hệ thống thường sử dụng để thay cho hệ thống nghiên cứu Nhìn chung, mơ hình đại diện cho nhìn đơn giản phân mảnh phần hệ thống, vậy, việc tạo nhiều mô hình cần thiết để thể hiểu rõ hệ thống tiếp cận nghiên cứu Mơ hình hóa phương pháp kỹ thuật tiếng áp dụng lĩnh vực kỹ thuật lĩnh vực khác Vật lý, Tốn học, Sinh học, Kinh tế, Chính trị Triết học… Tuy nhiên, luận văn tập trung vào mơ hình bối cảnh cụ thể lĩnh vực kỹ thuật phần mềm Điều có nghĩa mơ hình có chất dựa ngơn ngữ có xu hướng mơ tả quy định hệ thống đó, ví dụ với mơ hình Tốn học vốn hiểu diễn giải lý thuyết Các mơ hình cho phép chia sẻ tầm nhìn chung bên liên quan mặt kỹ thuật phi kỹ thuật, tạo điều kiện thúc đẩy giao tiếp bên Hơn nữa, mơ hình cịn làm cho việc lập kế hoạch dự án hiệu đồng thời cung cấp nhìn phù hợp hệ thống phát triển qua cho phép kiểm sốt dự án theo tiêu chí đặt từ ban đầu Ngày nay, xu hướng tiếp cận xuất hiện, với góc nhìn mơ hình khơng chế tác mặt tài liệu, mà chế tác việc triển khai thực lĩnh vực kỹ thuật phần mềm, cho phép tạo thực thi tự động hệ thống phần mềm Các đề xuất xoay quanh mơ gọi chung “Kỹ thuật phát triển phần mềm theo hướng mơ hình (Model-Driven Software Enginerring – MDSE)” Đây kỹ thuật cụ thể, mà cách tiếp cận, nhằm mục đích định hướng vấn đề theo hướng mơ hình hóa Kỹ thuật phát triển phần mềm theo hướng mơ hình (MDSE) hiểu phương pháp luận nhằm áp dụng ưu điểm mô hình hóa vào kỹ thuật phần mềm Trong ngữ cảnh MDSE, khái niệm cốt lõi là: mô hình phép chuyển đổi (transformation) tức hoạt động thao tác mơ hình Dưới phương trình tiếng tác giả Niklaus Wirth [8] cho thấy chương trình tạo từ thành phần cốt lõi: Algorithms + Data Structures = Programs Điều có nghĩa chương trình tạo nên từ thành phần gồm: Thuật tốn (Algorithms) Cấu trúc liệu (Data Structures) Tuy nhiên ngữ cảnh MDSE, điều nhìn nhận góc nhìn khác, chương trình (có thể hiểu sản phẩm phần mềm) tạo thành từ thành phần chính: mơ hình phép chuyển đổi: Models + Transformations = Software Rõ ràng, mơ hình phép chuyển đổi cần thể dạng ký hiệu ngơn ngữ đó, mà MDSE gọi ngơn ngữ mơ hình hóa (theo cách tương tự phương trình Wirth, thuật toán cấu trúc liệu cần định nghĩa số ngơn ngữ lập trình) Tuy nhiên, điều chưa đủ Phương trình khơng cho biết loại mơ hình theo thứ tự nào, mức trừu tượng nào… cần xác định tùy thuộc vào loại phần mềm muốn tạo Đó lúc q trình lựa chọn theo mơ hình phát huy tác dụng Cuối cần cơng cụ thích hợp để làm cho MDSE khả thi hữu ích thực tế Đối với lập trình, cần IDE (Integrated Development Environment – Mơi trường tích hợp phát triển) cho phép xác định mơ hình phép chuyển đổi trình biên dịch trình thơng dịch để thực thi chúng nhằm tạo tạo tác phần mềm cuối Dưới góc nhìn MDSE giống ngun tắc “mọi thứ đối tượng”, MDSE coi “mọi thứ mơ hình”, hữu ích thúc đẩy công nghệ theo hướng đơn giản, tổng qt sức mạnh tích hợp cho ngơn ngữ công nghệ hướng đối tượng năm 1980 [5] Trên thực tế bối cảnh này, người ta nghĩ đến tất thành phần mơ tả thứ mơ hình hóa Đặc biệt, người ta xem phép chuyển đổi mơ hình hoạt động cụ thể mơ hình Bản thân định nghĩa ngơn ngữ mơ hình hóa xem mơ hình: MDSE đề cập đến quy trình siêu mơ hình hóa (tức mơ hình hóa mơ hình, thế…) Theo cách này, người ta định nghĩa mơ quy trình, cơng cụ phát triển chương trình kết Phần tiếp theo, luận văn lướt qua khái niệm, thuật ngữ nhằm tăng hiểu biết cần thiết phương pháp luận MDSE trước áp dụng vào toán ngữ cảnh cụ thể 1.1.1 Các thuật ngữ Hình 1.1 cho thấy cách trực quan mối quan hệ thuật ngữ mô tả phương pháp mơ hình hóa [8] 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 tồ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 qt 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 cị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 446453 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 Hoàng, (2014) Thao tác mơ hình phát triển hướng mơ hình 61 ... 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 Tiếp tập trung khai thác kỹ thuật sinh mã nguồn sử dụng ngôn... ? ?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ổ... 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

Ngày đăng: 09/08/2021, 11:50

Hình ảnh liên quan

Hình 1.6. Phân tách giữa các mô hình dựa trên lớp. - Luận văn ThS 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

Hình 1.6..

Phân tách giữa các mô hình dựa trên lớp Xem tại trang 16 của tài liệu.
Hình 1. 9. Chế độ view các thuộc tính của Papyrus. - Luận văn ThS 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

Hình 1..

9. Chế độ view các thuộc tính của Papyrus Xem tại trang 18 của tài liệu.
Hình 1. 10. Vai trò và định nghĩa của phép biến hình giữa các mô hình. - Luận văn ThS 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

Hình 1..

10. Vai trò và định nghĩa của phép biến hình giữa các mô hình Xem tại trang 20 của tài liệu.
Hình 1. 13. Các giai đoạn thực thi chuyển đổi ATL. - Luận văn ThS 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

Hình 1..

13. Các giai đoạn thực thi chuyển đổi ATL Xem tại trang 23 của tài liệu.
1.2.2.1. Mô hình và định nghĩa mã nguồn - Luận văn ThS 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

1.2.2.1..

Mô hình và định nghĩa mã nguồn Xem tại trang 26 của tài liệu.
Hình 1. 15. Mẫu, công cụ mẫu và mô hình nguồn để tạo văn bản. - Luận văn ThS 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

Hình 1..

15. Mẫu, công cụ mẫu và mô hình nguồn để tạo văn bản Xem tại trang 28 của tài liệu.
Hình 2.2. Tạo mã thông qua ngôn ngữ lập trình – mã Java tạo mã Java. - Luận văn ThS 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

Hình 2.2..

Tạo mã thông qua ngôn ngữ lập trình – mã Java tạo mã Java Xem tại trang 32 của tài liệu.
Hình 2.3. Đoạn trích mô hình sMVCML và mã nguồn tương ứng. - Luận văn ThS 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

Hình 2.3..

Đoạn trích mô hình sMVCML và mã nguồn tương ứng Xem tại trang 33 của tài liệu.
Hình 2.4. Sinh mã nguồn dựa trên ngôn ngữ lập trình (Java). - Luận văn ThS 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

Hình 2.4..

Sinh mã nguồn dựa trên ngôn ngữ lập trình (Java) Xem tại trang 34 của tài liệu.
Hình 2.5. Một ứng dụng điển hình có thể chuyển. - Luận văn ThS 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

Hình 2.5..

Một ứng dụng điển hình có thể chuyển Xem tại trang 36 của tài liệu.
Hình 2. 6. Ngôn ngữ chuyển đổi MOFScript. - Luận văn ThS 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

Hình 2..

6. Ngôn ngữ chuyển đổi MOFScript Xem tại trang 37 của tài liệu.
Hình 2.8. Mô-đun trình chỉnh sửa Acceleo với cú pháp. - Luận văn ThS 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

Hình 2.8..

Mô-đun trình chỉnh sửa Acceleo với cú pháp Xem tại trang 38 của tài liệu.
Hình 3.2. Thuộc tính và phương thức lớp Table. - Luận văn ThS 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

Hình 3.2..

Thuộc tính và phương thức lớp Table Xem tại trang 44 của tài liệu.
Hình 3.3. Thuộc tính và phương thức lớp Category. - Luận văn ThS 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

Hình 3.3..

Thuộc tính và phương thức lớp Category Xem tại trang 45 của tài liệu.
Sau khi có được biểu đồ lớp mô hình hóa tính năng Ordering, phần này sẽ trình bày các quy tắc nhằm ánh xạ biểu đồ lớp sang mã nguồn Java - Luận văn ThS 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

au.

khi có được biểu đồ lớp mô hình hóa tính năng Ordering, phần này sẽ trình bày các quy tắc nhằm ánh xạ biểu đồ lớp sang mã nguồn Java Xem tại trang 47 của tài liệu.
Hình 3.5. Ánh xạ từ lớp trong biểu đồ sang lớp trong mã nguồn Java [8]. - Luận văn ThS 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

Hình 3.5..

Ánh xạ từ lớp trong biểu đồ sang lớp trong mã nguồn Java [8] Xem tại trang 49 của tài liệu.
Bảng 3.5. Sử dụng Acceleo ánh xạ từ biểu đồ lớp sang mã nguồn Java - Luận văn ThS 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

Bảng 3.5..

Sử dụng Acceleo ánh xạ từ biểu đồ lớp sang mã nguồn Java Xem tại trang 50 của tài liệu.
Hình 3. 6. Mã nguồn Acceleo chuyển đổi tĩnh. - Luận văn ThS 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

Hình 3..

6. Mã nguồn Acceleo chuyển đổi tĩnh Xem tại trang 51 của tài liệu.
Hình 3. 8. Mã nguồn Acceleo chuyển đổi phương thức chooseItem. - Luận văn ThS 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

Hình 3..

8. Mã nguồn Acceleo chuyển đổi phương thức chooseItem Xem tại trang 52 của tài liệu.
Hình 3. 7. Mã nguồn Acceleo chuyển đổi phương thức showItem. - Luận văn ThS 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

Hình 3..

7. Mã nguồn Acceleo chuyển đổi phương thức showItem Xem tại trang 52 của tài liệu.
Hình 3. 9. Mã nguồn Acceleo chuyển đổi phương thức register và notification. - Luận văn ThS 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

Hình 3..

9. Mã nguồn Acceleo chuyển đổi phương thức register và notification Xem tại trang 53 của tài liệu.
Hình 4.1. Tạo mới dự án Acceleo trong Eclipse. - Luận văn ThS 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

Hình 4.1..

Tạo mới dự án Acceleo trong Eclipse Xem tại trang 56 của tài liệu.
được mô tả trong hình sau: - Luận văn ThS 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

c.

mô tả trong hình sau: Xem tại trang 56 của tài liệu.
Bảng 4.3. Bảng dữ liệu mẫu dưới dạng JSON - Luận văn ThS 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

Bảng 4.3..

Bảng dữ liệu mẫu dưới dạng JSON Xem tại trang 58 của tài liệu.
Hình 4. 5. Cài đặt module và template mã nguồn Acceleo. - Luận văn ThS 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

Hình 4..

5. Cài đặt module và template mã nguồn Acceleo Xem tại trang 60 của tài liệu.
Hình 4. 6. Cài đặt thư viện hỗ trợ biến kiểu nguyên thủy Java trong Acceleo. - Luận văn ThS 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

Hình 4..

6. Cài đặt thư viện hỗ trợ biến kiểu nguyên thủy Java trong Acceleo Xem tại trang 61 của tài liệu.
Hình 4. 8. Template showTable và chooseTable. - Luận văn ThS 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

Hình 4..

8. Template showTable và chooseTable Xem tại trang 62 của tài liệu.
Hình 4. 9. Template showCategory và chooseCategory. - Luận văn ThS 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

Hình 4..

9. Template showCategory và chooseCategory Xem tại trang 62 của tài liệu.
Hình 4. 10. Template showItem và chooseItem. - Luận văn ThS 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

Hình 4..

10. Template showItem và chooseItem Xem tại trang 63 của tài liệu.
Hình 4. 11. Template register và notification. - Luận văn ThS 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

Hình 4..

11. Template register và notification Xem tại trang 63 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan