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

Tìm hiểu và vận dụng ngôn ngữ chuyển đổi mô hình trong phát triển phần mềm

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 (1.34 MB, 62 trang )



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

LÊ NGỌC CẢNH



TÌM HIỂU VÀ VẬN DỤNG NGÔN NGỮ
CHUYỂN ĐỔI MÔ HÌNH TRONG
PHÁT TRIỂN PHẦN MỀM


LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN






Hà Nội – 2013


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

LÊ NGỌC CẢNH

TÌM HIỂU VÀ VẬN DỤNG NGÔN NGỮ
CHUYỂN ĐỔI MÔ HÌNH TRONG


PHÁT TRIỂN PHẦN MỀM

Ngành: Công nghệ Thông tin
Chuyên ngành: Công nghệ Phần mềm
Mã số: 60 48 10
LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. ĐẶNG ĐỨC HẠNH
Cán bộ Hướng dẫn

TS. Đặng Đức Hạnh
Hà Nội – 2013
iii




MỤC LỤC
LỜI CAM ĐOAN i

LỜI CÁM ƠN ii

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ v

BẢNG THUẬT NGỮ vii

MỞ ĐẦU 1

TỔNG QUAN LÝ THUYẾT MÔ HÌNH HÓA 2


1.1

Giới thiệu 2

1.2

Khái niệm cơ bản 3

1.3

Biểu diễn mô hình 6

1.3.1

Kiến trúc Metadata 6

1.3.2

Kiến trúc MOF metadata 8

1.3.3

Chuẩn CWM, UML, XMI, OCL 10

1.4

Chuyển đổi mô hình 13

1.4.1


Giới thiệu chuyển đổi mô hình 13

1.4.2

Chuyển đổi mô hình trong MDA 14

1.5

Tổng kết chương 20

CHƯƠNG 2- TIẾP CẬN SINH MÃ NGUỒN JAVA 21

2.1

Tổng quan phương pháp sinh mã nguồn Java 21

2.1.1

Sinh mã dựa trên truy xuất 21

2.1.2

Sinh mã dựa trên Template 22

2.1.3

Sinh mã từ mô hình biểu diễn Java 23

iv





2.2

Mô hình JaMoPP biểu diễn Java 24

2.2.1

Java Metamodel 24

2.2.2

Chức năng JaMoPP 27

2.3

Ngôn ngữ chuyển mô hình ATL 29

2.3.1

Giới thiệu ATL 29

2.3.2

Cú pháp và ngữ nghĩa ATL 30

2.3.3

Kiến trúc ATL 37


2.4

Tổng kết chương 41

CHƯƠNG 3 – VẬN DỤNG VÀ THỰC NGHIỆM 42

3.1

Giới thiệu bài toán 42

3.2

Đặc tả luật chuyển đổi ATL 44

3.3

Kết quả thực nghiệm 48

3.4

Tổng kết chương 52

KẾT LUẬN 53


v





DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1.1- Kiến trúc MDA 3

Hình 1.2- Mô hình hệ thống 4

Hình 1.3- Chuyển đổi mô hình [4] 5

Hình 1.4- Mô hình CIM, PIM, PSM 6

Hình 1.5- Ví dụ lược đồ lớp là metamodel cho lược đồ đối tượng 7

Hình 1.6- Minh họa kiến trúc metadata 4 lớp [9] 8

Hình 1.7- Kiến trúc Metadata MOF [5] 9

Hình 1.8- Mối liên hệ giữa các chuẩn trong OMG [10] 10

Hình 1.9- Profiles Java và Servlet ứng dụng cho gói WebApplication 11

Hình 1.10- Minh họa áp dụng OCL cho UML 13

Hình 1.11- Chuyển đổi mô hình PIM sang nhiều mô hình PSM [18] 14

Hình 1.12- Chuyển đổi mô hình giữa các mô hình khác nhau trong MDA 16

Hình 1.13- Chuyển đổi tái kỹ nghệ 17

Hình 1.14- Chuyển đổi mô hình PIM tới PSM 18


Hình 1.15- Chuyển đổi mô hình tới mã nguồn 18

Hình 2.1- Sinh mã nguồn Java trong JAMDA 22

Hình 2.2- Đặc tả Template sinh mã nguồn Java [1] 23

Hình 2.3- Kết xuất mã nguồn Java từ mô hình Java 24

Hình 2.4- Minh họa chuyển đổi Java Class sang EMF Object Model và kết xuất ra Java 26

Hình 2.5- Metalmodel cho ngôn ngữ Java [6] 27

Hình 2.6- Tổng quan chuyển đổi mô hình trong ATL 30

vi




Hình 2.7- Kiến trúc ATL [12] 37

Hình 2.8- Phần lõi ATL [12] 38

Hình 2.9- Lược đồ hoạt động máy ảo ATL [12] 39

Hình 2.10- Lược đồ ACG [12] 41

Hình 3.1 – Lược đồ lớp UML của “Ứng dụng quản lý nhân viên” 43

