Tải bản đầy đủ (.pdf) (66 trang)

Mô hình hóa chuyên biệt miền cho ứng dụng web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.91 MB, 66 trang )

1

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

PHẠM VĂN THANH

MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN
CHO ỨNG DỤNG WEB

LUẬN VĂN THẠC SĨ

Hà Nội - 2015


2

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

PHẠM VĂN THANH

MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN
CHO ỨNG DỤNG WEB

Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60480103

LUẬN VĂN THẠC SĨ


NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. Đặng Đức Hạnh

Hà Nội - 2015


3

LỜI CẢM ƠN

Trước hết, tôi xin gửi lời biết ơn sâu sắc đến Tiến sĩ Đặng Đức Hạnh, bộ
môn Công nghệ phần mềm, khoa Công nghệ Thông tin, Trường Đại học Công
nghệ, Đại học Quốc Gia Hà Nội đã dành rất nhiều thời gian và tâm huyết hướng
dẫn, giúp đỡ tôi hoàn thành luận văn tốt nghiệp cao học này.
Nhân đây, tôi xin chân thành cảm ơn Ban Giám hiệu Trường Đại học Công
nghệ, Đại học Quốc Gia Hà Nội cùng quý thầy cô trong Khoa Công nghệ Thông
tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội đã tạo điều kiện cho
tôi học tập và hoàn thành tốt khóa học.
Đồng thời, tôi cũng xin cảm ơn tới Ban Giám đốc, đồng nghiệp của tôi tại
Trung tâm Dịch vụ việc làm Thanh niên Trung ương Đoàn, nơi tôi đang công
tác đã tạo điều kiện cho tôi về thời gian để tôi tham gia đầy đủ khóa học.
Mặc dù đã có nhiều cố gắng để hoàn thiện luận văn nhưng không thể tránh
khỏi được những thiếu sót, rất mong nhận được những đóng góp quý báu của
quý thầy cô, đồng nghiệp và các bạn.
Tôi xin chân thành cảm ơn. /.

Hà Nội, ngày 5 tháng 10 năm 2015
HỌC VIÊN

Phạm Văn Thanh



4

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn “Mô hình hóa chuyên biệt miền cho ứng dụng
Web” là do chính tôi viết dưới sự hướng dẫn của Tiến sĩ Đặng Đức Hạnh. Nội
dung của luận văn có tham khảo một số tài liệu chứ không sao chép từ bất kỳ tài
liệu nào đã được công bố.

Hà Nội, ngày 5 tháng 10 năm 2015
HỌC VIÊN

Phạm Văn Thanh


5

MỤC LỤC
Trang
LỜI CẢM ƠN ......................................................................................................... 1
LỜI CAM ĐOAN .................................................................................................... 4
MỤC LỤC .............................................................................................................. 5
DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT ................................................................... 7
DANH MỤC HÌNH VẼ ........................................................................................... 8
MỞ ĐẦU .............................................................................................................. 10
CHƯƠNG 1: TỔNG QUAN VỀ MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN ............... 12

1.1. Khái niệm mô hình và mô hình hóa ........................................................ 12
1.1.1. Khái niệm mô hình ............................................................................. 12

1.1.2. Khái niệm mô hình hóa....................................................................... 12
1.2.3. Mô hình hoá trực quan ........................................................................ 12
1.1.4. Mô hình hóa mục đích chung.............................................................. 13
1.2. Mô hình hóa chuyên biệt miền ................................................................ 14
1.2.1. Cấu trúc của mô hình hóa chuyên biệt miền........................................ 14
1.2.2. Mô hình kiến trúc của mô hình hóa chuyên biệt miền ......................... 15
1.3. Ngôn ngữ mô hình hóa chuyên biệt miền ............................................... 16
1.4. Đặc điểm và ý nghĩa của mô hình hóa chuyên biệt miền ....................... 18
1.4.1. Đặc điểm của mô hình hóa chuyên biệt miền ...................................... 18
1.4.2. Ý nghĩa của của mô hình hóa chuyên biệt miền đối với người sử dụng ...... 20
1.4.3. Lợi ích của mô hình hóa chuyên biệt miền.......................................... 21
1.4.4. So sánh DSM với các ngôn ngữ mô hình mục đích chung khác .......... 23
CHƯƠNG 2: NGÔN NGỮ MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN CHO ỨNG
DỤNG WEB ......................................................................................................... 25

2.1. Tổng quan phương pháp xây dựng DSML ............................................. 25
2.1.1. Giai đoạn 1: Khảo sát miền ................................................................. 25
2.1.2. Giai đoạn 2: Định nghĩa các metamodel và các ràng buộc .................. 25
2.1.3. Giai đoạn 3: Xác định ký pháp cho ngôn ngữ ..................................... 26
2.1.4. Giai đoạn 4: Thao tác mô hình ............................................................ 26


6

2.2. Kỹ thuật và công cụ hỗ trợ xây dựng DSML ......................................... 26
2.2.1. Biểu diễn mô hình với Metamodel ...................................................... 26
2.2.2. Ràng buộc miền bằng ngôn ngữ OCL ................................................. 27
2.2.3. Một số công cụ hỗ trợ xây dựng DSML .............................................. 31
2.3. Vận dụng vào miền ứng dụng Web ........................................................ 43
2.3.1. Khảo sát miền ứng dụng Web ............................................................. 43

2.3.2. Định nghĩa các Metamodel và các ràng buộc ...................................... 48
2.3.3. Xác định ký pháp của ngôn ngữ mô hình hóa chuyên biệt miền cho ứng
dụng Web. .......................................................................................... 49
CHƯƠNG 3: CÀI ĐẶT VÀ THỰC NGHIỆM TRÊN ECLIPSE .............................. 51

