Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL

Bài báo nghiên cứu phát triển các quy tắc và giải thuật sinh mã nguồn tự

động từ các mô hình theo kỹ thuật web UWE (UML-based Web Engineering) để tạo ứng

dụng web chẩn đoán bệnh thủy sản (benhthuysan.vn). Các quy tắc được thực nghiệm bằng

ngôn ngữ chuyển đổi ATL, đảm bảo hiệu quả chuyển đổi mô hình cho phát triển ứng dụng

Web hướng mô hình theo kiến trúc MVC. Trong bài báo này, chúng tôi trình bày phương

pháp tiếp cận MDE để tạo ra các ứng dụng Web từ các mô hình theo kỹ thuật web UWE.

Chúng tôi đã cải tiến 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 UWE sang mã nguồn và xây dựng công cụ

CODEGER-UWE để xây dựng các ứng dựng Web. Đây là một phương pháp với quy trình

phát triển rõ ràng và tiện dụng.

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 1

Trang 1

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 2

Trang 2

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 3

Trang 3

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 4

Trang 4

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 5

Trang 5

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 6

Trang 6

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 7

Trang 7

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 8

Trang 8

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 9

Trang 9

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL trang 10

Trang 10

pdf 10 trang duykhanh 8780
Bạn đang xem tài liệu "Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL

Phát triển thuật toán sinh code cho ứng dụng Web chuẩn đoán bệnh thủy sản với ATL
Phần tử mô hình trình bày Thẻ JSP tương ứng 
PresentationPage2JSP PresentationPage html và head 
PresentationGroup2JSP PresentationGroup div 
Text2JSP Text span 
Image2JSP Image img 
Button2JSP Button button 
Anchor2JSP Anchor a 
TextInput2JSP TextInput input (type=”text”) 
FileUpload2JSP FileUpload input (type=”file”) 
Nghiên cứu khoa học công nghệ 
 Tạp chí Nghiên cứu KH&CN quân sự, Số 72, 04 - 2021 107 
2.4. Sinh code từ mô hình PSM 
Để thực hiện việc sinh mã nguồn, ta cần thêm một bước chuyển đổi từ các mô hình mức PSM 
thu được ở trên sang code Java và JSP. Việc này được hỗ trợ bởi các truy vấn ATL. 
Truy vấn ATL là chức năng do ATL cung cấp để thực hiện các hành động xử lý, tính toán 
trên các mô hình nguồn mà không sinh ra mô hình đích, trong đó, có việc sinh chuỗi kí tự và ghi 
ra file. Các truy vấn ATL nhận đầu là các mô hình Java, JSP thu được ở phần trên và cho đầu ra 
là các file mã nguồn .java và .jsp tương ứng. 
Sinh code từ mô hình Lava 
Để thực hiện sinh mã nguồn từ các mô hình java nhóm nghiên cứu đã phát triển 06 truy vấn 
ATL, được thể hiện tại bảng 5. 
Bảng 5. Các truy vấn sinh mã từ mô hình java. 
Tên truy vấn Mục đích 
Java2Code Duyệt tất cả class, gọi toString() để sinh mã và ghi ra file 
toString Sinh mã cho một phần tử nào đó (package, class, field, method, parameter) 
visibility Sinh mã phần access modifier (private, default, protected, public) 
scope Sinh mã từ khoá static 
fullName Sinh mã cho tên package, kiểu dữ liệu kèm theo đường dẫn package đầy đủ 
modifierAbstract Sinh mã từ khoá abstract 
Chi tiết truy vấn ATL Java2Code: 
query Java2Code = JAVA!Type.allInstances() 
-> select(e | e.oclIsTypeOf(JAVA!JavaClass)) 
-> collect(x | x.toString() 
.writeTo('/UWE2JAVA/Output/java/' + 
thisModule.getPackageName() 
.replaceAll('.', '/') + '/' + x.name + '.java')); 
Sinh code từ mô hình JSP 
Để thực hiện sinh mã nguồn từ các mô hình JSP nhóm nghiên cứu đã phát triển 04 truy vấn 
ATL, được thể hiện tại bảng 6. 
 Bảng 6. Truy vấn ATL sinh mã mô hình JSP. 
