1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu cải tiến kỹ thuật sinh mã nguồn trong phát triển ứng dụng web hướng mô hình theo kỹ thuật UWE

84 17 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 84
Dung lượng 2,82 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các công cụ chuyển đổi mô hình, sinh mã nguồn hiện có đã đáp ứng được một phần nhu cầu cho phương pháp phát triển ứng dụng Web hướng mô hình.. Các đóng góp khoa học của luận văn Luận vă

Trang 1

B Ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

Nguy ễn Thanh Giang

NGHIÊN C ỨU CẢI TIẾN KỸ THUẬT SINH MÃ NGUỒN

THEO K Ỹ THUẬT UWE

Chuyên ngành: Kỹ thuật phần mềm

LUẬN VĂN THẠC SĨ KỸ THUẬT

NGƯỜI HƯỚNG DẪN KHOA HỌC:

PGS.TS Huỳnh Quyết Thắng

Trang 2

L ỜI CAM ĐOAN

Tôi – Nguy ễn Thanh Giang – cam kết luận văn là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của PGS.TS Huỳnh Quyết Thắng

Các kết quả nêu trong luận văn là trung thực, không phải là sao chép toàn văn của

Trang 3

LỜI CAM ĐOAN 2

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ 5

DANH MỤC HÌNH 7

DANH MỤC BẢNG 9

MỞ ĐẦU 11

1 Mục đích nghiên cứu của luận văn 11

2 Nội dung của luận văn 11

3 Các đóng góp khoa học của luận văn 12

Chương 1: Tổng quan về kiến trúc hướng mô hình và kỹ thuật Web hướng mô hình UWE 13

1.1 Kiến trúc hướng mô hình 13

1.2 Các kỹ thuật Web hướng mô hình 13

1.3 Kỹ thuật UWE 16

1.3.1 Mô hình yêu cầu 18

1.3.2 Mô hình nội dung 19

1.3.3 Mô hình điều hướng 19

1.3.4 Mô hình xử lý 20

1.3.5 Mô hình trình bày 20

1.4 Tổng hợp các nghiên cứu về kỹ thuật sinh mã nguồn trong phát triển ứng dụng Web hướng mô hình 22

1.4.1 Các phương pháp sinh mã hướng mô hình 22

1.4.2 OptimalJ 24

1.4.3 UWE4JSF 24

1.5 Tiểu kết chương 25

Chương 2: Phát triển các giải thuật sinh mã nguồn 27

2.1 Đặt vấn đề 27

2.2 Quy trình chuyển đổi MDA cho kỹ thuật UWE 28

2.2.1 Lựa chọn nền tảng công nghệ 28

2.2.2 Lựa chọn mô hình Web 29

2.2.3 Lựa chọn phương pháp sinh mã 30

2.2.4 Quy trình chuyển đổi MDA cho kỹ thuật UWE 31

2.3 Xây dựng giải thuật CM2M sinh mã thành phần Model từ mô hình nội dung (Content Model to Model Code Genenation) 32

Trang 4

2.4 Xây dụng giải thuật PRES2V sinh mã thành phần View từ mô hình trình bày

(Presenation Model to View Code Generation) 38

2.5 Xây dụng giải thuật NPROM2C sinh mã thành phần Controller từ mô hình điều hướng và xử lý (Navigation and Processing Model to Controller Code Generation)43 2.5.1 Xây dựng giải thuật NM2C 43

2.5.2 Xây dựng giải thuật PROM2C 48

2.6 Tiểu kết chương 52

Chương 3: Cài đặt công cụ CODEGER-UWE tích hợp các giải thuật và áp dụng, đánh giá 53

3.1 Xây dựng công cụ CODEGER-UWE 53

3.2 Áp dụng công cụ CODEGER-UWE vào một bài toán cụ thể 55

3.3 Đánh giá 61

3.4 Tiểu kết chương 62

KẾT LUẬN 63

DANH MỤC THAM KHẢO 65

PHỤ LỤC 67

Trang 5

DANH M ỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

Từ viết tắt, thuật ngữ Từ viết đầy đủ

ATL Atlas Transformation Language

CIM Computation Independent Model

CSS Cascading Style Sheets

CWM Common Warehouse Metamodel

DTD Document Type Definition

EMF Eclipse Modeling Framework

HTML Hypertext Markup Language

ISM Implementation Specific Model

J2EE Java 2 Platform, Enterprise Edition

JET Java Emitter Templates

JSF Java Server Faces

JSP Java Server Pages

JSTL JSP Standard Tag Library

MDA Model Driven Architecture

MDD Model Driven Development

MDE Model Driven Engineering

MDSD Model Driven Software Development

MDWE Model Driven Web Engineering

MOF Meta Object Facility

MVC Model View Controller

OCL Object Constraints Language

OMG Object Management Group

OOHDM Object Oriented Hypermedia Design Method

OOHDMDA Object Oriented Hypermedia Design Method Driven Approach PIM Platform Independent Model

PSM Platform Specific Model

QVT Query Views Transformation

UML Unified Modeling Language

Trang 6

UWE Uml-based Web Engineering

W2000 (HDM) Hypertext Design Model

WebSA Web Software Architecture

WTP Web Tools Platform

XMI XML Metadata Interchange

XML eXtensible Markup Language

XSLT eXtensible Stylesheet Language Transformation

Trang 7

DANH M ỤC HÌNH

Hình 1.1 Cấu trúc MDA cho kỹ thuật Web [6] 14

Hình 1.2 UWE metamodel [15] 16

Hình 1.3 UWE profile cho mô hình yêu cầu [15] 18

Hình 1.4 UWE profile cho mô hình nội dung [15] 19

Hình 1.5 UWE profile cho mô hình điều hướng [15] 20

Hình 1.6 UWE profile cho mô hình xử lý [15] 21

Hình 1.7 UWE profile cho mô hình trình bày [15] 22