3.1. Biểu diễn cú pháp trừu tượng của DSL cho miền ứng dụng Web ........ 51
3.1.1. Mô hình Ecore .................................................................................... 51
3.1.2. Mô hình genmodel .............................................................................. 52
3.2. Biểu diễn cú pháp cụ thể ......................................................................... 53
3.2.1. Graphical Definition Model (GDM) WML.gmfgrahp ......................... 54
3.2.2. Tooling Definition Model (TDM) ....................................................... 57
3.2.3. Mapping Definition Model (MDM) .................................................... 57
3.3. Kỹ thuật sinh mã ..................................................................................... 60
3.3.1. Các cách để xây dựng máy sinh mã .................................................... 60
3.3.2. Qui trình tạo ra máy sinh mã ............................................................... 60
3.3.3. Mã nguồn của mô hình EMF.model.................................................... 61
3.3.4. Các thành phần của EMF.edit và EMF.editor ..................................... 62
3.3.5. Code Generation (CG) ........................................................................ 62
3.4. Kết quả của DSL cho miền ứng dụng Web ............................................ 64
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................................ 65

1. Kết quả đạt được: ....................................................................................... 65
2. Hướng phát triển: ....................................................................................... 65
TÀI LIỆU THAM KHẢO ...................................................................................... 66


7

DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT


Từ viết
tắt

Thuật ngữ

ATL

ATLAS Transformation Language

Ngôn ngữ chuyển ATLAS

DSL

Domain specific language

Ngôn ngữ chuyên biệt miền

DSM

Domain Specific modeling

Mô hình hóa chuyên biệt miền

DSML

Domain specific modeling
language

Ngôn ngữ mô hình hóa chuyên
biệt miền


EMF

Eclipse Modeling Framework

Khung mô hình hóa Eclipse

GMF

Graphical Modeling Framework

Khung mô hình hóa đồ họa

M2M

Model to Model Transformation

Chuyển mô hình sang mô hình

M2T

Model to Text Transformation

Chuyển mô hình sang text

MDD

Model driven development

Phát triển hướng mô hình


OCL

Object Constraint Language

Ngôn ngữ ràng buộc đối tượng

QTV

Query/View/Transformation

Truy vấn/ Khung nhìn/Chuyển

UML

Unified Modeling Language

Ngôn ngữ mô hình thống nhất

WebML Web Modeling Language
MDA

Model Driven Architecture

Ý nghĩa

Ngôn ngữ mô hình Web
Phát triển hướng mô hình



8

DANH MỤC HÌNH VẼ
Hình 1.1: Nhìn vấn đề ô tô của người bình thường ........................................... 11
Hình 1.2: Nhìn vấn đề ô tô của chuyên gia phân tích ........................................ 11
Hình 1.3: Mô hình UML cho cửa sổ Windows ................................................. 11
Hình 1.4: Cấu trúc mô hình hóa chuyên biệt miền ............................................ 12
Hình 1.5: Mô hình kiến trúc của mô hình hóa chuyên biệt miền ....................... 14
Hình 1.6: Ngôn ngữ mô hình hóa chuyên biệt miền của trò chơi Snake. .......... 16
Hình 1.7: Chi phí để phát triển ứng dụng. ........................................................ 20
Hình 1.8: Giảm chi phí khi sử dụng DSM ........................................................ 21
Hình 2.1: Mô hình metamodeling và ví dụ. ..................................................... 25
Hình 2.2: MetaEdit+ Workbrench và MetaEdit+ Modeler ................................. 29
Hình 2.3: Các thành phần của GOPPRR........................................................... 30
Hình 2.4: Generator Editor ............................................................................... 30
Hình 2.5: Generator Debugger ......................................................................... 31
Hình 2.6: Diagram Editor ................................................................................. 32
Hình 2.7: Maxtric Editor .................................................................................. 32
Hình 2.8: Table Editor ...................................................................................... 33
Hình 2.9: Browsers........................................................................................... 33
Hình 2.10: Eclipse plugin ................................................................................. 34
Hình 2.11: Visual Studio extension tích hợp MetaEdit+ và Visual Studio ........ 35
Hình 2.12: Dự án mô hình hóa Eclipse ............................................................. 35
Hình 2.13: DSL Toolkit Artifacts - Abstract..................................................... 37
Hình 2.14: Luồng công việc phát triển DSL Toolkit......................................... 37
Hình 2.15: Các thành phần được xây dựng trong dự án EMF ........................... 38
Hình 2.16: MetaModel đại diện cho tập tối thiểu các thuật ngữ với ecore ........ 39
Hình 2.17: Các thành phần được xây dựng trong dự án EMF ........................... 39
Hình 2.18: Cửa sổ tiện ích GMF Dashboard ..................................................... 40
Hình 2.19: Các giai đoạn trong quá trình phát triển DSL cho ứng dụng Web ... 41

Hình 2.20: Lược đồ dữ liệu của cơ sở dữ liệu ứng dụng web............................ 42


9

Hình 2.21: Ví dụ về sơ đồ cấu trúc ................................................................... 42
Hình 2.22: Ví dụ về mô hình thành phần của WebML ..................................... 43
Hình 2.23: Mô hình dữ liệu ứng dụng Web âm nhạc ........................................ 44
Hình 2.24: Các trang trong một Website .......................................................... 44
Hình 2.25: Kiểu liên kết ngữ cảnh .................................................................... 45
Hình 2.26: Kiểu liên kết không ngữ cảnh ......................................................... 45
Hình 2.27: Class có tên là Address và các thuộc tính của nó ............................ 45
Hình 2.28: Các lớp biểu đồ biểu diễn metamodel cho miền ứng dụng Web ...... 47
Hình 2.29: Các ký pháp trừu tượng (abstract syntax) ....................................... 48
Hình 2.30: Các ký pháp cụ thể (concrete syntax).............................................. 49
Hình 3.1. Mô hình WebML.ecore trong dự án EMF ......................................... 50
Hình 3.2. Mô hình WebML.ecore diagram trong dự án EMF ........................... 51
Hình 3.3. Mô hình WebML.genmodel trong dự án EMF .................................. 51
Hình 3.4. Mô hình WML.gmfgraph ................................................................. 53
Hình 3.5. Xây dựng node Class trong mô hình WML....................................... 53
Hình 3.6. Xây dựng Polyline cho node ClassAttribute ..................................... 54
Hình 3.7. Xây dựng Figure cho ClassAttribute ................................................. 54
Hình 3.8. Xây dựng connection giữa Class và Attributes.................................. 55
Hình 3.9. Nhãn Name cho node Class .............................................................. 55
Hình 3.10. Mô hình WML. gmftool đã được xây dựng .................................... 56
Hình 3.11. Các node, link mapping trong WML. gmfmap ................................ 57
Hình 3.12. Ánh xạ node HypertextLayer .......................................................... 57
Hình 3.13. Ánh xạ Link HypertextLayer.pages.Page ........................................ 58
Hình 3.14. Ánh xạ Link HypertextLayer.pages.Page ........................................ 58
Hình 3.15. Mã nguồn được tự động sinh ra từ mô hình WML.genmodel.......... 61