Tên truy vấn Ý nghĩa 
JSP2Code Duyệt tất cả các nút Root, với mỗi nút Root, gọi getChildren duyệt tất cả các 
thẻ (mỗi thẻ gọi getAttributes duyệt tất cả các thuộc tính) và gọi toCode để sinh 
mã, ghi vào file tương ứng 
getChildren Duyệt tất cả các thẻ 
getAttributes Duyệt tất cả các thuộc tính 
toCode Sinh mã cho một phần tử (thẻ hoặc thuộc tính) 
Chi tiết truy vấn JSP2Code: 
query JSP2Code = JSP!Root.allInstances() 
-> collect(n | n.getChildren() 
-> iterate(n; acc: String = '' | acc + n.toCode()) 
.writeTo('/UWE2JAVA/Output/resources/jsp/' + 
n.documentName)); 
3. THỬ NGHIỆM SINH CODE VỚI ỨNG DỤNG WEB BENHTHUYSAN.NET 
Dựa trên các quy tắc và giải thuật sinh mã được phát triển tại phần 2, chúng tôi đã xây dựng 
Công nghệ thông tin & Cơ sở toán học cho tin học 
 108 T. Đ. Diễn, H. Q. Thắng, N. T. Đạt, “Phát triển thuật toán  bệnh thủy sản với ATL.” 
công cụ CODEGER –UWE, cung cấp cho người phát triển web hướng mô hình công cụ để sinh 
mã tự động tạo ứng dụng web. 
Để đánh giá các luật xây dựng được, chúng tôi áp dụng công cụ CODEGER –UWE vào bài 
toán xây dựng website chẩn đoán bệnh thủy sản (benhthuysan.vn). website chẩn đoán và phòng 
trị bệnh động vật thủy sản giúp người nuôi có thể chẩn đoán và đưa ra phác đồ điều trị cho bệnh 
thủy sản ở mọi lúc, mọi nơi, góp phần từng bước hiện đại hóa và phát triển NTTS bền vững ở 
Việt Nam. Ứng dụng web có bốn chức năng: (i) Chức năng gợi ý chọn loại triệu chứng và chuẩn 
đoán bệnh, lưu lại thông tin chuẩn đoán: dựa trên các thông tin người dùng lựa chọn để tinh toán 
kết quả bệnh, người dùng có thể lưu lại kết quả sau khi đã thực hiện chuẩn đoán. (ii) Chức năng 
tìm kiếm thông tin về phác đồ điều trị, thông tin bệnh theo tên bệnh hoặc tên loài thuỷ sản. (iii) 
Chức năng người dùng đánh giá sự chính xác về thông tin bệnh (triệu chứng, phác đồ điều trị, kết 
quả chuẩn đoán,...). 
3.1. Tạo các thành phần Model, Controler, View 
3.1.1. Thành phần model 
Mô hình nội dung (hình 5) biểu diễn các lớp cơ bản trong ứng dụng bệnh thủy sản, sau khi áp 
dụng các luật chuyển đổi được trình bày ở mục 2, mô hình Java được sinh ra tự động. Trong kiến 
trúc MVC, gói model thuộc thành phần Model, chứa các lớp dùng để định nghĩa cấu trúc cơ sở 
dữ liệu (mỗi lớp tương ứng với một bảng, mỗi trường tương ứng với một cột của bảng trong cơ 
sở dữ liệu). 
Hình 5. Mô hình nội dung. Hình 6. Mô hình xử lý. 
Trong kiến trúc MVC, gói service cũng thuộc thành phần Model, chứa các phương thức liên 
quan đến dữ liệu mà ứng dụng cần gọi đến (truy xuất cơ sở dữ liệu, chuyển đổi, kiểm tra dữ liệu 
hợp lệ,). Do đó, mô hình xử lý (hình 6) các các hành vi được dùng để định nghĩa các phương 
thức cho các service, nội dung các phương thức được để trống và cần viết code để phương thức 
thức hiện chức năng mong muốn. 
3.1.2. Thành phần Controler 
Thành phần controller nhận các yêu cầu từ phía client và gọi các phương thức cần thiết 
(thường do các service trong thành phần Model cung cấp) để thực hiện yêu cầu. Spring sử dụng 
chú thích @RequestMapping để xác định khi nhận được một yêu cầu, phương thức nào của 
controller sẽ được thực thi. Trong mô hình điều hướng (hình 7), mỗi NavigationClass thể hiện 
một nút trong luồng điều hướng giữa các trang web tương ứng với một yêu cầu từ phía client nên 
được dùng để định nghĩa các phương thức cho controller. Áp dụng các luật chuyển vào mô hình 
điều hướng của ứng dụng bệnh thủy sản, mô hình Java của thành phần Controler sẽ được sinh để 
đáp ứng cho việc sinh code tự động. 
3.1.3. Thành phần View 
Áp dụng các luật chuyển đổi, mô hình trình bày (hình 8) của ứng dụng benhthuysan.vn thu 
được mô hình JSP hoàn toàn tương thích với JSP Metamodel. 
Nghiên cứu khoa học công nghệ 
 Tạp chí Nghiên cứu KH&CN quân sự, Số 72, 04 - 2021 109 