Hình 1.8 Phương pháp sinh mã dựa trên khuôn mẫu và bộ lọc [8] 22

Hình 1.9 Phương pháp sinh mã dựa trên khuôn mẫu và metamodel [8] 23

Hình 1.10 Phương pháp sinh mã dựa trên API [8] 23

Hình 1.11 Phương pháp sinh mã dựa trên khuôn mẫu [3] 24

Hình 1.12 Quy trình sinh mã UWE4JSF [4] 25

Hình 2.1 Cấu trúc MDA cho ứng dụng web theo kỹ thuật UWE 27

Hình 2.2 Mô hình MVC trong Web [17] 29

Hình 2.3 Java metamodel 30

Hình 2.4 JSP metamodel 31

Hình 2.5 Chuyển đổi mô hình PIM sang PSM, mã nguồn theo mô hình MVC 31

Hình 2.6 Các thành phần trong mô hình nội dung 32

Hình 2.7 Các quy tắc cấu thành giải thuật CM2M 33

Hình 2.8 Quy trình chuyển đổi sinh mã nguồn từ mô hình nội dung 36

Hình 2.9 Các thành phần trong mô hình trình bày 38

Hình 2.10 Các quy tắc cấu thành giải thuật PRES2V 38

Hình 2.11 Quy trình chuyển đổi sinh mã JSP từ mô hình trình bày 42

Hình 2.12 Các thành phần trong mô hình điều hướng 44

Hình 2.13 Các quy tắc cấu thành giải thuật NM2C 44

Hình 2.14 Quy trình chuyển đổi sinh mã nguồn từ mô hình điều hướng 47

Hình 2.15 Các thành phần trong mô hình xử lý 49

Hình 2.16 Các quy tắc cấu thành giải thuật PROM2C 49

Hình 2.17 Quy trình chuyển đổi sinh mã nguồn từ mô hình xử lý 51

Hình 3.1 Kiến trúc MagicDraw và CODEGER-UWE 54

Hình 3.2 Cài đặt CODEGER-UWE 54

Hình 3.3 Giao diện công cụ CODEGER-UWE 55

Trang 8

Hình 3.4 Bốn mô hình của AddressBook 57

Hình 3.5 Mã nguồn sinh ra từ bốn mô hình UWE 58

Hình 3.6 Khung ứng dụng Web 59

Hình 3.7 Giao diện trang web 59

Hình 3.8 Hiện thị các kết quả tìm kiếm Contact 60

Hình 3.9 Giao diện tạo mới Contact 60

Hình 3.10 Giao diện cập nhật một Contact đã có 60

Hình 3.11 Hiện thị lại danh sách sau khi đã xóa một Contact 61

Trang 9

DANH M ỤC BẢNG

Bảng 1 So sánh các kỹ thuật Web hướng mô hình [6] 16

Bảng 2 Các thành phần khuôn mẫu trong UWE [15] 17

Bảng 3 Bảng đánh giá mã nguồn 61

Trang 10

L ỜI CẢM ƠN

Để có thể hoàn thành luận văn tốt nghiệp này, em xin chân thành cảm ơn thầy hướng dẫn luận văn tốt nghiệp, PGS.TS Huỳnh Quyết Thắng, bộ môn Công nghệ phần

mềm, trường đại học Bách Khoa Hà Nội Thầy đã nhiệt tình hướng dẫn, truyền đạt

những kiến thức cần thiết và định hướng cho em trong quá trình thực hiện đề tài

Em xin chân thành cảm ơn sự giúp đỡ quý báu của anh Trần Đình Diễn, nghiên cứu sinh tại bộ môn Công nghệ phần mềm, trường đại học Bách Khoa Hà Nội

Em xin chân thành cảm ơn các thầy cô giáo ở bộ môn Công nghệ phần mềm, trường Đại học Bách Khoa Hà Nội

Dù đã cố gắng nhưng luận văn chắc chắn không tránh khỏi thiếu sót, em rất mong

nhận được ý kiến đóng góp của các thầy cô

Em xin chân thành cảm ơn!

Trang 11

Các công cụ chuyển đổi mô hình, sinh mã nguồn hiện có đã đáp ứng được một phần nhu cầu cho phương pháp phát triển ứng dụng Web hướng mô hình Đề tài tập trung

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, giảm bớt

thời gian cho người phát triển

1 M ục đích nghiên cứu của luận văn

Mục đích của luận văn là nghiên cứu 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

Việc cải tiến này được thể hiện thông qua xây dựng bộ quy tắc chuyển đổi cấp mô hình và xây dựng công cụ sinh mã nguồn dựa trên bộ quy tắc này

Luận văn có 3 nhiệm vụ cụ thể:

1) Trình bày bộ quy tắc chuyển đổi cấp mô hình: từ mô hình độc lập với nền tảng công nghệ (PIM) sang mô hình theo nền tảng công nghệ cụ thể (PSM) với nền tảng công nghệ được áp dụng là J2EE (Java 2 Platform, Enterprise Edition)

2) Xây dựng công cụ sinh mã nguồn CODEGER-UWE dựa trên bộ quy tắc chuyển đổi cấp mô hình

3) Áp dụng công cụ CODEGER-UWE đã xây dựng vào bài toán cụ thể và đánh giá

kết quả

2 N ội dung của luận văn

Nội dung luận văn bao gồm 3 chương:

Chương 1: Tổng quan về kiến trúc hướng mô hình và kỹ thuật Web hướng mô hình UWE Chương này giới thiệu kiến trúc hướng mô hình, các kỹ thuật Web hướng mô

Trang 12

hình, tổng hợp các nghiên cứu về kỹ thuật sinh mã nguồn trong phát triển ứng dụng hướng mô hình

Chương 2: Phát triển các giải thuật sinh mã nguồn Chương này giới thiệu bài toán,

lựa chọn nền tảng công nghệ, mô hình Web, phương pháp sinh mã, đưa ra quy trình chuyển đổi; trình bày mối tương quan giữa các mô hình UWE với mô hình MVC, thể