Hình 3.16. WML. edit và WML.editor được sinh ra từ genmodel .................... 61
Hình 3.17: Generate diagram code của dự án GMF .......................................... 62
Hình 3.18: Cửa sổ Extensions của Plugin. xml trong dự án GMF..................... 62
Hình 3.19: DSML cho miền ứng dụng Web ..................................................... 63


10

MỞ ĐẦU
Ngày nay, làm thế nào để giảm thời gian thiết kế, giảm chi phí khi phát
triển các ứng dụng phần mềm hiện đại nhưng lại phải tăng tính linh hoạt, hiệu
quả của phần mềm để cạnh tranh và đáp ứng các nhu cầu sử dụng phần mềm
trên tất cả các lĩnh vực khác nhau của đời sống xã hội. Xuất phát từ mong muốn
đó, trong những năm qua giải pháp phát triển các thư viện lớp đã được xây dựng
hoàn chỉnh phục vụ cho phát triển phần mềm cũng chưa thể để đáp ứng đầy đủ
được các nhu cầu của ngành công nghiệp phần mềm. Việc phát triển phần mềm
vẫn còn ở dạng thủ công, dựa vào sức người là chủ yếu.
Vì vậy, việc nghiên cứu và đưa ra một giải pháp cho phép phát triển phần
mềm một cách tự động đã được đề xuất và phát triển. Và giải pháp phát triển
phần mềm hướng mô hình được xem là một trong những giải pháp phù hợp nhất
trong phát triển ứng dụng phần mềm hiện đại ngày nay.
Phát triển hướng mô hình là đặt mô hình hóa làm vấn đề trọng tâm trong
phát triển phần mềm, và từ các mô hình sẽ được dịch chuyển sang mã chương
trình triển khai nhờ bộ sinh mã nguồn (code generator). Và phát triển hướng mô
hình đặc biệt phù hợp với phát triển các sản phẩm phần mềm cùng thế hệ. Một
trong các hướng tiếp cận của phát triển hướng mô hình là mô hình hóa chuyên
biệt miền, trong đó việc xây dựng ngôn ngữ mô hình hóa chuyên biệt miền
thường được triển khai dưới dạng một dự án nhỏ khởi đầu trong một dự án lớn.
Và kết quả của dự án mô hình hóa chuyên biệt miền là một ngôn ngữ mô hình
hóa thuộc miền cho phép mô hình hóa các vấn đề trong dự án, kết quả thu được

là sự dịch chuyển các mô hình của dự án sang mã (code) triển khai, điều này làm
giảm bớt thời gian và chi phí phát triển phần mềm.
Với những ưu điểm của mô hình hóa chuyên biệt miền và lợi ích mang lại
khi phải phát triển một ngôn ngữ cho phép mô hình hóa chuyên biệt miền, vì vậy
tôi đã lựa chọn đề tài “Mô hình hóa chuyên biệt miền cho ứng dụng Web” làm
đề tài luận văn của mình. Mục tiêu của đề tài là tìm hiểu phương pháp phát triển
phần mềm hướng mô hình với cách tiếp cận là mô hình hóa chuyên biệt miền.
Trong phạm vi nghiên cứu của đề tài tôi đã tìm hiểu phương pháp xây dựng
ngôn ngữ mô hình hóa chuyên biệt miền cho ứng dụng Web và cài đặt thử
nghiệm với công cụ Eclipse.


11

Luận văn bao gồm 3 chương sau:
Chương 1. Tổng quan về mô hình hóa chuyên biệt miền: Giới thiệu tổng
quan và cơ sở lý thuyết cho mô hình hóa chuyên biệt miền.
Chương 2. Ngôn ngữ mô hình hóa chuyên biệt miền cho ứng dụng Web:
Trình bày miền ứng dụng Web, xây dựng Metamodel cho miền cho ứng dụng
Web và các luật ràng buộc.
Chương 3. Cài đặt và thực nghiệm trên Eclipse: Trình bày về cài đặt và
kết quả thử nghiệm DSML cho miền ứng dụng Web trên phần mềm mã nguồn
mở Eclipse.


12

CHƯƠNG 1:
TỔNG QUAN VỀ MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN
Trong chương này chúng tôi sẽ tập trung vào trình bày các khái niệm về mô

hình hóa, mô hình hóa chuyên biệt miền, ngôn ngữ mô hình hóa chuyên biệt
miền và đặc điểm của mô hình hóa chuyên biệt miền.
1.1. Khái niệm mô hình và mô hình hóa
Trong một số giai đoạn của quy trình phát triển phần mềm có sử dụng mô
hình hóa mục đích chung, ngôn ngữ UML được sử dụng để xây dựng các biểu
đồ trong pha phân tích và thiết kế hệ thống. Các mô hình được mô hình hóa bởi
UML thường sử dụng có ý nghĩa làm tài liệu cho dự án là chủ yếu, nếu có phát
sinh mã nguồn thì chỉ dừng lại ở mức thô, muốn sinh mã nguồn hoàn toàn tự
động thì phải sử dụng một ngôn ngữ mô hình hóa chuyên biệt miền để sinh mã
nguồn từ miền đó [3].
1.1.1. Khái niệm mô hình
Mô hình là hình thức biểu diễn một cách tổng quát các thành phần cơ bản
trong một hệ thống. Mô hình sẽ cho phép chúng ta hiểu rõ hơn về hệ thống mà
chúng ta cần phát triển.
1.1.2. Khái niệm mô hình hóa
Mô hình hóa là một quá trình chuyển thế giới thực thành các mô hình bằng
cách [3] loại bỏ các chi tiết không cần thiết và giữ lại các chi tiết quan trọng để
biểu diễn bằng các đối tượng hình học, khi đó các mô hình sẽ giúp chúng ta dễ
dàng hiểu thế giới thực hơn.
1.2.3. Mô hình hoá trực quan
Là một phương thức tư duy về vấn đề sử dụng các mô hình được tổ chức
xoay quanh các khái niệm đời thực. Mô hình giúp chúng ta hiểu vấn đề, giao
tiếp với mọi người có liên quan đến dự án (khách hàng, chuyên gia lĩnh vực
thuộc đề án, nhà phân tích, nhà thiết kế, …).


