Xây dựng và thử nghiệm công cụ Codeger-Uwe phát triển ứng dụng Web hướng mô hình
Công cụ hỗ trợ đầy đủ là yếu tố quan trọng
quyết định thành công của phương pháp hoặc kỹ
thuật phát triển phần mềm nói chung và của ứng dụng
web nới riêng [1]. Việc sử dụng công cụ sinh mã sẽ
cải thiện quy trình phát triển phần mềm và làm tăng
chất lượng của mã được tạo ra [2]. Đối với phương
pháp UWE (UML-based Web Engineering) cũng đã
có một số công cụ như ArgoUWE, UWE4JSF [3],
đây là công cụ tự động sinh mã ứng dụng Web với
nền tảng JSF (JavaServer Faces) từ mô hình UWE,
bao gồm một chuỗi các plugin được tích hợp trong
môi trường mô hình hóa Eclipse EMF (Eclipse
Modeling Framework), được xây dựng và đóng gói
thành các thư viện Java (.jar), đây là minh chứng cho
khả năng sinh mã nguồn cho ứng dụng Web hướng
mô hình theo kỹ thuật UWE, nhưng hiện tại đã không
còn được tiếp tục phát triển, và không thể vận hành
với các phiên bản mới của Eclipse cũng như UWE
profile. Công cụ MagicUWE hỗ trợ thiết kế hệ thống
ứng dụng web với phương pháp UWE [4], giúp phát
triển ứng dụng web các hoạt động lập mô hình bằng
cách sử dụng cấu hình UWE và chuyển đổi giữa các
Received: February 24, 2020; accepted: July 24, 2020
mô hình UWE. MagicUWE được triển khai như một
plugin cho công cụ MagicDraw. Tuy nhiên, công cụ
này chủ yếu tập trung vào chuyển đổi mô hình, chưa
tập trung cho việc sinh mã. Trong bài báo này, chúng
tôi trình bày công cụ CODEGER-UWE, một plugin
được chúng tôi xây dựng và tích hợp trong phần mềm
MagicDraw cho phép sinh mã nguồn từ bốn mô hình
UWE tương ứng với các thành phần trong mô hình
Web MVC (Model–view–controller) [5].
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Tóm tắt nội dung tài liệu: Xây dựng và thử nghiệm công cụ Codeger-Uwe phát triển ứng dụng Web hướng mô hình
inh mã tự động Abstract In this paper, we present a CODEGER-UWE tool to support model-driven web application development. The CODEGER-UWE tool has integrated rules for transformation model and code generation rules to create web applications for the JSF platform automatically. CODEGER-UWE implemented as a plugin for the MagicDraw tool which allows the generation of source code from UWE models that correspond to the components of the MVC model. This is a tool with a clear, handy development process, applying tools to develop web applications that will greatly reduce the time for developing Web applications. Keywords: CODEGER-UWE, model driven software development, web application development tools, automated code generation 1. Giới thiệu1 Công cụ hỗ trợ đầy đủ là yếu tố quan trọng quyết định thành công của phương pháp hoặc kỹ thuật phát triển phần mềm nói chung và của ứng dụng web nới riêng [1]. Việc sử dụng công cụ sinh mã sẽ cải thiện quy trình phát triển phần mềm và làm tăng chất lượng của mã được tạo ra [2]. Đối với phương pháp UWE (UML-based Web Engineering) cũng đã có một số công cụ như ArgoUWE, UWE4JSF [3], đây là công cụ tự động sinh mã ứng dụng Web với nền tảng JSF (JavaServer Faces) từ mô hình UWE, bao gồm một chuỗi các plugin được tích hợp trong môi trường mô hình hóa Eclipse EMF (Eclipse Modeling Framework), được xây dựng và đóng gói thành các thư viện Java (.jar), đây là minh chứng cho khả năng sinh mã nguồn cho ứng dụng Web hướng mô hình theo kỹ thuật UWE, nhưng hiện tại đã không còn được tiếp tục phát triển, và không thể vận hành với các phiên bản mới của Eclipse cũng như UWE profile. Công cụ MagicUWE hỗ trợ thiết kế hệ thống ứng dụng web với phương pháp UWE [4], giúp phát triển ứng dụng web các hoạt động lập mô hình bằng cách sử dụng cấu hình UWE và chuyển đổi giữa các ISSN: 2734-9381 https://doi.org/10.51316/jst.149.etsd.2021.1.2.6 Received: February 24, 2020; accepted: July 24, 2020 mô hình UWE. MagicUWE được triển khai như một plugin cho công cụ MagicDraw. Tuy nhiên, công cụ này chủ yếu tập trung vào chuyển đổi mô hình, chưa tập trung cho việc sinh mã. Trong bài báo này, chúng tôi trình bày công cụ CODEGER-UWE, một plugin được chúng tôi xây dựng và tích hợp trong phần mềm MagicDraw cho phép sinh mã nguồn từ bốn mô hình UWE tương ứng với các thành phần trong mô hình Web MVC (Model–view–controller) [5]. Quá trình phát triển của UWE là phát triển từ quy trình thủ công thông qua quy trình định hướng mô hình bán tự động (dựa trên các loại biến đổi mô hình khác nhau [6]. Áp dụng những nguyên lý của MDA, mục tiêu tiếp cận của UWE là xây dựng các tập của CIM (Computation Independent Model), PIM (Platform-Independent Model) và PSM (Platform- Specific Model) là kết quả của việc phân tích, thiết kế và cài đặt quá trình định hướng mô hình. Mục đích giai đoạn phân tích là tập hợp được một tập các yêu cầu ổn định, các yêu cầu chức năng sẽ được mô tả lại bởi ý nghĩa của các mô hình yêu cầu. Mô hình yêu cầu bao gồm các ‘use cases’ chuyên biệt và các ‘class model’ cho ứng dụng Web. Giai đoạn thiết kế bao gồm việc xây dựng một loạt các mô hình ở mức độ độc lập nền tảng. Sau đó các mô hình thiết kế được chuyển đổi để thực hiện trên các nền tảng cụ thể [7]. JST: Engineering and Technology for Sustainable Development Vol. 1, Issue 2, April 2021, 035-039 36 Quy trình bắt đầu bằng mức mô hình nghiệp vụ (CIM) định nghĩa một mô hình yêu cầu. Các mô hình thiết kế độc lập nền hệ thống (các PIM) được dẫn xuất từ mô hình yêu cầu này. Tập các mô hình thiết kế này biểu diễn các mối quan tâm khác nhau của các ứng dụng Web. Nó bao gồm nội dung (content), điều hướng (navigation), xử lý (process), trình bày (presentation). Trong các nghiên cứu [6, 8-10] các tác giả đã đề xuất các quy tắc chuyển đổi mô hình từ CIM sang PIM sang PSM và [11] bổ sung bộ quy tắc chuyển đổi từ mô hình yêu cầu sang mô hình xử lý và mô hình trình bày, nhằm cải thiện quá trình chuyển đổi tự động cho các ứng dụng web sử dụng UWE. Trong [6] đã đề xuất chuyển đổi mô hình hỗ trợ cho nhà thiết kế các hoạt động tạo lập mô hình bằng cách sử dụng cấu hình UWE và tạo mô hình bán tự động. Tuy nhiên, còn nhiều thành phần của mô hình vẫn phải xây dựng lại thủ công, việc sinh code mới chỉ dừng lại ở việc tạo ra các khung để lập trình viên viết code. Chính vì vậy, chúng tôi dựa vào các quy tắc chuyển đổi mô hình trong [11, 15] để đề xuất xây dựng một số quy tắc, giải thuật sinh code tự động nhằm cải tiến, nâng cao hiệu quả chuyển đổi từ mô hình sang code với công cụ CODEGER-UWE. Nội dung còn lại của bài báo được cấu trúc như sau: Phần 2 trình bày cấu trúc của công cụ CODEGER-UWE, phần 3 thử nghiệm và đánh giá CODEGER –UWE, phần 4 kết luận và đề xuất. 2. Kiến trúc của công cụ CODEGER-UWE Hình 1. Kiến trúc CODEGER –UWE Trong [11] và [15] chúng tôi bổ sung 11 quy tắc chuyển đổi mô hình CIM sang PIM. Trong [15], chúng tôi cũng đề xuất 10 quy tắc cùng với 03 giải thuật chuyển đổi từ PIM sang PSM và từ PSM sang code: - CM2M (Content Model to Model Code Genenation) - CM2V (Presenation Model to View Code Generation) - NPROM2C (Navigation and Processing Model to Controller Code Generation - Kiến trúc của công cụ CODEGER –UWE được thể hiện tại Hình 1. Hình 2. Chuyển đổi mô hình PIM sang PSM, mã nguồn trong CODEGER -UWE Chuyển đổi mô hình được phân chia thành một vài mô-đun. Công việc cần làm là thiết lập từng mô- đun cho mỗi công đoạn chuyển đổi mô hình UWE. Mô-đun các quy tắc chuyển đổi mô hình (CIM to PIM). Để chuyển đổi từ CIM sang PIM, đầu vào là mô hình yêu cầu (CIM), dựa trên UML Metamodel, UWE Metamodel và UWE Profile được ánh xạ với nhau với mô hình Trong đó, mô hình nội dung (content) chúng tôi đã tích hợp các luật chuyển đổi C2O, S2O; Mô hình điều hướng (navigation) các luật C2N, P2N, A2N; Mô hình xử lý (process) các luật U2C, S2C, U2U, S2S; Mô hình biểu diễn (presentation) gồm các luật D2G, P2E. UWE Profile và UWE Meta-model được ánh xạ với nhau, chúng gồm các phần có quan hệ tuyến tính với nhau. Ngoài ra, UWE Meta-model còn là sự mở rộng của UML Meta-model nên việc chuyển đổi gồm các luật (quy tắc) chuyển đổi khuôn mẫu UML (stereotype) sang các thành phần tương ứng của UWE Meta-model và các thành phần UML cơ bản được lồng ghép vào. Trong Hình 1, mô-đun các quy tắc và giả thuật sinh code, được chúng tôi tích hợp quy tắc CM2M sinh mã thành phần Model từ mô hình nội dung; Quy tắc PRES2V sinh mã thành phần View từ mô hình trình bày và Quy tắc NPROM2C sinh mã thành phần Controller từ mô hình điều hướng và xử lý. Chuyển đổi từ CIM sang PIM đơn thuần chỉ là ánh xạ giữa mô hình UML và mô hình UWE. Đối với chuyển đổi PIM sang PSM, trong CODEGER-UWE áp dụng phương pháp khuôn mẫu và metamodel, kết hợp với sự tương đồng về mặt định nghĩa của bốn mô hình trong UWE là mô hình nội dung, điều hướng, xử lý, trình bày với ba thành phần trong mô hình MVC, nhóm nghiên cứu đề xuất quy trình chuyển đổi MDA (Model-Driven Architecture) cho kỹ thuật UWE như Hình 2. JST: Engineering and Technology for Sustainable Development Vol. 1, Issue 2, April 2021, 035-039 37 Mô hình nội dung (mức PIM) được chuyển đổi sang JavaModel (mức PSM), là một thể hiện của Java metamodel, sau đó chuyển đổi sang mã nguồn Java, tương ứng thành phần Model với giải thuật chuyển đổi có tên là CM2M. Mô hình điều hướng và xử lý được chuyển đổi sang JavaModel, sau đó được chuyển đổi sang mã nguồn Java, tương ứng thành phần Controller (Hình 3). Giải thuật chuyển đổi có tên NPROM2C; Mô hình trình bày được chuyển đổi sang JSPModel, là một thể hiện của JSP metamodel, sau đó giải thuật PRES2V chuyển đổi sang mã JSP, tương ứng thành phần View (Hình 4, 5). Hình 3. Quy trình sinh mã nguồn từ mô hình nội dung Hình 4. Quy trình sinh mã nguồn từ mô hình điều hướng 3. Thử nghiệm và đánh giá CODEGER –UWE Công cụ CODEGER –UWE đã được hoàn thiện. Toàn bộ mã nguồn được cài đặt, lưu trữ trên Github [16], tuân thủ các quy định phần mềm nguồn mở. Trong công cụ này, quá trình chuyển đổi mô hình nền tảng độc lập PIM sang mô hình nền tảng cụ thể PSM là quá trình chuyển đổi được xây dựng trên một nền tảng Web cụ thể và các luật chuyển đổi được xây dựng tương ứng với mô hình MVC, trong đó những mối quan tâm của một ứng dụng Web tương ứng với vai trò của Model (nội dung), View (trình bày) và Controller (điều hướng và xử lý). Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác, giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì. Để thử nghiệm và đánh giá công cụ CODEGER –UWE chúng tôi áp dụng ví dụ Music Portal [5]. Đây là một ứng về cổng thông tin âm nhạc cho phép người dùng mua album và sau đó có thể được tải xuống dưới dạng tệp MP3, được sử dụng nhiều để thử nghiệm các thuật toán chuyển đổi mô hình Hình 5. Quy trình sinh mã JSP từ mô hình trình bày Quy trình thực hiện như sau: Bước 1: Xác định đầu vào của công cụ Các yêu cầu trong UWE được mô hình hóa bằng biểu đồ use case, CODEGER –UWE cho phép chuyển đổi từ mô hình yêu cầu (Use case) sang mô hình nội dung, điều hướng, xử lý và trình bày với các quy tắc chuyển đổi đã được chúng tôi bổ sung, phát triển, giúp cho quá trình chuyển đổi mô hình hiệu quả hơn. Bước 2: Thực hiện chuyển đổi mô hình Lần lượt thực hiện chuyển đổi mô hình và thu được các kết quả như trong Hình 7, 8, 9. Trong khuôn khổ bài báo không liệt kê mô hình trình bày. Bước 3: Thực hiện sinh mã sử dụng công cụ CODEGER –UWE. Công cụ đã chuyển đổi từ mô hình thực thi sang mã nguồn Java tự động tương ứng với nguyên tắc xây dựng các thành phần Model, View, Controller trong mô hình PSM. JST: Engineering and Technology for Sustainable Development Vol. 1, Issue 2, April 2021, 035-039 38 Hình 6. Biểu đồ use case, mô hình đầu vào của ứng dụng Hình 7. Mô hình nội dung Hình 8. Mô hình Điều hướng Kết quả thử nghiệm đã thu được một khung mẫu đơn giản của mô hình Web viết bằng mã nguồn Java (Hình 10). Trên cơ sở đó nhà phát triển ứng dụng có thể bổ sung thêm vào các file mã nguồn để xây dựng ứng dụng. Hình 9. Mô hình Xử lý Hình 10. File mã nguồn sinh ra từ mô hình UWE Một trường hợp điển hình khác là ứng dụng UWE Website [14] thể hiện mô hình, các thành phần của trang web UWE, Mô hình này không có biểu đồ use case, song việc chuyển đổi mô hình sang mã nguồn Java vẫn có thể thực hiện. Sử dụng công cụ CODEGER-UWE, mã nguồn Java được sinh ra bằng cách chuyển đổi các mô hình nội dung, xử lý, điều hướng và trình bày. Kết quả thu được như ở Hình 11, 12, 13. Hình 11. Mô hình xử lý của UWE Website Trong đó, thư mục Controller chứa mã nguồn Process.java, là kết quả thu được từ việc chuyển đổi mô hình xử lý sang Java, Hình 12. Thư mục Entities chứa các thực thể, các đối tượng, lớp có trong mô hình nội dung, cùng với các thuộc tính và phương thức, như trong Hình 13. Thư mục JSP chứa mã JST: Engineering and Technology for Sustainable Development Vol. 1, Issue 2, April 2021, 035-039 39 nguồn giao diện, file jsp là kết quả của việc chuyển đổi mô hình trình bày sang mã nguồn Java. File này đã chèn sẵn một số mã nguồn Java kết hợp với HTML. Hình 12. Mã nguồn Process.java, sinh ra bởi chuyển đổi mô hình xử lý sang Java. Hình 13. Các định nghĩa lớp được sinh ra bởi chuyển đổi mô hình nội dung sang Java. 5. Kết luận và đề xuất Trong bài báo, chúng tôi đã trình bày công cụ CODEGER –UWE chuyển đổi mô hình và sinh mã tự động phát triển ứng dụng web từ mô hình UWE tương ứng với các thành phần trong mô hình Web MVC. Đây là một plugin được tích hợp trong phần mềm MagicDraw và là một phần mềm có tính mô-đun cao và dễ mở rộng. Trong thời gian tới chúng tôi sẽ hoàn thiện các quy tắc chuyển đổi cũng như sinh mã nguồn áp dụng vào các bài ton khác nhau và bổ sung thêm giải thuật cho mô hình tích hợp điều kiện OCL hướng tới việc cải thiện kết quả sinh mã cho phát triển ứng dụng web. Lời cảm ơn Nghiên cứu này được tài trợ bởi Trường Đại học Bách Khoa Hà Nội trong đề tài mã số T2018-PC-015. Tài liệu tham khảo [1]. S. Jácome, J. M. Ferreira, and A. Corral, Software Development Tools in Model-Driven Engineering presented at the 5th International Conference in Software Engineering Research and Innovation, Mexico, 2017. [2]. E.V. Sunitha and P. Samuel, Object Constraint Language for Code Generation from Activity Models, Information and Software Technology, vol. Volume 103, pp. Pages 92-111, 2018. [3]. C. Kroiss, N. Koch, and l. Knapp, UWE4JSF: A Model Driven Generation Approach for Web Applications, presented at the In Proc. 9th Int. Conf. Web Engineering (ICWE’09), 2009. [4]. M. Busch and N. Koch, MagicUWE – A CASE Tool Plugin for Modeling Web Applications, in 9th International Conference, ICWE 2009, Spain, 2009, pp. 505-508. [5]. UWE – UML-based Web Engineering [6]. K. Nora, Transformation Techniques in the Model- Driven Development Process of UWE, in sixth international conference on Web engineering California, USA, 2007, p. 10. [7]. K. Andreas, K. Alexander, and K. Nora, Model- Driven Generation of Web Applications in UWE, in 3rd International Workshop on Model-Driven Web Engineering, Italy, 2007, pp. 23-38. [8]. M. Busch and M. Á. G. d. Dios, ActionUWE: Transformation of UWE to ActionGUI Models, Institute for Informatics, Germany, 2012. [9]. L. Abdellatif, M. Chhiba, Abdelmoumen Tabyaoui, and O. Mjihil, Model driven architecture approach for application security integration, Journal of Theoretical and Applied Information Technology, vol. 8, p. 13, 30th April 2017. [10]. A. F. Subahi, A Business User Model-Driven Engineering Method for Developing Information Systems, Department of Computer Science, University of Sheffie, Englan https://github.com/zbloodz/CODEGER-UWE d, UK, 2015. [11]. T. D. Dien, H. Q. Thang, and T. Q. Khanh, Development of The Rules for Model Transformation with OCL Integration in UWE, in 7th International Conference on Frontiers of Intelligent Computing: Theory and Application (FICTA 2018), Da Nang, Viet Nam, 2018. [12]. K. Andreas, Model Driven Software Engineering for Web Applications, PhD, Faculty of Mathematics, Computer Science and Statistics, University of Malaga, Spanien, 2007. [13]. [14]. [15]. Quyet-Thang Huynh, Dinh-Dien Tran, Thi-Mai-Anh Bui, Phi-Le Nguyen (2019). Development of Rules and Algorithms for Model-Driven Code Generator with UWE Approach. New Trends in Intelligent Software Methodologies, Tools and Techniques, Volume 318, 2019, pp. 531 – 544, ISBN 978-1- 64368-012-5, https://doi.org/10.3233/FAIA190078, WoS, SCOPUS Indexed. [16]. https://github.com/zbloodz/CODEGER-UWE
File đính kèm:
- xay_dung_va_thu_nghiem_cong_cu_codeger_uwe_phat_trien_ung_du.pdf