hiện các quy tắc chuyển đổi mô hình và xây dựng công cụ sinh mã

Chương 3: Cài đặt công cụ CODEGER-UWE tích hợp các giải thuật, áp dụng cho

một bài toán cụ thể và đánh giá

3 Các đóng góp khoa học của luận văn

Luận văn có hai đóng góp như sau:

Thứ nhất: Xây dựng các giải thuật sinh mã nguồn: giải thuật CM2M sinh mã thành

phần Model từ mô hình nội dung, giải thuật NPROM2C sinh mã thành phần Controller

từ mô hình điều hướng và xử lý, giải thuật PRES2V sinh mã thành phần View từ mô hình trình bày

Thứ hai: Xây dựng công cụ CODEGER-UWE tích hợp các giải thuật trên, áp dụng cho một bài toán cụ thể, đánh giá

Trang 13

Chương 1: Tổng quan về kiến trúc hướng mô hình

và kỹ thuật Web hướng mô hình UWE 1.1 Ki ến trúc hướng mô hình

Kiến trúc hướng mô hình MDA (Model Driven Architecture) là một hướng tiếp cận

vấn đề theo kỹ nghệ hướng mô hình MDE (Model Driven Engineering) do tổ chức OMG đề xuất MDA bắt đầu với ý tưởng tách đặc điểm kỹ thuật của hệ thống ra khỏi

nền tảng hoạt động của hệ thống [6, 7, 14] MDA cung cấp một cách tiếp cận và công

o UML (Unified Modeling Language): ngôn ngữ mô hình thống nhất

o MOF (Meta Object Facility): ngôn ngữ dùng để định nghĩa ngôn ngữ mô hình

o XML (eXtensible Markup Language): ngôn ngữ đánh dấu mở rộng

o CWM (Common Warehouse Metamodel): siêu mô hình ứng dụng kho lưu dữ liệu MDA mô tả khuôn mẫu cho việc phát triển phần mềm nhanh chóng hiệu quả và tối

ưu về chi phí, đồng thời cung cấp các hướng dẫn để cấu trúc các đặc tả lại thành các

mô hình, định nghĩa các chức năng của hệ thống dựa trên mô hình độc lập nền tảng PIM (Platform Independent Model), sử dụng các ngôn ngữ đặc tả chuyên biệt PIM sau

đó được chuyển thành một hoặc một vài mô hình phụ thuộc nền tảng xác định PSM (Platform Specific Model) mà các máy tính có thể chạy được PSM có thể sử dụng các ngôn ngữ đặc tả chuyên biệt hoặc các ngôn ngữ phổ biến như: Java, C#, C++ [6, 14]

1.2 Các k ỹ thuật Web hướng mô hình

Với những ưu điểm của MDA và những đặc điểm về tính đa dạng về công nghệ cũng như ngôn ngữ của phát triển các ứng dụng Web thì kỹ nghệ Web hướng mô hình MDWE (Model Driven Web Engineering) được áp dụng vào phát triển các ứng dụng Web nhằm tạo ra các ứng dụng Web nhanh chóng, linh hoạt và chất lượng Trong kỹ nghệ Web hướng mô hình bao gồm bốn mức [1, 2, 14, 16]:

Trang 14

o Mô hình độc lập tính toán CIM (Computation Independent Model) thể hiện mô hình hóa các chức năng của hệ thống

o Mô hình PIM là một khung nhìn của hệ thống từ điểm nhìn độc lập nền tảng Đó là

một mô hình của hệ thống không chứa thông tin cụ thể về nền tảng, hay công nghệ được dùng để thực hiện nó

o Mô hình PSM là một khung nhìn của một hệ thống từ điểm nhìn nền tảng cụ thể

Đó là một mô hình của hệ thống bao gồm thông tin về công nghệ cụ thể được dùng

để thực hiện nó trong một nền tảng cụ thể ví dụ Java hoặc NET

o Mô hình triển khai cụ thể ISM (Implementation Specific Model) cung cấp thông tin

Trang 15

Một số kỹ thuật Web hướng mô hình điển hình:

OOHDMDA: Phương pháp thiết kế đa phương tiện hướng đối tượng OOHDM

(Object Oriented Hypermedia Design Method) được đề xuất năm 1995 Ý tưởng của phương pháp này là chia việc thiết kế một hệ thống Web thành ba mô hình: mô hình khái niệm, mô hình điều hướng và mô hình giao diện trừu tượng [14] OOHDMDA là

kiến trúc hướng mô hình cho OOHDM, bắt đầu bằng mô hình PIM được thiết kế trong OOHDM, để tạo ra các PSM OOHDMDA cung cấp phương pháp thiết kế ứng dụng Web bằng cách kết hợp UML và các mô hình được định nghĩa trong OOHDM

W2000 (HDM): W2000 (Hypertext Design Model) dựa trên nguyên lý hướng đối tượng Phương pháp này đưa ra một vòng đời cho phát triển một ứng dụng Web [14] W2000 bắt đầu bằng bước phân tích yêu cầu dựa trên biểu đồ ca sử dụng Dựa trên

những thông tin có được ở bước phân tích yêu cầu để phát triển mô hình khái niệm và

mô hình điều hướng Tiếp theo W2000 thay đổi và mở rộng một số mô hình UML như

là biểu đồ lớp và biểu đồ trạng thái Cuối cùng sử dụng các biểu đồ tuần tự để mô tả

chức năng của hệ thống

WebML: WebML là một phương pháp thiết kế Web thế hệ thứ ba dựa trên MDA,

dựa trên mô hình quan hệ thực thể [6, 14] Trong WebML bổ sung, xây dựng tập ký pháp để thiết kế khái niệm của các trang Web phức tạp Phương pháp này sử dụng ký

hiệu riêng và không sử dụng metamodel tuân thủ MOF, mà sử dụng định nghĩa kiểu tài