13

Ví dụ mô hình về chiếc ô tô:


Hình 1.1: Nhìn vấn đề ô tô của người bình thường
Mô hình
Ô tô

Thân xe

Bánh xe

Động cơ

Cửa xe
Hình 1.2: Nhìn vấn đề ô tô của chuyên gia phân tích

1.1.4. Mô hình hóa mục đích chung
Trong pha phân tích và thiết kế của vòng đời phát triển phần mềm có sử
dụng ngôn ngữ mô hình hóa mục đích chung (Ví dụ như UML) để mô hình hóa
phần mềm nhưng không phải lúc nào phần mềm cũng được triển khai như mô
hình ban đầu; và nếu có sử dụng mô hình để tự động sinh ra code thì code được
sinh ra thường chỉ là mã khung thô và cần sử dụng tay để code hoàn thiện và các
mô hình ở đây mang ý nghĩa làm tài liệu nhiều hơn mục đích sinh code tự động.
Hình dưới đây là một ví dụ về mô hình hóa với UML.

Hình 1.3: Mô hình UML cho cửa sổ Windows

Với mô hình hóa sử dụng ngôn ngữ mô hình hóa UML có thuận lợi là: Cho
đến nay UML đã được phát triển tương đối hoàn thiện và được người dùng sử


14


dụng khá rộng rãi. Nhưng khi thay đổi code hoặc mô hình thay đổi thì mô hình
hóa với UML là có thể bị lỗi thời hoặc cần có chi phí thời gian, tài nguyên, để
đồng bộ giữa mô hình với code, điều này dẫn đến làm tăng chi phí của dự án phần
mềm [3]. Vì vậy mô hình hóa chuyên biệt miền có thể khắc phục những nhược
điểm trên của phương pháp mô hình hóa mục đích chung nếu có sự thay đổi.
1.2. Mô hình hóa chuyên biệt miền
Mô hình hóa chuyên biệt miền (Domain Specific Modeling - DSM) là
việc sử dụng ngôn ngữ mô hình hóa chuyên biệt miền để tạo ra các mô hình và
sinh mã nguồn từ các mô hình đó với bộ sinh code (code generator) [4].
Mô hình hóa chuyên biệt miền là một phương pháp phát triển phần mềm sử
dụng ngôn ngữ mô hình chuyên biệt miền (DSL) để thiết kế và phát triển sản
phẩm [12]. Nó sử dụng một hệ thống các khái niệm cụ thể để miêu tả và mô
hình hóa các khía cạnh khác nhau của hệ thống. Mục đích sử dụng DSM để thực
hiện 2 công việc chính:
Thứ nhất, nâng cao mức độ trừu tượng bằng cách xác định các giải pháp từ
những khái niệm và quy tắc trong một miền vấn đề cụ thể.
Thứ hai, tạo ra sản phẩm cuối cùng trong một ngôn ngữ lập trình được lựa
chọn từ mô hình và máy sinh mã.
1.2.1. Cấu trúc của mô hình hóa chuyên biệt miền
Để có được những lợi ích của mô hình hóa chuyên biệt miền như nâng cao
năng suất, chất lượng, và ẩn đi sự phức tạp. Mô hình hóa chuyên biệt miền đề
xuất một kiến trúc các tầng trên một môi trường mục tiêu, nó được minh họa
trong Hình 1.4 [12]:

Hình 1.4: Cấu trúc của mô hình hóa chuyên biệt miền


15

- DSML cung cấp một cơ chế trừu tượng để làm cho vấn đề trở nên đơn

giản hơn trong một miền nhất định. Nó được thực hiện bằng cách cung cấp các
khái niệm và quy tắc miêu tả những điều trong lĩnh vực cụ thể, nó không phải là
khái niệm về một ngôn ngữ lập trình. Vì vậy, ngôn ngữ này cho phép các nhà
phát triển làm việc trực tiếp với các khái niệm miền.
- Một máy sinh mã quy định cụ thể các thông tin được tạo ra từ các mô hình
và chuyển đổi thành mã (code). Trong các trường hợp đơn giản, mỗi biểu tượng
có một mã cố định. Máy sinh mã cũng có thể tạo ra các mã khác nhau tùy thuộc
vào các giá trị trong biểu tượng, từ các mối quan hệ đã có với các biểu tượng
khác, hoặc các thông tin khác trong mô hình. Mã này sẽ được liên kết với một
khung có sẵn và biên soạn thành một chương trình có thể chạy ngay.
- Một khuôn khổ miền nằm giữa mã tạo ra bởi máy sinh mã và nền tảng của
môi trường. Nó cung cấp giao diện giữa các mã và tạo ra các nền tảng cơ bản để
chương trình có thể chạy. Trong một số trường hợp, các mã được tạo ra có thể
gọi trực tiếp các thành phần nền tảng là chạy được.
Khuôn khổ miền cung cấp một số mã tiện ích thêm hoặc các thành phần để
làm cho các mã được tạo ra từ mô hình đơn giản hơn. Khung này có thể lấy các
thành phần tồn tại từ những sản phẩm được phát triển trước đó.
1.2.2. Mô hình kiến trúc của mô hình hóa chuyên biệt miền
Trong Hình 1.5, phía trên bên trái mô tả định nghĩa DSM, phía bên phải mô
tả cách sử dụng DSM, chúng ta đều thấy yếu tố mô hình xuất hiện trong cả hai
trường hợp. Ngôn ngữ được quy định bởi một metamodel và tất cả các mô hình
mô tả các ứng dụng hoặc tính năng đều tuân theo metamodel này [12].
Như vậy mô hình không thể khởi tạo những gì mà ngôn ngữ không cho
phép. Điều này đảm bảo rằng các nhà phát triển ứng dụng luôn phải tuân theo
các khái niệm và quy tắc của miền trong mô hình. Trong DSM, mô hình là đối
tượng chính để làm việc.