Hình 3.2 – Lược đồ lớp UML xây dựng trên Ecore 44


Hình 3.3 – Luật ATL chuyển đổi lớp UML sang lớp Java 45

Hình 3.4 – Luật ATL chuyển đổi thuộc tính của lớp UML sang thuộc tính của lớp Java 46

Hình 3.5 – Luật ATL chuyển đổi UML Operation sang Java method 47

Hình 3.6 – Cấu hình chuyển đổi mô hình UML sang mô hình Java 48

Hình 3.7 – Kiểu dữ liệu nguyên thủy trong UML 51

Hình 3.8 – Kiểu dữ liệu EMF định nghĩa trước cho UML 51





vii




BẢNG THUẬT NGỮ
Viết tắt

Tiếng Anh Tiếng Việt
BNF Backus Naur Form Chuẩn BN
CWM Common Warehouse Metamodel
CIM Computation Independent Model Mô hình độc lập tính toán
CORBA


Common Object Request Broker
Architecture

DTD Document Type Definition Định nghĩa loại tài liệu
EJB Enterprise Java Bean
EMF Eclipse Modeling Framework Khung làm việc mô hình hóa
Eclipse
IDL Interactive Data Language
ISM Implementation Specific Model Mô hình cụ thể cài đặt
J2EE Java 2 Enterprise Edition
MDA Model Driven Architecture Kiến trúc hướng mô hình
MDD Model Driven Development Phát triển hướng mô hình
MDE Model-Driven Engineering Kỹ nghệ hướng mô hình
MDR MetaData Repository
MOF Meta Object Facility
MTL Model Transformation Language Ngôn ngữ chuyển đổi mô hình
QVT Query View Transformation
OCL Object Constraint Language Ngôn ngữ ràng buộc đối tượng
OMG Object Management Group Tổ chức quản lý đối tượng
PIM Platform Independent Model Mô hình độc lập nền
PM Platform Model Mô hình nền
PSM Platform Specifice Model Mô hình cụ thể nền
UML Unified Modeling Language Ngôn ngữ mô hình hóa thống nhất

XMI XML Metadata Interchange Định dạng trao đổi XML
XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng
XSLT eXtensible Style Sheet Languge
Transformations


JaMoPP

Java Model Parser and Printer
1

MỞ ĐẦU
Phát triển phần mềm là một công việc khó khăn và phức tạp đòi hỏi nhiều sự
đầu tư vào tài nguyên và cũng đối mặt với những nguy cơ thất bại. Trong hoàn
cảnh đó, phát triển phần mềm hướng mô hình MDD nổi lên là một hướng tiếp
cận cải tiến cách xây dựng phần mềm. Mục đích chính cách tiếp cận hướng mô
hình là làm tăng năng suất phát triển, giảm chi phí (thời gian và tiền) xây dựng
phần mềm, cải tiến tính tái sử dụng của phần mềm và làm cho việc bảo trì phần
mềm hiệu quả hơn. Hơn nữa kĩ thuật hướng mô hình còn hứa hẹn phát hiện sớm
các lỗi về mặt thiết kế, thiếu sót và sự hiểu lầm giữa khách hàng và các nhà phát
triển. Hiện nay các kết quả đạt được trong phát triển phần mềm hướng mô hình
chủ yếu xuất phát từ các kỹ thuật nền tảng như: kiến trúc hướng mô hình MDA,
kỹ thuật biểu diễn mô hình UML, MOF. Mục đích chính của các kĩ thuật trên
nhằm giải quyết bài toán biểu diễn hệ thống dưới dạng mô hình, xây dựng các
cơ chế chuyển đổi giữa các mô hình và sau đó chuyển đổi mô hình thành phần
mềm có thể chạy được.
Luận văn tập trung vào tìm hiểu ngôn ngữ chuyển đổi mô hình cùng với việc
vận dụng ngôn ngữ chuyển mô hình vào phát triển phần mềm. Cụ thể luận văn
sẽ đi sâu nghiên cứu ngôn ngữ chuyển đổi mô hình ATL và vận dụng để sinh tự
động mã nguồn Java. Trong lĩnh vực kỹ nghệ phần mềm hướng mô hình MDE,
ATL cung cấp một con đường tạo ra các mô hình đích từ tập các mô hình nguồn.
Đối với việc vận dụng vào bài toán cụ thể trong luận văn sẽ sử dụng bộ công cụ
JaMoPP sinh mã nguồn Java từ mô hình UML.
Luận văn được cấu trúc thành ba chương sau đây:
 Chương 1 – Mở đầu: Tập trung tổng quan về lý thuyết mô hình, cách
biểu diễn mô hình và chuyển đổi mô hình.

 Chương 2 – Tiếp cận phương pháp sinh mã nguồn Java: Trình bày