Hình 7. Mô hình điều hướng. Hình 8. Mô hình trình bày. 
3.2. Thực hiện sinh mã 
Áp dụng các luật chuyển đổi và các truy vấn ATL để sinh mã tự động cho ứng dụng web. Mã 
nguồn Java và JSP tương ứng với ứng dụng web có 3 gói: model, controller và service (hình 9). 
Trong đó, Gói model gồm các lớp thể hiện mô hình nội dung ví dụ: tên cá, bệnh cá, triệu trứng 
bệnh,; Gói service gồm các class Service chứa các phương thức liên quan đến dữ liệu (truy 
xuất, chuyển đổi, kiểm tra hợp lệ,) được hệ thống gọi đến khi cần; Gói controller chứa các 
class xử lý các luồng điều hướng trong ứng dụng bao gồm 2 lớp: DiseaseController, 
DiagnosisController. 
Sau khi bổ sung mã nguồn còn thiếu, ứng dụng thu được có giao diện sử dụng như hình 10. 
Hình 9. Cấu trúc mã nguồn được sinh tự động. Hình 8. Giao diện web benhthuysan.vn. 
Ưu điểm của nghiên cứu này là chuyển đổi mô hình và tạo mã tự động giữa các mô hình hiệu 
quả hơn. Kết quả cho thấy, việc chuyển đổi tự động giữa các mô hình trong UWE tốt hơn trong 
các nghiên cứu [12], bao gồm việc mô tả chi tiết các thành phần của mô hình sau chuyển đổi 
được thể hiện chi tiết hơn, tiết kiệm thời gian hơn do ít phải can thiệp thủ công. Cụ thể, với mô 
hình nội dung, xử lý đối với công cụ CODEGER-UWE do nhóm nghiên cứu đề xuất có số lượng 
class sinh ra ít hơn nhưng trong mỗi class sinh ra có nhiều attributes và operations hơn (bảng 7). 
Vì vậy, việc sinh các class này có ý nghĩa hơn thay vì các class rỗng. 
Bảng 7. Bảng so sách kết quả chuyển đổi mô hình nội dung và mô hình xử lý. 
Mô hình 
CODEGER-UWE MagicUWE 
Classes Attributes Operations Classes Attributes Operations 
Nội dung 5 6 10 18 2 0 
Xử lý 7 5 
4 operations 
(2 parameters) 
10 0 0 
Công nghệ thông tin & Cơ sở toán học cho tin học 
 110 T. Đ. Diễn, H. Q. Thắng, N. T. Đạt, “Phát triển thuật toán  bệnh thủy sản với ATL.” 
Bảng 8. Bảng so sánh kết quả chuyển đổi mô hình điều hướng. 
 Mô hình 