16


Hình 1.5: Mô hình kiến trúc của mô hình hóa chuyên biệt miền.

Máy sinh mã trong DSM có thể được xem như một trình biên dịch trong
ngôn ngữ C. Vì vậy việc sửa đổi các mã được tạo ra là không cần thiết. Kiến
trúc DSM cũng cho thấy rằng tất cả các mã không nhất thiết phải được tạo ra từ
mô hình. Chúng ta có thể sử dụng các mã có sẵn từ khuôn khổ miền hoặc ở môi
trường mục tiêu.
Ngôn ngữ mô hình cung cấp sự trừu tượng cho sự phát triển phần mềm.
Trong DSM, nó được sử dụng như mã nguồn. Để ngôn ngữ mô hình được hình
thành một cách chính xác, ta cần áp dụng các khái niệm và ràng buộc về một
vấn đề cụ thể. Điều này có nghĩa là ngôn ngữ của miền cụ thể sẽ không áp dụng
được ở các miền khác.
Nói chung các khái niệm chính trong miền cụ thể sẽ trở thành các đối
tượng trong mô hình, các thứ còn lại sẽ thành thuộc tính, kết nối, vai trò của các
đối tượng. Điều này làm cho người dùng DSM cảm thấy mình làm việc trên
chính miền đó.
1.3. Ngôn ngữ mô hình hóa chuyên biệt miền
Ngôn ngữ mô hình hóa chuyên biệt miền (Domain Specific Modeling
Language - DSML) là một ngôn ngữ chuyên biệt miền cụ thể, nó được sử dụng
để xây dựng các mô hình đồ họa cho các hệ thống phần mềm. Việc định nghĩa
ngôn ngữ mô hình hóa chuyên biệt miền và bộ sinh code được thực hiện bởi các
chuyên gia miền vì họ là người hiểu về miền nhất. Khi đó, họ có thể cung cấp
mã nguồn có chất lượng cao cho miền [4].


17

Ngôn ngữ chuyên biệt miền (Domain specific language - DSL) là một ngôn
ngữ chương trình hoặc ngôn ngữ đặc tả thực thi, bằng cách tích hợp các khái
niệm trừu tượng của tri thức miền vào trong ngôn ngữ dưới dạng các ký hiệu có

tính biểu cảm cao. DSL tăng mức độ trừu tượng bằng cách sử dụng các khái
niệm quen thuộc với các chuyên gia miền và thường được giới hạn trong một
miền vấn đề cụ thể nào đó [4].
Các thành phần đầu tiên là định nghĩa các khái niệm của mô hình và thuộc
tính của nó bằng cách xác định metamodel; metamodel đóng một vai trò cho các
ngôn ngữ văn bản.
Cú pháp trừu tượng (Abstract Syntax) là các lớp nguyên thủy tạo nên ngôn
ngữ mô hình.
Như đã đề cập ở trên, metamodel chỉ xác định cú pháp trừu tượng, nhưng
không phải là cú pháp cụ thể của ngôn ngữ, muốn thể hiện cú pháp trừu tượng trong
mô hình người dùng phải xây dựng các cú pháp cụ thể (Concrete Syntax) [13].
Dưới đây là một ví dụ về mô hình chuyên biệt miền của trò chơi Snake:
Chúng ta sẽ xây dựng những khái niệm của miền này:








State: chỉ các trạng thái của rắn.
Apple: chỉ thức ăn của rắn.
Event: chỉ những sự kiện xảy ra.
Action: chỉ những hoạt động của rắn.
Transition: chỉ quá trình chuyển đổi giữa các trạng thái.
Grow: chỉ sự lớn lên của rắn.
Eat: chỉ hoạt động săn mồi của rắn.

Từ những khái niệm trên chúng ta sẽ thêm chúng vào các mối quan hệ, quy

tắc ràng buộc. Ví dụ: con rắn sẽ có hành động “Turn” nếu gặp sự kiện “Button”,
sẽ có hành động “Grow” nếu gặp sự kiện “Apple”, sẽ chuyển qua trạng thái
“Death” nếu đâm vào thân của nó. Hình 1.6 là metamodel của ngôn ngữ mô hình
chuyên biệt miền của trò chơi Snake.
Sau đó chúng ta vẽ hình minh họa cho từng khái niệm và quy tắc. Sao cho
người sử dụng nhìn vào các hình vẽ có thể hiểu được các biểu tượng đó đại diện
cho cái gì.


18

Hình 1.6: Ngôn ngữ mô hình chuyên biệt miền của trò chơi Snake.

1.4. Đặc điểm và ý nghĩa của mô hình hóa chuyên biệt miền
1.4.1. Đặc điểm của mô hình hóa chuyên biệt miền
- Miền xác định hẹp: DSM tập trung vào phát triển phần mềm tự động
trong một miền vấn đề rất nhỏ. Giống như tên của nó, DSM là một ngôn ngữ mô
hình miền cụ thể chứ không phải là ngôn ngữ mục đích chung. Vì tập trung vào
một miền hẹp và hạn chế nên nó dễ cung cấp các giải pháp và đặc điểm trong
miền đó để có thể tự động sinh mã từ mô hình.
Một mô hình chuyên biệt miền chỉ giải quyết một vấn đề cụ thể, nó không
thể được sử dụng để phát triển các ứng dụng khác. Ví dụ, trong một chiếc điện
thoại di động, một giải pháp DSM thường chỉ đề cập một vấn đề nhỏ như: nhắn
tin, gọi điện… Do chỉ tập trung vào một miền xác định hẹp nên các khái niệm,
các mối quan hệ ràng buộc giữa các khái niệm trong miền đó được xác định một
cách cẩn thận, rõ ràng. Các lỗi trong sản phẩm thường được phát hiện sớm nên