liệu DTD (Document Type Definition) để 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 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 định kiểu mở rộng 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 [6]

UWE: UWE (Uml –based Web Engineering) là phương pháp hướng đối tượng dựa trên ngôn ngữ mô hình hóa UML, 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 trong kỹ thuật Web hướng mô hình [6, 14] 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

Trang 16

quen thuộc với UML Kỹ thuật Web hướng mô hình UWE đáp ứng đầy đủ các yêu cầu

của MDA cho việc phát triển ứng dụng Web bao gồm mô hình CIM, PIM, PSM và kỹ thuật chuyển đổi từ mô hình CIM sang PIM, từ mô hình PIM sang PSM

Hình 1.2 UWE metamodel [15]

Trang 17

Metamodel UWE được định nghĩa như một phần mở rộng cho UML 2.0 UML profile tương thích với hầu hết công cụ UML Metamodel UWE định nghĩa một số khuôn mẫu mở rộng cho UML dựa trên những đặc trưng riêng của các ứng dụng Web

Trang 18

1.3.1 Mô hình yêu c ầu

Mô hình yêu cầu sẽ bao gồm hai thành phần cơ bản đó là các biểu đồ ca sử dụng và các biểu đồ hoạt động tương ứng

Hình 1.3 UWE profile cho mô hình yêu cầu [15]

Biểu đồ ca sử dụng mô tả sự tương tác đặc trưng giữa người dùng bên ngoài và hệ

thống Nó thể hiện nghiệp vụ của hệ thống đối với bên ngoài, trong một hoàn cảnh nhất định, xét từ quan điểm của người sử dụng Biểu đồ ca sử dụng mô tả các yêu cầu đối

với hệ thống, mô tả những gì hệ thống phải làm Tập hợp tất cả biểu đồ ca sử dụng của

hệ thống sẽ mô tả tất cả các trường hợp mà hệ thống có thể được sử dụng

Trang 19

Biểu đồ hoạt động là bản vẽ tập trung vào mô tả các hoạt động, luồng xử lý bên trong hệ thống Nó có thể được sử dụng để mô tả chi tiết cho các yêu cầu quy trình nghiệp vụ trong hệ thống đã được mô tả sơ lược trong biểu đồ ca sử dụng Các luồng

của một chức năng hoặc các hoạt động của một đối tượng Các thành phần tạo nên biểu

đồ ca sử dụng và biểu đồ hoạt động được mô tả trong hình 1.3

Mô hình nội dung thể hiện trong hình 1.4, mô tả cấu trúc và quan hệ giữa các thành

phần tạo nên phần mềm Mô hình hoá nội dung không đòi hỏi bất kỳ cấu trúc bổ sung Các lớp UML thông thường được sử dụng cho mô hình hoá mô hình nội dung tương tự

như mô hình hóa các ứng dụng không phải là Web

Hình 1.4 UWE profile cho mô hình nội dung [15]

Mô hình điều hướng mô tả luồng chuyển hướng tương ứng với hành động người sử

dụng trong ứng dụng Web, thể hiện trong hình 1.5 Nó được thể hiện bằng biểu đồ lớp

và bổ sung các khuôn mẫu của UWE đại diện cho các nút, các liên kết, thực đơn và chỉ

Trang 20

hệ thống mà người dùng có thể tương tác để chuyển đổi giữa các trang, các danh mục

nội dung của trang Web

Hình 1.5 UWE profile cho mô hình điều hướng [15]

Mô hình xử lý sẽ thể hiện chi tiết quá trình xử lý được thực hiện như thế nào, thể

hiện trong hình 1.6 Mô hình xử lý đại diện cho các khía cạnh động của ứng dụng Web, cung cấp các phần tử mô hình cho việc tích hợp quy trình vào một mô hình ứng dụng Web Gói xử lý có thể được chia thành ba nhiệm vụ [15]: (1) Tích hợp các quy trình nghiệp vụ vào mô hình điều hướng; (2) Định nghĩa một giao diện người dùng để hỗ trợ các xử lý (3) Định nghĩa hành vi

1.3.5 Mô hình trình bày

Mô hình trình bày như thể hiện trong hình 1.7, mô tả một cái nhìn trừu tượng về giao diện người dùng của ứng dụng Web Mô hình trình bày định nghĩa nhiều khuôn

mẫu cho các loại thành phần khác nhau, ví dụ như khung nhập văn bản, các nút bấm,

… nhưng không cung cấp chi tiết cụ thể như kiểu CSS hoặc các yếu tố HTML [6]

Trang 21

Hình 1.6 UWE profile cho mô hình xử lý [15]

Trang 22

Hình 1.7 UWE profile cho mô hình trình bày [15]

1.4 T ổng hợp các nghiên cứu về kỹ thuật sinh mã nguồn trong phát triển ứng

d ụng Web hướng mô hình

o Khuôn mẫu và bộ lọc (Template and Filtering)

Phương pháp [8] này là phương pháp đơn giản nhất để sinh mã nguồn Mã nguồn được sinh ra bằng cách áp dụng khuôn mẫu cho đặc tả mô hình văn bản (thường là XML/XMI), và sau khi lọc một vài phần của đặc tả Một phần của mã nguồn cũng được nhúng trong khuôn mẫu

Hình 1.8 Phương pháp sinh mã dựa trên khuôn mẫu và bộ lọc [8]

Trang 23

o Khuôn mẫu và metamodel (Template and metamodel)

Phương pháp [8] này là một sự mở rộng của phương pháp Khuôn mẫu và bộ lọc Từ đặc tả mô hình văn bản, ta xây dựng metamodel rồi áp dụng khuôn mẫu Khuôn mẫu được mô tả trong phạm vi của metamodel

Hình 1.9 Phương pháp sinh mã dựa trên khuôn mẫu và metamodel [8]

o Sinh mã dựa trên API (API –based Generator)