các phương pháp tiếp cận sinh mã nguồn Java, biễu diễn mô hình của
ngôn ngữ Java, ngôn ngữ chuyển mô hình ATL và bộ công cụ JaMoPP.
 Chương 3 – Vận dụng và thực nghiệm: Áp dụng các luật chuyển đổi
mô hình ATL kết hợp với bộ công cụ JaMoPP vào bài toán sinh mã
nguồn Java từ mô hình UML.
2




TỔNG QUAN LÝ THUYẾT MÔ HÌNH HÓA
Chuyển đổi mô hình là trái tim của kỹ nghệ phần mềm hướng mô hình.
Một ví dụ điển hình là các mô hình ở mức trừu tượng cao được chuyển đổi sang
các mô hình cụ thể gần với nền phát triển. Tuy nhiên, còn có rất nhiều các dạng
chuyển đổi khác được áp dụng trong quá trình phát triển phần mềm hướng mô
hình. Cụ thể chương này đưa ra một cái nhìn tổng quan về mô hình, chuyển đổi
mô hình và đi sâu vào chuyển đổi mô hình trong MDA. MDA là một cách tiếp
cận hướng mô hình đang dành được nhiều sự quan tâm hiện nay.
1.1 Giới thiệu
Hiện nay, kỹ nghệ phần mềm hướng mô hình MDE ngày càng đươc áp dụng
nhiều trong trong ngành công nghiệp phần mềm. Tầm nhìn chính của MDE là sử
dụng mô hình như một nhân tố chính trong các giai đoạn khác nhau của phần
mềm phát triển, bắt đầu từ thu thập yêu cầu, cài đặt và triển khai cho đến giai
đoạn bảo trì. MDE cho phép quá trình phát triển sử dụng các khái niệm gần hơn
với miền vấn đề giải quyết, hướng tới quá trình tự động hóa và cho phép làm
việc ở một mức độ trừu tượng cao hơn.
MDA do tổ chức OMG đề xuất là một trong những cách tiếp cận đến MDE.
MDA bắt đầu với ý tưởng tách đặc điểm kỹ thuật của hoạt động hệ thống ra khỏi
nền tảng hoạt động của hệ thống. MDA cung cấp một cách tiếp cận và các công

cụ nhằm mục đích [4]:
 Xác định một hệ thống độc lập so với nền tảng mà hỗ trợ nó.
 Xác định các nền tảng của hệ thống
 Lựa chọn nền tảng cụ thể cho hệ thống và từ đó
 Chuyển đổi đặc tả hệ thống vào một trong những nền tảng đã xác định đó
Ba mục đích chính mà MDA hướng tới đó là tính di động, tính tương tác và
có thể sử dụng lại thông qua việc phân tách kiến trúc của các mối quan tâm.
3




Trung tâm của cách tiếp cận MDA là một số chuẩn quan trọng của OMG:
UML, MOF, XML và CWM. Các chuẩn này xác định hạ tầng cơ sở của MDA
và góp phần vào việc mô hình hóa hệ thống.

Hình 1.1- Kiến trúc MDA
1

1.2 Khái niệm cơ bản
Sau đây là những khái niệm cơ bản liên quan tới vấn đề chuyển đổi mô hình.
Nhắc tới kỹ nghệ phần mềm hướng mô hình nói chung và chuyển đổi mô hình
nói riêng, một khái niệm trung tâm là mô hình.
 Mô hình là sự biểu diễn một phần chức năng, cấu trúc hay hành vi của hệ
thống. Biểu diễn này được gọi là hình thức khi nó dựa trên một ngôn ngữ
có cú pháp, ngữ nghĩa và các luật để phân tích, suy diễn hoặc chứng minh
các cấu thành từ nó.
 Mô hình của một hệ thống là một mô tả hay đặc tả của hệ thống và môi
trường của hệ thống mà nó được cài đặt dành cho một số mục đích nhất


1
Nguồn
4




định. Một mô hình thường được trình bày bằng sự kết hợp của hình vẽ và
văn bản. Văn bản có thể là trong một ngôn ngữ mô hình hoặc trong một
ngôn ngữ tự nhiên [4].

Hình 1.2- Mô hình hệ thống
 Kiến trúc của hệ thống là một đặc tả các phần và sự kết nối của hệ
thống, cùng với các quy tắc cho việc tương tác giữa các phần đó bằng
các sử dụng các kết nối.
 Điểm nhìn của một hệ thống là một kỹ thuật của việc trừu tượng dùng
một tập được lựa chọn của các khái niệm kiến trúc, các luật cấu trúc,
tập chung vào các mối quan tâm cụ thể trong phạm vi hệ thống đó.
Thuật ngữ “trừu tượng” thường có nghĩa là quá trình loại bỏ các chi
tiết được lựa chọn để đưa ra mô hình đơn giản hóa. Ví dụ: MDA xác
định ba điểm nhìn của một hệ thống, điểm nhìn độc lập tính toán,
điểm nhìn độc lập nền và điểm nhìn cụ thể nền [4].
 Một mô hình điểm nhìn hay một khung nhìn của một hệ thống là một