19


tốn ít chi phí và công sức. Đồng thời cũng dễ dàng cho việc đọc, nhớ, kiểm tra
và tái sử dụng.
- Mức độ trừu tượng cao: DSM làm cho mức độ trừu tượng của chương
trình vượt ra khỏi ngôn ngữ lập trình. Những người sử dụng giải pháp DSM làm
việc trực tiếp với mô hình để tạo ra sản phẩm. Họ không cần phải viết một dòng
lệnh nào. Trong DSM các yếu tố mô hình là đại diện cho các khái niệm, quy tắc
trong một miền cụ thể chứ không đại diện cho các khái niệm trong thế giới mã
(như UML). Điều này giúp người lập mô hình cảm thấy mình đang làm việc trực
tiếp với các khái niệm miền cụ thể. Nó thường đơn giản và gần gũi với thế giới
thực hơn, do đó năng suất công việc tăng cao, đồng thời gặp ít lỗi hơn.
- Tạo ra mã một cách đầy đủ: Trong DSM, mã được tạo ra đầy đủ trên
quan điểm của chính nhà sản xuất phần mềm, cho nên việc viết hướng dẫn sử
dụng và sửa lại mã là không cần thiết. Mã được tạo ra có thể kết hợp với mã có
sẵn để biên dịch thành sản phẩm mà không cần sự bổ sung nào cả.
Cả mã tĩnh (static) và mã động (behavioral) đều được hỗ trợ một cách đầy
đủ. Mã tĩnh được tạo ra khá đơn giản. Máy sinh mã sẽ dựa vào một khuôn mẫu
có sẵn để tạo mã này. Còn mã động thì được máy sinh mã tạo ra bằng cách đọc
và chiết xuất từ các mô hình. Ngoài ra chúng ta còn có thể sử dụng máy sinh mã
để tạo ra được tài liệu thiết kế, tài liệu kiểm tra, hướng dẫn sử dụng…
- Sử dụng ít chữ: Trong DSM, thông số kỹ thuật không nhất thiết phải
được sử dụng bằng chữ viết (như thường được sử dụng trong các ngôn ngữ lập
trình) [12]. Mặc dù việc sử dụng chữ viết nhanh chóng và ngắn gọn nhưng nó dễ
làm cho người đọc hiểu sai ở các văn cảnh khác nhau nên khó tái sử dụng. DSM
sử dụng hình vẽ, bảng, ma trận cùng với chữ để miêu tả miền vấn đề. Điều này
thực sự rất có ích bởi vì con người nhìn hình vẽ sẽ nhớ lâu và dễ hiểu hơn chữ
viết rất nhiều. Chúng ta còn có thể mở rộng ngôn ngữ và che giấu những thông
tin không cần thiết một cách dễ dàng bằng cách dùng một hình vẽ để đại diện
cho một đồ thị con…
- Số lượng người sử dụng lớn: Chúng ta thấy rằng ngôn ngữ lập trình chỉ
được các lập trình viên sử dụng. Mô hình thì khác, nó được rất nhiều người dùng

đến như: nhà phân tích, nhà thiết kế, khách hàng, nhà quản lý. Người sử dụng
giải pháp DSM không cần sử dụng các ngôn ngữ lập trình mà chỉ làm việc với
mô hình. Vì vậy những người tham gia trực tiếp vào dự án bây giờ không chỉ
giới hạn ở những người am hiểu về công nghệ thông tin, mà chỉ cần những
người am hiểu về miền vấn đề được đề cập.


20

1.4.2. Ý nghĩa của của mô hình hóa chuyên biệt miền đối với người sử dụng
1.4.2.1. Những điều mô hình hóa chuyên biệt miền mang lại
DSM thay đổi hoàn toàn công việc của những người phát triển phần mềm:
- Lấy mô hình làm trung tâm: Trong DSM hầu như mọi việc đều diễn ra
trên mô hình, mô hình có thể được sử dụng để tạo mã, kiểm tra, gỡ lỗi và phát
triển ứng dụng; mã được sửa bằng cách sửa mô hình. Tuy nhiên, điều này không
có nghĩa là chúng ta không cần các nhà lập trình, chúng ta vẫn cần họ để phát
triển máy sinh mã, phát triển các khung, các thư viện tái sử dụng [12].
- Không cần tìm hiểu ngôn ngữ mới và ý nghĩa của các khái niệm: DSM
được sử dụng thường xuyên trong các công ty. Khi chuyển qua một dự án mới
thì các khái niệm trong DSM vẫn như vậy. Nếu ứng dụng cần được viết trong
một ngôn ngữ lập trình khác thì cũng không ảnh hưởng gì đến những người phát
triển ứng dụng mà chỉ ảnh hưởng đến những người phát triển máy sinh mã.
- Công việc phải làm ngày càng giảm: Máy sinh mã tự động hóa thực hiện
các nhiệm vụ lặp đi lặp lại trong các dự án khác nhau. Điều này cho phép các
nhà phát triển chỉ cần tập trung vào các đặc điểm riêng của dự án mới.
- Ít công việc mang đậm tính kỹ thuật: Một ngôn ngữ DSM chỉ phù hợp
với một lĩnh vực cụ thể cho nên một công ty sử dụng giải pháp DSM thường có
cấu trúc gọn nhẹ. Không cần các nhân viên vẽ mô hình UML, tạo tài liệu…
Ngoài ra do làm việc với DSM chủ yếu là làm việc trên mô hình trực quan nên
công việc cũng ít tính kỹ thuật hơn.