CODEGER-UWE MagicUWE 
Navigation 
Classes 
ProcessClass Links 
Navigation 
Classes 
ProcessClass Links 
Điều hướng 8 10 17 8 10 18 
Bảng 9. Bảng so sách kết quả chuyển đổi mô hình trình bày. 
Mô hình 
CODEGER-UWE MagicUWE 
Classes Properties Classes Properties 
Trình bày 3 9 3 9 
Như vậy, phương pháp tiếp cận của nhóm nghiên cứu giúp đảm bào tính thống nhất giữa các 
mô hình sau khi chuyển đổi, góp phần cải thiện chất lượng chuyển đổi mô hình sang mô hình, 
mô hình sang text, đảm bảo hiệu quả chuyển đổi mô hình cho phát triển ứng dụng Web hướng 
mô hình. 
4. KẾT LUẬN 
Bài báo đã trình bày kết quả nghiên cứu phát triển các quy tắc chuyền đổi mô hình gồm hai 
phần. Thứ nhất, chuyển đổi model-to-model cho phép chuyển đổi từ các mô hình mức PIM sang 
các mô hình mức PSM (mô hình Java và mô hình JSP). Thứ hai, chuyển đổi model-to-code cho 
phép sinh mã từ các mô hình mức PSM thu được thành các file mã nguồn .java và .jsp. Cách tiếp 
cận của chúng tôi cung cấp một giải pháp hiệu quả cho vấn đề sinh mã tự động theo phương pháp 
phát triển ứng dụng Web hướng mô hình UWE. Chúng tôi đã thực hiện được một nghiên cứu 
như sau: Đề xuất giải pháp và xây dựng 23 quy tắc chuyển đổi sang mô hình Java (chuyển đổi từ 
mức PIM sang PSM): 12 quy tắc chuyển thành, thành phần Model từ mô hình nội dung; 08 quy 
tắc tạo thành phần View từ mô hình trình bày và 03 quy tắc tạo thành phần Controller từ mô hình 
điều hướng. Phát triển 06 truy vấn ATL để sinh mã các mô hình Java; 04 truy vấn ATL để sinh 
mã từ mô hình JSP. Từ các quy tắc, truy vấn ATL đã phát triển, nhóm nghiên cứu đã xây dựng 
công cụ CODEGER-UWE để hỗ trợ sinh mã nguồn java và jsp để tạo ứng dụng web 
benhthuysan.vn 
Trong thời gian tới chúng tôi tiếp tục phát triển, hoàn thiện các quy tắc chuyển đổi thành mô 
hình PSM và những giải thuật sinh mã nguồn tự động áp dụng vào các bài toán khác nhau hướng 
tới đưa công cụ vào sử dụng rộng rãi để tạo ứng dụng web tự động. 
TÀI LIỆU THAM KHẢO 
[1]. Q. X. Kevin Lano. (2016). "Agile model-based development using UML-RSDS". 
[2]. Q. X. Kevin Lano and S. Kolahdouz-Rahimi, "Agile Specification of Code Generators for Model-
Driven Engineering," in The Fifteenth International Conference on Software Engineering Advances, 
Porto, Portugal, 2020. 
[3]. N. Kharmoum, S. Retal, S. Ziti, and F. Omary, "A Novel Automatic Transformation Method from the 
Business Value Model to the UML Use Case Diagram," presented at the Advanced Intelligent 
Systems for Sustainable Development (AI2SD’2019), Marrakech, Morocco, 2019. 
[4]. A. A. H. Alzahrani, "4GL Code Generation: A Systematic Review," (IJACSA) International Journal 
of Advanced Computer Science and Applications, vol. Vol. 11, p. 8, 2020. 
[5]. Y. Rhazali, A. E. Hachimi, I. Chana, and M. Lahmer. (2020). "Automate Model Transformation 
From CIM to PIM up to PSM in Model- Driven Architecture". 
[6]. A. Bajovs, O. Nikiforova, and J. Sejans, "Code Generation from UML Model: State of the Art and 
Practical Implications," Applied Computer Systems, vol. 14, p. 10, 08 Jun 2013 2013. 
[7]. J. Küster, "Model-Driven Software Engineering Code Generation," IBM Research – Zurich, 
Switzerland2011. 
[8]. K. Czarnecki and S. Helsen, "Feature-Based Survey of Model Transformation Approaches," IBM 
Systems Journal, vol. 45, pp. 621 - 645, March 15, 2006 2006. 
Nghiên cứu khoa học công nghệ 
 Tạp chí Nghiên cứu KH&CN quân sự, Số 72, 04 - 2021 111 
