ể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.. Chương 2: Phát triển các giải thuật sin
Trang 1B 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 TRONG PHÁT TRIỂ Ứ N NG D ỤNG WEB HƯỚ NG MÔ HÌNH
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 ế ắ
HÀ N I – 2018Ộ
1
Trang 2L Ờ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ướ ự hưới s 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 3LỜ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 Đặ ấn đềt v 27
2.2 Quy trình chuyển đổi MDA cho k thuỹ ật UWE 28
2.2.1 Lựa chọ ền tảng công nghện n 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 42.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 432.5.2 Xây dựng giải thuật PROM2C 482.6 Ti u kể ết chương 52Chươ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
3.1 Xây d ng công c CODEGER-ự ụ UWE 533.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 5DANH 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 Pl tf I d d t M d l
PSM Platform Specific Model
QVT Query Views Transformation
Trang 6UWE 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 7DANH 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ồ ừ mô hình điều hướn t ng 47
Hình 2.15 Các thành ph n trong mô hình x 49ầ ử lý 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
Trang 8Hì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 9DANH 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 10L 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 ông ngh ph n C ệ ầ
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ố ắng nhưng ận văn ắ g lu 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 11Cá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ụ ể và đánh giá th
k t qu ế ả
2 N ội dung củ a lu ận văn
N i dung luộ ận văn bao gồm chương:3
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 12hì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
n
Chương 2: Phát triển các giải thuật sinh mã nguồ 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 ối tương quan giữa các mô hình UWE với mô hình MVC, thểm
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 ừ mô hình nội dung t , giải thuật NPROM2C sinh mã thành phần Controller
t ừ mô hình điều hướng và xử lý, g ải thuật PRES2V sinh mã thành phần View từ mô ihì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 13Chươ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ộ hướng tiếp cận ) t
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 để ấu trúc 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) ử ụng các ngôn ngữ đặc tả chuyên biệ PIM sau , s d t
đó đượ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ể ử ụng các s dngô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 W eb 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ìnhMDWE (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ón linh ho t và chg, ạ ất lượng Trong kỹngh ệWeb hướng mô hình bao g m b n m c [1, 2, 14, 16]: ồ ố ứ
Trang 14o 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 m nhủ ệ ố ừ điể ìn độ ậc l p n n t ng ề ả Đó là
một mô hình của hệ ống không chứa thông tin cụ ể ề ề ả , hay công nghệ th th v n n t ngđượ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 15M 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 ắ đầu bằng mô hình PIM được thiết kế, b t 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 đồ s d ngca ử ụ 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ế ệ ứ ba dựa trên MDA h th ,
dựa trên mô hình quan hệ ực thể 6, 14 Trong WebML bổ sung, xây dựng tập ký th [ ] 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ử ụ metamodel tuân thủ MOF, mà sử ụ định nghĩa ểu tài d ng d ng ki
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ử ụng cho việc dchuyển đổi mô hình sang mã nguồn (hỗ ợ Java và JSP) XSLT không phù hợp với tr
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ử ụng nhiều nhất trong kỹ d thuật Web hướng mô hình [6, 14 UWE là một kỹ] thuật phát triể ứng dụn 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ý
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 16quen 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ể ứng dụng Web bao gồm mô hình CIM, PIM, PSM và kỹn 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 17Metamodel 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 181.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 đồ ạt động tương ứ ho ng
Hình 1.3 UWE profile cho mô hình yêu cầu [15]
Biểu đồ ca sử ụng mô tả ự tương tác đặc trưng giữa người dùng bên ngoài và hệ d s
thống Nó thể ện nghiệp vụ ủa hệ ống đối với bên ngoài, trong một hoàn cảnh nhấ hi c th 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ả ững gì hệ ống phải làm Tập hợp tất cả ể nh th bi u đồca sử ụng của d
h th ng s ệ ố ẽmô tả ấ ả các trườ t t c ng hợp mà hệ ố th ng có th ể được sử ụ d ng
Trang 19Biểu đồ hoạt động là bản vẽ ập trung vào mô tả các hoạt động, luồng xử lý bên ttrong hệ thống Nó có thể được sử ụng để d mô t ả chi tiết cho các yêu cầu quy trình nghiệp vụ trong hệ ống đã được mô tả sơ lược trong biểu đồ ca sử ụng Các luồ th d ng
của một chức năng hoặc các hoạt động của mộ đối tượng Các thành phần tạo nên biểu t
đồ ca s d ng và biử ụ ểu đồ hoạt động được mô t trong hình 1.3 ả
1.3.2 Mô hình ộ n i dung
Mô hình i dung nộ th hiể ện trong ình 1.4, mô th ả ấ 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]
1.3.3 Mô hình điề u hư ng ớ
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 ình 1.5 Nó được thể ện bằng biểu đồ ớp h hi l
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 20h 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]
1.3.4 Mô hình xử lý
Mô hình xử lý sẽ ể ện chi tiết quá trình xử lý được thực hiện như thế th hi nào, thể
hiện trong ình 1.6 Mô hình xửh 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 21Hình 1.6 UWE profile cho mô hình xử lý [15]
Trang 22Hì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ề ỹ thuậ k t sinh mã ngu n trong phát tri ồ ể n ứng
d ụng Web hướ ng mô hình
1.4.1 Các phương pháp sinh mã 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 23o 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 ộ ọ ừ
đặ ả mô hình văn bảc t 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 metaự ự model 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ệ ống tạo mã hướng mô hình th
là d a trên khuôn mự ẫu được mô tả ụ ể như sau: c th
Trang 24Hì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ụ ể nào Nó đượ ịnh nghĩa bằng cách mô hình hóa các tính năng và hành th c đ
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 ọ ả ữ ẽđượ ạo ra để ực t 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ụ ự động sinh mã ứng dụng Web nề ả t 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 25UWE4JSF 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ế ợp và điều hướng như thết h 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 26hướ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ớ ủa Eclipse cũng như UWE profile.i c
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 27Chươ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ể ứng dụng Web hoàn chỉnh, đáp ứng đần 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ả ủa bước chuyển đổi trên cho ta bốn mô hình ctrong 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ụ ể óa các giải thuật bằng việc xây dựng một plugin cho ứng dụng thương th h
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
Trang 28liệu được lấy trực tiếp bằng cách sử ụng các API của ứng dụng, mà không cần thông dqua định dạng đặ ả mô hình văn bảc t 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
mã
2.2.1 L a chự ọn nền tảng công ngh ệ
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ụ ỗ ợ ốt là VisualStudio, hỗ ợ ạnh mẽ ới bộ thư viện phong phú h tr t tr m v
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ụ ị kch 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ệ ủa Sun Microsystems, là một nền lập trình dành cho việc phát ctri n ể ứng dụng phân tán kiến trúc đa tầng, thường được sử ụng để xây dựng các hệ d
thống Website lớn đòi hỏi độ ảo mật cao, số lượng người dùng lớn Ưu điể b 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 29Java 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ề ảng Web.n t2.2.2 L a chự ọn mô hình 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ử ụng trong kỹ d 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ụ ủa các thành phần như sau: c
o Model: Có nhiệm v thao tác v i cơ sở ữ ệu, nghĩa là nó sẽ ứ ấ ảụ ớ d li ch a t t c các hàm,
Trang 30o 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à Vữ iew Nó có nhiệm v ti p nh n ụ ế ậyêu cầ ừu t trình kháchsau đó 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 ồ ả ế ả ề
2.2.3 L a chự ọn phương pháp sinh mã
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 đồ ớp, định nghĩa các đặ l 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 31annotation, 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 2.2.4 Quy trình chuyể n đ ổi MDA cho k ỹ thuật UWE
T nhừ ững sự ựa chọn được trình bày ở trên: nền tảng công nghệ J2EE, mô hình lWeb 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 ụ ể như sau:C th
Trang 32o 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 đổ sang JavaModel, sau đó đượi 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 ựng g ải thuậ d i t CM2M sinh mã thành phần Model ừ mô hình nội dung t (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 th c tính uộ(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 33UWEProperty2JavaClassMember UWEOperation2JavaMethod, , và quy tắc chuy n ể
đổi mô hình sang mã ngu n ồ JavaModel2SourceCode, thể ện như hình 2.7 hi
Hình 2.7 Các quy tắc cấu thành giải thuật CM2M
Đầ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 thuác ộc tính khác được gán các giá trị phù h p ợ
Trang 34Quy 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ụ 1 c
Minh h quy t ọ a ắ 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ữ ệu thuộ li c tính
• c thuác ộ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 ả ề
Trang 35o 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 thuác ộ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ủ ục (operation) được chuyển đổi tương ứng thành một phương t ức t h(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 quy t ọa ắ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 ki u d li u tr có ể ữ ệ ả
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 thuác ộc tính khác được gán các giá trị phù h p ợ
Trang 36Quy tắc 2.3.4 JavaModel2SourceCode
Sinh mã ngu n Java t ồ ừ JavaModel, được trình bày chi ti t trong ph l B ế ụ ục
Minh h quy t ọ a ắ c
Mô tả
Đầ u vào: JavaModel, là kết quả chuyển đổi cấp mô hình từ các lớ , các thành p
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 ồ ừ ộ
Trang 37Sinh 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 in c 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} ộ ớ
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 382.4 Xây d ụ ng g ả i 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 là một ví dụ ủa mô hình trình bày, thể hiệ các lớp có trong mô 9 c n 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 39Quy 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
c c trình bày chi ti t trong ph l 2
Minh h quy t ọ a ắ 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ủ ớp đầu vào, đầu ra a lJSPElement sẽ có các l p con JSPElement, JSPAttribute, JSPTextNode, ớJSPNode vớ ố lượi s ng, thu c tính khác nhau ộ
Trong ví d minh h a, JSPElementụ ọ thucó ộ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Đầ 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", hai có
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 ớp đầu vào: lớ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