- Công việc kiểm thử trở nên gọn nhẹ, không có nhiều lỗi điển hình: Trong
DSM, phần lớn các ca kiểm thử đã được thực hiện trong quá trình phát triển
ngôn ngữ để có thể tạo ra các ràng buộc, các quy tắc bằng metamodel. Mô hình
thường rất ít lỗi, nên mã được sinh ra từ các mô hình đó cũng rất ít lỗi. Ngoài ra,
do mã được tự động sinh ra bằng máy sinh mã nên các lỗi chính tả, cú pháp, cấp
phát bộ nhớ thường không xảy ra.
1.4.2.2. Những điều mô hình hóa chuyên biệt miền không mang lại
- DSM không cố gắng mã hóa từng khái niệm: DSM không gắn từng đoạn
mã cụ thể vào từng khái niệm cụ thể và ghép các khái niệm đó vào nhau để tạo
mã hoàn chỉnh.


21

- DSM không có mô hình chỉ để phác thảo hoặc hướng dẫn: DSM cũng có
các mô hình dùng để hướng dẫn người sử dụng nhưng những mô hình đó còn
được dùng vào nhiều công việc khác nữa.
- DSM không tạo ra quá nhiều mô hình ngay từ khi bắt đầu dự án: Trong
DSM, việc tạo ra các mô hình chỉ cần thiết khi chúng ta sử dụng đến chúng,
DSM không tạo ra các mô hình thừa. Ví dụ: trong giai đoạn đầu cần mô phỏng
ứng dụng thì sẽ tạo ra các mô hình mô phỏng, trong giai đoạn kiểm thử thì sẽ tạo
ra các mô hình phục vụ kiểm thử.
- Sửa đổi mã đã được tạo ra: Trong DSM, một khi mã đã được tạo ra thì
rất ít khi phải được sửa. Vì mã này được tạo ra trên quan điểm của những người
am hiểu về miền vấn đề cụ thể đó, về ứng dụng đó nên bản thân nó đã phù hợp
với ứng dụng cần phát triển.
1.4.3. Lợi ích của mô hình hóa chuyên biệt miền
- Nâng cao năng suất: Mức độ trừu tượng cao hơn thường dẫn đến năng
suất tốt hơn. Điều này không chỉ bao gồm thời gian và nguồn lực cần thiết để tạo
ra sản phầm mà còn bao gồm những thuận lợi trong quá trình bảo trì và kiểm thử

sản phẩm.
- Nâng cao chất lượng phần mềm: DSM mang đến một phần mềm có chất
lượng tốt chủ yếu bởi hai lý do:
Thứ nhất, mô hình hóa chuyên biệt miền bao gồm các quy tắc chính xác
của miền đó, vì vậy nó khó có thể tạo ra các mô hình không chính xác. Các lỗi
được loại bỏ ngay từ lúc lập mô hình nên việc tìm kiếm, sửa lỗi dễ dàng và tốn ít
chi phí hơn.
Thứ hai, mã được tạo ra từ máy sinh mã và khuôn khổ miền, nó không
cần phải thay đổi chỉnh sửa gì nên không có các lỗi như khi mã được viết bằng
tay. Máy sinh mã và khuôn khổ miền được viết bởi các kỹ sư giỏi nhất trong
công ty nên mã nó sinh ra cũng giống như mã được viết bởi những người giỏi
nhất.
- Tận dụng chuyên môn: Theo cách này, những người giỏi nhất trong công
ty sẽ tham gia vào quá trình phát triển giải pháp DSM, còn những người khác sẽ
sử dụng nó để tạo ra sản phẩm. Việc sử dụng DSM sẽ đơn giản hơn so với việc
tự tay tạo ra mã để hoàn thành sản phẩm. Vì vậy các công ty sử dụng DSM sẽ ít
phải đào tạo nhân viên của mình mà nhân viên vẫn có thể hoàn thành tốt công
việc.


22

Sau khi chắc chắn rằng sử dụng DSM sẽ đem lại giá trị kinh tế cao hơn,
chúng ta sẽ tập trung tính toán xem số vốn phải bỏ ra là bao nhiêu? Hình 1.7
minh họa cho các chi phí của việc phát triển ứng dụng [12].

Hình 1.7: Chi phí để phát triển ứng dụng

Để đơn giản, giả định sự tăng chi phí là tuyến tính, tăng sử dụng tự động
hóa là cách hoàn vốn cho công ty. Trục y đại diện cho các chi phí tích lũy của

việc phát triển ứng dụng. Trục x đại diện cho số lần giải pháp DSM được sử
dụng. Sự lặp lại có thể được đo bằng nhiều cách khác nhau. Do đó trục x có thể
được hiểu theo nhiều nghĩa như: số lượng sản phẩm, số chức năng của sản
phẩm, số lượng người phát triển sản phẩm. Điểm hoàn vốn đạt được khi chi phí
sản xuất sản phẩm bằng phương pháp DSM nhỏ hơn chi phí phát triển bằng
phương pháp thông thường. Chúng ta càng sản xuất nhiều sản phẩm có nhiều
phiên bản, tính năng tương tự thì càng nhanh thu hồi được vốn.
Các lợi ích mà DSM mang lại không phải tự nhiên mà có. Chúng ta phải
tốn chi phí để xây dựng một giải pháp DSM, đây là đầu tư ban đầu. Trong hình
1.8, chi phí sử dụng DSM lúc đầu lớn hơn chi phí khi sử dụng các giải pháp
thông thường; chi phí ban đầu này bao gồm chi phí cho các chuyên gia phát triển
DSM, cho việc sử dụng các tài liệu và các công cụ hỗ trợ DSM nhưng sau đó chi
phí sử dụng DSM sẽ nhỏ dần và nhỏ hơn chi phí khi sử dụng các giải pháp thông
thường nhờ các lợi ích nó mang lại [12].


23

Hình 1.8: Giảm chi phí khi sử dụng DSM.