Phương pháp [8] này mô tả kỹ thuật mà ở đó, trình khách sẽ gọi API để sinh mã, API này được xây dựng dựa trên metamodel hay cú pháp của ngôn ngữ đích Phương pháp này phù hợp sử dụng cho việc sinh một lượng nhỏ mã nguồn do API nhanh chóng

trở lên phức tạp, rườm rà với mô hình lớn

Hình 1.10 Phương pháp sinh mã dựa trên API [8]

Nhìn chung, giải pháp cho nhu cầu sinh mã tự động là sử dụng bộ tạo mã dựa trên khuôn mẫu hướng mô hình (Model –driven Template –based Code Generators) Bộ tạo

mã lấy thông tin từ mô hình và khuôn mẫu làm đầu vào, sau đó chuyển đổi sang mã nguồn/chương trình Kiến trúc bậc cao điển hình của hệ thống tạo mã hướng mô hình

là dựa trên khuôn mẫu được mô tả cụ thể như sau:

Trang 24

Hình 1.11 Phương pháp sinh mã dựa trên khuôn mẫu [3]

1.4.2 OptimalJ

OptimalJ [12] là một trong những môi trường phát triển đầu tiên triển khai MDA, được phát hành lần đầu vào năm 2001 bởi Compuware tại Amsterdam, dựa trên NetBeans IDE của Sun Microsystem Từ năm 2006, OptimalJ phát triển dựa trên Eclipse IDE Các mô hình trong OptimalJ có các mức trừu tượng khác nhau:

o Mô hình miền (OptimalJ Domain Model) tương ứng với PIM trong MDA Nó định nghĩa miền nghiệp vụ (Business Domain) mà không có bất cứ thông tin chi tiết nền

tảng cụ thể nào Nó được định nghĩa bằng cách mô hình hóa các tính năng và hành

vi của ứng dụng, thông tin phụ thuộc miền được xây dựng dựa trên MOF bằng UML

o Mô hình miền được chuyển đổi tự động sang mô hình ứng dụng (OptimalJ Application Model), tương ứng với PSM trong MDA Miền ứng dụng định nghĩa ứng dụng, dựa trên nền tảng công nghệ được lựa chọn J2EE Nó mô tả những gì sẽ được tạo ra để thực hiện ứng dụng, bằng cách cung cấp một logic tổng quan về các thành phần chứa trong mỗi tầng tạo nên ứng dụng

o Miền ứng dụng được chuyển đổi tự động sang mô hình mã (OptimalJ Code Model) tương ứng với Code/Text trong MDA Mô hình mã tạo ra mã ứng dụng

OptimalJ không còn được tiếp tục phát triển từ năm 2008

1.4.3 UWE4JSF

UWE4JSF [4] là công cụ tự động sinh mã ứng dụng Web nền tảng JSF 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)

Trang 25

UWE4JSF sử dụng ngôn ngữ chuyển đổi mô hình ATL (Atlas Transformation Language) và công cụ mã nguồn mở JET (Java Emitter Template) ATL xây dựng các quy tắc xác định các phần tử mô hình nguồn được kết hợp và điều hướng như thế nào

để tạo và khởi tạo các phần tử của mô hình đích JET cung cấp một framework và tiện ích cho việc sinh mã, khuôn mẫu JSP với đầu vào mặc định là file xml

UWE4JSF tương thích trên Eclipse Galileo (version 3.5), Eclipse Helios (version 3.6), yêu cầu cài đặt nền tảng công cụ Web WTP (Web Tools Platform), EMF, JET, ATL và 2 sub –project: uwe4jsf –persistence –hibernate & uwejsf –framework

Phiên bản mới nhất của UWE4JSF năm 2007

Hình 1.12 Quy trình sinh mã UWE4JSF [4]

Trang 26

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

Luận văn hướng đến nghiên cứu cải tiến kỹ thuật sinh mã nguồn cho ứng dụng Web hướng mô hình UWE, xây dựng phát triển các giải thuật sinh mã nguồn từ bốn mô hình UWE dựa trên những nghiên cứu đã có về kỹ thuật sinh mã nguồn, đồng thời cụ thể hóa bằng việc xây dựng công cụ sinh mã

Trang 27

Chương 2: Phát triển các giải thuật sinh mã nguồn 2.1 Đặt vấn đề

Như đã giới thiệu ở chương một, trong MDA, sự chuyển đổi các mức được định nghĩa: chuyển đổi CIM sang PIM, PIM sang PSM và từ PSM sang mã nguồn Kỹ thuật UWE là phương pháp hướng đối tượng dựa trên ngôn ngữ mô hình hóa UML, là một

kỹ thuật phát triển ứng dụng Web hoàn chỉnh, đáp ứng đầy đủ các yêu cầu của MDA bao gồm các mô hình CIM, PIM, PSM và kỹ thuật chuyển đổi từ mô hình CIM sang PIM, từ mô hình PIM sang PSM [11], thể hiện trong hình 2.1

Hình 2.1 Cấu trúc MDA cho ứng dụng web theo kỹ thuật UWE

Những nghiên cứu trước đó [1, 2, 7] đã cơ bản hoàn thiện các kỹ thuật chuyển đổi

cấp mô hình từ CIM sang PIM Kết quả của bước chuyển đổi trên cho ta bốn mô hình trong kỹ thuật UWE: nội dung, điều hướng, xử lý và trình bày, là đầu vào cho bước chuyển đổi kế tiếp Tài liệu [1] cũng trình bày các quy tắc chuyển đổi mô hình PIM sang PSM, chuyển đổi PSM sang mã, tuy nhiên các quy tắc được đưa ra chưa được đầy

đủ, chưa có sơ đồ chuyển đổi một cách tổng quan

Luận văn vì lẽ đó tiếp tục nghiên cứu, đi sâu vào việc phát triển các giải thuật sinh

mã từ bốn mô hình UWE, nhằm hoàn thiện quy trình chuyển đổi MDA cho kỹ thuật UWE và cụ thể hóa các giải thuật bằng việc xây dựng một plugin cho ứng dụng thương