biểu diễn của hệ thống đó từ phối cảnh của một điểm nhìn được lựa
chọn.
 Nền tảng là tập các công nghệ/ hệ thống con mà cung cấp tập hợp chặt
chẽ chức năng thông qua các giao diện và các mẫu sử dụng để cho
5





phép các hệ thống con phụ thuộc vào nền có thể sử dụng mà không
quan tâm đến cách triển khai chi tiết của các chức năng do nền tảng
cung cấp [4]. Ví dụ nền tảng J2EE, .NET.
 Chuyển đổi mô hình là quá trình biến đổi một mô hình này tới một mô
hình khác của cùng một hệ thống.

Hình 1.3- Chuyển đổi mô hình [4]
Phát triển phần mềm hướng mô hình tập trung vào hai loại mô hình chính là
mô hình độc lập nền PIM và mô hình cụ thể nền PSM [4].
 Mô hình độc lập nền là một khung nhìn của một hệ thống từ điểm nhìn
độc lập nền. Đó là một mô hình của hệ thống không chứa thông tin cụ thể
về nền hay công nghệ được dùng để thực hiện nó.
 Mô hình cụ thể nền là một khung nhìn của một hệ thống từ điểm nhìn cụ
thể nền. Đó 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 hệ thống trong một nền cụ thể và vì thế nó
thường chứa các thành phần đặc trưng cho nền.
Trong cách tiếp cận hướng mô hình MDA, có một loại mô hình quan trọng
khác là mô hình độc lập tính toán CIM. Mô hình CIM mô tả hệ thống trong môi
trường mà nó sẽ vận hành, do đó nó mô tả chính xác các chức năng được yêu
6




cầu của hệ thống. Mô hình CIM thường được dùng để mô hình các yêu cầu của
hệ thống.

Hình 1.4- Mô hình CIM, PIM, PSM

2

1.3 Biểu diễn mô hình
Như trình bày ở trên, mô hình được sử dụng để mô hình hóa, mô tả hệ thống
từ các điểm nhìn khác nhau tại các cấp độ trừu tượng khác nhau và còn đóng vai
trò quan trọng trong truyền thông, truyền tải thông tin. Do đó cần phải có các kỹ
thuật để định nghĩa mô hình sao cho phù hợp với các yêu cầu đó. Nội dung phần
này sẽ trình bày về các kỹ thuật mô tả mô hình.
1.3.1 Kiến trúc Metadata
Mô hình là thành phần cơ bản trong MDA. Do đó cần một mô hình phía sau
nó để mô tả, mô hình này gọi là metamodel. Metamodel được dùng để mô tả các
thành phần, thuộc tính và mối quan hệ của mô hình, cùng với các quy tắc khởi
tạo mô hình. Về bản chất metamodel là một cú pháp trừu tượng cho mô hình. Ví

2
Nguồn
7




dụ một lược đồ lớp có thể đóng vai trò như là một metamodel cho một lược đồ
đối tượng:

Hình 1.5- Ví dụ lược đồ lớp là metamodel cho lược đồ đối tượng
3
Tuy nhiên metamodel cũng lại là thể hiện của một meta-metamodel. Điều
này có thể dẫn đến một số lượng vô hạn định nghĩa cho cấp độ của mô hình
(metalevel). Vì vậy cần phải có một kiến trúc metadata cố định để xác định cấp
độ của các metadata. Một bộ khung truyền thống cho metadata được dựa trên

kiến trúc với bốn lớp meta [4]. Những lớp này được mô tả như sau:
 Lớp thông tin bao gồm các dữ liệu mà chúng ta muốn mô tả.
 Lớp mô hình bao gồm các metadata mô tả dữ liệu trong lớp thông tin.
Metadata được kết hợp lại sẽ thành mô hình.
 Lớp metamodel bao gồm các mô tả để định nghĩa cấu trúc và ngữ nghĩa
của metadata. Meta-metadata được kết hợp lại sẽ tương đương với
metamodel. Một metamodel là một ngôn ngữ trừu tượng dành cho mô tả

3
Nguồn
8




các loại dữ liệu khác nhau, đó là một ngôn ngữ không có một cú pháp cụ
thể hoặc ký hiệu.
 Lớp meta-metamodel bao gồm các mô tả về cấu trúc và ngữ nghĩa của
meta-metadata. Nói một cách khác đó là "ngôn ngữ trừu tượng" để định
nghĩa các loại metadata khác nhau.
Hình dưới đây minh họa về kiến trúc metadata 4 lớp:

Hình 1.6- Minh họa kiến trúc metadata 4 lớp [9]
Kiến trúc metadata 4 lớp có một số ưu điểm so với phương pháp tiếp cận mô
hình đơn giản như sau. Nó có thể:
 Hỗ trợ bất kỳ loại mô hình và phương pháp mô hình
 Cho phép các loại metadata khác nhau có quan hệ.
 Cho phép metamodels và metadata mới được thêm vào từng bước.
 Hỗ trợ các metadata và meta-metadata trao đổi với nhau khi chúng được