1.4.4. So sánh DSM với các ngôn ngữ mô hình mục đích chung khác
Có rất nhiều ngôn ngữ mô hình đang tồn tại, hầu hết trong số chúng không
có khả năng tự sinh mã một cách đầy đủ. Điều này đặc biệt đúng với các ngôn
ngữ mô hình nổi tiếng (vì sự tiêu chuẩn hóa) như: UML, IDEF, SSADM…[12].
Sau đây chúng ta sẽ đi vào so sánh một ngôn ngữ mô hình có mục đích chung
(ví dụ ngôn ngữ UML) với DSM.
UML có ý nghĩa rất lớn đối với ngành công nghệ phần mềm bởi vì nó nhấn
mạnh sự cần thiết của việc xem xét thiết kế ban đầu [12]. Tuy nhiên, UML cung
cấp rất ít các tiêu chuẩn để có thể tự động hóa công việc phát triển hoặc tăng
năng suất. UML không làm tăng độ trừu tượng trong các khái niệm. UML được

thiết kế để xác định, hình dung ứng dụng, làm tài liệu, chứ không phải để tự
động hóa trong việc phát triển phần mềm.
Trong một phạm vi hẹp, DSM được tạo ra để làm tất cả những việc đó, các
khái niệm trung tâm của UML có nguồn gốc từ thế giới mã, ví dụ như: lớp,
phương thức, thuộc tính… UML cung cấp một giải pháp chung phù hợp cho tất
các lĩnh vực trong công nghệ sản xuất phần mềm.
Không giống như DSM, UML không biết cách sử dụng lại các dữ liệu từ
mô hình khác hoặc từ bên ngoài, không đảm bảo các nhà phát triển tuân theo các
quy tắc, kiến trúc hoặc kiểm tra thiết kế so với miền mà họ đã tạo ra. Trong cùng
một nhóm, tất cả thành viên phải hiểu và ghi nhớ cú pháp, tiêu chuẩn của UML,
điều này không hề xảy ra trong DSM.
Nhiều người ủng hộ hướng phát triển mô hình đã nghĩ tới hình thức cao
hơn của hướng phát triển mô hình bằng cách kết hợp hướng phát triển mô hình
và DSM. Bằng cách này, các yếu tố cơ sở của UML được mở rộng với những


24

cải tiến trên miền cụ thể, thêm các thuộc tính mới cho các phần tử mô hình, phân
loại chúng trên các khuôn mẫu và thêm những hạn chế miền cụ thể ngay trong
UML bằng cách sử dụng OCL, nó cho phép UML có một số cơ sở đầu tiên để
tiến tới DSM. Tuy nhiên, nhiều thứ thực sự không thể được thêm vào UML,
ngoài ra chúng ta cũng không thể bỏ đi điều gì từ UML.
Vì vậy việc sử dụng các mô hình này để tiến hành tạo mã, kiểm tra, phân
tích hoặc tài liệu hướng dẫn cần phải truy cập vào phần mở rộng khái niệm ngôn
ngữ UML một cách bắt buộc, mặc dù nhiều khi không cần thiết. Do những hạn
chế đó, OMG đã đề xuất một hình thức tùy chỉnh mô hình hỗ trợ Meta-Object
Facility (MOF). Phương pháp này khá giống với DSM, tuy nhiên MOF mô tả rất
ít các khía cạnh được quan tâm trực tiếp từ người sử dụng, nó thiếu một số khái
niệm ngôn ngữ rõ ràng. Chính vì thế UML không thể sửa đổi để có các đặc điểm

giống DSM [12].
Tóm lại, trong chương này chúng tôi đã trình bày và phân tích được cách
tổng quan hướng phát triển mô hình với hướng tiếp cận mô hình hóa chuyên biệt
miền cũng như phân tích lợi ích của phương pháp này mang lại.


25

CHƯƠNG 2: NGÔN NGỮ MÔ HÌNH HÓA CHUYÊN BIỆT
MIỀN CHO ỨNG DỤNG WEB
Trong chương này chúng tôi trình bày tổng quan về phương pháp xây dựng
DMSL, kỹ thuật và công cụ hỗ trợ xây dựng DSML cho miền ứng dụng Web.
2.1. Tổng quan phương pháp xây dựng DSML
Xây dựng một ngôn ngữ mô hình hóa chuyên biệt miền hoàn toàn mới
thường là một việc khó khăn, tuy nhiên ý nghĩa của nó lại rất lớn. Với ngôn ngữ
mô hình hóa chuyên biệt miền, chúng ta không cần phải ép buộc ứng dụng hoặc
thiết kế hệ thống thành nhiều sơ đồ với cú pháp không phù hợp với yêu cầu thiết
kế hoặc những mô hình chỉ có tác dụng như tài liệu hướng dẫn. Vậy làm thế nào
để xây dựng một ngôn ngữ DSML một cách tốt nhất và hiệu quả nhất?
Thực tế chỉ ra rằng cách tốt nhất để xây dựng một ngôn ngữ mô hình hóa
chuyên biệt miền là xây dựng từng bước một; ở đây chúng ta sẽ chia quy trình
phát triển một DSML ra làm 4 giai đoạn:
2.1.1. Giai đoạn 1: Khảo sát miền
Khảo sát miền để tìm kiếm các khái niệm trừu trượng đúng đắn và ánh xạ
các khái niệm thuộc miền thành các khái niệm trừu tượng. Với cách này giúp
ngăn chặn các lỗi sớm trong giai đoạn thiết kế, giảm công việc đặc tả và làm cho
ngôn ngữ phù hợp hơn. Thay vì mô tả các khái niệm triển khai thì mô tả những
vấn đề trong thuật ngữ miền vấn đề.
Để giúp chúng ta thu được các khái niệm miền tương tác với nhau, các
nghiệp vụ của miền thì chúng ta cần phải hợp tác với các chuyên gia về miền,

những người hiểu về miền và nghiệp vụ của miền nhất.
2.1.2. Giai đoạn 2: Định nghĩa các metamodel và các ràng buộc
Ở giai đoạn này chúng ta sẽ định nghĩa, đặt tên các khái niệm mô hình và
các thuộc tính của nó sau đó sẽ ánh xạ các khái niệm chính của miền tới các đối
tượng ngôn ngữ mô hình hóa. Kết quả của giai đoạn này là chúng ta sẽ xây dựng
được một metamodel và các ràng buộc trên đó, đây chính là cú pháp trừu tượng
của DSML.


×