mại MagicDraw Để thực hiện được điều này, ta cần phải:

o Lựa chọn nền tảng công nghệ, mô hình Web, phương pháp sinh mã, từ đó đưa ra

tổng quan chung cho quy trình chuyển đổi

o Xây dựng giải thuật chuyển đổi cấp mô hình PIM sang PSM và chuyển đổi PSM sang mã nguồn

Trong phạm vi luận văn, quy trình chuyển đổi sẽ được thực hiện hoàn toàn trong môi trường ứng dụng MagicDraw Đầu vào của luận văn là bốn mô hình UWE với dữ

Trang 28

liệu được lấy trực tiếp bằng cách sử dụng các API của ứng dụng, mà không cần thông qua định dạng đặc tả mô hình văn bản (XML/XMI)

2.2 Quy trình chuy ển đổi MDA cho kỹ thuật UWE

Như đã trình bày ở trên, để đưa ra quy trình chuyển đổi MDA cho kỹ thuật UWE

cần lựa chọn được nền tảng công nghệ, lựa chọn mô hình Web và phương pháp sinh

ASP.NET được phát triển bởi Microsoft, cung cấp cho các nhà phát triển một công

cụ kịch bản dễ dàng để xây dựng các trang Web và các ứng dụng ASP.NET dễ phát triển, có công cụ hỗ trợ tốt là VisualStudio, hỗ trợ mạnh mẽ với bộ thư viện phong phú

và đa dạng của NET framework, độ bảo mật tốt, phù hợp với dự án doanh nghiệp vừa

và nhỏ Nhược điểm là chỉ hoạt động tốt trong môi trường Windows, mã nguồn đóng

và mất phí

PHP viết tắt của Hypertext Preprocessor, hoàn toàn là mã nguồn mở, ban đầu là một công cụ kịch bản, sau đó được biết đến rộng rãi nhờ việc học nó dễ dàng và cộng đồng phát triển rất lớn PHP dễ học, miễn phí, có nhiều framework hỗ trợ như Zend, Symfony, Laravel giúp cho việc phát triển nhanh và tốt hơn, có trình quản lý nội dung văn bản, hình ảnh, video rất tốt, phù hợp với dự án Web vừa và nhỏ PHP không được đánh giá cao về khả năng bảo mật so với ASP.NET, khó bảo trì hoặc mở rộng do cách

viết mã nguồn tương đối tùy tiện

J2EE là công nghệ của Sun Microsystems, là một nền lập trình dành cho việc phát triển ứng dụng phân tán kiến trúc đa tầng, thường được sử dụng để xây dựng các hệ

thống Website lớn đòi hỏi độ bảo mật cao, số lượng người dùng lớn Ưu điểm lớn của J2EE là có kiến trúc thiết kế tốt, cộng đồng mạnh do là công nghệ mở, có framework

hỗ trợ tốt như Spring, chạy tốt trên nhiều nền tảng và hoàn toàn miễn phí J2EE không

dễ học như PHP hay ASP.NET, cần nhiều kinh nghiệm để có thể xây dựng một dự án

Trang 29

Java và một số hành động xử lý đã được định trước (pre –defined actions) và trong

nội dung tĩnh của trang JSTL (JSP Standard Tag Library) là thư viện chuẩn của JSP, cung cấp các thẻ để kiểm soát hành vi của trang, vòng lặp, các lệnh điều khiển, các thẻ quốc tế hóa và các thẻ SQL

o JavaBean là một kiểu lớp Java đặc biệt có một số đặc thù:

• Có một hàm khởi tạo mặc định, không có tham số

• Thuộc tính của thành phần có thể là đọc, ghi, chỉ đọc, chỉ ghi

• Tất cả các thuộc tính đều là private, được truy cập hoặc gán giá trị thông qua getter/setter

o Spring là một framework phát triển các ứng dụng Java: Java Desktop, Java Web, Java Mobile, giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại mã nguồn,… Spring là mã nguồn mở, được phát triển, chia sẻ, có cộng đồng người dùng rất lớn với kích thước nhỏ Spring được chia thành nhiều gói, trong đó SpringMVC được thiết kế dành cho việc xây dựng các ứng dụng nền tảng Web

Mô hình MVC (Model –View –Controller) là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm Nó giúp cho người phát triển tách ứng

dụng của ba thành phần khác nhau Model, View và Controller 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 Do được chia thành các thành

phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì

Hình 2.2 Mô hình MVC trong Web [17]

Nhiệm vụ của các thành phần như sau:

o Model: Có nhiệm vụ thao tác với cơ sở dữ liệu, nghĩa là nó sẽ chứa tất cả các hàm, các phương thức truy vấn trực tiếp với dữ liệu Controller sẽ thông qua các hàm,

Trang 30

o View: Có nhiệm vụ tiếp nhận dữ liệu từ Controller và hiển thị nội dung sang các đoạn mã HTML, còn gọi là thành phần giao diện

o Controller: Đóng vai trò trung gian giữa Model và View Nó có nhiệm vụ tiếp nhận yêu cầu từ trình khách sau đó xử lý các yêu cầu đó, gọi các Model tương ứng và gửi

dữ liệu qua View tương ứng rồi trả kết quả về cho trình khách

Chương 1 đã giới thiệu các phương pháp sinh mã trong phát triển ứng dụng Web hướng mô hình: phương pháp khuôn mẫu và bộ lọc, phương pháp khuôn mẫu và metamodel, và phương pháp sinh mã dựa trên API Phương pháp khuôn mẫu và metamodel được lựa chọn trong phạm vi luận văn do có ưu thế hơn so với hai phương pháp còn lại

Metamodel là một biểu đồ lớp, định nghĩa các đặc tả mô hình cho mô hình, ngôn

ngữ đích Nền tảng công nghệ được chọn là J2EE có các metamodel là Java metamodel