xây dựng trên cùng một meta-metamodel.

1.3.2 Kiến trúc MOF metadata
Kiến trúc MDA ra đời tập trung vào mô hình, nhấn mạnh vào quá trình tự
động hóa chuyển đổi giữa các mô hình (PIM tới PSM) và chuyển đổi xuyên suốt
từ mô hình trừu tượng cao xuống mã nguồn thực thi. Chính vì vậy các mô hình
PIM hay PSM, phải được miêu tả trong các ngôn ngữ chặt chẽ đầy đủ phù hợp
9




cho sự thông dịch tự động bằng máy tính. Tổ chức OMG đã đề xuất chuẩn kiến
trúc MOF để hỗ trợ mô tả và định nghĩa metadata [5]. Mục đích chính của MOF
là hỗ trợ bất kỳ loại metadata và cho phép các loại metadata mới được thêm vào
khi cần. Để đạt được điều này, kiến trúc MOF dựa trên kiến trúc metamodeling
bốn lớp truyền thống được mô tả ở trên. Ví dụ dưới đây cho thấy một thể hiện
phổ biến của kiến trúc MOF metadata với metamodel biểu diễn lược đồ UML và
IDL.

Hình 1.7- Kiến trúc Metadata MOF [5]
Kiến trúc MOF metadata có một vài tính năng quan trọng phân biệt với kiến
trúc metamodeling trước đó:
 MOF model (phần cốt lõi meta-metamodel của MOF) hướng đối tượng,
với cấu trúc metamodeling tương đương với cấu trúc hướng đối tượng
của UML. Do đó, ví dụ trên sử dụng biểu tượng gói UML để mô tả
metamodel dựa trên MOF cùng với mô hình UML.
 Cấp độ meta (meta-levels) trong kiến trúc MOF metadata không cố định.
Thông thường có 4 cấp độ meta tuy nhiên có thể sử dụng nhiều hơn hay ít
hơn các cấp độ tùy thuộc vào sự cài đặt của MOF. Cấp độ MOF meta chỉ
là một quy ước để nhận biết mối quan hệ giữa các loại dữ liệu khác nhau
và metadata.

10




 Một mô hình (hiểu theo nghĩa rộng là tập hợp của các metadata) không
cần thiết phải giới hạn trong một cấp độ meta. Ví dụ, trong ngữ cảnh
Data Warehousing, sẽ là có ích nếu quan niệm meta Schema “Relational
Table” và đặc tả Schemas là các thể hiện của bảng quan hệ thuộc về mô
hình khái niệm.
 MOF model có khả năng tự mô tả chính nó. Nói cách khác, MOF model
được định nghĩa sử dụng cấu trúc metamodeling của chính nó. Vì vậy,
MOF model cũng được miêu tả bằng biểu tượng Package của UML.
Vì metamodel của MOF và UML có kiến trúc tương đương nhau nên chúng
chia sẻ một tập các khái niệm chung của các khái niệm metamodeling cốt lõi.
MOF cũng sử dụng các ký hiệu của UML để mô hình hóa metamodel.
1.3.3 Chuẩn CWM, UML, XMI, OCL
Một chìa khóa quan trọng để tích hợp thành công cũng như đạt được sự liên
tác và quản lý các siêu dữ liệu độc lập với các ứng dụng, các nền, các công cụ và
các cơ sở dữ liệu cũng như dễ dàng thực hiện các chuyển đổi trong MDA là việc
đưa ra các chuẩn cơ bản của OMG cho MDA bao gồm: CWM, MOF, UML và
XMI [10]. Hình dưới đây biểu diễn quan hệ giữa các chuẩn:

Hình 1.8- Mối liên hệ giữa các chuẩn trong OMG [10]
11




CWM

a)
CWM [13] là một chuẩn data warehouse của OMG. CWM được dùng để
thiết kế, xây dựng và quản lý các ứng dụng data warehouse. Đây là một ví dụ
của việc áp dụng mô hình MDA cho một miền ứng dụng.
UML
b)
UML [14] cung cấp các chuẩn trừu tượng để đơn giản hóa việc làm tài liệu,
hiểu và bảo trì các hệ thống phần mềm phức tạp. Cơ chế mở rộng của UML cho
phép dễ dàng xây dựng các mô hình cho hệ thống và đặc tả chúng một cách
chính xác và chi tiết. Ngoài ra, UML còn cung cấp cơ chế UML Profile, cho
phép đặc tả các chi tiết gần hơn tới mô hình cài đặt, cũng như cho phép xây
dựng các ánh xạ, các luật cho việc chuyển đổi.

Hình 1.9- Profiles Java và Servlet ứng dụng cho gói WebApplication
4

