MỤC LỤC
TÓM TẮT ............................................................................................................ ii
BẢNG KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT ................................................... iii
DANH SÁCH HÌNH VẼ .................................................................................... iv
MỞ ĐẦU .............................................................................................................. 1
Chương I Cơ sở lý thuyết cho chuyển mô hình ................................................... 2
1.1 Phát triển hướng mô hình ............................................................................... 2
1.1.1 Khái niệm về mô hình ................................................................................. 4
1.1.2 Các chuẩn hướng tiếp cận MDD ................................................................. 5
1.1.3 Kiến trúc MDA............................................................................................ 6
1.2 Tổng quan về chuyển mô hình ....................................................................... 7
1.2.1 Các thuật ngữ trong chuyển mô hình .......................................................... 8
1.2.2 Một số giải pháp sử dụng ngôn ngữ chuyển ............................................... 9
1.3 Tổng kết chương .......................................................................................... 10
Chương II Ngôn ngữ chuyển mô hình RTL ....................................................... 11
2.1. Cơ sở hình thức cho RTL ............................................................................ 11
2.1.1 Kiến thức cơ sở về văn phạm đồ thị ba ..................................................... 12
2.1.2 Luật chuyển TGGs ràng buộc OCL .......................................................... 14
2.2. Cú pháp của RTL ....................................................................................... 22
2.3. Thực thi chuyển ........................................................................................... 23
2.4. USE hỗ trợ RTL .......................................................................................... 24
Chương III Thực nghiệm chuyển mô hình với RTL .......................................... 26
3.1 Bài toán chuyển UML sang CSP ................................................................. 26
3.1.1 Metamodel của biểu đồ hoạt động UML .................................................. 26
3.1.2 Metamodel của CSP .................................................................................. 28
3.2 Phương thức chuyển ..................................................................................... 29
3.3. Kết quả chuyển UML2CSP ......................................................................... 31
3.3.1 Xây dựng luật: ........................................................................................... 31
3.3.2 Áp dụng luật chuyển cho ví dụ cụ thể ....................................................... 37
3.4 Tổng kết chương .......................................................................................... 38
KẾT LUẬN ........................................................................................................ 40
TÀI LIỆU THAM KHẢO .................................................................................. 41
PHỤ LỤC ........................................................................................................... 42
A. XÂY DỰNG MÔ HÌNH VÀ LUẬT CHUYỂN ĐỔI................................... 42
B. MÃ SINH CỦA LUẬT ................................................................................. 49
i
BẢNG KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT
Từ viết tắt
Từ chuẩn
Diễn giải
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
MOF
Meta-Object Facility
Một chuẩn của OMG
OMG
Object Management Group
Tổ chức quản lý đối tượng
OCL
Object Constraint Language
Ngôn ngữ ràng buộc đối tượng
UML
Unified Modeling Language
Ngôn ngữ mô hình hóa thống
nhất
RTL
Restricted
graph Ngôn ngữ chuyển mô hình giới
transformations language
hạn
TGG
Triple graph grammar
Văn phạm đồ thị ba
CSP
Communicating
sequential Tiến trình giao tiếp tuần tự
processes
iii
DANH SÁCH HÌNH VẼ
Hình 1.1: Ví dụ về hệ thống phân cấp metamodel bốn lớp của UML[3] ............. 5
Hình 1.2 Mô hình mối quan hệ ở mức metamodel ............................................... 8
Hình 2.1 Luật chuyển đồ thị ba và bước chuyển với luật chuyển tiến ............... 14
Hình 2.2 : Mô hình khái niệm bên trái tương ứng với mô hình thiết kế bên phải ....... 15
Hình 2.3: Chuyển đổi dưới dạng biểu đồ như một metamodel .......................... 15
Hình 2.4: Luật chuyển ba addAssociation tích hợp OCL ................................... 17
Hình 2.5: Ví dụ điều kiện áp dụng OCL ............................................................. 18
Hình 2.6: Ví dụ việc áp dụng điều kiện OCL cho luật ba ................................... 19
Hình 2.7 : Luật chuyển ba và dẫn xuất luật chuyển ba ....................................... 21
Hình 3.1 Metamodel của biểu đồ hoạt động UML [5] ....................................... 27
Hình 3.2: Ví dụ một biểu đồ hoạt động............................................................... 27
Hình 3.3: Biểu đồ hoạt động UML biểu diễn trên USE...................................... 28
Hình 3.4: Metamodel của CSP[5] ....................................................................... 29
Hình 3.5: Luật trafoInitialNode........................................................................... 31
Hình 3.6 Luật trafoFinalNode ............................................................................. 32
Hình 3.7 Luật trafoActionNode .......................................................................... 33
Hình 3.8 Luật trafoDecisionNode ....................................................................... 34
Hình 3.9 Luật trafoForkNode .............................................................................. 35
Hình 3.10 Luật trafoMergeNode ......................................................................... 36
Hình 3.11 Luật trafoJoinNode............................................................................. 37
Hình 3.12 Ví dụ chuyển mô hình từ biểu đồ hoạt động UML sang CSP ........... 39
iv
MỞ ĐẦU
Các hệ thống phần mềm ứng dụng hiện đang phát triển rất nhanh và ngày
càng phức tạp đòi hỏi chúng ta phải có các phương pháp để cải thiện tốc độ phát
triển và chất lượng của ứng dụng đó. Một trong những hướng tiếp cận đang rất
được quan tâm trong phát triển phần mềm là phát triển hướng mô hình(MDD).
Đã có nhiều phương pháp phát triển dựa trên hướng tiếp cận này như AGG,
ATL, QVT[10]. Mỗi phương pháp đều đưa ra đề xuất xây dựng ứng dụng dựa
trên những góc nhìn khác nhau của hệ thống dưới dạng mô hình. Để xây dựng
ứng dụng một cách nhanh chóng và chính xác khi áp dụng phương pháp MDD,
một điều quan trọng cần phải có là kiểm tra tính hợp lệ của mô hình. Những mô
hình chính xác, chặt chẽ là điều kiện cần cho các bước xây dựng ứng dụng theo
hướng mô hình hóa. Vì vậy, khi xây dựng mô hình cần có cơ chế kiểm tra các
ràng buộc mà mô hình phải tuân theo. Những ràng buộc này được biểu diễn
bằng ngôn ngữ ràng buộc đối tượng OCL.
Trong phạm vi của luận văn, chúng tôi nghiên cứu và trình bày một
phương pháp phát triển cụ thể là văn phạm đồ thị ba(TGG), nghiên cứu về ngôn
ngữ chuyển mô hình RTL [3], [4]. Sau khi đưa nghiên cứu về RTL chúng tôi
xây dựng các luật chuyển trong bài toán chuyển từ biểu đồ hoạt động UML sang
đại số tiến trình CSP dựa trên công cụ USE. Trên cơ sở các luật chuyển đã được
xây dựng chúng tôi áp dụng luật chuyển đó cho một ví dụ cụ thể để chuyển đổi
mô hình biểu đồ hoạt động UML sang CSP[5]. USE được sử dụng làm công cụ
kiểm chứng mô hình chuyển đổi trên.
Cấu trúc của luận văn được tổ chức như sau:
- Chương 1: Cơ sở lý thuyết cho chuyển mô hình. Chương này giới thiệu
chung về phát triển hướng mô hình và tổng quan về chuyển mô hình.
- Chương 2: Ngôn ngữ chuyển mô hình RTL. Trong đó tập chung vào
nghiên cứu cơ sở hình thức cho RTL gồm: kiến thức cơ sở về văn phạm đồ thị
ba, luật chuyển TGG ràng buộc OCL. Từ đó nghiên cứu về cú pháp của RTL và
công cụ USE hỗ trợ RTL.
- Chương 3: Thực nghiệm chuyển mô hình với RTL. Trên cơ sở nghiên
cứu ngôn ngữ RTL, chúng tôi xây dựng bài toán chuyển từ biểu đồ hoạt động
UML sang đại số tiến trình CSP bằng việc xây dựng các luật chuyển và áp dụng
vào một ví dụ cụ thể.
1
Chương I
Cơ sở lý thuyết cho chuyển mô hình
Chương này giới thiệu về mô hình, ưu điểm của việc phát triển hướng mô
hình và lý thuyết cho chuyển mô hình. Giới thiệu một số ngôn ngữ chuyển mô
hình phần mềm .
1.1 Phát triển hướng mô hình
Phát triển hướng mô hình (MDD) là hướng tiếp cận xem xét việc xây
dựng chương trình là hoạt động chuyển đổi từ mô hình này sang mô hình khác.
Ở hướng tiếp cận đối tượng, tất cả đều quy về đối tượng. Còn ở hướng tiếp cận
MDD thì tất cả đều quy về mô hình. Một số ưu điểm trong phát triển hướng mô
hình [10]:
- Phát triển phần mềm nhanh hơn: Trong MDD các mô hình của một ứng
dụng phần mềm được xác định trên một mức độ trừu tượng cao hơn so với các
ngôn ngữ lập trình truyền thống. Mô hình này tự động chuyển đổi thành một
ứng dụng phần mềm làm việc bằng cách tạo ra mã hoặc biên dịch /thực thi mô
hình. Khi mô hình được sử dụng trên một mức độ trừu tượng cao sẽ nhanh hơn
nhiều so với cùng một mô hình thể hiện trong mã. Nói cách khác: mỗi phần tử
trong mô hình đại diện cho nhiều dòng mã. Do đó, có thể xây dựng nhiều chức
năng hơn trong cùng một thời gian.
- Chi phí-hiệu quả hơn: MDD có chi phí và hiệu quả hơn. Lý do đầu tiên
đó là MDD thực hiện nhanh hơn do đó sẽ đưa ra thị trường nhanh hơn. Lý do
thứ hai là có thể làm với chi phí thấp hơn. Điều này tất nhiên phụ thuộc vào chi
phí học các phương pháp tiếp cận MDD và các chi phí để phát triển hoặc mua
các công cụ. Nó cũng phụ thuộc vào mô hình kinh doanh. Thay đổi và duy trì
các ứng dụng xây dựng bằng cách sử dụng một cách tiếp cận MDD cũng là hiệu
quả chi phí. Nó là dễ dàng hơn để hiểu được hành vi của một ứng dụng bằng
cách đọc các mô hình cao cấp. Ngoài ra nó là nhanh hơn để thêm chức năng
hoặc thay đổi chức năng hiện có bằng cách sử dụng một ngôn ngữ cấp cao.
- Tăng chất lượng phần mềm: Một phần mềm ứng dụng được quy định
cụ thể trong một mô hình cấp cao được thực hiện bởi một cơ cấu hoặc chuyển
đổi thành mã, chất lượng (kỹ thuật) của ứng dụng phụ thuộc vào cấu trúc sinh ra.
Do đó, chất lượng có thể tăng lên rất nhiều bởi vì chúng ta có thể phát triển bởi
những người tốt nhất . Hơn nữa, tất cả các thực hành tốt nhất tìm hiểu sẽ được
2
áp dụng cho các dự án xây dựng bằng cách sử dụng công cụ MDD. Trong
trường hợp mua một công cụ MDD, nó có thể chứa các thực thi tốt nhất bởi vì
nó được xây dựng dựa trên kiến thức của tất cả các dự án xây dựng bởi công cụ
MDD trong quá khứ.
- Ít bị lỗi hơn: Việc kiểm thử phần mềm sẽ tốn rất nhiều thời gian và
chuyên môn. MDD đảm bảo rằng bạn có thể tập trung vào kiểm tra các chức
năng của ứng dụng, tức là chấp nhận thử nghiệm. Vấn đề kỹ thuật đã được đảm
bảo bằng cách thử nghiệm các công cụ MDD, ví dụ về các vấn đề cơ sở hạ tầng
có liên quan hoặc các lỗ hổng bảo mật trong công nghệ.
- Kiểm chứng có ý nghĩa: Ngay cả các chức năng chính nó là ít bị lỗi khi
sử dụng một cách tiếp cận MDD, bởi vì kiểm chứng thực có ý nghĩa có thể được
thực hiện trên các mô hình cao cấp. Khi sử dụng các ngôn ngữ lập trình truyền
thống, bạn sẽ có một số cú pháp kiểm tra trong IDE của bạn và thậm chí có thể
phân tích một số mã tĩnh. Tuy nhiên, do tính phổ quát của các ngôn ngữ lập trình
này không thực sự giúp bạn tránh các lỗi chức năng. Khi sử dụng một cách tiếp
cận MDD xác nhận tên miền cụ thể có thể được thực hiện tại thời điểm thiết kế.
- Biểu diễn hệ thống bằng tri thức miền : MDD thi hành một sự tách biệt
các mối quan tâm và kỹ năng. Chuyên gia miền có thể tập trung vào việc mô
hình hóa các miền, trong khi chuyên viên kỹ thuật tập trung vào xây dựng các
công cụ cần thiết cho MDD. Xây dựng các ứng dụng phức tạp không chỉ cho lập
trình tốt nữa. MDD có thể giới thiệu các ký hiệu thích hợp (ví dụ như văn bản,
đồ họa, bảng) để trao quyền cho các chuyên gia tên miền.
- Lập trình tiên tiến cho phép tập trung trên các công cụ cứng: với
MDD, các nhà phát triển tiên tiến làm công việc ít lặp đi lặp lại. Họ có thể tập
trung vào các khía cạnh sáng tạo của công việc của họ. Ví dụ, họ có thể tập
trung vào việc xây dựng các công cụ MDD. Họ cũng có thể cố vấn các nhà
phát triển cơ sở hoặc chuyên gia tên miền, hoặc họ có thể chọn các phần cứng
xây dựng ứng dụng.
- Cầu nối khoảng cách giữa công nghệ và công nghệ thông tin(CNTT):
Liên kết kinh doanh-IT là một vấn đề khi nói về xây dựng phần mềm. MDD có
thể mang lại cho kinh doanh và CNTT gần nhau hơn trong các cách sau: thứ
nhất, chuyên gia miền (hoặc các nhà phân tích kinh doanh) trực tiếp tham gia
trong quá trình phát triển. Thứ hai, CNTT (một ứng dụng phần mềm) được xác
định trên một mức độ cao hơn nhiều. Các mô hình này càng nhiều càng có thể
khai báo và định nghĩa trong các khái niệm miền. Thứ ba, MDD phát triển
3
nhanh hơn phần mềm có thể được xây dựng trong các lần lặp lại ngắn hơn và do
đó có phù hợp hơn cho mục đích (do thông tin phản hồi nhanh chóng của các
doanh nghiệp, người dùng cuối cùng). Thứ tư, việc xác định các biến đổi rõ ràng
giữa một mô hình của một tổ chức và một mô hình của một hệ thống CNTT.
- Dễ thích ứng với những thay đổi trong các yêu cầu nghiệp vụ. Một trong
những vấn đề của phát triển phần mềm là yêu cầu kinh doanh thường xuyên thay
đổi nhanh hơn so với các hệ thống phần mềm hỗ trợ. Tuy nhiên, MDD có thể
cung cấp một giải pháp bởi vì nó làm cho phát triển phần mềm nhanh hơn , nó
cũng dẫn đến dễ dàng hơn để thay đổi các ứng dụng.
- Dễ thích ứng với những thay đổi trong công nghệ. Thay đổi công nghệ
theo nhau nhanh hơn và nhanh hơn. Hãy suy nghĩ về những điều như Java EE,
SOA / soba, webservices, REST, SCA, OSGi, và gần đây hạn chế trong công
nghệ khi ứng dụng điện toán đám mây (ví dụ như cấu trúc cơ sở dữ liệu ). MDD
đảm bảo bạn không phải thay đổi mô hình ứng dụng của bạn khi bạn muốn di
chuyển ứng dụng của bạn với các công nghệ khác. Điều duy nhất mà cần phải
thay đổi là bộ tạo (hoặc bộ thông dịch). Sau khi thay đổi các mã bộ tạo (hoặc
thêm các tùy chọn mã bổ sung ) tất cả các mô hình ứng dụng trực tiếp có thể
được chuyển đổi thành mã cho công nghệ mới.
- Thực sự thực thi kiến trúc: Các công ty thường xác định các nguyên tắc
kiến trúc. Ứng dụng phần mềm phải tuân thủ những nguyên tắc này, nhưng làm
thế nào để kiểm tra hoặc thi hành tuân thủ khi tất cả các mã được tạo ra bằng tay?
Khi sử dụng MDD ứng dụng phần mềm được đảm bảo thực hiện đúng với kiến
trúc được lựa chọn. Bạn thực sự có thể chuẩn hóa IT của bạn bởi vì nguyên tắc
kiến trúc được thực thi trong các công cụ MDD
1.1.1 Khái niệm về mô hình
Để hiểu rõ hơn về MDD, sau đây sẽ đưa ra một số khái niệm trong MDD
như [3], [10]:
- Model: mô hình là cách biểu diễn hệ thống được đơn giản giúp hiểu hơn
về hệ thống. Mô hình thường được diễn đạt trong một ngôn ngữ đặc tả miền cụ
thể hay ngôn ngữ mô hình hóa chung UML. Mô hình được biểu diễn bằng ký
hiệu đồ họa.
- Metamodel: Một metamodel của một mô hình X miêu tả cấu trúc của mô
hình X theo kiểu hợp lệ. Một metamodel có thể được so sánh với cú pháp trong
thiết kế ngôn ngữ. Metamodel được đinh nghĩa chính xác như là điều kiện tiên
quyết cho chuyển mô hình.
4
Hình 1.1: Ví dụ về hệ thống phân cấp metamodel bốn lớp của UML[3]
- Metametamodel: một metametamodel của mô hình X là metamodel
được sử dụng để miêu tả metamodel của model X. Nó có thể được so sánh với
ngữ pháp của một ngôn ngữ, cái mà được sử dụng để miêu tả ngữ pháp của ngôn
ngữ X. Nền tảng được thiết lập tốt và tiêu chuẩn cho việc metametamodel tồn tại
như MOF hay Ecore. MOF là một chuẩn của OMG cho việc định nghĩa
metamodel. MOF có hai phiên bản: Complete MOF(CMOF) và Essential MOF
(EMOF). Một cài đặt của EMOF được sử dụng phổ biến là Ecore, định nghĩa
bởi Eclipse Modeling Framework (EMF)
Ví dụ trong hình 1.1 chúng ta có các cấp độ của model. Mức M0 là cấp độ
dữ liệu người dung, M1 là mô hình dữ liệu ở cấp độ M0. Cấp M2 là mô hình cấp
trên của M1, do đó thường được gọi là một metamodel. Cấp M3 được tổ chức
một mô hình thông tin của M2 và thường được gọi là metametamodel.
1.1.2 Các chuẩn hướng tiếp cận MDD
Hướng tiếp cận MDD vẫn đang được phát triển và được sử dụng rộng rãi
trong ngành công nghiệp phần mềm. Hiện nay có nhiều tổ chức tham gia nghiên
cứu để thành lập một chuẩn riêng như: MDA (Model Driven Architecture) của
tổ chức OMG, MIC (Model Intergrated Computing) của nhóm ISIS đại học
Vanderbilt, SF (Software Factories) của công ty Microsoft, và một số chuẩn
5
khác. Trong các chuẩn đó, MDA của OMG được công bố rộng rãi, phát triển rất
mạnh trong giới nghiên cứu. Hơn nữa còn được ứng dụng để tạo ra rất nhiều
công cụ hỗ trợ trong quá trình xây dựng phần mềm, các công cụ này được phát
triển rất nhanh trên môi trường Eclipse [10].
1.1.3 Kiến trúc MDA
MDA do tổ chức OMG đề xuất năm 2000. MDA là một hướng tiếp cận
xem việc xây dựng phần mềm là việc chuyển đổi từ mô hình này sang mô hình
khác. MDA được đề xuất bắt nguồn từ nhu cầu tồn tại rất lâu là: làm rõ và đặc tả
các tác vụ hệ thống, cái nào phụ thuộc vào nền tảng, cái nào không phụ thuộc
nền tảng, đồng thời chia ra các mức độ phụ thuộc vào nền tảng. MDA cung cấp
một tập các nguyên tắc chỉ dẫn việc xây dựng, đặc tả cấu trúc hệ thống được
biểu diễn như là các mô hình. Các mô hình sau đó được sinh bán tự động từ mã
nguồn có khả năng thực thi bởi máy chuyển mô hình. MDA dựa trên cách sử
dụng có hệ thống các mô hình như là những tác tử kỹ nghệ sơ cấp. Các mô hình
được xem như là các lớp thực thể, thay thế mã nguồn. Mã nguồn được sinh ra từ
các mô hình, từ bộ khung phát triển tới những sản phẩm hoàn thiện có thể triển
khai được. Khi đó, người phát triển chỉ tập trung tới vấn đề (tức là các mô hình)
mà không cần quan tâm tới nền tảng cài đặt cụ thể. Ở đây nền tảng có thể là
ngôn ngữ cài đặt như Java, PHP… hoặc là các công nghệ như JSF, Spring…
được áp dụng. Sự phức tạp của nền tảng cũng là lý do cho thấy phát triển hướng
mô hình rất hiệu quả, có tính mềm dẻo, và khả năng khả chuyển cao. Cũng vì lí
do đó, MDA được phát triển mạnh mẽ trong giới nghiên cứu và cũng được nhiều
công cụ hỗ trợ trong quá trình xây dựng phần mềm[10].
Hướng tiếp cận MDA định hướng các công cụ hỗ trợ xây dựng phải đạt
được: Thứ nhất, xác định phần độc lập giữa hệ thống và nền tảng; thứ hai, xác
định phần phụ thuộc nền tảng; thứ ba, chọn nền tảng chuyên biệt mà hệ thống
phù hợp; thứ tư, chuyển hệ thống từ đặc tả trên nền tảng này sang đặc tả trên nền
tảng khác.
Trong kiến trúc hướng mô hình MDA, các loại mô hình sau được sử dụng:
Mô hình độc lập tính toán(CIM), mô hình độc lập nền (Platform Independent
Model), và mô hình phụ thuộc nền (Platform Specific Model). Ba mô hình này
biểu diễn các cách nhìn hệ thống từ các khía cạnh khác nhau của hệ thống và
mức độ trừu tượng tương ứng với các giai đoạn phân tích, thiết kế và triển khai
trong kỹ nghệ phần mềm.
6
- Mô hình độc lập tính toán (CIM): yêu cầu của hệ thống được mô hình
hóa trong mô hình độc lập tính toán, CIM miêu tả ngữ cảnh mà hệ thống sẽ sử
dụng. Nó có thể ẩn đi nhiều hoặc tất cả thông tin về việc làm thế nào dữ liệu
được xử lý trong hệ thống. Có thể gọi mô hình độc lập tính toán là mô hình phân
tích, mô hình miền hoặc mô hình nghiệp vụ, phụ thuộc vào ngữ cảnh mà chúng
ta sử dụng cho phù hợp.
CIM là mô hình của một hệ thống để thể hiện vị trí, vai trò của hệ thống
trong môi trường sẽ triển khai nó. Nó giúp chúng ta biểu diễn chính xác những
gì mà chúng ta hi vọng hệ thống sẽ thực hiện được. Điều này thật sự hữu ích,
không chỉ nhằm hiểu được vấn đề chung của hệ thống mà còn giúp chúng ta có
thêm một nguồn thông tin cho việc xây dựng những mô hình khác của hệ thống
một cách đúng đắn.
CIM đóng vai trò quan trọng trong việc lấp khoảng trống giữa những
chuyên gia phân tích trên miền cụ thể, những chuyên gia thiết kế, triển khai hay
bảo trì. Giúp chúng ta có thể xây dựng ứng dụng đáp ứng các yêu cầu trên
những miền cụ thể
- Mô hình độc lập nền (PIM): là mô hình độc lập với các đặc điểm của
nền tảng. Nó miêu tả hệ thống mà không nêu rõ nó được sử dụng cho nền tảng
nào. Một mô hình độc lập nền sẽ phù hợp cho các kiểu kiến trúc đặc biệt. PIM
có thể được sử dụng cho công nghệ máy ảo, một loại nền tảng chung hay các
nền tảng trừu tượng.
- Mô hình phụ thuộc nền (PSM): được xây dựng cho một nền tảng cụ thể.
Nó có nguồn gốc từ một mô hình độc lập nền tảng cộng thêm một số thông tin
liên quan. Do đó kết hợp được các đặc điểm của kỹ thuật nền tảng độc lập với
chi tiết nền tảng cụ thể. Tuy theo mục đích sử dụng. PSM có thể cung cấp ít hay
nhiều thông tin chi tiết cần thiết cho việc tự động sinh ra các thành phần triển
khai của hệ thống từ mô hình thì đó là một mô hình phụ thuộc nền tảng triển
khai.
1.2 Tổng quan về chuyển mô hình
Trong phát triển hướng mô hình một chuỗi các mô hình được tạo ra và
duy trì. Mô hình biểu diễn các giai đoạn khác nhau của tiến trình phát triển.
Thêm nữa, mô hình có thể thể hiện các khung nhìn khác nhau của hệ thống và
biểu diễn các cấp trừu tượng khác nhau của hệ thống.
Chuyển mô hình là một khái niệm trọng tâm trong lĩnh vực phát triển
hướng mô hình. Chuyển mô hình cung cấp một cơ chế cho việc tự động tạo ra
7
và cập nhật các mô hình đích dựa trên thông tin chứa trên mô hình nguồn. Khi
sự chuyển mô hình được định nghĩa chính xác, nó có thể được sử dụng để đảm
bảo sự nhất quán giữa các mô hình khác nhau. Hiện nay tồn tại nhiều công nghệ
chuyển mô hình, các loại có sự khác nhau giữa miền vấn đề, chẳng hạn đặc thù
của vấn đề được giải quyết bởi công nghệ chuyển mô hình và cơ chế, chẳng hạn
đặc thù của ngôn ngữ chuyển mô hình. Có 2 kiểu chuyển: Chuyển từ mô hình
sang text (M2T) và chuyển mô hình sang mô hình (M2M)
1.2.1 Các thuật ngữ trong chuyển mô hình
Sau đây là các thuật ngữ cơ bản về chuyển mô hình [10]:
- Ngôn ngữ chuyển mô hình: là một tập từ vựng và một ngữ pháp được
định nghĩa ngữ nghĩa tốt cho khả năng chuyển mô hình.
- Luật chuyển mô hình: Một luật chuyển mô hình trong mô tả là một thực
thể nhỏ nhất trong chuyển mô hình. Nó miêu tả cách một phần mô hình nguồn
có thể được chuyển tới phần mô hình đích. Một luật chứa một mẫu nguồn và
một mẫu đích. Đối với mỗi phần xuất hiện của mẫu nguồn trong mô hình nguồn
tương ứng một mẫu đích được tạo trong mô hình đích. Trong ngữ cảnh chuyển
mô hình dựa trên đồ thị thì mẫu nguồn được gọi là phần bên trái (LHS) và mẫu
đích gọi là phần bên phải (RHS)
- Mô hình nguồn: trong ngữ cảnh của một chuyển mô hình, một mô hình
có thể đóng vai trò như là mô hình nguồn, nếu nó là đầu vào của bước chuyển.
Mô hình nguồn tuân thủ metamodel nguồn. Có thể có một hoặc nhiều hơn mô
hình nguồn là đầu vào của bước chuyển.
- Mô hình đích: trong ngữ cảnh của chuyển mô hình, một mô hình có thể
đóng vai trò như là mô hình đích, nếu nó là đầu ra của bước chuyển mô hình.
Mô hình đích phải tuân thủ metamodel đích. Một phép chuyển mô hình có thẻ
có một hoặc nhiều mô hình đích.
Hình 1.2 Mô hình mối quan hệ ở mức metamodel
8
1.2.2 Một số giải pháp sử dụng ngôn ngữ chuyển
Sau đây chúng tôi giới thiệu một số ngôn ngữ và công cụ chuyển được
quan tâm rộng rãi trong cộng đồng nghiên cứu cũng như trong công nghiệp.
Giải pháp sử dụng AGG (Algebraic Graph Transformation)[10]
AGG là ngôn ngữ chuyển mô hình theo kiểu đại số. AGG bao gồm tập
hợp các đối tượng Node và Edge. Các Node liên kết với nhau thông qua Edge.
AGG bao gồm các lớp trung gian giữa hai mô hình nguồn và đích. Mỗi lớp trung
gian này là một sự tương ứng giữa một đối tượng của mô hình nguồn và một đối
tượng của mô hình đích. Mỗi đối tượng có một định danh phục vụ cho chuyển
đổi tương ứng giữa mô hình nguồn và đích. Ngoài ra, đối tượng trong AGG có
thể có thuộc tính, kiểu thuộc tính, bao gồm ràng buộc về số lượng đối tượng có
thể liên kết với nhau.
AGG dựa trên cơ sở chặt chẽ về toán học, đồng thời có khả năng kiểm
tra ràng buộc OCL trên mô hình nguồn và mô hình đích. Vì vậy, thường cho
ra mô hình đích chính xác. Tuy nhiên, AGG gặp phải hạn chế lớn về vấn đề
đặc tả, ngôn ngữ biểu diễn mô hình. Vì vậy, rất khó để có thể áp dụng AGG
trong thực tế.
Giải pháp sử dụng ATL (ATLAS Transformation Language)[7]
ATL là một ngôn ngữ chuyển mô hình tới mô hình. ATL chỉ hỗ trợ
phép chuyển mô hình theo một hướng. Một chương trình chuyển ATL bao
gồm các luật chuyển mô tả cách tạo ra các phần tử của mô hình đích. Ngôn
ngữ được đặc tả như là metamodel và cú pháp cụ thể dưới dạng ký tự. ATL
được tích hợp trong môi trường phát triển Eclipse và có thể làm việc với các
mô hình dựa trên EMF. Mã nguồn ATL được biên dịch và sau đó được chạy
trên máy chuyển mô hình.
Query/View/Transformation (QVT)[3]
Query/View/Transformation (QVT) là một ngôn ngữ chuẩn cho chuyển
mô hình được tạo bởi OMG. QVT sử dụng ngôn ngữ ràng buộc đối tượng
(OCL), MOF và được căn chỉnh theo kiến trúc hướng mô hình MDA. QVT
đúng như theo tên nó cho phép chuyển mô hình (transformation), biểu diễn mô
hình (view) và truy vấn (query). Truy vấn mô hình và biểu diễn mô hình có thể
được xem như là loại đặc biệt của chuyển mô hình. QVT cũng được tích hợp
trong môi trường phát triển Eclipse.
QVT định nghĩa ba ngôn ngữ cho chuyển mô hình tới mô hình (M2M).
Tất cả chúng hoạt động tren mô hình tuân thủ MOF 2.0 metamodels.
9
- QVT Relational : là một ngôn ngữ chuyển mô hình sơ khai. Cả cú pháp
dạng ký tự và dạng đồ họa được định nghĩa cho QVT. Ngôn ngữ này hỗ trợ
chuyển mô hình hai chiều. Một phép chuyển được đặc tả như là một tập các
quan hệ giữa metamodel nguồn và metamodel đích. Phép chuyển này có thể
được sử dụng để kiểm tra tính hợp lệ của hai mô hình.
- QVT Core : là ngôn ngữ chuyển mô hình khai báo cấp thấp, là nền tảng
cho ngôn ngữ QVT Relational.
- QVT Operatinal : là ngôn ngữ chuyển đổi mệnh lệnh (imperative) được
thiết kế cho việc phép chuyển theo một hướng duy nhất.
1.3 Tổng kết chương
Như vậy trong chương này chúng tôi đã nêu rõ vai trò của phát triển
hướng mô hình, các khái niệm về mô hình như model, metamodel…, các chuẩn
tiếp cận hướng mô hình. Ngoài ra còn nghiên cứu tổng quan về chuyển mô hình
như: các thuật ngữ trong chuyển mô hình, một số giải pháp sử dụng ngôn ngữ
chuyển mô hình AGG, ATL, QVT. Trên cơ sở đó để rút ra những ưu điểm và
hạn chế của các phương pháp chuyển mô hình trên từ đó nghiên cứu ngôn ngữ
chuyển mô hình RTL trong phần tiếp theo.
10
Chương II
Ngôn ngữ chuyển mô hình RTL
Trong phần này chúng tôi sẽ nghiên cứu và cơ sở hình thức cho RTL như:
kiến thức cơ sở về văn phạm đồ thị ba, luật chuyển của văn phạm đồ thị ba ràng
buộc OCL từ đó để xác định cú pháp của RTL.
2.1. Cơ sở hình thức cho RTL
Chuyển đổi mô hình có thể được xem như là trung tâm của phương pháp
tiếp cận hướng mô hình, chẳng hạn như phương pháp tiếp cận mô hình trung
tâm phát triển phần mềm (giống như các phương pháp tiếp cận dựa trên UML)
và mô hình hướng công nghệ (MDE). Trong phương pháp tiếp cận, đồ thị là một
đại diện tất nhiên cho các mô hình từ khi hầu hết các ngôn ngữ mô hình được
hình thức hóa bởi một khung nhìn cú pháp trừu tượng xác định. Trong ngữ cảnh
chuyển đổi đồ thị này là một cách tiếp cận đầy triển vọng cho chuyển đổi mô
hình, đặc biệt là đối với những chuyển đổi phức tạp. Ưu điểm của phương pháp
tiếp cận này là các luật chuyển đổi đồ thị có thể tạo dễ dàngvà được đặc tả bằng
trực giác. Ngoài ra, sự phức tạp của luật chuyển đổi đồ thị cũng như hình thức
áp dụng có thể được ẩn đối người dùng.
Chuyển đồ thị là một cơ chế để xác định và áp dụng các biến đổi
giữa các đồ thị cái gọi là luật viết lại đồ thị ( luật chuyển đổi đồ thị ). Đồ thị viết
lại là một phần mở rộng của kỹ thuật viết lại trong ngữ pháp Chomsky. Một luật
đồ thị chuyển đổi bao gồm hai đồ thị tương ứng bên trái (LHS)và phía bên phải
(RHS) của luật này. Đối với mỗi luật tương ứng, các nút và cạnh trong LHS
được kết hợp với các nút và các cạnh nhất định trong đồ thị ban đầu. Sau đó, các
nút và cạnh phù hợp mà không tồn tại trong RHS được loại bỏ từ đồ thị ban đầu.
Các nút và các cạnh còn lại trong RHS được xem như là mẫu cho việc tạo ra
các nút mới và các cạnh trong đồ thị ban đầu.
Để tăng sự tích hợp của chuyển đổi đồ thị và phương pháp tiếp cận
hướng mô hình, đồ thị có thể được mở rộng để đồ thị thuộc tính đại diện các mô
hình . Ở đây, các mô hình được nhìn thấy như sơ đồ đối tượng (Object diagram
trong UML). Không giống như các phương pháp tiếp cận khác, ở đây nút và các
cạnh của đồ thị thuộc tính là kiểu khác đồ thị thuộc tính (hay gọi là một đồ thị
kiểu – type graph), trong các nút và các cạnh của đồ thị thuộc tính là kiểu của
tổng đại số A Trong cách này kiểu và ngữ nghĩa của đồ thị thuộc tính có thể
11
được xác định dựa trên OCL. Điều này cho phép chúng ta vượt qua khó khăn
với kiểu đồ thị thuộc tính như làm thế nào để giải thích các yếu tố trong tập hợp,
kế thừa trong các metamodel [3], [4], [8].
2.1.1 Kiến thức cơ sở về văn phạm đồ thị ba
Văn phạm đồ thị ba (TGGs) đã được đầu tiên chính thức đề xuất trong [9].
Mục đích của họ là để giảm bớt sự mô tả của biến đổi phức tạp trong
công nghệ phần mềm. TGGs cho phép chúng ta cấu trúc bản đồ văn phạm hai
đồ thị để đồ thị tạo ra văn phạm đồ thị có thể được liên quan với nhau. Việc lập
bản đồ giữa hai văn phạm đồ thị được thực hiện bằng cách chèn thêm một văn
phạm đồ thị để xác định sự tương ứng giữa các yếu tố của chúng. Trong cách
này, luật ba (triple rule) thu được là một thành phần của ba luật đối với văn
phạm đồ thị bên trái, bên phải, và kết nối. Sau đó, nguồn gốc bộ ba (triple) có
thể được xem như là một thành phần tương ứng của luật ba văn phạm đồ thị
trong TGGs. Tích hợp đồ thị thu được bằng bộ ba được gọi là đồ thị ba. Từ một
luật ba, chúng ta có thể lấy được những luật ba mới như tiến(forward),
ngược(backward) mô hình tích hợp, và mô hình phát triển. Thông qua các kịch
bản hoạt động, sự tương ứng giữa các mô hình nguồn và đích được thành lập.
Để thúc đẩy sự tích hợp của TGGs và phương pháp tiếp cận hướng mô
hình, chúng ta mở rộng đồ thị ba đến đồ thị thuộc tính ba. Không giống như
những kiểu đồ thị thuộc tính ba đang làm việc, phương pháp tiếp cận ở đây các
cạnh và nút của đồ thị thuộc tính ba là kiểu tổng đại số A. Mục tiêu của chúng ta
là đưa ra các diễn giải của OCL. Ngoài ra, cách tiếp cận dựa trên OCL cho phép
chúng ta hạn chế sự tương ứng một phần của luật ba bởi các điều kiện OCL.
Văn phạm đồ thị ba (TGG) là sự mở rộng của chuyển đổi đồ thị để cung
cấp khả năng mô tả các chuyển đổi phức tạp trong công nghệ phần mềm.
Phương pháp đặc tả này cho phép khai báo các chuyển hai chiều giữa các ngôn
ngữ đồ thị khác nhau.
Cụ thể, TGG cho phép chúng ta thiết lập tương ứng giữa hai đồ thị thuộc
văn phạm nguồn và đích bằng cách chèn thêm một văn phạm để liên hệ hai văn
phạm đó. Trong cách này, luật chuyển đồ thị ba thu được gồm 3 thành phần: luật
vế phải, luật vế trái, và luật kết nối. Đồ thị tích hợp thu được bằng dẫn xuất luật
đồ thị ba được gọi là đồ thị ba [3].
- Định nghĩa 1 (Đồ thị, ánh xạ đồ thị): Đồ thị G =(GV ,GE, sG, tG), GV
là các đỉnh, GE là các cạnh, các hàm sG, sT: GE → GV xác định định nguồn và
đích của một cạnh. Cho đồ thị G, H có ánh xạ đồ thị f= (fV, fE): G→H gồm có
12
hai ánh xạ fV: GV→GE và fE: GE→HE là tương ứng định và cạnh trong đó
fVo sG=sH o fE và fV o tG = tH o fE.
- Định nghĩa 2: Bộ (G, typeG) của đồ thị G=(V,E,s,t) cùng với đồ thị ánh
xạ typeG: G→ TG, ở đây TG được gọi là đồ thị kiểu và G là một thể hiện của
TG. Cho đồ thị G= (G, typeG) và H=(H, typeH), f là đồ thị ánh xạ giữa G và H
khi f: G→ H và typeH o f = typeG.
- Định nghĩa 3 (Đồ thị ba, ánh xạ đồ thị ba): Ba đồ thị SG, CG, TG lần
lượt là đồ thị nguồn, đồ thị đích, đồ thị kết nối, cùng với hai đồ thị ánh xạ sG:
CG → SG và tG : CG → TG tạo thành đồ thị ba G =(SG sG← CG →tG TG) . G
gọi là rỗng nếu, SG, CG và TG là đồ thị rỗng. Đồ thị ánh xạ ba m= (s,c,t): G->H
giữa hai đồ thị triple G = (SG sG← CG →tG TG) và H = (SH sH← CH →tH TH)
gồm có ba đồ thị ánh xạ s : SG → SH, c : CG → CH và t : TG → TH trong đó s
◦ sG = sH ◦ c và t ◦ tG = tH ◦ c
- Định nghĩa 4 (Văn phạm đồ thị ba): Luật chuyển ba tr = L →tr R bao
gồm đồ thị ba L và R và ánh xạ ba tr sao cho
Cho luật chuyển ba tr = (s, c, t) : L → R, đồ thị triple G và ánh xạ ba m =
(sm, cm, tm): L → G, gọi là khớp ba m, các bước chuyển đổi đồ thị triple G
⇒tr,m H từ G tới đồ thị triple H được cho bởi ba đổi tượng SH, CH và TH trong
loại đồ thị bao gồm ánh xạ sH : CH → SH và tH : CH → TH. Ánh xạ n = (sn,
cn, tn) được gọi là comatch.
Văn phạm đồ thị ba là cấu trúc TGG= (TG, S, TR), trong đó TG là đồ thị
kiểu, S là đồ thị khởi đầu và TR={tr1,tr2, tr3, ….., trn} là tập các luật chuyển ba.
Phương pháp chuyển mô hình dựa vào văn phạm đồ thị ba: Mô hình
trong tiếp cận của được xem là các đồ thị. Để biểu diễn mô hình nguồn, đích và
sự kết nối giữa chúng, chúng ta sử dụng văn phạm đồ thị ba. Từ một luật chuyển
13
đồ thị ba chúng ta có thể dẫn xuất thành các luật cho chuyển mô hình tiến
(nguồn sang đích), ngược (đích sang nguồn) và tích hợp.
- Định nghĩa 5 (Các luật dẫn xuất): Mỗi luật chuyển ba tr = L→R dẫn
xuất ra các luật chuyển tiến, ngược và tích hợp được xác định như sau:
Hình 2.1 Luật chuyển đồ thị ba và bước chuyển với luật chuyển tiến
- Định lý 1. (Chuyển với các luật dẫn xuất): Cho TGG = (TG, S, TR) là
văn phạm đồ thị ba và G =(Gs ← SC → ST) là đồ thị ba định kiểu bởi TG. Một
chuyển tiến từ đồ thị nguồn GS sang đồ thị đích GT khi các điều kiện sau thỏa
mãn:
với mi là các khớp ba,
trong đó (sni, cni, tni)
là các comatch của mi.
2.1.2 Luật chuyển TGGs ràng buộc OCL
Ý tưởng cơ bản cho việc tích hợp TGGs và OCL[3]
Phần này giải thích ý tưởng cơ bản phương pháp tiếp cận bằng một ví dụ
cụ thể. Chúng ta xem xét một tình huống điển hình trong phát triển phần mềm, ở
đây muốn nói đến mối quan hệ giữa mô hình khái niệm và một mô hình thiết
kế. Hình 2.2 cho thấy sự tương ứng giữa một liên kết đầu ở bên trái
trong một mô hình khái niệm với một thuộc tính và hoạt động bên phải
14
bên trong một mô hình thiết kế. Ví dụ, chúng ta nhận ra rằng sự liên kết đầu
customer được ánh xạ tới các thuộc tính customer và hành động GetCustomer()
của lớp Order
Hình 2.2 : Mô hình khái niệm bên trái tương ứng với mô hình thiết kế bên phải
Chúng ta muốn thể hiện yêu cầu đó, khi chúng ta thêm một mối liên hệ
giữa customer và Order trong mô hình khái niệm, các lớp tương ứng trong mô
hình thiết kế sẽ tự động được mở rộng với các thuộc tính mới và hàng động mới.
Vì vậy, sự tương ứng giữa liên kết đầy trong mô hình với các thuộc tính và hoạt
động trong mô hình thiết kế đã được hình thành một cách chính thức.
Hình 2.3: Chuyển đổi dưới dạng biểu đồ như một metamodel
Kịch bản này là chuyển đổi mô hình giữa các sơ đồ lớp UML và QVT
cũng như TGGs có thể tiếp cận các yêu cầu. Hình 2.3 cho thấy chuyển đổi dưới
dạng biểu đồ như một metamodel. Phía bên trái cho thấy các metamodel cho
các domain khái niệm, phía bên phải hiển thị các metamodel cho domain thiết
kế và phần giữa là kết nối tương ứng giữa chúng. Sau đó chúng ta sẽ thấy, sơ đồ
trong hình. 2.3 có thể được xem như là một biểu đồ thể hiện cho các metamodels
15
với các mũi tên đứt đoạn được biểu diễn như là các đối tượng thuộc các lớp từ
phần giữa. Một luật TGG cũng như các ánh xạ QVT có thể thực hiện một hành
động như có thêm một liên kết, cập nhật các thuộc tính và các hoạt động như
được giải thích dưới đây[3],[6].
a, TGGs và OCL cho ví dụ chuyển đổi
Hình 2.4 cho thấy luật chuyển ba addAssociation tích hợp OCL trong
QVT like style. LHS tương ứng với phần bảo vệ, và RHS tương ứng phần phía
dưới. LHS được bao gồm trong RHS. Ràng buộc OCL luật chuyển ba trong hình
2.4 được thể hiện tương ứng trên đầu và dưới của LHS và RHS. Các ràng buộc
OCL có thể không chỉ được sử dụng để hạn chế các giá trị thuộc tính trong mô
hình bảo vệ và dưới cùng, nhưng chúng cũng có thể thể hiện thêm những hạn
chế chung về đồ thị như một biểu đồ đối tượng
Luật TGG cổ điển không thể hiện ràng buộc OCL. Cách tiếp cận của ở
đây cho phép thêm ràng buộc OCL trong tất cả các bộ phận và do đó cho phép
một hình thức chung để hạn chế việc áp dụng luật cũng như mô tả kết quả làm
mịn của các ứng dụng luật, để mô tả cập nhật thuộc tính đối tượng. Biểu thức
OCL chung, có chuyển qua đầy đủ đồ thị mà luật được áp dụng. Đánh giá của
các biểu thức OCL được thực hiện trước khi đồ thị làm việc được sửa đổi bởi
luật. Các luật chuyển ba thể hiện trong hình. 2.4 làm như sau. Khi được áp dụng,
đối tượng Assoc được tạo ra để đại diện cho một liên kết trong miền khái niệm.
Kết quả viết lại đồ thị trong miền thiết kế, tức là, đối tượng attr và các đối tượng
Op đại diện cho các liên kết được tạo ra. Các tương ứng giữa các liên kết, các
thuộc tính mới và hoạt động được thiết lập bởi viết lại đồ thị trong miền tương
ứng. Các ràng buộc OCL cho phép chúng ta kiểm tra khả năng áp dụng của các
luật và cập nhật các giá trị thuộc tính trong miền thiết kế.
b,Yêu cầu để tích hợp OCL trong TGGs
Yêu cầu tích hợp OCL trong TGGs như sau:
• Hỗ trợ công thức OCL cho các biểu thức thuộc tính.
• Hỗ trợ OCL tiền (pre) và hậu(post) điều kiện các luật chuyển ba.
• Hỗ trợ ràng buộc về metamodel cho các phần tương ứng của các quy tắc
TGG. Giả sử rằng tất cả các ràng buộc phải được thực hiện từ luật TGG.
Ngoài ra, sự tích hợp của TGGs và OCL yêu cầu biến thể của TGGs. Một
nút trong miền tương ứng có thể được kết nối với nhiều nút trong miền còn lại.
Đây là một biến thể của TGGs vì trong bản gốc TGG ánh xạ chỉ là 1-1. Trong
16
phần mở rộng , luật TGG có thể được xóa, nhưng ngược lại nếu chúng đã định
nghĩa từ ban đầu thì luật TGG là không được xóa.
Hình 2.4: Luật chuyển ba addAssociation tích hợp OCL
c, Điều kiện OCL cho luật chuyển ba
Trong phần này, xác định áp dụng điều kiện OCL của luật chuyển ba.
Vì hạn chế trong các phần nguồn và đích, luật chuyển ba là xác định độc lập,
điều kiện áp dụng luật chuyển ba có thể được định nghĩa là một kết hợp điều
kiện trước và sau trong các phần nguồn, đích và kết nối tương ứng của luật
chuyển ba.
- Điều kiện OCL cho các phần nguồn và đích
Điều kiện OCL cho nguồn hoặc đích của luật chuyển ba là áp dụng điều
kiện OCL của một luật đơn giản tương ứng với phần này. Chúng ta có thể sử
dụng điều kiện OCL để hạn chế một số luật , vì một mặt, LHS và RHS của luật
là các đồ thị thuộc tính. Mặt khác, các nút của đồ thị thuộc tính phù hợp với một
mô hình đối tượng M trùng với các điều khoản OCL. Điều này cho phép chúng
ta sử dụng điều kiện OCL như một ràng buộc trên đồ thị thuộc tính.
Định nghĩa 6. (Ràng buộc OCL trên đồ thị thuộc tính)
Một ràng buộc OCL e trên đồ thị thuộc tính là một thuật ngữ logic OCL
nó có thể được đánh giá trong bất kỳ minh hoạ I(a,b) của đồ thị. Đồ thị (không)
17
- Xem thêm -