và JSP metamodel

Hình 2.3 Java metamodel Java metamodel được mô tả trong hình 2.3, được tham khảo từ tài liệu [1] So với nguyên mẫu gốc, Java metamodel được bổ sung thêm thành phần thuộc tính

Trang 31

annotation, ki ểu dữ liệu là String vào lớp JavaClassMember và JavaClass phục vụ

mục đích của tác giả

JSP metamodel được mô tả trong hình 2.4, được tham khảo từ tài liệu [1]

Hình 2.4 JSP metamodel

Từ những sự lựa chọn được trình bày ở trên: nền tảng công nghệ J2EE, mô hình Web MVC, phương pháp sinh mã 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, ta đưa ra được quy trình chuyển đổi MDA cho kỹ thuật UWE như hình 2.5 Cụ thể như sau:

Trang 32

o 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 Giải thuật chuyển đổi có tên là CM2M

o 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 Giải thuật

chuyển đổi có tên NPROM2C

o Mô hình trình bày được chuyển đổi sang JSPModel, là một thể hiện của JSP

metamodel, sau đó chuyển đổi sang mã JSP, tương ứng thành phần View Giải thuật chuyển đổi có tên PRES2V

Xây dựng các giải thuật này được trình bày ở phần tiếp theo của luận văn

2.3 Xây d ựng giải thuật CM2M sinh mã thành phần Model từ mô hình nội dung (Content Model to Model Code Genenation)

Mô hình nội dung sử dụng thành phần mô hình UML chuẩn cho mô hình cấu trúc như các lớp, các liên kết và các gói để mô hình hóa nội dung ứng dụng Web Hình 2.6

là một ví dụ của mô hình nội dung, thể hiện các lớp có trong mô hình, các thuộc tính (attributes), các thủ tục (operations), các liên kết, sự kế thừa của lớp

Hình 2.6 Các thành phần trong mô hình nội dung Các lớp, các thành phần trong lớp của mô hình nội dung được chuyển đổi sang JavaModel thông qua ba quy tắc chuyển đổi cấp mô hình: UWEClass2JavaClass,

Trang 33

UWEProperty2JavaClassMember, UWEOperation2JavaMethod, và quy tắc chuyển

đổi mô hình sang mã nguồn JavaModel2SourceCode, thể hiện như hình 2.7

Hình 2.7 Các quy tắc cấu thành giải thuật CM2M

Quy t ắc 2.3.1 UWEClass2JavaClass

Tạo lớp JavaBean tương ứng với một lớp trong mô hình nội dung, giữ nguyên sự kế

thừa giữa các lớp

Quy tắc được trình bày chi tiết trong phụ lục A, mục 1

Minh h ọa quy tắc

Mô t ả

Đầu vào: Lớp, trong mô hình nội dung

Trong ví dụ minh họa, lớp có tên là "JSPElement", kế thừa từ lớp "JSPNode"

Đầu ra: JavaClass với các thuộc tính:

o name: tên của lớp đầu vào

o superClasses: tên của lớp đầu vào được kế thừa

o các thuộc tính khác được gán các giá trị phù hợp

Trang 34

Quy t ắc 2.3.2 UWEProperty2JavaClassMember

Mỗi một thuộc tính (attribute) được chuyển đổi tương ứng thành một trường (field) trong JavaBean có phạm vi truy cập là "private", đi cùng là hai phương thức truy cập (getter), gán giá trị (setter) tương ứng có phạm vi truy cập là "public"

Quy tắc được trình bày chi tiết trong phụ lục A, mục 1

Minh h ọa quy tắc

Mô t ả

Đầu vào: Thuộc tính của lớp

Trong ví dụ minh họa, thuộc tính có tên là "name", có kiểu dữ liệu là "String"

Đầu ra: JavaField, JavaMethod (hàm getter), JavaMethod (hàm setter)

Trong ví dụ minh họa:

o JavaField có các thuộc tính:

• name: "_" + tên của thuộc tính

• type: kiểu dữ liệu của thuộc tính

• initialize: khởi tạo giá trị dựa trên kiểu dữ liệu thuộc tính

• các thuộc tính khác được gán các giá trị phù hợp

o JavaMethod (getter) có các thuộc tính:

• name: "get" + tên của thuộc tính

• type: kiểu dữ liệu của thuộc tính

• body: trả về JavaField

• các thuộc tính khác được gán các giá trị phù hợp

Trang 35

o JavaMethod (setter) có các thuộc tính:

• name: "set" + tên thuộc tính

• parameter: tạo tham số truyền vào theo tên và kiểu dữ liệu thuộc tính

• body: gán giá trị cho JavaField

• các thuộc tính khác được gán các giá trị phù hợp

Quy t ắc 2.3.3 UWEOperation2JavaMethod

Mỗi một thủ tục (operation) được chuyển đổi tương ứng thành một phương thức (method), có cùng kiểu dữ liệu trả về và tham số đầu vào Nội dung phương thức là

mặc định

Quy tắc được trình bày chi tiết trong phụ lục A, mục 1

Minh h ọa quy tắc

Mô t ả

Đầu vào: Phương thức của lớp

Trong ví dụ minh họa, phương thức "toCode" của lớp JSPNode có kiểu dữ liệu trả

về là "String", không có tham số

Đầu ra: JavaMethod với các thuộc tính:

o name: tên của phương thức đầu vào

o type: kiểu dữ liệu trả về của phương thức

o parameter: tham số của phương thức

o body: trả về giá trị mặc định, phụ thuộc vào kiểu dữ liệu trả về của phương

thức

o các thuộc tính khác được gán các giá trị phù hợp

Trang 36

Quy t ắc 2.3.4 JavaModel2SourceCode

Sinh mã nguồn Java từ JavaModel, được trình bày chi tiết trong phụ lục B

Minh h ọa quy tắc

Mô t ả

Đầu vào: JavaModel, là kết quả chuyển đổi cấp mô hình từ các lớp, các thành