UML là một ngôn ngữ mô hình hóa và không phải là một ngôn ngữ lập
trình. Là một ngôn ngữ mô hình hóa, UML cho phép người phát triển làm việc ở
mức trừu tượng cao mà ít quan tâm tới các công nghệ, nền cụ thể, do đó làm
giảm độ phức tạp của hệ thống, trực quan, dễ nắm bắt hệ thống hơn. UML chuẩn
có thể được mở rộng cho từng dự án cụ thể nếu cần bằng cách dùng các UML
profiles. Những ngữ nghĩa mới có thể được thêm vào cùng với các phần tử UML

4
Nguồn
12





đã có, để định nghĩa các khuôn mẫu (stereotypes), các giá trị đích và các ràng
buộc. UML nhanh chóng hướng người phát triển tới kiến trúc (cấu trúc ở mức
cao và các mối liên hệ) của các hệ thống cụ thể. Để đạt được hiệu quả đó giống
như một công cụ mô hình hóa, các biểu đồ UML biểu diễn hệ thống ở mức trừu
tượng cao, ẩn đi nhiều chi tiết mức thấp. Cùng với thời gian, người dùng UML
nhận ra rằng cách tốt nhất để đạt được mục đích của mình là áp dụng MDA,
trong đó, các mô hình UML được chuyển đổi tự động từ mức trừu tượng cao
hơn tới trừu tượng thấp hơn và cuối cùng là chuyển đổi thành mã nguồn của một
ngôn ngữ lập trình được lựa chọn. Mặc dù không phải là một yêu cầu bắt buộc
nhưng UML là một công nghệ chính cho việc phát triển phần mềm theo hướng
MDA và là nền tảng cho 99% các dự án phát triển theo hướng này.
XMI
c)
XMI [15] là một kỹ thuật chuyển đổi chuẩn giữa các công cụ, các kho dữ
liệu và phần mềm trung gian khác nhau. XMI có thể được dùng để tự động cung
cấp XML DTDs từ các mô hình UML và MOF. XMI được dùng để diễn tả các
mô hình UML (dùng UML XMI DTD), Data Warehouse và các cơ sở dữ liệu
(dùng CWM XMI DTD), các định nghĩa giao diện CORBA (dùng IDL DTD),
các lớp và giao diện Java (dùng Java DTD). XMI cùng kết hợp với các chuẩn
mô hình hóa (UML), siêu mô hình/siêu dữ liệu (MOF và XML) và các phần
mềm trung gian (UML profiles cho Java, EJB, IDL, EDOC, v.v ) đóng vai trò
nòng cốt trong việc dùng XML cho MDA.
OCL
d)
OCL [16] là một ngôn ngữ biểu diễn các thông tin thêm và các thông tin cần
thiết cho các mô hình được dùng trong mô hình hóa hướng đối tượng và thường
được dùng kết hợp với UML. Bằng cách kết hợp với OCL, các mô hình UML
bao gồm nhiều thông tin hơn. Nhiều thông tin của hệ thống không thể mô tả hết
nếu chỉ dùng UML. Những thông tin này chỉ có thể được biểu diễn thông qua
các biểu thức OCL. Đã có nhiều ý kiến cho rằng một bước tiến mới trong phát

triển phần mềm chính là việc kết hợp UML với OCL để xây dựng các mô hình
cho hệ thống. Các công cụ mô phỏng một hệ thống, sinh ra mã nguồn từ mô
13




hình, và các công cụ hỗ trợ MDA cần phải có các mô hình đầu vào chi tiết hơn
và rõ ràng hơn. Chất lượng đầu ra của các công cụ này phụ thuộc phần lớn vào
chất lượng của các mô hình được dùng làm đầu vào. Các công cụ sinh ra mã
nguồn từ UML/OCL làm cho quá trình phát triển hiệu quả hơn. OCL là một
ngôn ngữ chính xác, không nhập nhằng và dễ hiểu. Nó cũng là một ngôn ngữ
định kiểu. OCL là một ngôn ngữ khai báo, trạng thái của hệ thống không thay
đổi sau khi thực hiện các biểu thức OCL. UML/OCL thường được dùng để xây
dựng các mô hình độc lập nền. Hình dưới đây minh họa việc kết hợp OCL trong
UML:


Hình 1.10- Minh họa áp dụng OCL cho UML
1.4 Chuyển đổi mô hình
Chuyển đổi mô hình là một trong những khái niệm trung tâm của phát triển
phầm mềm hướng mô hình. Vì vậy, phần này của luận văn sẽ đề cập đến vấn đề
chuyển đổi mô hình nói chung và cụ thể hơn là chuyển đổi mô hình trong MDA.
1.4.1 Giới thiệu chuyển đổi mô hình
Một trong những cách tốt nhất làm giảm độ phức tạp của phát triển phần
mềm hướng mô hình là tập trung vào trừu tượng hóa hệ thống, phân tách các
vấn đề và mối quan tâm. Cách tiếp cận này tập trung vào mô hình hóa hệ thống
thay vì tập trung vào khía cạnh lập trình truyền thống với mục tiêu gia tăng năng
suất và giảm thời gian đưa sản phẩm ra thị trường bằng cách cho phép phát triển
hệ thống tại mức trừu tượng cao, sử dụng các khái niệm gần với vấn đề cần phát

