ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN HUY HOÀNG
THAO TÁC MÔ HÌNH
TRONG PHÁT TRIỂN HƢỚNG MÔ HÌNH
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội-2014
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN HUY HOÀNG
THAO TÁC MÔ HÌNH
TRONG PHÁT TRIỂN HƢỚNG MÔ HÌNH
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60480103
NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. ĐẶNG ĐỨC HẠNH
Hà Nội-2014
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, đƣợc thực hiện qua sự
hƣớng dẫn khoa học của TS. Đặng Đức Hạnh.
Các nội dung nghiên cứu và kết quả đạt đƣợc trình bày trong luận văn là hoàn toàn
trung thực, do tôi tổng hợp, đúc kết bổ sung và biên soạn theo sự hiểu biết của minh
thông qua nghiên cứu từ các tài liệu tham khảo: Sách, báo cáo khoa học và các tài liệu
đƣợc công bố trên website, thƣ viện điện tử của cá nhân - tổ chức nghiên cứu khoa học
trên khắp thế giới.
Hà Nội, tháng 10 năm 2014
Ngƣời thực hiện
Nguyễn Huy Hoàng
.
i
LỜI CẢM ƠN
Lời đầu tiên, Luận văn xin cảm ơn đề tài nghiên cứu khoa học cấp Đại học Quốc
gia Hà Nội, mã số QG.14.06 do TS. Đặng Đức Hạnh làm chủ đề tài. Luận văn hoàn
thành đƣợc hỗ trợ một phần bởi đề tài nghiên cứu nêu trên.
Tôi cũng xin gửi lời cảm ơn sâu sắc nhất tới TS. Đặng Đức Hạnh – Giảng viên 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, ngƣời đã định hƣớng nghiên cứu, tận tình hƣớng dẫn tôi
hoàn thành luận văn này. Với bản thân tôi, lĩnh vực nghiên cứu này còn là mới nhƣng
qua sự định hƣớng về cách tiếp cận, hƣớng dẫn phƣơng pháp nghiên cứu của Thầy tôi
đã thu đƣợc những kiến thức nhất định sau khi thực hiện luận văn này.
Em xin gửi lời cảm ơn sâu sắc tới các giảng viên Khoa Công nghệ Thông tin –
Trƣờng Đại học Công nghệ - ĐHQG Hà Nội, các giảng viên sau đại học khoá K18
trƣờng Đại học Công nghệ - ĐHQGHN, những ngƣời đã giảng dạy, truyền đạt cho tôi
những kiến thức quý báu trong suốt quá trình học tập tại trƣờng.
Cuối cùng, tối xin gửi lời cảm ơn tới tất cả các bạn bè khoá sau đại học K18 ngành CNTT, các đồng nghiệp, những ngƣời thân trong gia đình đã hết sức tạo điều
kiện, giúp đỡ tôi trong quá trình học tập và thực hiện luận văn này.
Mặc dù luận văn đã hoàn thành nhƣng do kiến thức của ngƣời thực hiện còn hạn
chế nên chắc chắn đề tài còn nhiều vấn đề hạn chế. Tôi chân thành mong nhận đƣợc
các ý kiến góp ý của tất cả mọi ngƣời để có định hƣớng trong các nghiên cứu tiếp theo.
Hà Nội, tháng 10 năm 2014
Ngƣời thực hiện
Nguyễn Huy Hoàng
ii
MỤC LỤC
LỜI CAM ĐOAN ................................................................................................................ i
LỜI CẢM ƠN .....................................................................................................................ii
MỤC LỤC ......................................................................................................................... iii
DANH MỤC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT ...................................................... vi
DANH MỤC HÌNH ẢNH VÀ ĐỒ THỊ ..........................................................................vii
DANH MỤC BẢNG BIỂU ................................................................................................ x
CHƢƠNG 1 MỞ ĐẦU................................................................................................... 1
1.1
Đặt vấn đề .........................................................................................................1
1.2
Phạm vi nghiên cứu .........................................................................................2
1.3
Cấu trúc luận văn.............................................................................................2
CHƢƠNG 2
TỔNG QUAN PHÁT TRIỂN HƢỚNG MÔ HÌNH............................. 3
2.1
Phƣơng pháp phát triển phần mềm truyền thống ........................................3
2.2
Giới thiệu phát triển hƣớng mô hình - MDD ................................................4
2.3
Các khái niệm trong phát triển hƣớng mô hình. ..........................................5
2.3.1
Model ...........................................................................................................5
2.3.2
Metamodel ...................................................................................................6
2.3.3
Metametamodel ...........................................................................................6
2.3.4
Chuyển đổi mô hình. ...................................................................................7
2.3.5
Mô hình nguồn ............................................................................................7
2.3.6
Mô hình đích ...............................................................................................7
2.3.7
Ngôn ngữ chuyển mô hình...........................................................................7
2.3.8
Luật chuyển mô hình ...................................................................................7
2.3.9
Ánh xạ ..........................................................................................................8
2.4
Kiến trúc hƣớng mô hình – MDA ..................................................................8
2.4.1
Giới thiệu kiến trúc hướng mô hình ............................................................8
2.4.2
Các kiểu mô hình trong MDA .....................................................................9
2.4.3
Những Lợi ích MDA mang lại ...................................................................11
2.5
Một số chuẩn liên quan MDD .......................................................................12
2.5.1
UML - Unified Modeling Language ..........................................................13
2.5.2
XMI - XML Metadata Interchange ............................................................14
2.5.3
MOF - Meta Object Facility ....................................................................14
2.5.4
OCL Object Contraint Language ..............................................................14
iii
CHƢƠNG 3
3.1
CHUYỂN ĐỔI MÔ HÌNH TRONG MDD ......................................... 16
Các hƣớng tiếp cận giải quyết vấn đề trong chuyển mô hình ...................16
3.1.1
Chuyển đổi mô hình sang mã nguồn .........................................................16
3.1.2
Chuyển đổi mô hình sang mô hình ............................................................17
3.2
Một số công cụ trong chuyển đổi mô hình ...................................................18
3.2.1
EMF - Eclipse Modeling Framework .......................................................18
3.2.2
Atlas Transformation Language - ATL .....................................................20
3.2.3
AndroMDA ................................................................................................20
3.2.4
ArcStyler ....................................................................................................20
3.2.5
OptimaJ .....................................................................................................20
3.2.6
QVT - Query/View/Transformation ..........................................................21
3.3
Một số phƣơng pháp sinh mã hƣớng mô hình ............................................21
3.3.1
Phương pháp Template + Filterling ........................................................22
3.3.2
Phương pháp Template + Metamodel .....................................................23
3.3.3
Phương pháp sinh mã Inline-Code ...........................................................24
3.4
Ngôn ngữ xây dựng Template trong các bộ sinh mã ..................................25
3.4.1
Sử dụng ngôn ngữ .....................................................................................25
3.4.2
Sử dụng ngôn ngữ chuyên biệt miền .........................................................26
3.4.3
Sử dụng ngôn ngữ chuyển đổi mô hình chuyên dụng ...............................26
CHƢƠNG 4
4.1
CÔNG CỤ CHUYỂN ĐỔI MÔ HÌNH ACCELEO M2T ................. 31
Tổng quan về Acceleo ....................................................................................31
4.1.1
Lịch sử phát triển của Acceleo ..................................................................31
4.1.2
Kiến trúc của Acceleo M2T .......................................................................31
4.1.3
Nguyên lý cơ bản của Acceleo M2T ..........................................................32
4.1.4
Template trong Acceleo M2T ....................................................................33
4.2
Công cụ chuyển đổi mô hình Acceleo – JavaEE Generator ......................37
4.2.1
Các mô hình sử dụng trong Accleo JavaEE Generator ............................37
4.2.2
Module sinh mã trong Acceleo-JavaEE Generator ..................................42
CHƢƠNG 5
5.1
CÀI ĐẶT VÀ THỰC NGHIỆM VỚI ACCELEO M2T.................... 47
Nội dung và phạm vi thực nghiệm................................................................47
5.1.1
Nội dung thực nghiệm ...............................................................................47
5.1.2
Phạm vi thực nghiệm .................................................................................49
5.2
Thiết kế các mô hình ......................................................................................49
5.2.1
Mô hình thực thể (Entity model) ...............................................................50
5.2.2
Mô hình trình diễn (Cinematic Model) .....................................................51
iv
5.3
Cập nhật bộ công cụ Acceleo JavaEE Generator .......................................70
5.3.1
Bổ sung template sinh mã SQL .................................................................70
5.3.2
Cập nhật các template sinh mã Hibernate ................................................73
5.4
Thực hiện sinh mã và đánh giá kết quả .......................................................74
5.4.1
Sinh mã ứng dụng Công báo điện tử .........................................................74
5.4.2
Đánh giá hiệu quả sinh mã của Acceleo JavaEE Generator ....................75
KẾT LUẬN ....................................................................................................................... 78
TÀI LIỆU THAM KHẢO................................................................................................ 79
PHỤ LỤC .......................................................................................................................... 81
v
DANH MỤC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT
API
ATL
CASE
CIM
CWM
DSL
DSM
EMF
EMOF
JET
JMI
JSP
M2M
M2T
MDA
MDD
MDE
MDR
MDRE
MDSD
MDSE
MOF
MVC
OCL
OMG
PIM
PM
PSM
QVT
RTM
UI
UML
XMI
XML
Application Programming Interface
ATLAS Transformation Language
Computer Aided Software Engineering
Computation Independent Model
Common Warehouse Metamodel
Domain-Specific Language
Domain-Specific Metamodel
Eclipse Modeling Framework
Essensial MOF
Java Emitter Templates
Java Metadata Interface
Java Server Pages
Model to Model
Model to Text
Model-Driven Architecture
Model-Driven Development
Model-Driven Engineering
Metadata Repository
Model Driven Reverse Engineering
Model-Driven Software Development
Model-Driven Software Engineering
Meta-Object Facility
Model-View-Controller
Object Constraint Language
Object Management Group
Platform-Independent Model.
Platform Model
Platform-Specific Model
Query/View/Transformation
Run Time Modeling
User Interface
Unified Modeling Language
XML Metadata Interchange
eXtensible Markup Language
vi
DANH MỤC HÌNH ẢNH VÀ ĐỒ THỊ
Hình 2.1 Mình hoạ phƣơng pháp phát triển phần mềm truyền thống .............................3
Hình 2.2 Áp dụng chuẩn MDA với mô hình thác nƣớc ..................................................5
Hình 2.3 Mô hình đƣợc viết bởi một ngôn ngữ và mô tả hệ thống [3] ...........................6
Hình 2.4 Biểu diễn khái niệm metamodel [3] .................................................................6
Hình 2.5 Mô tả chuyển đổi mô hình [3] ..........................................................................7
Hình 2.6 Mô phỏng kiến trúc – MDA ............................................................................8
Hình 2.7 Kiến trúc metadata MOF [3] ............................................................................9
Hình 2.8 Các mô hình trong MDA [1] .........................................................................10
Hình 2.9 Khả năng tƣơng tác sử dụng cầu nối trong MDA ..........................................12
Hình 2.10 Mối liên hệ giữa các chuẩn của OMG ..........................................................13
Hình 3.1 Khung Eclipse Modeling Framework [8] .......................................................19
Hình 3.2 Mô hình Ecore và nguồn của nó [6] ...............................................................19
Hình 3.3 Chuyển đổi mô hình sang mã theo MDA .......................................................22
Hình 3.4 Mô hình phƣơng pháp Template + Fillerling .................................................22
Hình 3.5 Mô hình phƣơng pháp Template + Metamodel ..............................................24
Hình 3.6 Mô hình phƣơng pháp sinh mã Inline-Code...................................................24
Hình 3.7 Sinh mã dựa trên Template.............................................................................25
Hình 3.8 JET Engine .....................................................................................................27
Hình 3.9 Quy trình chuyển đổi của JET ........................................................................28
Hình 3.10 Quy trình chuyển đổi trong oAW [5] ...........................................................29
Hình 4.1 Minh hoạ kiến trúc của Acceleo M2T [15] ....................................................32
Hình 4.2 Nguyên lý cơ bản của Acceleo M2T ..............................................................32
Hình 4.3 Các bƣớc sinh mã trong Acceleo M2T ...........................................................34
Hình 4.4 Ví dụ mô hình nguồn biểu diễn lớp NhanVien ..............................................34
Hình 4.5 Metamodel của biểu đồ lớp UML ..................................................................35
Hình 4.6 Ví dụ File generate.mtl sinh lớp Java .............................................................35
Hình 4.7 Ví dụ: Mã nguồn NhanVien.Java đƣợc sinh ra ..............................................36
Hình 4.8 Entity metamodel trong Entity Designer .......................................................38
Hình 4.9 Ví dụ về một mô hình thực thể xây dựng bởi Entity Designer ......................38
Hình 4.10 Cinematic Metamodel trong Cinematic Designer ........................................39
Hình 4.11 Ví dụ Flow Diagram trên Cinematic Designer .............................................40
vii
Hình 4.12 Ví dụ về Package Diagram trên Cinematic Designer ...................................40
Hình 4.13 Ví dụ về UI-Structure trong Cinematic Designer .........................................40
Hình 4.14 SOA Metamodel trong SOA Designer .........................................................41
Hình 4.15 Ví dụ biểu đồ SOA biểu diễn trong SOA Designer .....................................42
Hình 4.16 Ví dụ biểu đồ Component Contract trong SOA Designer ............................42
Hình 4.17 Kiến trúc MVC của Struts Framework.........................................................43
Hình 4.18 Kiến trúc của Hibernate Framework ............................................................45
Hình 5.1 Đặc tả biểu đồ Usecase – Quản lý công báo ..................................................47
Hình 5.2 Đặc tả biểu đồ Usecase – Quản lý văn bản ....................................................48
Hình 5.3 Đặc tả biểu đồ Usecase - Quản trị hệ thống ...................................................48
Hình 5.4 Đặc tả biểu đồ Usecase - Quản lý danh mục ..................................................48
Hình 5.5 Đặc tả biểu đồ Usecase – Khách viếng thăm hệ thống ..................................49
Hình 5.6 Mô hình tổng quan đặc tả ứng dụng Công báo điện tử ..................................50
Hình 5.7 Biểu đồ tổng quan các Block – Entity Model ................................................50
Hình 5.8 Biểu đồ thực thể của Bock Vanban – Entity Model .......................................51
Hình 5.9 Biểu đồ thực thể Bock Uer – Entity Model ....................................................51
Hình 5.10 Biểu đồ thực thể Block danhmuc - Entity Model .........................................51
Hình 5.11 Biểu đồ tổng quan các Package - Cinematic Model ....................................52
Hình 5.12 Biểu đồ tổng quan gói FrontEnd - Cinematic Model ...................................53
Hình 5.13 Biểu đồ Flow ViewCongBao trong gói FrontEnd – Cinematic Model ........54
Hình 5.14 Biểu đồ tổng quan gói BackEnd - Cinemantic Model..................................56
Hình 5.15 Biểu đồ Flow-Manage trong gói BackEnd – Cinematic Model ...................56
Hình 5.16 Biểu đồ Flow-ManageLinhVuc trong gói BackEnd – Cinematic Model.....58
Hình 5.17 Biểu đồ Flow-ManageLoaiVanBan trong gói BackEnd – Cinematic Model
.......................................................................................................................................59
Hình 5.18 Biểu đồ Flow-ManageCoQuanBH trong gói BackEnd – Cinematic Model 62
Hình 5.19 Biểu đồ Flow-ManageVanBan trong gói BackEnd – Cinematic Model ......62
Hình 5.20 Biểu đồ Flow-ManageCongBao trong gói BackEnd – Cinematic Model ....65
Hình 5.21 Biểu đồ tổng quan gói System – Cinematic Model ......................................66
Hình 5.22 Biểu đồ Flow-Login trong gói System – Cinematic Model .........................66
Hình 5.23 Biểu đồ Flow ManageAccount trong gói System – Cinematic Model ........67
Hình 5.24 Biểu đồ Flow-Monitor trong gói System – Cinematic Model .....................69
Hình 5.25 Tạo mới template sqlCreate.mtl ...................................................................70
viii
Hình 5.26 Nội dung Template sqlCreate.mtl – phần 1 .................................................71
Hình 5.27 Nội dung template sqlCreate.mtl phần -2 ....................................................71
Hình 5.28 Mã nguồn sinh ra bởi sqlCreate.mtl .............................................................73
Hình 5.29 Cập nhật daoHibernateDirect.mtl trong module sinh mã Hibernate ...........73
Hình 5.30 Cập nhật daoHibernateCfg.mtl trong module sinh mã Hibernate ................74
Hình 5.31 Cấu hình module StrutsArchitecture sinh mã từ mô hình Cinematic ..........74
Hình 5.32 Cấu hình module StrutsPresentation sinh mã từ mô hình Cinematic ...........75
Hình 5.33 Cấu hình module HibernateArchitectureEntity sinh mã từ Entity Model ....75
Hình 5.34 Thời gian và số lƣợng file sinh bởi Acceleo JavaEE Generator ..................76
ix
DANH MỤC BẢNG BIỂU
Bảng 5-1 Thành phần trong Flow-ViewCongBao – gói FrontEnd – Cinematic Model
.......................................................................................................................................55
Bảng 5-2 Danh sách Flow trong gói BackEnd – Cinemantic Model ............................56
Bảng 5-3 Thành phần trong Flow-Manage - gói BackEnd – Cinematic Model ...........57
Bảng 5-4 Thành phần trong Flow-ManageLinhVuc – gói BackEnd – Cinematic Model
.......................................................................................................................................58
Bảng 5-5 Thành phần trong Flow-ManageLoaiVanBan – gói BackEnd – Cinematic
Model. ............................................................................................................................60
Bảng 5-6 Thành phần trong Flow-ManageCoQuanBH – gói BackEnd –Cinematic
Model. ............................................................................................................................61
Bảng 5-7 Thành phần trong Flow-ManageVanBan – gói BackEnd – Cinematic Model.
.......................................................................................................................................63
Bảng 5-8 Thành phần trong Flow-ManageCongBao – gói BackEnd – Cinematic
Model. ............................................................................................................................64
Bảng 5-9 Thành phần trong Flow-ManageAccount – gói System – Cinematic Model 67
Bảng 5-10 Thành phần trong Flow-Mornitor – gói System – Cinematic Model ..........69
x
CHƢƠNG 1
1.1
MỞ ĐẦU
Đặt vấn đề
Trong bối cảnh của thời đại tri thức, để phát triển vững mạnh và tiến bộ nhanh
chóng trong thời đại này, đối với hầu hết các lĩnh vực đều yêu cầu có những ứng dụng
về công nghệ thông tin để quản lý và hỗ trợ cho nghiệp vụ của tổ chức. Nói đến công
nghệ thông tin, phần mềm đóng một vai trò cực kỳ quan trọng trong lĩnh vực công
nghệ thông tin. Trong giai đoạn hiện nay phát triển phần mềm đã trở thành ngành công
nghiệp và ở nƣớc ta đƣợc xác định là ngành công nghiệp mũi nhọn và đƣợc quan tâm
hàng đầu.
Tuy nhiên, một số trở ngại nhất định khiến trong phát triển phần mềm đó là việc
dung hoà giữa hiệu suất và chất lƣợng vẫn còn là các mục tiêu khó đạt [14]:
Khó nắm bắt chính xác yêu cầu của khách hàng: Các đơn vị phát triển phần
mềm thƣờng có hiểu biết hạn chế về lĩnh vực của khách hàng. Khách hàng
không có kiến thức về qui trình phát triển phần mềm. Thậm chí, khách hàng
còn không biết hoặc không đƣa ra yêu cầu rõ ràng. Điều này thƣờng dẫn đến
nhu cầu thay đổi liên tục trong quá trình phát triển phần mềm.
Đối phó thường trực với yêu cầu thay đổi. Thay đổi có thể diễn ra bất kỳ lúc
nào trong quá trình phát triển phần mềm. Rất nhiều loại thay đổi có thể xảy ra
nhƣ lỗi mã nguồn, thay đổi thiết kế, thay đổi nhân sự, thay đổi yêu cầu… Thay
đổi càng trễ chi phí khắc phục càng cao.
Môi trường phát triển không đồng nhất. Đối với những dự án phần mềm lớn
đội ngũ phát triển có thể bao gồm nhiều đội với nhiều nhân viên có những
kỹ năng lập trình, giao tiếp khác nhau đến từ nhiều nơi trên thế giới và sử dụng
những những nền tảng kỹ thuật khác biệt. Việc phối hợp các môi trƣờng này
thƣờng đòi hỏi chi phí cao và làm phức tạp hóa quá trình phát triển.
Mặt khác, trong phát triển thƣơng mại, các công ty phát triển phần mềm luôn đặt
mục tiêu nâng cao khả năng tự động hoá, tăng năng suất lao động, giảm thiểu chi phí
sản xuất, nâng cao chất lƣợng sản phẩm… bằng cách áp dụng các công nghệ mới vào
quy trình sản xuất.
Để giải quyết các vấn đề nêu trên, các nhà phát triển phần mềm cần áp dụng nhiều
phƣơng pháp luận vào thực tiễn trong đó phƣơng pháp phát triển phần mềm hƣớng mô
hình. Phƣơng pháp phát triển phần mềm hƣớng mô hình ra đời với ý tƣởng chính là tập
trung vào việc mô hình hoá phần mềm, từ đó thông qua việc chuyển đổi mô hình, các
mô hình nguồn chuyển đổi tự động sang các mô hình đích, mô hình đích có thể là các
mô hình đặc tả, mã nguồn, tài liệu... Chính vì khả năng ƣu việt của phƣơng pháp phát
1
triển hƣớng mô hình khiến tôi lựa chọn đề tài “Thao tác mô hình trong phát triển
hướng mô hình”.
1.2
Phạm vi nghiên cứu
Luận văn tập trung nghiên cứu và trình bày phƣơng pháp luận về kiến trúc hƣớng
mô hình nói chung, phát triển hƣớng mô hình nói riêng, các công cụ chuyển đổi mô
hình sang mô hình (M2M), mô hình sang văn bản (M2T). Cụ thể hơn luận văn đi sâu
vào nghiên cứu và ứng dụng công cụ chuyển đổi mô hình sang văn bản – Acceleo
M2T.
1.3
Cấu trúc luận văn
Luận văn đƣợc cấu trúc thành 5 chƣơng:
Chƣơng 1: Mở đầu – Đặt vấn đề và nêu ra định hƣớng nghiên cứu.
Chƣơng 2: Tổng quan phát triển hƣớng mô hình (MDD) – Trình bày những
kiến thức cơ bản về kiến trúc hƣớng mô hình (MDA) và một số chuẩn liên quan
MDD.
Chƣơng 3: Chuyển đổi mô hình trong phát triển hƣớng mô hình MDD- Trình
bày phƣơng pháp luận về chuyển đổi mô hình, các hƣớng tiếp cận trong chuyển
đổi mô hình, một số công cụ chuyển đổi mô hình đang đƣợc áp dụng. Nghiên
cứu phƣơng pháp chuyển đổi mô hình sang văn bản, chƣơng này trình bày một
số phƣơng pháp (pattern) sinh mã và ngôn ngữ xây dựng các khuôn mẫu
(template) trong bộ sinh mã.
Chƣơng 4: Công cụ chuyển đổi mô hình sang văn bản Acceleo– Chƣơng này
trình bày cơ sở lý thuyết của công cụ chuyển đổi mô hình sang văn bản
Acceleo. Nghiên cứu mã nguồn mở chuyển đổi mô hình sang mã nguồn
Acceleo JavaEE Generator (Struts Framework, Hibernate Framework, Spring
Framework).
Chƣơng 5: Cài đặt và thực nghiệm với Acceleo M2T – Hiệu chỉnh công cụ
chuyển đổi Acceleo JavaEE Generator nhằm đảm bảo việc chuyển đổi mô hình
sang mã nguồn Struts, Hibernate hoạt động trên nền tảng Web theo kiến trúc
MVC với cơ sở dữ liệu Microsoft SQL Server và đƣa ra đánh giá khả năng sinh
mã của bộ công cụ.
2
CHƢƠNG 2
TỔNG QUAN PHÁT TRIỂN HƢỚNG MÔ HÌNH
Chƣơng này của luận văn trình bày khái quát Phát triển phần mềm hƣớng mô hình
(Model Driven Software Development – MDSD). Để hiểu rõ hơn về phát triển hƣớng
mô hình, Luận văn đƣa ra các khái niệm, cơ sở lý thuyết về kiến trúc hƣớng mô hình,
các chuẩn liên quan đến phát triển hƣớng mô hình và sự so sánh với phƣơng pháp phát
triển phần mềm truyền thống.
2.1
Phương pháp phát triển phần mềm truyền thống
Ngày nay, việc phát triển phần mềm theo phƣơng pháp truyền thống vẫn đang đƣợc
áp dụng phổ biến. Với các hệ thống phần mềm ở quy mô nhỏ thì phƣơng pháp này vẫn
đáp ứng và khả dụng. Tuy nhiên khi nhu cầu tin học hoá hầu hết các nghiệp vụ trong
mọi lĩnh vực của một tổ chức thì quy mô của một hệ thống phần mềm là lớn và lúc đó
việc sử dụng phƣơng pháp truyền thông sẽ gặp phải các khó khăn.
Một ví dụ minh hoạ các pha phát triển phần mềm trên mô hình thác nƣớc nhƣ Hình
2.1.
Thu thập yêu cầu
Dạng tài liệu đặc tả: Văn bản
Phân tích yêu cầu
Dạng tài liệu: Văn bản, biểu đồ
Thiết kế
Dạng tài liệu: Văn bản, biểu đồ
Cài đặt mã nguồn
Mã chương trình
Kiểm thử
Tài liệu: Mã chương trình, văn
bản
Triển khai sử
dụng
Hình 2.1 Mình hoạ phƣơng pháp phát triển phần mềm truyền thống
Trong phƣơng pháp phát triển phần mềm truyền thống, giả sử những ngƣời phát
triển phần mềm đã tuân thủ rất chặt chẽ quy trình phát triển, các tài liệu ở các pha Thu
thập yêu cầu, phân tích yêu cầu, thiết kế hệ thống, cài đặt mã nguồn… đã thể hiện các
ràng buộc và sự liên quan cần có. Điều đó vẫn không tránh khỏi các vấn đề:
3
Khi có sự thay đổi về yêu cầu của ngƣời dùng, các pha sẽ đều phải thực hiện
lại từ đầu. Điều này dẫn đến mất nhiều thời gian và gây khó khăn cho ngƣời
phát triển trong việc quản lý.
Sản phẩm cuối cùng sẽ phụ thuộc vào một nền tảng công nghệ cụ thể, khi
nhu cầu công nghệ thay đổi sẽ dẫn đến phải xây dựng hệ thống lại từ đầu.
Trên đây là một số vấn đề mà phƣơng pháp phát triển phần mềm truyền thống đã
và đang gặp các thách thức.
2.2
Giới thiệu phát triển hướng mô hình - MDD
“Kỹ nghệ hƣớng mô hình (MDE) là phƣơng pháp xem xét ở mức đại điện thống
nhất, tất cả mọi thành phần đƣợc quy về mô hình”[10]. Trong lĩnh vực phát triển phần
mềm thì MDE đƣợc hiểu nhƣ phát triển hƣớng mô hình (MDD) hƣớng tới việc sử
dụng các mô hình nhƣ là tác nhân chính trong toàn bộ vòng đời phát triển của ứng
dụng, các ứng dụng đƣợc sinh mã từ các mô hình trừu tƣợng.
Cũng theo Jean Bezivin [10] trong lĩnh vực phát triển phần mềm thì MDE hay
MDD có ba hƣớng tiếp cận:
Phát triển phần mềm hƣớng mô hình – MDSD (Model Driven Software
Development) phục vụ cho việc sinh mã từ mô hình. Việc chuyển đổi mô
hình đƣợc thực hiện trong thời gian phát triển.
Tái kỹ nghệ hƣớng mô hình - MDRE (Model Driven Reverse
Engineering) áp dụng cho việc sinh các mô hình từ mã. Việc chuyển đổi
thƣờng đƣợc thực hiện trong lúc bảo trì.
Mô hình thời gian thực thi - RTM (Run Time Modeling) thực hiện việc
chuyển đổi mô hình trong khi thực thi ứng dụng, không phải là trong lúc
phát triển hay khi bảo trì. Các ứng dụng phổ biến ở đây nhằm đạt đƣợc khả
năng tƣơng tác giữa các hệ thống không đồng nhất.
MDD ra đời với các mục tiêu giải quyết một số vấn đề:
Mã nguồn đƣợc tự động sinh ra từ việc chuyển đổi mô hình, tính tự động
hoá càng cao đồng nghĩa với việc thời gian và hiệu suất đƣợc cải tiến.
Chất lƣợng phần mềm đƣợc nâng cao khi các luật chuyển đổi đƣợc định
nghĩa và thẩm định rõ ràng.
Không bị phụ thuộc vào việc thay đổi nền tảng (platform), khi cần thay đổi
nền mới chỉ phụ thuộc vào việc điều chỉnh các luật chuyển đổi và sự thay
đổi sẽ tự động đƣợc áp dụng.
Khả năng tái sử dụng cũng đƣợc nâng cao, các mô hình, luật chuyển đổi
hoàn toàn có thể sử dụng cho những ứng dụng khác nhau do có sự tách biệt
giữa các thành phần liên quan.
4
Thu thập yêu cầu
Dạng tài liệu đặc tả: Văn bản
CIM
Phân tích yêu cầu
Platform Independent Model
PIM
Thiết kế
Platform Specific Model
PSM
Cài đặt mã nguồn
Mã chương trình
Kiểm thử
Tài liệu: Mã chương trình, văn
bản
Triển khai sử
dụng
Hình 2.2 Áp dụng chuẩn MDA với mô hình thác nƣớc
So sánh với phƣơng pháp phát triển phần mềm truyền thống (xem mục 2.1). Sử
dụng phƣơng pháp phát triển hƣớng mô hình, áp dụng chuẩn MDA (xem mục 2.4) vào
quy trình phát triển phần mềm theo mô hình thác nƣớc (xem Hình 2.2). Tại mỗi pha
phát triển, các tài liệu đƣợc đặc tả bởi các mô hình hình thức do vậy việc chuyển đổi tự
động giữa các mô hình là khả dụng. Thông qua các công cụ chuyển đổi mô hình, từ
mô hình độc lập nền - PSM có thể chuyển đổi sang các mô hình phụ thuộc nền- PSM;
từ mô hình phụ thuộc nền – PSM có thể đƣợc chuyển đổi sang dạng mã nguồn, tài
liệu… Vì vậy các vấn đề gặp khó khăn với phƣơng pháp truyền thống đã có thể đƣợc
tháo gỡ.
2.3
Các khái niệm trong phát triển hướng mô hình.
2.3.1
Model
Mô hình là một phƣơng pháp biểu diễn hệ thống một cách đơn giản nhằm giúp hiểu
hơn về hệ thống. Mô hình đƣợc biểu diễn bằng các ký hiệu đồ hoạ và thƣờng đƣợc
diễn đạt bởi ngôn ngữ đặc tả miền cụ thể hoặc dƣới dạng ngôn ngữ hình thức. Chúng
ta có thể định nghĩa mô hình nhƣ sau:
“Mô hình là một mô tả một phần của hệ thống hoặc toàn bộ hệ thống được viết bởi
ngôn ngữ hình thức” [3]. “Ngôn ngữ hình thức là ngôn ngữ với mẫu được xác định rõ
ràng và ngữ nghĩa phù hợp với việc biên dịch tự động bởi máy tính”[3].
5
Hình 2.3 Mô hình đƣợc viết bởi một ngôn ngữ và mô tả hệ thống [3]
2.3.2
Metamodel
Metamodel [3] cũng là một mô hình, nó thể hiện ở mức trừu tƣợng hơn và sử dụng
để biểu diễn mô hình (model). Ngôn ngữ để biểu diễn metamodel đƣợc gọi là metalanguage.
Hình 2.4 Biểu diễn khái niệm metamodel [3]
Nói cách khác, metamodel của mô hình A mô tả cấu trúc hợp lệ của mô hình A.
Trong chuyển đổi mô hình thì metamodel là điều kiện tiên quyết.
2.3.3
Metametamodel
Một Metametamodel của mô hình A là metamodel đƣợc sử dụng để mô tả
metamodel của model A. Nó có thể đƣợc hiểu nhƣ ngữ pháp của một ngôn ngữ đƣợc
sử dụng để mô tả ngữ pháp của ngôn ngữ A.
6
2.3.4
Chuyển đổi mô hình.
Trong lĩnh vực phát triển hƣớng mô hình thì chuyển đổi mô hình là trọng tâm, nó
đƣợc xem nhƣ một hộp đen cung cấp các cơ chế đƣợc thiết lập nhằm cho việc tự động
tạo ra và cập nhật các mô hình đích dựa trên thông tin đầu vào đƣợc biểu diễn bởi mô
hình nguồn. [3] Định nghĩa về chuyển đổi mô hình: “Chuyển đổi mô hình là tập hợp
các luật chuyển đổi cùng mô tả cách một mô hình tại ngôn ngữ nguồn có thể được
chuyển đổi thành một mô hình ở ngôn ngữ đích”
Hình 2.5 Mô tả chuyển đổi mô hình [3]
2.3.5
Mô hình nguồn
Trong ngữ cảnh của chuyển đổi mô hình, nếu một mô hình đóng vai trò là đầu vào
của bƣớc chuyển đƣợc gọi là mô hình nguồn. Mô hình nguồn phải tuân thủ metamodel
nguồn. Có thể có một hoặc nhiều mô hình nguồn là đầu vào của bƣớc chuyển.
2.3.6
Mô hình đích
Trong ngữ cảnh của chuyển đổi mô hình, nếu một mô hình đóng vai trò là đầu ra
của bƣớc chuyển đƣợc gọi là mô hình đích. Mô hình đích phải tuân thủ metamodel
đích. Có thể có một hoặc nhiều mô hình đích đƣợc sinh ra sau một bƣớc chuyển. Thuật
ngữ mô hình đích thƣờng đƣợc sử dụng trong chuyển đổi mô hình sang mô hình
(M2M – Model To Model).
2.3.7
Ngôn ngữ chuyển mô hình
Một 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.
2.3.8
Luật chuyển mô hình
Theo [3] định nghĩa “Một luật chuyển đổi mô hình là sự mô tả cách một hoặc nhiều
cấu trúc trong ngôn ngữ nguồn có thể được chuyển đổi thành một hoặc nhiều cấu trúc
trong ngôn ngữ đích”. Một luật chuyển đổi mô hình là thực thể nhỏ nhất trong chuyển
mô hình. Nó mô tả cách một phần của mô hình nguồn có thể đƣợc chuyển thành một
phần của 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ột
phần xuất hiện của mẫu nguồn trong mô hình nguồn sẽ có ánh xạ tƣơng ứng với một
phần của mẫu đích trong mô hình đích.
7
2.3.9
Ánh xạ
Ánh xạ là các đặc tả cho một cơ chế chuyển đổi các phần tử của một mô hình đƣợc
xây dựng tuân theo một metamodel cụ thể này sang các phần tử của một mô hình đƣợc
xây dựng tuân theo một metamodel khác.[16].
Các nhãn trong chuyển đổi mô hình là khái niệm biểu diễn một khái niệm trong mô
hình đích và đƣợc áp dụng cho một phần tử của mô hình nguồn để chỉ ra phần tử đó
đƣợc chuyển đổi nhƣ thế nào. [16].
2.4
Kiến trúc hướng mô hình – MDA
2.4.1
Giới thiệu kiến trúc hướng mô hình
Kiến trúc hƣớng mô hình - MDA (Model Driven Architecture ) [20] là một phƣơng
pháp chuyên biệt hoá trong phát triển hƣớng mô hình đƣợc đề xuất bởi tổ chức OMG
(Object Management Group) từ năm 2001. MDA đƣợc đề xuất bắt nguồn từ nhu cầu
làm rõ và đặc tả các tác vụ của hệ thống, xác định rõ ràng thành phần nào phụ thuộc
vào nền tảng, thành phần nào không phụ thuộc vào nền tảng và đồng thời phân nhỏ các
mức độ phụ thuộc vào nền tảng. Hƣớng tiếp cận của MDA trong phát triển phần mềm
là sự chuyển đổi các mô hình.
Hình 2.6 Mô phỏng kiến trúc – MDA
Trong Hình 2.6 mô tả mô hình MDA bao gôm: Một bộ công cụ chuyển đổi lấy mô
hình nguồn là một PIM (xem mục 2.4.2.2) chuyển đổi thành mô hình đích là một PSM
(xem mục 2.4.2.3). Ở một ngữ cảnh khác với một bộ công cụ chuyển đổi có thể chọn
mô hình nguồn là PSM (xem mục 2.4.2.3) và chuyển đổi thành mô hình đích dạng văn
bản (mã nguồn, tài liệu…).
MDA định hƣớng cho các ứng dụng đạt đƣợc các điểm sau:
Thể hiện sự tách biệt rõ ràng giữa hệ thống và nền tảng.
Đặc tả mô hình hệ thống trên nền tảng độc lập.
Xác định một nền tảng chuyên biệt mà hệ thống phù hợp.
8
- Xem thêm -