[9]. K. C. a. S. Helsen, "Classification Classification of Model Transformation Approaches," presented at 
the OOPSLA’03 Workshop on Generative Techniques in the Context of MDA, USA, 2005. 
[10]. E. Syriani, L. Luhunu, and H. Sahraoui, "Systematic Mapping Study of Template-based Code 
Generation," Computer Languages, Systems & Structures, pp. 43-62, June 19, 2018 2018. 
[11]. K. Nora, "Transformation Techniques in the Model-Driven Development Process of UWE," in sixth 
international conference on Web engineering California, USA, 2007, p. 10. 
[12]. 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. 
[13]. I. Essebaa, C. Salima, and M. Ramdani, "MoDAr-WA: Tool Support to Automate anMDA Approach 
for MVCWeb Application," Computers 2019, p. 23, 2019. 
[14]. M. h. RAHMOUNI and S. MBARKI, "Model-Driven Generation of MVC2 Web Applications: From 
Models to Code," International Journal of Engineering and Applied Computer Science (IJEACS), 
vol. Volume: 02, 2017. 
[15]. G. Paolone, M. Marinelli, R. Paesani, and P. D. Felice, "Automatic Code Generation of MVC Web 
Applications," computers, vol. Vol. 9, p. 29, 2020. 
[16]. M. Busch and M. Á. G. d. Dios, "ActionUWE: Transformation of UWE to ActionGUI Models," 
Institute for Informatics, Germany2012. 
[17]. L. Abdellatif, M. Chhiba, A. 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. 
[18]. A. F. Subahi, "A Business User Model-Driven Engineering Method for Developing Information 
Systems," Department of Computer Science, University of Sheffie, England, UK, 2015. 
[19]. T. D. Dien, H. Q. Thang, and T. Q. Khanh, "Development of The Rules for Model Transformation 
with OCL Integration in UWE," in The 7th International Conference On Frontiers Of Intelligent 
Computing: Theory And Application (FICTA 2018), Da Nang, Viet Nam, 2018. 
[20]. Q.-T. HUYNH, D.-D. TRAN, T.-M.-A. BUI, and P.-L. NGUYEN, "Development of Rules and 
Algorithms for Model-Driven Code Generator with UWE Approach," presented at the Advancing 
Technology Industrialization Through Intelligent Software Methodologies, Tools and Techniques - 
Proceedings of the 18th International Conference on New Trends in Intelligent Software 
Methodologies, Tools and Techniques (SoMeT_19), Kuching, Malaysia, 2019. 
ABSTRACT 
DEVELOPMENT OF CODE GENERATOR ALGORITHMS FOR WEB APPLICATION 
AQUATIC DISEASES DIAGNOSE WITH ATL 
The research paper develops rules and algorithm code generation from models follow 
by UWE technical (UML-based Web Engineering) to create a web application for aquatic 
disease diagnosis (benhthuysan.vn). According to MVC architecture, the rules are 
implemented in ATL transformation language, ensuring the efficiency of model 
transformation for model-oriented Web application development. In this paper, we present 
the MDE approach to creating Web applications from UWE web models. We have 
improved the construction of a number of rules, an automatic code generation algorithm 
to improve, improve the efficiency of the conversion from model to code from UWE models 
and built the CODEGER-UWE tool to build Web application. This is a method with a 
clear, handy development process. 
Keywords: Automatic code generation; Model transformation; ATL; Web applications. 
Nhận bài ngày 13 tháng 3 năm 2021 
Hoàn thiện ngày 06 tháng 4 năm 2021 
Chấp nhận đăng ngày 12 tháng 4 năm 2021 
Địa chỉ: Viện Công nghệ Thông tin và Truyền thông, Trường Đại học Bách Khoa Hà Nội. 
*Email: trandinhdien@gmail.com. 

File đính kèm:

  • pdfphat_trien_thuat_toan_sinh_code_cho_ung_dung_web_chuan_doan.pdf