triển hơn là tập trung vào ngôn ngữ lập trình. Thử thách chính của phát triển
hướng mô hình là chuyển đổi các mô hình ở mức trừu tượng cao xuống mô hình
14




cụ thể nền mà được sử dụng sinh ra mã nguồn. Như vậy có thể thấy chuyển đổi
mô hình là nhân tố chính đóng vai trò quan trọng trong phát triển phần mềm
hướng mô hình.
Theo Kleppe [17] định nghĩa “một chuyển đổi là quá trình sinh tự động một
mô hình đích từ một mô hình nguồn, cùng với một định nghĩa chuyển đổi. Một
định nghĩa chuyển đổi là tập các luật chuyển đổi phối hợp cùng nhau mô tả
cách một mô hình trong ngôn ngữ nguồn có thể được chuyển đổi sang một mô
hình trong ngôn ngữ đích. Một luật chuyển đổi là một mô tả cách thức mà một
hay nhiều cấu trúc trong ngôn ngữ nguồn có thể được chuyển đổi sang một hay
nhiều cấu trúc trong ngôn ngữ đích”. Để phù hợp với phát triển phần mềm
hướng mô hình thì định nghĩa này cần được tổng quát hóa cho phép áp dụng
chuyển đổi nhiều mô hình nguồn sang một hoặc nhiều mô hình đích [18]. Một ví
dụ minh họa là kết hợp mô hình, cho phép kết hợp nhiều mô hình nguồn đang
được phát triển song song vào một mô hình mục tiêu. Hình dưới đây mô tả một
chuyển đổi sử dụng mô hình PIM và chuyển đổi thành một số mô hình PSM.

Hình 1.11- Chuyển đổi mô hình PIM sang nhiều mô hình PSM [18]
1.4.2 Chuyển đổi mô hình trong MDA
Phần dưới đây sẽ đi vào tìm hiểu tổng quan chuyển đổi mô hình trong MDA,
các loại chuyển đổi mô hình và kỹ thuật chuyển đổi mô hình trong MDA.

15





Tổng quan chuyển đổi mô hình trong MDA
a)
Kỹ nghệ hướng mô hình là một phương pháp kỹ nghệ phần mềm đẩy mạnh
việc dùng các mô hình và các chuyển đổi như là những tác nhân chính. Tổ chức
OMG đề xuất MDA cùng một bộ các chuẩn cho việc tích hợp các công cụ cho
kỹ nghệ hướng mô hình MDE. Những chuẩn này tập trung vào việc dùng các
mô hình độc lập nền PIM, chúng hỗ trợ việc phát triển phần mềm ở mức trừu
tượng cao bằng cách ẩn đi các chi tiết cụ thể của nền. Nhờ đó mà chúng giải
quyết được một số vấn đề xảy ra nhờ giảm đi độ phức tạp của hệ thống phần
mềm. Xa hơn nữa, các mô hình PIM có thể được giảm độ phức tạp bằng cách
chúng có thể được mô hình với một vài điểm nhìn (ví dụ, các mô hình cấu trúc,
mô hình hoạt động, các mô hình đảm bảo chất lượng) theo thứ tự mà người phát
triển tập trung vào các mục đích thiết kế trong suốt quá trình phát triển hệ thống.
Để xây dựng và tiến hóa các mô hình ở những điểm nhìn khác nhau, cần có
sự nhất quán, liên hệ lẫn nhau giữa các mô hình khác nhau. Để làm được điều
này, chuyển đổi mô hình thường được dùng để cập nhật tất cả các mô hình ở
những điểm nhìn khác trong trường hợp một mô hình thay đổi. Xa hơn nữa,
chuyển đổi mô hình có thể giúp cho việc xây dựng một mô hình điểm nhìn mới
dựa trên các mô hình đã tồn tại. Tất cả các chuyển đổi này là chuyển đổi PIM tới
PIM hay chuyển đổi mô hình tới mô hình, nó thường được gọi là chuyển đổi
theo chiều ngang, bởi vì chúng thường được dùng để chuyển đổi các mô hình ở
cùng một mức trừu tượng. Để thực hiện mô hình PIM trong một nền đích, một
mô hình PSM cho nền đó phải được sinh ra. Việc sinh ra các mô hình này cần
những chuyển đổi mô hình thích hợp từ mô hình PIM đã được “làm giàu thêm”
với các thông tin chi tiết của một nền cụ thể. Những chuyển đổi mô hình này
thường được gọi là chuyển đổi theo chiều dọc hay cụ thể hơn là chuyển đổi mô
hình PIM tới mô hình PSM.