phần có trong lớp trong mô hình nội dung

Đầu ra: Mã nguồn Java

Hình 2.8 thể hiện quy trình chuyển đổi sinh mã nguồn từ mô hình nội dung

Hình 2.8 Quy trình chuyển đổi sinh mã nguồn từ mô hình nội dung

Trang 37

Mô t ả giải thuật CM2M

B1 Đọc mô hình, lấy ra biểu đồ nội dung, tạo danh sách chứa các lớp có trong biểu đồ B2 Duyệt danh sách và thực hiện các chuyển đổi đối với từng lớp, từng thành phần sử

dụng các quy tắc đã được trình bày ở trên

Gi ải thuật CM2M

Sinh mã nguồn từ mô hình nội dung

Đầu vào: ContentModel {UWE Model}

Đầu ra: listfile {JavaCode}

1: Begin

2: listClass ←ContentModel.getListClass {Lấy danh sách các lớp có trong mô

hình nội dung}

3: For c in listClass do

4: Tạo file {Tạo file với tên tương ứng với tên của lớp}

5: jc ←UWEClass2JavaClass(c) theo quy tắc 2.3.1

6: listProperty ←c.getlistproperty{Lấy danh sách các thuộc tính có trong lớp}

for p in listProperty do

jf, jg, js ←UWEProperty2JavaClassMember(p) theo quy tắc 2.3.2

jc.members.add(jf, jg, js){Thêm các thành phần vào lớp JavaClass} 7: listOperation ←c.getlistoperation {Lấy danh sách các phương thức có

trong lớp}

for o in listOperation do

jm←UWEOperation2JavaMethod (o) theo quy tắc 2.3.3

jc.members.add(jm) {Thêm các thành phần vào lớp JavaClass} 8: sourcecode ←jc.toCode theo quy tắc 2.3.4

9: Ghi sourcecode vào file

listfile.add(file)

10: return listfile

Trang 38

2.4 Xây d ụng giải thuật PRES2V sinh mã thành phần View từ mô hình trình bày (Presenation Model to View Code Generation)

Mô hình trình bày mô tả một cái nhìn trừu tượng về giao diện người dùng của ứng

dụng Mô hình trình bày được xây dựng trên các định nghĩa khuôn mẫu (stereotype) cho các loại thành phần khác nhau, ví dụ khung nhập văn bản (text), các nút bấm (button), … Hình 2.9 là một ví dụ của mô hình trình bày, thể hiện các lớp có trong mô hình, định nghĩa khuôn mẫu của từng lớp và quan hệ giữa các lớp với nhau

Hình 2.9 Các thành phần trong mô hình trình bày Các lớp của mô hình trình bày được chuyển đổi sang JSPModel thông qua hai quy

tắc chuyển đổi cấp mô hình PreElement2JSP, PreClass2JSP và quy tắc chuyển đổi mô

hình sang mã nguồn JSPModel2SourceCode, thể hiện như hình 2.10

Hình 2.10 Các quy tắc cấu thành giải thuật PRES2V

Trang 39

Quy t ắc 2.4.1 PreElement2JSP

Lớp có khuôn mẫu là văn bản (text), nút bấm (button), khung nhập văn bản (text input), hình ảnh (image), mỏ neo (anchor),…, được gọi chung là UIElement, được chuyển đổi thành các thành phần tương ứng trong JSP

Quy tắc được trình bày chi tiết trong phụ lục A, mục 2

Minh h ọa quy tắc

Mô t ả

Đầu vào: Lớp, trong mô hình trình bày

Trong ví dụ minh họa, lớp có tên là "Introduction" có khuôn mẫu là văn bản

Đầu ra: JSPElement Tùy thuộc vào khuôn mẫu của lớp đầu vào, đầu ra

JSPElement sẽ có các lớp con JSPElement, JSPAttribute, JSPTextNode, JSPNode với số lượng, thuộc tính khác nhau

Trong ví dụ minh họa, JSPElement có thuộc tính name có giá trị là "c:out", và JSPAttribute là con của JSPElement, có thuộc tính:

o name: "value"

o value: được xây dựng trên cơ sở tên của lớp đầu vào

Trang 40

Quy t ắc 2.4.2 PreClass2JSP

Lớp có khuôn mẫu là trang (presentationPage), biểu mẫu (inputform), nhóm (presentationGroup), khung thay thế (presentationAlternative), ngoài việc được chuyển đổi thành các thành phần tương ứng trong JSP, còn cần xác định các lớp con được chứa bên trong và tiếp tục quá trình chuyển đổi

Quy tắc được trình bày chi tiết trong phụ lục A, mục 2

Minh h ọa quy tắc

Mô t ả

Đầu vào: Lớp, trong mô hình trình bày

Trong ví dụ minh họa, lớp có tên là "SearchForm" có khuôn mẫu là biểu mẫu

Đầu ra: JSPElement Tùy thuộc vào khuôn mẫu của lớp đầu vào, đầu ra

JSPElement sẽ có các lớp con JSPElement, JSPAttribute, JSPTextNode, JSPNode

với số lượng, thuộc tính khác nhau Ngoài ra, các lớp con có trong lớp đầu vào

tiếp tục được chuyển đổi dựa trên khuôn mẫu của nó bằng cách gọi lại chính PreClass2JSP (thực hiện đệ quy) hay quy tắc 2.4.1 PreElement2JSP

Trong ví dụ minh họa, JSPElement có thuộc tính name có giá trị là "form", có hai

lớp con JSPAttribute với các thuộc tính có giá trị được xây dựng trên cơ sở tên

lớp đầu vào, có lớp con JSPElement có thuộc tính name là "table" chứa lớp chuyển đổi của các lớp là con của lớp đầu vào: lớp "SearchCriterion" có khuôn

mẫu là khung nhập văn bản và lớp "Search" có khuôn mẫu là nút bấm

Ngày đăng: 28/02/2021, 00:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm