(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình(Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trần Đình Diễn
CÁC KỸ THUẬT CHUYỂN ĐỔI MÔ HÌNH VÀ SINH MÃ
TRONG PHÁT TRIỂN ỨNG DỤNG WEB HƯỚNG MÔ HÌNH
LUẬN ÁN TIẾN SĨ KỸ THUẬT PHẦN MỀM
Hà Nội - 2021
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trần Đình Diễn
CÁC KỸ THUẬT CHUYỂN ĐỔI MÔ HÌNH VÀ SINH MÃ
TRONG PHÁT TRIỂN ỨNG DỤNG WEB HƯỚNG MÔ HÌNH
Ngành: Kỹ thuật phần mềm
Mã số: 9480103
LUẬN ÁN TIẾN SĨ KỸ THUẬT PHẦN MỀM
NGƯỜI HƯỚNG DẪN KHOA HỌC
1 PGS.TS Huỳnh Quyết Thắng
2 PGS.TS Cao Tuấn Dũng
Hà Nội - 2021
Trang 3LỜI CAM ĐOAN
Tôi cam đoan đề tài: “Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát
quả nghiên cứu trong luận án là trung thực và chưa từng được tác giả khác công bố
TM Tập thể giáo viên hướng dẫn
PGS.TS Huỳnh Quyết Thắng
Hà Nội, ngày 01 tháng 12 năm 2021
Tác giả
Trần Đình Diễn
Trang 4LỜI CẢM ƠN
Tôi xin bày tỏ lòng biết ơn sâu sắc nhất tới PGS.TS Huỳnh Quyết Thắng, PGS
TS Cao Tuấn Dũng là người định hướng và hướng dẫn khoa học, đã tận tình giúp đỡ tôi trưởng thành trong công tác nghiên cứu và hoàn thành luận án
Trong suốt quá trình học tập và nghiên cứu tại trường, tôi đã nhận được sự hướng dẫn và giúp đỡ tận tình của tập thể các thầy, cô giáo tại Viện Công nghệ thông tin và Truyền thông, Phòng đào tạo Trường Đại học Bách khoa Hà Nội Tôi xin ghi nhận
và biết ơn sự đóng góp quý báu của các thầy, cô
Tôi xin trân trọng cảm ơn Ban giám hiệu Trường Cao đẳng Kinh tế, Kỹ thuật và Thủy sản cùng các thầy cô tại trường đã tạo điều kiện về thời gian, chuyên môn và nhiều hỗ trợ khác giúp đỡ tôi thực hiện luận án
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT v
DANH MỤC CÁC BẢNG vii
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ viii
MỞ ĐẦU 1
Mục đích nghiên cứu 3
Nhiệm vụ nghiên cứu 3
Đối tượng và phạm vi nghiên cứu 3
Phương pháp nghiên cứu 4
Ý nghĩa khoa học và thực tiễn của đề tài 4
Các kết quả mới đạt được 5
CHƯƠNG 1: PHÁT TRIỂN PHẦN MỀM HƯỚNG MÔ HÌNH 6
1.1 Kiến trúc MDA 6
1.1.1 Chuyển đổi mô hình trong MDA 8
1.1.1.1 Chuyển đổi từ CIM sang PIM 9
1.1.1.2 Chuyển đổi từ PIM sang PSM 9
1.1.1.3 Chuyển đổi từ PSM sang code 13
1.1.2 Ngôn ngữ chuyển đổi mô hình 13
1.1.2.1 Ngôn ngữ ATL 13
1.1.2.2 Ngôn ngữ QVT 21
1.2 Các chuẩn của OMG cho MDA 23
1.2.1 MOF – Meta Object Facility 23
1.2.2 UML – Unified modeling Language 23
1.2.3 OCL (Object Constraint Language) 23
1.2.4 UML Profile 24
1.2.5 CWM (Common Warehouse Metamodel) 24
1.3 Kỹ thuật web hướng mô hình 25
1.3.1 UWE (UML-Based Web Engineering) 26
1.3.2 Web Software Architecture (WebSA) 26
1.3.3 WebML (Web Modeling Language) 27
1.3.4 OOWS - Object-Oriented Web Solution 28
1.3.5 Hypertext Modeling Method of MIDAS (MIDAS-HM3) 28
1.4 Các nghiên cứu liên quan và nhiệm vụ trong luận án 29
1.5 Tiểu kết chương 33
CHƯƠNG 2: KỸ THUẬT CHUYỂN ĐỔI MÔ HÌNH (CIM TO PIM) THEO PHƯƠNG PHÁP UWE CHO PHÁT TRIỂN ỨNG DỤNG WEB 34
2.1 Các mô hình trong UWE 34
2.2 Chuyển đổi mô hình trong UWE 36
Trang 62.2.1 Chuyển đổi từ mô hình yêu cầu sang mô hình nội dung 37
2.2.2 Chuyển đổi từ mô hình yêu cầu, nội dung sang mô hình điều hướng 39
2.2.3 Chuyển đổi sang mô hình xử lý 41
2.2.4 Chuyển đổi từ mô hình điều hướng, xử lý sang mô hình trình bày 43
2.3 Phát triển quy tắc chuyển đổi mô hình tích hợp ràng buộc OCL 46
2.3.1 Giới thiệu phương pháp 48
2.3.2 Tích hợp OCL trong mô hình xử lý 49
2.3.3 Tích hợp OCL trong mô hình trình bày 53
2.3.4 Kết quả và thảo luận 56
2.4 Phát triển quy tắc chuyển đổi mô hình với ATL 56
2.4.1 Giải pháp 57
2.4.1.1 Siêu mô hình yêu cầu 57
2.4.1.2 Siêu mô hình: content, navigation, process, presentation 59
2.4.2 Các quy tắc ATL 62
2.4.3 Kết quả và thảo luận 70
2.5 Tiểu kết chương 76
CHƯƠNG 3: SINH MÃ TỰ ĐỘNG CHO ỨNG DỤNG WEB HƯỚNG MÔ HÌNH 77 3.1 Kỹ thuật sinh mã trong phát triển ứng dụng web hướng mô hình 77
3.2 Sinh mã dựa trên thuật toán theo kiến trúc MVC 78
3.2.1 Xây dựng quy tắc sinh mã 79
3.2.2 Xây dựng giải thuật sinh code tự động 86
3.2.3 Thử nghiệm và đánh giá 90
3.3 Sinh mã sử dụng ngôn ngữ ATL 96
3.3.1 Chuyển đổi mô hình PIM sang PSM theo kiến trúc MVC 96
3.3.1.1 Tạo phần Model 96
3.3.1.2 Tạo thành phần Controller 101
3.3.1.3 Tạo thành phần View 103
3.3.2 Cấu trúc mô hình PSM theo kiến trúc MVC 105
3.3.2.1 Thành phần model 105
3.3.2.3 Thành phần Controler 108
3.3.2.3 Thành phần View 109
3.3.3 Xây dựng quy tắc chuyển đổi từ PSM sang mã nguồn 110
3.3.3.1 Sinh code từ mô hình java 110
3.3.3.2 Sinh code từ mô hình JSP 111
3.4 Thử nghiệm sinh mã cho ứng dụng web benhthuysan.vn 111
3.4.1 Công cụ sinh mã CODEGER-UWE 111
3.4.2 Phát triển ứng dụng benhthuysan.vn 115
3.4.3 Kết quả và thảo luận 120
3.5 Tiểu kết chương 121
KẾT LUẬN 123
DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ CỦA LUẬN ÁN 125
TÀI LIỆU THAM KHẢO 126
Trang 7DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Trang 8Chữ viết tắt Chú giải
Trang 9DANH MỤC CÁC BẢNG
Bảng 2.1 Thành phần DisplayAction type và Prentation element 55
Bảng 2.2 Các thành phần tương ứng với Pin type và giao diện 55
Bảng 2.3 Các khuôn mẫu được sử dụng trong biều đồ hoạt động 62
Bảng 2.4 Quy tắc chuyển đổi từ mô hình yêu cầu sang mô hình nội dung 63
Bảng 2.5 Quy tắc chuyển đổi từ mô hình yêu cầu sang mô hình điều hướng 65
Bảng 2.6 Thành phần DisplayAction type và Prentation element 69
Bảng 2.7 Các thành phần tương ứng với Pin type và giao diện 70
Bảng 2.8 Kết quả chuyển đổi mô hình Content, Process - ví dụ MusicPortal 74
Bảng 2.9 Kết quả chuyển đổi mô hình Navigation - ví dụ MusicPortal 74
Bảng 2.10 Kết quả chuyển đổi mô hình Presentation - ví dụ MusicPortal 75
Bảng 2.11 Kết quả chuyển đổi mô hình Content, Process - ví dụ AddressBook 75
Bảng 2.12 Kết quả chuyển đổi mô hình Navigation - ví dụ AddressBook 75
Bảng 2.13 Kết quả chuyển đổi mô hình Presentation - ví dụ AddressBook 75
Bảng 3.1 Danh sách các quy tắc sinh code xây dựng 81
Bảng 3.2 Bảng đánh giá mã nguồn 95
Bảng 3.3 Các quy tắc chuyển đổi từ mô hình nội dung sang mô hình java 97
Bảng 3.4 Quy tắc và các thành phần của mô hình xử lý và Java 100
Bảng 3.5 Các quy tắc chuyển đổi mô hình điều hướng sang mô hình Java 103
Bảng 3.6 Các quy tắc chuyển đổi mô hình trình bày sang JSP: 105
Bảng 3.7 Cấu trúc thành phần model 106
Bảng 3.8 Cấu trúc thành phần service 107
Bảng 3.9 Cấu trúc thành phần Controller 108
Bảng 3.10 Cấu trúc mô hình JSP 109
Bảng 3.11 Các truy vấn sinh mã từ mô hình java 110
Bảng 3.12 Truy vấn ATL sinh mã mô hình JSP 111
Bảng 3.13 Bảng so sách kết quả chuyển đổi mô hình nội dung và xử lý 120
Bảng 3.14 Bảng so sách kết quả chuyển đổi mô hình điều hướng 120
Bảng 3.15 Bảng so sách kết quả chuyển đổi mô hình trình bày 120
Trang 10DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1.1 Tổng quan về MDA 6
Hình 1.2 Tiến trình MDA 7
Hình 1.3 Sự phân loại các mô hình chính trong MDA 8
Hình 1.4 Chuyển đổi mô hình trong MDA 8
Hình 1.5 Mô hình chuyển từ CIM sang PIM 9
Hình 1.6 Đánh dấu mô hình 9
Hình 1.7 Quá trình biến đổi Metalmodel 10
Hình 1.8 Quá trình biến đổi mô hình 10
Hình 1.9 Ứng dụng mẫu 11
Hình 1.10 Một cách khác để sử dụng các mẫu 11
Hình 1.11 Mô hình kết hợp 12
Hình 1.12 Bổ sung thông tin để chuyển sang PSM 12
Hình 1.13 Sử dụng thông tin bổ sung trong kỹ thuật biến đổi cụ thể 12
Hình 1.14 Tổng quan chuyển đổi mô hình trong ATL 14
Hình 1.15 Phần lõi ATL 19
Hình 1.16 Lược đồ hoạt động máy ảo ATL 20
Hình 1.17 Lược đồ ACG 21
Hình 1.18 Kiến trúc QVT 22
Hình 1.19 Cấu trúc MDA cho kỹ thuật web 25
Hình 1.20 Quy trình chung của UWE 26
Hình 1.21 Quy trình phát triển WebSA 27
Hình 1.22 Tổng quan về chuyển đổi mô hình của ActionUWE 30
Hình 1.23 Tổng quan về cách tiếp cận trong 31
Hình 1.24 Tổng quan về quy trình chuyển đổi mô hình trong 31
Siêu mô hình điều hướng (Navigation Metamodel) 34
Siêu mô hình xử lý (Process Metamodel) 35
Siêu mô hình trình bày (Presentation Metamodel) 36
Chuyển đổi từ CIM tới PIM trong UWE 36
Chuyển đổi mô hình từ PIM san PSM trong UWE 37
Chuyển đổi Requirements to Content 37
Mô tả các quy tắc để thêm các hoạt động 38
Chuyển đổi RequirementsAndContent2Navigation 39
Chuyển đổi sang mô hình xử lý 42
Chuyển đổi AvigationAndProcess to Presentation 43
Chuyển đổi mô hình và mã nguồn tích hợp ràng buộc OCL 49
Biểu đồ diễn tiến chuyển đổi bất biến trong mô hình xử lý 50
Trang 11Biểu đồ chuyển đổi tiền điều kiện – hậu điều kiện mô hình xử lý 51
Biểu đồ chuyển đổi ràng buộc bất biên mô hình trình bày 54
Use Case meta-model 57
Activity Diagram Metamodel 58
Content Metamodel 60
Navigation Metamodel 60
Process Metamodel 61
Presentation Metamodel 61
Tổng quan phương pháp đề xuất 62
Biểu đồ Use Cases của MusicPortal 70
Biểu đồ Activity cho quy trình BuyAlbum 71
Mô hình nội dung của MusicPortal 72
Mô hình điều hướng của MusicPortal 72
Mô hình xử lý của MusicPortal 73
Mô hình trình bày của MusicPortal 74
Hình 3.1 Chuyển đổi mô hình sang mã nguồn theo MDA 77
Hình 3.2 Sinh code trong UWE 79
Hình 3.3 Chuyển đổi sang mã nguồn theo mô hình MVC 80
Hình 3.4 Các quy tắc cấu thành giải thuật CM2M 82
Hình 3.5 Các quy tắc cấu thành giải thuật PRES2V 83
Hình 3.6 Các quy tắc cấu thành giải thuật NM2C 85
Hình 3.7 Các quy tắc cấu thành giải thuật PROM2C 86
Hình 3.8 Kiến trúc MagicDraw và CODEGER –UWE 91
Hình 3.9 Giao diện công cụ CODEGER –UWE 91
Hình 3.10 Mô hình nội dung 92
Hình 3.11 Mô hình điều hướng 92
Hình 3.12 Mô hình xử lý 92
Hình 3.13 Mô hình trình bày 93
Hình 3.14 Mã nguồn sinh ra từ bốn mô hình UWE 93
Hình 3.15 Khung ứng dụng Web 94
Hình 3.16 Giao diện trang web 94
Hình 3.17 Giao diện tạo mới Contact 95
Hình 3.18 Sơ đồ chuyển đổi mô hình và sinh code 97
Hình 3.19 Kiến trúc CODEGER –UWE 112
Hình 3.20 Quy trình sinh mã nguồn từ mô hình nội dung 113
Hình 3.21 Quy trình sinh mã nguồn từ mô hình điều hướng 114
Hình 3.22 Quy trình chuyển đổi sinh mã nguồn từ mô hình xử lý 114
Hình 3.23 Quy trình sinh mã JSP từ mô hình trình bày 115
Hình 3.24 Biểu đồ use case, mô hình đầu vào của ứng dụng 116
Trang 12Hình 3.25 Biểu đồ Activity, mô hình đầu vào của ứng dụng 117
Hình 3.26 Mô hình nội dung 117
Hình 3.27 Mô hình điều hướng 118
Hình 3.28 Mô hình xử lý 118
Hình 3.29 Mô hình trình bày 118
Hình 3.30 Cấu trúc mã nguồn được sinh tự động 119
Hình 3.31 Giao diện web benhthuysan.vn 119
Hình 3.32 Kết quả đánh giá thử nghiệm benhthuysan.vn 121
Trang 13MỞ ĐẦU
Ngày nay, công nghiệp phần mềm đóng vai trò quan trọng, tác động đến sự phát triển kinh tế xã hội và được xem là một trong những trụ cột chính của tăng trưởng kinh tế ở nhiều nước Tuy nhiên, việc phát triển phần mềm theo cách truyền thống ngày càng phải đối mặt với nhiều khó khăn như vấn đề phát triển, vấn đề tính khả chuyển, khả năng tương tác hay với sự phát triển nhanh chóng của các nền tảng công nghệ mới Do đó, những nhà phát triển phần mềm phải dành nhiều công sức và thời gian để điều chỉnh ứng dụng (thường theo cách thủ công là sửa mã nguồn) sao cho
có thể hoạt động được trên các nền tảng công nghệ mới Chính vì vậy, một xu hướng phát triển phần mềm mới nhằm khắc phục những khó khăn trên đã được nghiên cứu
và phát triển, đó là phát triển phần mềm hướng mô hình (MDSD: Model driven software development)
Kỹ thuật hướng mô hình (MDE) là kỹ thuật mới cho sự phát triển sản phẩm phần mềm Kỹ thuật này giải quyết được sự phức tạp của nền tảng công nghệ khác nhau bằng việc sử dụng các mô hình (models) như là tác nhân chính trong toàn bộ vòng đời phát triển ứng dụng, giảm sự phụ thuộc vào nền tảng công nghệ [1-3] MDE phát triển dựa trên ý tưởng xây dựng các mô hình độc lập với nền tảng và hỗ trợ việc chuyển đổi mô hình thành mã nguồn của chương trình Do đó, quá trình phát triển phần mềm hướng mô hình được xem như là một chuỗi các chuyển đổi mô hình và chuyển đổi mô hình đóng một vai trò quan trọng trong kỹ thuật hướng mô hình [4] Phát triển phần mềm hướng mô hình đang trở thành một phương pháp tiếp cận, được chấp nhận rộng rãi để phát triển các ứng dụng phức tạp và ngày càng giành được nhiều sự quan tâm của cộng đồng nghiên cứu, cũng như giới công nghiệp phần mềm [1] Sinh mã tự động là nền tảng thiết yếu của các phương pháp tiếp cận theo hướng
mô hình để phát triển phần mềm.Việc sinh mã tự động giúp cho việc phát triển ứng dụng trở nên hiệu quả hơn, hứa hẹn sẽ là một bước tiến mới trong phát triển phần mềm, giúp lập trình viên nâng cao được hiệu xuất làm việc và ngày càng được sử dụng nhiều trong tiến trình phát triển phần mềm [5]
Các nghiên cứu đã minh chứng, phương pháp sinh mã hướng mô hình cho tiến trình phần mềm đã tăng tốc độ tổng thể từ 3 đến 10 lần [5-7], làm giảm yếu tố con người [8, 9], giảm thời gian phát triển ứng dụng web [9-12] Việc sử dụng các mô hình để tạo
mã chương trình, có thể tạo ra các sản phẩm phần mềm có khả năng tương thích và sử dụng trên các nền tảng khác nhau [13], trong [14] đã chứng minh việc sử dụng phương pháp này cho phép tiết kiệm rất nhiều chi phí (nhất là chi phí bảo trì cho ứng dụng), vì chúng làm giảm sự cần thiết phải thay đổi sau khi đưa ứng dụng vào sử dụng
Các ứng dụng Web bao gồm nhiều thành phần khác nhau, có thể được cung cấp bởi những nhà phát triển khác nhau, nên việc sử dụng các kỹ thuật phát triển phần mềm hướng mô hình cho các ứng dụng web đặc biệt hữu ích [1, 15, 16]
Trang 14Trong những phương pháp phát triển ứng dụng web hướng mô hình hiện nay UWE (UML-based Web Engineering) là một hướng tiếp cận cho phép phát triển ứng dụng web hướng mô hình dựa trên kiến trúc MDA UWE cung cấp một quy trình và công
cụ, giúp mô hình hoá và xây dựng các ứng dụng web, do nhóm nghiên cứu trường đại học LMU, Đức thực hiện với mục đích tự động hoá quy trình phát triển ứng dụng web và giảm thiểu tối đa việc lập trình cài đặt mã nguồn cho ứng dụng
UWE cung cấp một tập các mô hình tương ứng với từng khía cạnh của ứng dụng web bao gồm: Mô hình yêu cầu (requirements models), mô hình nội dung (content models), mô hình điều hướng (navigation models), mô hình xử lý (process models),
mô hình trình bày (presentation models) và sử dụng biểu đồ UML 2.0 cho việc mô hình hoá Một trong những ưu điểm quan trọng của UWE là tất cả các mô hình của
nó đều là phần mở rộng của UML UWE sử dụng ký pháp đồ họa hoàn toàn dựa trên UML Nó cho phép sử dụng các công cụ dựa trên UML và giảm thiểu thời gian nghiên cứu của các nhà phát triển Web, những người đã quen thuộc với UML[17]
Tuy nhiên, các nghiên cứu phát triển ứng dụng web hướng mô hình theo phương pháp UWE, còn tồn tại một số vấn đề cần tiếp tục đi sâu nghiên cứu:
Thứ nhất: Việc chuyển đổi từ mô hình yêu cầu sang các mô hình: Nội dung, điều hướng, xử lý và trình bày vẫn phải được điều chỉnh thủ công, làm cho việc phát triển ứng dụng Web tốn thời gian và chi phí; việc đảm bảo tính thống nhất giữa các mô hình cũng như cần cập nhật đồng bộ giữa các mô hình khi có thay đổi là rất khó khăn Thứ hai: Các nghiên cứu chủ yếu mới chỉ tập trung cho việc mô hình hóa, việc sinh code tự động còn nhiều hạn chế, chủ yếu mới chỉ dừng ở việc tạo ra khung để
kỹ thuật viên lập trình viết mã
Khắc phục những hạn chế, tồn tại nêu trên, việc nghiên cứu xây dựng phương pháp chuyển đổi mô hình tự động, cải tiến kỹ thuật sinh mã để nâng cao chất lượng mã nguồn, tăng năng suất, tiết kiệm thời gian và chi phí cho ứng dụng web, giúp phát triển ứng dụng web đơn giản, linh hoạt, nhanh chóng và hiệu quả hơn là vấn đề cần thiết, góp phần thúc đẩy sự phát triển của lĩnh vực ứng dụng web, một lĩnh vực giàu tiềm năng nhưng mới chỉ là bước đầu phát triển tại Việt Nam Chính vì vậy, NCS
chọn đề tài: “Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng
dụng web hướng mô hình”
Hướng tiếp cận của đề tài là phát triển bộ quy tắc chuyển đổi model to model và mode to code theo phương pháp UWE, xây dựng công cụ CODEGER-UWE để hỗ trợ phát triển các ứng dựng Web theo kiến trúc MVC Phương pháp dựa trên việc tạo
mô hình yêu cầu ở mức mô hình độc lập tính toán (Computation Independent Model – CIM), sau đó xây dựng các quy tắc chuyển đổi, để chuyển đổi sang mức mô hình độc lập nền tảng (platform-independent model – PIM) và mô hình nền cụ thể (Platform Specific Model - PSM), từ đó sinh code tự động cho ứng dụng web theo
Trang 15kiến trúc MVC Các quy tắc chuyển đổi của nghiên cứu được xây dựng với ngôn ngữ chuyển đổi mô hình (ATLAS Transformation Language – ATL) Áp dụng phát triển ứng dụng web Chẩn đoán bệnh thủy sản “benhthuysan.vn” Phương pháp tiếp cận 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 đảm bảo hiệu quả chuyển đổi mô hình và sinh code tự động cho phát triển ứng dụng Web hướng mô hình theo kiến trúc MVC
- Trên cơ sở các quy tắc đã phát triển, xây dựng công cụ sinh mã tự động cho ứng dụng web Thực nghiệm vào phát triển ứng dụng web Chẩn đoán bệnh thủy sản (benhthuysan.vn)
Nhiệm vụ nghiên cứu
Với mục tiêu đặt ra ở trên, nhiệm vụ nghiên cứu của đề tài bao gồm:
- Tổng hợp, phân tích các kỹ thuật phát triển phần mềm hướng mô hình, kỹ thuật phát triển ứng dụng web hướng mô hình như UWE, WebML, WebSA
- Phát triển các quy tắc chuyển đổi mô hình
- Phát triển các quy tắc sinh code với ngôn ngữ ATL cho phát triển ứng dụng web hướng mô hình theo phương pháp UWE
- Xây dựng công cụ sinh code tự động cho ứng dụng web theo kiến trúc MVC
- Thực nghiệm và đánh giá: Tiến hành kiểm chứng tính khả thi của nghiên cứu
đề xuất trong luận án, bằng việc áp dụng vào phát triển ứng dụng web Chẩn đoán bệnh thủy sản (benhthuysan.vn)
Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu của đề tài là vấn đề chuyển đổi mô hình và sinh mã tự động cho phát triển ứng dụng web theo phương pháp UWE Trên cơ sở đó, đề tài nghiên cứu các kiến thức thuộc về lý thuyết liên quan đến chuyển đổi mô hình và sinh code
từ các mô hình yêu cầu, nội dung, điều hướng, xử lý và mô hình trình bày nhằm áp dụng trong việc phát triển các bài toán thực tế
Đề tài nghiên cứu các đặc điểm chung của phát triển ứng dụng web hướng mô hình, để xây dựng các quy tắc chuyển đổi mô hình và sinh code tự động với ngôn ngữ
Trang 36OCL được xây dựng và phát triển với mục đích bổ sung cho các đặc tả UML trở nên rõ ràng và chính xác hơn, các biểu thức viết trong OCL thêm các thông tin quan trọng cho các mô hình và OCL trở thành chuẩn ngôn ngữ đặc tả cho các biểu đồ trong UML trong thực tế [55, 56] Hiện nay, OCL là một thành phần chính của khuyến nghị tiêu chuẩn OMG cho chuyển đổi mô hình
1.2.4 UML Profile
Một UML Profile là sự mở rộng của UML, cung cấp cơ chế mở rộng chung để xây dựng mô hình UML trong các miền cụ thể như J2EE, NET… Chúng dựa trên các khuôn mẫu (stereotype) và một tập các giá trị được gán nhãn (tag value) được áp dụng cho các phần tử: Attributes, Methods, Links…
Stereotype, một sự mở rộng cho từ vựng của ngôn ngữ, cho phép chúng ta gắn thêm một ngữ nghĩa mới vào phần tử của mô hình Stereotype có thể áp dụng (apply) cho gần như toàn bộ phần tử của mô hình và thường được biểu diễn dưới dạng một string giữa một cặp dấu << >> Tuy nhiên, chúng cũng có thể mô tả bằng một icon Tagged value, một sự mở rộng cho một thuộc tính của một phần tử của mô hình,
là sự định nghĩa một thuộc tính mới có thể kết hợp với một phần tử mô hình Hầu hết các phần tử của mô hình đều có các thuộc tính kết hợp với chúng Một tagged value được biểu diễn trong diagram dưới dạng một string
1.2.5 CWM (Common Warehouse Metamodel)
CWM (Common Warehouse Metamodel) là một chuẩn của OMG và được áp dụng cho việc trao đổi siêu dữ liệu trong môi trường kho dữ liệu [57] Bởi vì, kho dữ liệu là công nghệ kết hợp thông tin từ nhiều nguồn, nên CWM meta-model được dùng cho nhiều nguồn khác nhau [58]:
- Cơ sở dữ liệu quan hệ
- Bản ghi hay cấu trúc
- OLAP (Online Analytical Processing)
- XML
- Chuyển đổi (Transformations)
- Hình ảnh thông tin (Visualization of information)
- Khai phá dữ liệu (Data mining)
- Cơ sở dữ liệu đa hướng (Multidimensional databases)
- Meta-data cho doanh nghiệp (Business metadata)
- Quy trình xử lý kho lưu (Warehouse processes)
- Hoạt động kho lưu (Warehouse operation)
CWM meta-model được mô hình hóa bằng cách sử dụng MOF Do đó, chúng có thể được sử dụng như nguồn hoặc đích cho chuyển đổi MDA
Trang 371.3 Kỹ thuật web hướng mô hình
Khi những kỹ thuật dựa trên mô hình như MDSD ngày càng trở nên phổ biến trong cộng đồng phát triển phần mềm, thì các phương pháp kỹ thuật phát triển ứng dụng web cũng bắt đầu thay đổi về ký pháp và quy trình phù hợp với kỹ thuật MDSD, nhằm tạo ra các ứng dụng web nhanh chóng và có chất lượng Sự thay đổi này thể
hiện một thiết kế trên nền tảng ngôn ngữ mô hình Web như UML (Unified Modeling Language), MOF (Meta Object Facility), XMI (XML Metadata Interchange) và
CWM (Common Warehouse Metamodel) [16] Sự thay đổi phù hợp với MDSD để tạo ra ứng dụng web được gọi là Kỹ thuật web hướng mô hình (MDWE) Hình 1.19
mô tả cấu trúc phát triển ứng dụng web hướng mô hình [17]
Kỹ thuật Web là một lĩnh vực cụ thể, trong đó phát triển phần mềm hướng mô hình có thể được áp dụng thành công Hiện tại có một số phương pháp tiếp cận kỹ thuật Web hướng mô hình như OO-H, UWE hoặc WebML… đã cung cấp một bộ ký pháp phù hợp với phương pháp và các công cụ cho việc thiết kế, phát triển các ứng dụng Web [59] Với MDWE, để tạo ra ứng dụng web gồm 3 giai đoạn [16]: (1) xây dựng các siêu mô hình và mô hình trong miền ứng dụng Web; (2) định nghĩa và thực hiện các chuyển đổi từ mô hình đến mô hình, chuyển đổi từ mô hình đến mã nguồn với mục đích đạt được một phần trong toàn bộ quá trình thực hiện; và (3) kết nối hoặc phát triển công cụ để hỗ trợ thiết lập, chuyển đổi các mô hình, tạo mã Với cách này, MDWE giúp thu hẹp khoảng cách giữa mô hình thiết kế cấp cao và mã thực hiện Web cấp thấp [16]
Hình 1.19 Cấu trúc MDA cho kỹ thuật web
Trang 381.3.1 UWE (UML-Based Web Engineering)
UWE là phương pháp hướng đối tượng dựa trên ngôn ngữ mô hình hóa UML [1],
là một trong những kỹ thuật đầu tiên phát triển theo kỹ thuật hướng mô hình và được
sử dụng nhiều nhất, phù hợp nhất cho kỹ thuật Web hướng mô hình [60] [17] UWE
là một kỹ thuật phát triển ứng dụng web hoàn chỉnh, nhưng chủ yếu tập trung vào giai đoạn phân tích và thiết kế Một trong những ưu điểm quan trọng của UWE, là tất cả các mô hình của nó đều là phần mở rộng của UML UWE sử dụng ký pháp đồ họa hoàn toàn dựa trên UML Nó cho phép sử dụng các công cụ dựa trên UML và giảm thiểu thời gian nghiên cứu của các nhà phát triển Web, những người đã quen thuộc với UML[17]
Cách tiếp cận MDE của UWE có lẽ là một trong những phương pháp hoàn thiện nhất, vì nó đưa ra một siêu mô hình tương ứng mỗi mô hình của UWE như: Yêu cầu, Nội dung, Điều hướng, Thể hiện và Xử lý, các mô hình này kết hợp với sự chuyển đổi mô hình nhằm thu được mô hình từ các mô hình khác Mô hình nội dung dựa trên
sơ đồ lớp của UML, trong khi mô hình yêu cầu dựa trên WebRE Thêm vào đó, UWE định nghĩa các hồ sơ để tương tác với các siêu mô hình Đây là sự kết hợp hiệu quả các siêu mô hình UWE trong bất kỳ công cụ thiết kế dựa trên UML nào [17]
Hình 1.20 Quy trình chung của UWE [61]
Về chuyển đổi mô hình, kỹ thuật nổi nên gần đây trong chuyển đổi mô hình được
sử dụng trong UWE là ATL và QVT [4, 61] Một trong công cụ thực hiện công việc này là UWE4JSF, nó bao gồm 1 công cụ đính kèm được xác định với EMF, cho phép khởi tạo ứng dụng Web đối với nền tảng JSF (Java Server Faces) [17]
UWE được hỗ trợ bởi nhiều công cụ như: ArgoUWE dựa trên ArgoUML, MagicUWE đi cùng với công cụ MagicDraw và TopUWE-plugin đã được phát triển bởi Topcased [62]
1.3.2 Web Software Architecture (WebSA)
WebSA là một cách tiếp cận hướng mô hình cho phát triển ứng dụng web Quá trình phát triển dựa trên MDA thiết lập 4 giai đoạn của vòng đời phát triển: Phân tích;
Trang 39thiết kế độc lập nền tảng, nơi xây dựng mô hình nền tảng độc lập (PIM); thiết kế nền tảng cụ thể, nơi xây dựng mô hình nền tảng cụ thể (PSM); và mã chương trình [16] Phương pháp này nhóm các mô hình ứng dụng web thành 2 khung nhìn: Chức năng
và kiến trúc (Hình 2.21) [4, 63]
WebSA sử dụng mô hình đề xuất trong hai phương pháp: UWE và OO-H [16] [63] Trong giai đoạn phân tích, đặc điểm kỹ thuật Web được chia thành mô hình chức năng và các mô hình kiến trúc khái niệm
Ở giai đoạn thiết kế độc lập nền, thực hiện chuyển đổi PIM sang PIM (T1) cung cấp một tập hợp các đối tượng Trong đó, các thành phần khái niệm của giai đoạn phân tích được sơ đồ hóa nhằm tập trung các thành phần biểu thị thông tin về chức năng và kiến trúc tích hợp Các mô hình thu được gọi là mô hình tích hợp, trong đó tập hợp mô hình kiến trúc đơn lẻ, các thông tin thu thập được trong khung nhìn chức năng, các thông tin được cung cấp bởi mô hình cấu hình và mô hình hệ thống [63] Những mô hình ở giai đoạn thứ hai, được chuyển đổi thành các mô hình nền tảng
cụ thể (PSM), bằng sự chuyển đổi PIM sang PSM và tạo ra các đặc điểm của ứng dụng Web đối với nền tảng nhất định Ở giai đoạn cuối cùng, chuyển đổi PSM sang
Mã được thực hiện thông qua các mẫu [16]
Hình 1.21 Quy trình phát triển WebSA
1.3.3 WebML (Web Modeling Language)
WebML là một ngôn ngữ mô hình Web [17, 64] Phát triển ứng dụng với WebML được hỗ trợ bởi WebRatio, một công cụ thương mại cho việc thiết kế và thực hiện
Web Functional Viewpoint Web Architectural Viewpoint
Trang 40các ứng dụng Web [65, 66] Phương pháp này sử dụng ký hiệu (notation) riêng và không sử dụng meta-model tuân thủ MOF, mà sử dụng Document Type Definition (DTD) để lưu các mô hình nội dung và điều hướng Ví dụ định nghĩa dạng ngữ pháp (grammar-like definition) cho cấu trúc của tài liệu XML DTD không có tính trừu tượng như MOF và thiếu ký hiệu dễ hiểu Ngôn ngữ chuyển đổi XSLT (Extensible Stylesheet Language Transformation) được sử dụng cho việc chuyển đổi mô hình sang mã nguồn (hỗ trợ Java và JSP) XSLT không phù hợp với những chuyến đổi phức tạp, khó phát triển chương trình và dễ bị lỗi [1] Tuy nhiên, phương pháp tiếp cận mô hình định hướng của WebML đặc biệt hiệu quả trong việc tạo các trang Web
hỗ trợ đa thiết bị [67]
Theo [67] có 4 mô hình được đưa ra: (1) Mô hình cấu trúc, thể hiện các nội dung
dữ liệu của trang web trong thực thể và quan hệ, WebML không xác định ký pháp của mình mà thay vào đó đề xuất sử dụng kỹ thuật mô hình hóa chuẩn như Sơ đồ thực thể - quan hệ hoặc sơ đồ lớp UML (2) Mô hình siêu văn bản mô tả một hoặc nhiều hypertexts có thể được công bố trên trang web Mỗi một siêu văn bản xác định một trang web, bao gồm một tiểu mô hình thành phần và một tiểu mô hình điều hướng
Mô hình đầu tiên xác định các trang tạo nên siêu văn bản và các đơn vị nội dung kết cấu nên trang web, mô hình thứ hai mô tả cách các trang và các đơn vị nội dung được liên kết từ siêu văn bản (3) Mô hình thể hiện, nó trình bày các lớp và các đồ họa được thể hiện của trang web, độc lập với thiết bị đầu ra và ngôn ngữ thể hiện (4) Mô hình
cá nhân hóa, trong đó người sử dụng và nhóm được mô hình hóa một cách rõ ràng theo thực thể đã được xác định trước [67]
1.3.4 OOWS - Object-Oriented Web Solution
OOWS là phương pháp kỹ thuật Web, nó cung cấp kỹ thuật để hỗ trợ cho việc phát triển ứng dụng Web OOWS là sự mở rộng của phương pháp OO-H [65] OO-H gồm 3 mô hình: Mô hình cấu trúc, mô hình động và mô hình chức năng Để phù hợp cho việc phát triển ứng dụng web, OOWS đề xuất mới 3 mô hình: Mô hình người dùng, mô hình điều hướng và mô hình trình bày Ba mô hình mới cho phép mô tả đầy
đủ các ứng dụng Web tại mức PIM Quá trình tạo mã thực hiện bởi công cụ OlivaNova
1.3.5 Hypertext Modeling Method of MIDAS (MIDAS-HM3)
MIDAS (HM3) là một phương pháp luận cho sự phát triển nhanh hệ thống Web dựa trên MDA Nó đề xuất mô hình hóa hệ thống bằng cách quy định mô hình độc lập với tính toán (CIMs), PIMs, PSMs và sơ đồ hóa các nguyên tắc giữa các mô hình này [16, 68] Đề xuất mô hình hóa hệ thống theo ba khía cạnh cơ bản: Siêu văn bản, nội dung và hành vi Tuy nhiên, MIDSMH3 không đề xuất bất cứ mô hình hóa nào liên quan đến các vấn đề về kiến trúc Tất cả các mô hình trong MIDAS được tạo ra