Việc chuyển đổi mô hình là cần thiết vì nó làm cầu nối giữa các mô hình
PIM và PSM ở các mức trừu tượng khác nhau, việc sinh ra các mô hình trung
gian là việc dễ thực hiện hơn việc sinh trực tiếp mô hình PSM. Ví dụ, khi đi từ
biểu đồ lớp tới một cài đặt của EJB (Entity Java Bean), các công cụ như
OptimalJ sẽ sinh ra một mô hình trung gian là mô hình thành phần EJB, bao
16




gồm tất cả các thông tin cần thiết để có thể dùng để tạo ra mã nguồn Java. Thêm
vào đó, việc chuyển đổi từ PIM sang PSM là hữu ích cho việc tính toán các mô
hình ở các góc nhìn khác nhau của hệ thống và đồng bộ hóa chúng.

Hình 1.12- Chuyển đổi mô hình giữa các mô hình khác nhau trong
MDA
5

Qua đó, chúng ta có thể nói chuyển đổi mô hình là trái tim và linh hồn của
kỹ nghệ phần mềm hướng mô hình. Để chuẩn hóa việc chuyển đổi mô hình, tổ
chức OMG đã đưa ra đề xuất RFP MOF 2.0 Query/Views/Transformation [5],
chuẩn bao gồm các yêu cầu cho ngôn ngữ chuyển đổi. Các ngôn ngữ chuyển đổi
và biểu diễn hình thức bên cần cung cấp các đặc tính sau:
 Biểu diễn hình thức nên hỗ trợ cho việc đặc tả các chuyển đổi mô hình
theo cả chiều dọc và chiều ngang.
 Biểu diễn hình thức nên cho phép áp dụng tự động các luật chuyển đổi
mô hình.
 Các luật chuyển đổi cần dễ hiểu.
 Các luật chuyển đổi tương thích tốt và có thể dùng lại.


5
Nguồn
17




Phân loại chuyển đổi mô hình trong MDA
b)
Định nghĩa và chuyển đổi mô hình là những kỹ thuật then chốt trong cách
tiếp cận MDA. Chuyển đổi mô hình bao hàm việc dùng một mô hình như là một
đầu vào trong một quá trình tự động. Đầu ra có thể là một mô hình khác hoặc mã
nguồn thực thi ở các mức khác nhau. Trong thực tế có ba loại chuyển đổi mô
hình thường gặp trong MDA: chuyển đổi tái kỹ nghệ, chuyển đổi mô hình tới
mô hình và chuyển đổi mô hình tới mã nguồn.
 Chuyển đổi tái kỹ nghệ là việc tổ chức lại một mô hình dựa trên một vài
tiêu chuẩn hoàn toàn xác định. Trong trường hợp này, đầu ra của chuyển
đổi là một mô hình được chỉnh sửa từ mô hình ban đầu, được gọi là mô
hình đã được phân tích lại (refactored model). Một ví dụ đơn giản là định
danh lại tất cả các thể hiện mà một tên thực thể UML đã được dùng, hay
phức tạp hơn là thay thế một lớp bằng một tập các lớp và các quan hệ
trong cả siêu mô hình và trong tất cả các biểu đồ hiển thị các phần tử mô
hình đó. Hình dưới đây chỉ ra một chuyển đổi phân tích lại, đơn giản là
việc trích ra giao diện của lớp.

Hình 1.13- Chuyển đổi tái kỹ nghệ
 Chuyển đổi mô hình tới mô hình là chuyển đổi thông tin từ một mô hình
hay nhiều mô hình tới một mô hình khác hay một tập các mô hình, thông
thường ở đây, luồng thông tin được dựa theo mức độ trừu tượng. Một ví
dụ về chuyển đổi mô hình tới mô hình là chuyển đổi một tập các lớp thực

thể thành môt lược đồ cơ sở dữ liệu tương ứng. Chuyển đổi này được
minh họa bằng hình dưới đây.
18





Hình 1.14- Chuyển đổi mô hình PIM tới PSM
 Chuyển đổi mô hình tới mã nguồn là một chuyển đổi thông dụng đối với
những người đã dùng các công cụ mô hình hóa UML có khả năng sinh
mã. Các chuyển đổi này chuyển đổi một thành phần của mô hình sang
một đoạn mã nguồn. Điều này không chỉ giới hạn trong các ngôn ngữ
hướng đối tượng như Java và C++. Nó cũng không giới hạn với các ngôn
ngữ lập trình: cấu hình, triển khai, định nghĩa dữ liệu, lược đồ message,
và các loại file khác có thể được sinh ra từ các mô hình được xây dựng
trên các ngôn ngữ mô hình hóa ví dụ như UML. Chuyển đổi mô hình tới
mã nguồn có thể được phát triển cho gần như bất kỳ dạng ngôn ngữ lập
trình nào. Một ví dụ là sinh ra file mã nguồn Data Definition Language
(DDL) từ một mô hình dữ liệu logic được xây dựng bằng biểu đồ lớp của
ngôn ngữ UML.

Hình 1.15- Chuyển đổi mô hình tới mã nguồn
6


6
Nguồn

×