Ngôn ngữ mô hình hóa cho các yêu cầu bảo mật

  • Số trang: 69 |
  • Loại file: PDF |
  • Lượt xem: 30 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ CHU THỊ MINH HUỆ NGÔN NGỮ MÔ HÌNH HÓA CHO CÁC YÊU CẦU BẢO MẬT LUẬN VĂN THẠC SĨ Hà Nội – 2011 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ CHU THỊ MINH HUỆ NGÔN NGỮ MÔ HÌNH HÓA CHO CÁC YÊU CẦU BẢO MẬT Ngành Chuyên ngành Mã số : Công nghệ thông tin : Công nghệ phần mềm : 60 48 10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. ĐẶNG ĐỨC HẠNH Hà Nội – 2011 MỤC LỤC LỜI CẢM ƠN .................................................................................................................. 1 LỜI CAM ĐOAN.......................................................................................................... 2 MỤC LỤC ....................................................................................................................... 3 DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT ................................................................... 5 DANH MỤC BẢNG ....................................................................................................... 6 DANH MỤC HÌNH VẼ .................................................................................................. 7 MỞ ĐẦU ......................................................................................................................... 9 CHƢƠNG 1. TỔNG QUAN VỀ MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN ...... 11 1.1. Mô hình hóa mục đích chung và mô hình hóa chuyên biệt miền .................. 11 1.1.1. Mô hình hóa ....................................................................................................... 11 1.1.2. Mô hình hóa mục đích chung ........................................................................... 12 1.1.2. Mô hình hóa chuyên biệt miền ......................................................................... 13 1.2. Ngôn ngữ mô hình hóa chuyên biệt miền ........................................................ 16 1.2.1. Biểu diễn mô hình .............................................................................................. 17 1.2.2. Ràng buộc mô hình. ........................................................................................... 17 1.3. Phƣơng pháp xây dựng ngôn ngữ mô hình hóa chuyên biệt miền (DSML) ....... 18 1.4. Một số công cụ hỗ trợ xây dựng DSML ............................................................... 20 1.4.1. Giới thiệu về các công cụ cho DSML ................................................................. 20 1.4.2. Eclipse frameWork .............................................................................................. 21 1.4.2.1. Các dự án cho mô hình hóa của Eclipse ............................................................ 21 1.4.2.2. Phát triển dự án DSML với Eclipse .................................................................. 23 CHƢƠNG 2. MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN CHO MIỀN BẢO MẬT ... 30 2.1. Miền bảo mật ....................................................................................................... 30 3 2.1.1. Giới thiệu về miền bảo mật ................................................................................ 30 2.1.2. Điều khiển truy cập dựa trên vai trò (RBAC) ................................................... 31 2.1.2.1. Core RBAC ....................................................................................................... 32 2.1.2.2. Hirerarchical RBAC ......................................................................................... 33 2.1.2.3. Constrained RBAC ........................................................................................... 34 2.2. Metamodel cho bảo mật theo mô hình RBAC ................................................ 36 2.3. Xác định các luật ràng buộc trên metamodel. ............................................... 38 CHƢƠNG 3. XÂY DỰNG NGÔN NGỮ CHUYÊN BIỆT MIỀN RBAC TRÊN ELIPSE ...... 40 3.1. Cú pháp trừu tƣợng ........................................................................................... 40 3.2. Cú pháp cụ thể ................................................................................................... 45 3.3. Thêm các ràng buộc viết bằng OCL ................................................................ 60 CHƢƠNG 4 VẬN DỤNG DSML CHO RBAC ...................................................... 62 4.1. Giới thiệu về phân quyền trong diễn đàn. ..................................................... 62 4.2. Mô hình hóa các yêu cầu bảo mật của diễn đàn với Tool DSML RBAC .... 65 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ................................................................ 68 TÀI LIỆU THAM KHẢO ............................................................................................ 69 4 DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT Từ viết tắt Tiếng Anh Tiếng Việt ATL ATLAS Transformation Language Ngôn ngữ chuyển ATLAS DSD Dynamic Separation of Duty Tách nhiệm vụ động DSL Domain specific language Ngôn ngữ chuyên biệt miền DSM Domain Specific modeling Mô hình hóa chuyên biệt miền DSML Domain specific modeling language Ngôn ngữ mô hình hóa chuyên biệt miền EMF Eclipse Modeling Framework GMF Graphical Modeling Framework Khung mô hình hóa đồ họa M2M Model-to-Model Transformation Chuyển mô hình sang mô hình M2T Model-to-Text Transformation Chuyển mô hình sang text MDD Model Driven Development Phát triển hƣớng mô hình OCL Object Constraint Language Ngôn ngữ ràng buộc đối tƣợng OMG Object Management Group QTV Query/View/Transformation Truy vấn/ Khung nhìn/ Chuyển QVTO QVT Operational Mapping Language Ngôn ngữ ánh xạ hoạt động QVT QVTR QVT Relations Các quan hệ QVT RBAC Role-Based Access Control Kiểm soát truy cập trên vai trò RH Role Hierarchy Cây kế thừa vai trò SoD Separation of Duty Tách nhiệm vụ SSD Static Separation of Duty Tách nhiệm vụ tĩnh 5 Khung mô hình hóa Eclipse Tổ chức quản lý đối tƣợng dựa DANH MỤC BẢNG Bảng 1.1. Các công cụ cho xây dựng DSML [2] .................................................... 20 Bảng 3.1. Các ký hiệu đƣợc xây dựng trong dự án GMF cho DSML RBAC .......... 46 6 DANH MỤC HÌNH VẼ Hình 1.1. Ví dụ về mô hình [6] ....................................................................................... 12 Hình 1.2. Mô hình sử dụng UML ................................................................................... 13 Hình 1.3. Mô hình kiến trúc phần cứng trong automobiles bằng DSML EAST-ADL ...... 14 Hình 1.4. Mô hình hóa chuyên biệt miền với mô hình hóa mục đích chung [2] ............. 16 Hình 1.5. Ví dụ về metamodel ........................................................................................ 17 Hình 1.6. Ví dụ về ràng buộc với OCL ........................................................................... 18 Hình 1.7. Dự án mô hình hóa Eclipse [5] ....................................................................... 21 Hình 1.8. DSL Toolkit artifacts—abstract [5] ................................................................ 24 Hình 1.9. Luồng công việc phát triển DSL Toolkit[2] .................................................... 25 Hình 1.10. Các thành phần đƣợc xây dựng trong dự án EMF [12] ................................ 26 Hình 1.11. MetaModel đại diện cho tập tối thiểu các thuật ngữ với ecore [12] ............ 27 Hình 1.12. Luồng công việc phát triển dự án GMF[2] ................................................. 28 Hình 1.13. Cửa sổ tiện ích GMF Dashboard .................................................................. 29 Hình 2.1. Kiểm soát truy cập truyền thống và RBAC [12] .............................................. 31 Hình 2.2. Tổ chức các đối tƣợng trong mô hình RBAC [12] .......................................... 32 Hình 2.3. Mô hình Core RBAC [6] ................................................................................. 33 Hình 2.4. Mô hình Hierarchical RBAC [4] .................................................................... 34 Hình 2.5. Mô hình SSD trong Hierarchy RBAC [6] ...................................................... 35 Hình 2.6: Mô hình quan hệ DSD [6] ............................................................................. 36 Hình 2.7: MetaModel cho RBAC ................................................................................... 36 Hình 3.1. Mô hình RBAC.ecorediag ............................................................................... 41 Hình 3.2. Mô hình RBAC.ecore ..................................................................................... 42 Hình 3.3. Mô hình RBAC.genmodel ................................................................................ 43 Hình 3.4. Mã nguồn của mô hình tự động sinh từ mô hình RBAC.genmodel ................. 44 7 Hình 3.5. RBAC.edit và RBAC.Editor đƣợc sinh ra từ genmodel ................................... 45 Hình 3.6.Mô hình BAC.gmfgraph ................................................................................... 47 Hình 3.7. Xây dựng PolyLine cho link RoleHasPermission ........................................... 48 Hình 3.8. Xây dựng Figure cho Role và Link RoleHasPermission ................................. 49 Hình 3.9. Xây dựng node Roles ...................................................................................... 50 Hình 3.10 Xây dựng Connection RoleHasPermission .................................................... 50 Hình 3.11. Diagram Label RolesName .......................................................................... 51 Hình 3.11. Compartment của Node Action ..................................................................... 51 Hình 3.12. Mô hình RBAC.gmftool đã xây dựng ............................................................ 52 Hình 3.13. Các Node, link Mapping trong RBAC1.gmfmap ........................................ 53 Hình 3.14. Ánh xạ node Role ......................................................................................... 54 Hình 3.15. Ánh xạ Node Action và Permission ............................................................... 55 Hình 3.16. Ánh xạ Link Role Has Permission................................................................. 56 Hình 3.17. Generate diagram code của dự án GMF RBAC .......................................... 57 Hình 3.18. Cửa sổ Extensions của Plugin.xml trong dự án GMF RBACG ..................... 58 Hình 3.19. DSML cho RBAC ......................................................................................... 59 Hình 3.20. Các luật đƣợc thêm vào mô hình RBAC1.gmfmap ....................................... 60 Hình 3.21. Thông báo lỗi khi mô hình hóa sai (Vi phạm các luật) ................................. 61 Hình 4.1. Nhóm ngƣời dùng trong diễn đàn ................................................................... 62 Hình 4.2. Mô hình hóa yêu cầu bảo mật của hệ thống sử dụng tool DSML RBAC ........ 65 Bảng 4.1. Gán quyền cho các vai trò trong mô hình của diễn đàn trong hình 4.1 .......... 67 8 MỞ ĐẦU Các hệ thống phần mềm hiện đại ngày nay càng ngày càng trở lên phức tạp. Khi phát triển đòi hỏi giảm thời gian, giảm chi phí nhƣng lại phải tăng chất lƣợng phần mềm để tăng tính cạnh tranh và đáp ứng các nhu cầu sử dụng phần mềm trên tất cả các lĩnh vực khác nhau của đời sống con ngƣời. Để giải quyết vấn đề nghịch lý trong phát triển phần mềm ngƣời ta đề xuất giải pháp phát triển các framework phục vụ cho phát triển phần mềm. Tuy nhiên những giải pháp đó cũng không đủ để đáp ứng các nhu cầu của ngành công nghiệp phần mềm và việc phát triển phần mềm vẫn thủ công dựa vào con ngƣời là chủ yếu. Vì vậy việc nghiên cứu và đƣa ra một giải pháp tăng tính tự động trong phát triển phần mềm đã đƣợc đề xuất và phát triển. Giải pháp phát triển phần mềm hƣớng mô hình (MDD) đƣợc xem là một giải pháp phù hợp cho vấn đề gặp phải trong phát triển phần mềm. Phát triển hƣớng mô hình là đặt mô hình hóa là vấn đề trọng tâm trong phát triển phần mềm, từ các mô hình sẽ đƣợc dịch chuyển sang mã trƣơng trình triển khai nhờ bộ sinh mã nguồn (code generator). P hát triển hƣớng mô hình đặc biệt phù hợp với phát triển các sản phần mềm cùng dòng (software product line). Một trong các hƣớng tiếp cận của phát triển hƣớng mô hình là mô hình hóa chuyên biệt miền (DSM), trong đó việc xây dựng ngôn ngữ mô hình hóa chuyên biệt miền (DSML) thƣờng đƣợc triển khai dƣới dạng một dự án nhỏ khởi đầu trong một dự án lớn. K ết quả của dự án mô hình hóa chuyên biệt miền là một ngôn ngữ mô hình hóa chuyên biệt miền. Ngôn ngữ cho phép mô hình hóa các vấn đề trong dự án, kết quả thu đƣợc là sự dịch chuyển các mô hình của dự án sang code triển khai, điều này làm giảm thời gian và chi phí phát triển phần mềm. Bảo mật đóng một vai trò trung tâm trong phát triển và hoạt động của các hệ thống phần mềm phân tán với quy mô lớn, nhƣ thƣơng mại điện tử. Bảo mật là một khía cạnh ngang trong phát triển phần mềm. Nó là vấn đề gặp phải đối với hầu hết các dự án phần mềm tuy nhiên vấn đề thiết kế bảo mật trong thiết kế tổng thể thƣờng bị bỏ quên hoặc chỉ tích hợp trong gia đoạn quản trị hệ thống. Hạn chế này là do thiếu công cụ hỗ trợ kỹ nghệ bảo mật, tích hợp bảo mật thủ công rất khó và thƣờng phát sinh lỗi do ngƣời phát triển hệ thống thiếu kinh nghiệm vì họ không phải là chuyên gia về bảo mật. Vì vậy 9 việc tích hợp bảo mật trong dự án phần mềm nếu thực hiện đƣợc một cách trực quan và tự động, sẽ làm giảm chi phí và tăng chất lƣợng của phần mềm [1] Với những ƣu điểm của mô hình hóa chuyên biệt miền và lợi ích mang lại tícần thiết phải phát triển một ngôn ngữ cho phép mô hình hóa chính xác các yêu cầu bảo mật. Xuất phát từ những lý do trên chúng tôi đã lựa chọn đề tài ―Ngôn ngữ mô hình hóa cho các yêu cầu bảo mật‖. Mục tiêu của đề tài là tìm hiểu phƣơng pháp phát triển phần mềm hƣớng mô hình với hƣớng tiếp cận là mô hình hóa chuyên biệt miền. Trong đề tài này chúng tôi tập trung tìm hiểu nền tảng, phƣơng pháp, công cụ phát triển ngôn ngữ mô hình hóa chuyên biệt miền và cài đặt thử nghiệm cho miền bảo mật với tool Eclipse. Việc xây dựng bộ sinh code tự động cũng nhƣ tích hợp ngôn ngữ mô hình hóa chuyên biệt miền với các ngôn ngữ mô hình hóa khác nhƣ UML hoặc ngôn ngữ mô hình hóa hóa chuyên biệt miền với miền khác, sẽ không đƣợc xem xét trong đề tài này. Luận văn đƣợc cấu trúc thành 4 chƣơng nhƣ sau: o Chương 1. Tổng quan về mô hình hóa chuyên biệt miền Chƣơng này giới thiệu chung về cơ sở lý thuyết của phƣơng pháp phát triển phần mềm hƣớng mô hình với hƣớng tiếp cận là mô hình hóa chuyên biệt miền, phân tích lợi ích của DSML, cũng nhƣ các công cụ hỗ trợ cho mô hình hóa chuyên biệt miền. o Chương 2. Mô hình hóa chuyên biệt miền cho miền bảo mật Chƣơng này trình bày về miền bảo mật, xác định metamodel, các luật ràng buộc cho miền bảo mật theo mô hình điều khiển truy cập dựa trên vai trò của ngƣời dùng (RBAC). o Chƣơng 3. Xây dựng ngôn ngữ chuyên biệt miền RBAC trên Eclipse Chƣơng này trình bày về cài đặt và kết quả thử nghiệm DSML cho miền bảo mật trên phần mềm mã nguồn mở Eclipse. o Chƣơng 4. Vận dụng DSML cho RBAC. Mục tiêu chính của chƣơng này là để kiểm nghiệm kết quả thử nghiệm trong chƣơng 3, cho một bài toán thực tế. o Chƣơng 5. Kết luận và hƣớng phát triển. 10 CHƢƠNG 1. TỔNG QUAN VỀ MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN Trong chương này chúng tôi sẽ tập trung vào trình bày về mô hình hóa và ngôn ngữ mô hình hóa chuyên biệt miền, phương pháp xây dựng và công cụ hỗ trợ cho phát triển ngôn ngữ mô hình hóa chuyên biệt miền. 1.1. Mô hình hóa mục đích chung và mô hình hóa chuyên biệt miền Trong quy trình phát triển phần mềm, trong một số giai đoạn có sử dụng các ngôn ngữ mô hình hóa mục đích chung, để xây dựng các mô hình, ví dụ UML đ ƣ ợ c s ử d ụ n g để xây dựng các biểu đồ trong pha phân tích và thiết kế hệ thống. Các mô hình đƣợc mô hình hóa bởi UML thƣờng sử dụng với ý nghĩa làm tài liệu cho dự án là chính, nếu có phát sinh mã nguồn thì chỉ dừng lại ở mức mã khung, vì vậy nếu muốn sinh mã nguồn tự động hoàn toàn thì cần sử dụng một ngôn ngữ mô hình hóa chuyên biệt miền có phạm vi đủ hẹp để hiểu đƣợc miền từ đó sinh mã nguồn từ miền [2]. Sau đây, chúng tôi sẽ trình bày về mô hình hóa mục đích chung và mô hình hóa chuyên biệt miền. 1.1.1. Mô hình hóa Theo định nghĩa của James Rumbaugh [3] thì mô hình là sự nắm bắt các thành phần chính trong hệ thống. Và mô hình trực quan là các mô hình mà sử dụng các ký hiệu đồ họa trong mô hình. Khi đó mô hình sẽ cho phép chúng ta hiểu rõ hơn về hệ thống mà chúng ta cần phát triển. Mô hình hóa là một quá trình chuyển thế giới thực thực thành các mô hình bằng cách bỏ các chi tiết không quan tâm và giữ lại các chi tiết quan tâm biểu diễn bằng các hình học, khi đó các mô hình sẽ làm cho chúng ta hiểu thế giới thực một cách dễ dàng hơn. Dƣới đây là một ví dụ về mô hình. 11 Hình 1.1. Ví dụ về mô hình [6] 1.1.2. Mô hình hóa mục đích chung Trong phát triển phần mềm hƣớng mã nguồn (code - centric), vòng đời phát triển phần mềm đƣợc chia thành các pha: Xác định yêu cầu, phân tích và thiết kế, lập trình, kiểm thử với cách tiếp cận này trong pha phân tích và thiết kế có sử dụng ngôn ngữ mô hình hóa mục đích chung (Ví dụ nhƣ UML) để mô hình hóa phần mềm. Nhƣng không phải lúc nào phần mềm cũng đƣợc triển khai nhƣ mô hình ban đầu, nếu có sử dụng mô hình để tự động sinh ra code thì code đƣợc sinh ra thƣờng chỉ là mã khung thô và lập trình viên cần hoàn thiện tiếp. Các mô hình ở đây mang ý nghĩa làm tài liệu nhiều hơn mục đích sinh mã nguồn tự động. Hình dƣới đây là một ví dụ về mô hình hóa với UML. 12 Hình 1.2. Mô hình sử dụng UML Ngôn ngữ UML đã đƣợc phát triển tƣơng đối hoàn thiện và đƣợc cung cấp cũng nhƣ công nhận rộng rãi. Mô hình hóa với UML, khi thay đổi mã nguồn hoặc mô hình thay đổi cần mất chi phí về thời gian, tài nguyên, tiền bạc để đồng bộ giữa mô hình và mã nguồn dẫn đến tăng chí phí trong dự án phần mềm [2]. Phƣơng pháp mô hình hóa chuyên biệt miền có thể khắc phục những nhƣợc điểm trên của phƣơng pháp mô hình hóa mục địch chung. Mô hình hóa chuyên biệt miền sẽ đƣợc chúng tôi đề cập trong mục dƣới đây. 1.1.2. Mô hình hóa chuyên biệt miền Mô hình hóa chuyên biệt miền (Domain Specific modeling - DSM) là sử dụng ngôn ngữ mô hình hóa chuyên biệt miền để tạo các mô hình và sinh mã nguồn từ các mô hình đó với bộ sinh code (code generator) [2]. Ngôn ngữ mô hình hóa chuyên biệt miền (Domain-Specific Modeling 13 Language - DSML) là một ngôn ngữ chuyên biệt miền cụ thể nó đƣợc sử dụng để xây dựng các mô hình đồ họa cho các hệ thống phần mềm. Đ ịnh nghĩa ngôn ngữ mô hình hóa chuyên biệt miền và bộ sinh code nên đƣợc thực hiện bởi các chuyên gia miền (vì họ là ngƣời hiểu về miền nhất). Khi đó, họ có thể cung cấp mã nguồn có chất lƣợng cao cho miền. Quy trình xây dựng bộ sinh code có thể định nghĩa tƣơng đƣơng với việc xây dựng trình biên dịch cho một ngôn ngữ thứ 3. Định nghĩa này cũng nhấn mạnh hƣớng tiếp cận phát triển hƣớng mô hình bằng cách tự hạn chế các mô hình đồ họa và không bao gồm các ngôn ngữ lập trình [2]. Ngôn ngữ chuyên biệt miền (Domain specific language - DSL) là một ngôn ngữ chƣơng trình hoặc ngôn ngữ đặc tả thực thi, bằng cách tích hợp các khái niệm trừu tƣợng của tri thức miền vào trong ngôn ngữ dƣới dạng các ký hiệu có tính biểu cảm cao. DSL tăng mức độ trừu tƣợng bằng cách sử dụng các khái niệm quen thuộc với các chuyên gia miền và thƣờng đƣợc giới hạn trong một miền vấn đề cụ thể nào đó [2]. Dƣới đây là một ví dụ về mô hình đƣợc mô hình hóa bằng một ngôn ngữ mô hình hóa chuyên biệt miền. Hình 1.3. Mô hình kiến trúc phần cứng trong automobiles bằng DSML EAST-ADL 1 Ngôn ngữ EAST-ADL chuyển các tri thức miền thành các khái niệm của ngôn 1 http://www.devx.com/enterprise/Article/30550/0/page/2 14 ngữ, các khái niệm đó là ECU, Chanel, Processor, Memory. Các khái niệm này có các ký hiệu đồ họa riêng và quen thuộc với các chuyên gia miền. Ý tƣởng chính trong phát triển hƣớng mô hình là tập trung vào các mô hình trong phát triển phần mềm và các mô hình đó sẽ đƣợc tự động sinh sang mã nguồn triển khai. Một hƣớng tiếp cận trong phát triển hƣớng mô hình là các mô hình đƣợc mô hình hóa bằng một ngôn ngữ mô hình hóa chuyên biệt miền. Với hƣớng tiếp cận này, giai đoạn đầu của dự án cần phát triển ngôn ngữ mô hình hóa chuyên biệt miền. Ngôn ngữ mô hình hóa chuyên biệt miền đã xây dựng, sẽ đƣợc sử dụng để mô hình hóa các yêu cầu của phần mềm cần phát triển thuộc miền. Bộ sinh code tự động của ngôn ngữ sẽ tự động sinh mã chƣơng trình từ các mô hình đã xây dựng. Hiệu quả sinh code tự động từ mô hình phụ thuộc vào tính đúng đắn của ngôn ngữ mô hình hóa chuyên biệt miền. Để xây dựng đƣợc ngôn ngữ mô hình hóa chuyên biệt miền đúng đắn, hiệu quả cao yêu cầu đòi hỏi miền vấn đề không quá lớn để có thể hiểu rõ về miền, các khái niệm trong miền, mối quan hệ giữa các khái niệm và các nghiệp vụ của miền [2]. Khi một DSML và bộ sinh code đƣợc định nghĩa đúng đắn bởi các chuyên gia miền thực sự, DSM tăng tốc việc phát triển phần mềm và giảm số lƣợng lỗi trong các sản phẩm phần mềm. Với hƣớng tiếp cận này cần bỏ chi phí ban đầu để phát triển DSML. Vì vậy nếu có ít ứng dụng phát triển trong cùng một miền vấn đề thì có thể chi phí phát triển theo MDD lại lớn hơn phát triển theo phƣơng pháp truyền thống. Nhƣng phát triển nhiều ứng dụng trong cùng một miền vấn đề (ví dụ nhƣ một họ sản phẩm phần mềm), DSM mang lại lợi ích lớn hơn rất nhiều với chi phí xây dựng DSML và bộ sinh code. Hình dƣới đây minh họa về lợi ích của DSML trong các dự án phần mềm. Đây cũng chính là vấn đề mấu chốt khi lựa chọn DSM để phát triển phần mềm hay mô hình hóa mục đích chung với UML để phát triển phần mềm. Sau khi bỏ chi phí ban đầu để triển khai DSML và bộ sinh code, việc triển các ứng dụng mới có thể nhanh hơn phƣơng pháp truyền thống từ 5 đến 10 lần [2]. 15 Hình 1.4. Mô hình hóa chuyên biệt miền với mô hình hóa mục đích chung [2] Vì vậy khi phát triển các dự án, tùy thuộc vào số lần lặp lại của các dự án thuộc cùng một miền, cũng nhƣ tổng chi phí của các dự án mà lựa chọn phƣơng pháp phát triển phần mềm tốt nhất về chi phí. 1.2. Ngôn ngữ mô hình hóa chuyên biệt miền Ngôn ngữ chuyên biệt miền có thể đƣợc xây dựng bằng cách sử dụng các Metamodels hoặc sử dụng Context- free grammar, thông thƣờng thì ngôn ngữ đồ họa đƣợc phát triển bằng cách sử dụng các metamodels và ngôn ngữ văn bản đƣợc định nghĩa bởi context – free grammar [2]. Trong tiếp cận của chúng tôi ngôn ngữ mô hình hóa chuyên biệt miền đƣợc xây dựng trong đó sử dụng các ký hiệu đồ họa để mô hình hóa các yêu cầu, chúng tôi đã xây dựng một metamodel để định nghĩa mô hình chuyên biệt miền cho ngôn ngữ. Tuy nhiên mô hình đồ họa không đặc tả đủ chính xác và rõ ràng vì vậy cần thêm các ràng buộc trên các đối tƣợng để làm chặt chẽ hơn ngữ nghĩa của mô hình, chúng tôi có sử dụng ngôn ngữ ràng buộc đối tƣợng (Object constrain language - OCL) để xây dựng các luật ràng buộc trên metamodel. 16 1.2.1. Biểu diễn mô hình Metamodel là một mô hình của một ngôn ngữ mô hình hóa. Nó cho phép chúng ta biểu diễn cú pháp trừu tƣợng của một ngôn ngữ đồ họa, một metamodel sẽ bao gồm các thành phần nguyên thủy để tạo nên ngôn ngữ mô hình hóa. MetaModel định nghĩa cú pháp (syntax) và ngữ nghĩa (semantic) của mô hình. Trong đó mô hình là một thể hiện của metamodel. Ví dụ trong ngôn ngữ mô hình hóa UML, để có thể tạo đƣợc mô hình (1), thì trong ngôn ngữ cần phải có các thành phần nguyên thủy là Association, AssocEnd, Class và mô hình (1) là một thể hiện của metamodel nhƣ mô tả (2). Và metamodel là (3). Hình 1.5. Ví dụ về metamodel 1.2.2. Ràng buộc mô hình. Mô hình đồ họa không đủ để đặc tả chính xác và rõ ràng, cần thêm vào các ràng buộc trên các đối tƣợng, để ràng buộc các đối tƣợng chúng ta sẽ sử dụng các ngôn ngữ cho phép ràng buộc trên các đối tƣợng mô hình. N gôn ngữ OCL là một trong các ngôn ngữ cho phép ràng buộc trên các đối tƣợng. Ví dụ nhƣ lớp NhanVien, chúng ta muốn ràng buộc thuộc tính Tuoi của nhân viên lớn hơn hoặc bằng 21, khi đó mô hình đồ họa không đủ để diễn tả, chúng ta có thể sử dụng biểu thức OCL để ràng 17 buộc nhƣ sau: Context NhanVien inv: Self.Tuoi>=21 Hình 1.6. Ví dụ về ràng buộc với OCL OCL không phải là một ngôn ngữ lập trình, không thể viết chƣơng trình logic hoặc luồng điều khiển trong OCL. OCL là một ngôn ngữ biểu thức, và các biểu thức OCL không tạo ra hiệu ứng nghĩa là không làm thay đổi trạng thái của các đối tƣợng. OCL là một ngôn ngữ kiểu mỗi một biểu thức OLC có một kiểu, kiểu trả về của biểu thức OCL có thể là bất kỳ kiểu nào. OCL đƣợc sử dụng cho nhiều mục đích khác nhau nhƣ: Ngôn ngữ truy vấn; xác định tính bất biến trên các lớp và các kiểu trong mô hình lớp; xác định tính bất biến cho Stereotypes; mô tả tiền điều kiện và hậu điều kiện cho các hoạt động và phƣơng thức; mô tả Guards; xác định cá ràng buộc cho hoạt động; … Về cú pháp cũng nhƣ cách xây dựng các biểu thức OCL chúng ta có thể tham khảo các tài liệu về OCL theo chuẩn của tổ chức OMG [4] . 1.3. Phƣơng pháp xây dựng ngôn ngữ mô hình hóa chuyên biệt miền (DSML) Để xây dựng đƣợc một DSML đúng đắn, chúng ta phải nghiên cứu về miền vấn đề ngôn ngữ diễn đạt để từ đó xây dựng cú pháp và ngữ nghĩa cho ngôn ngữ. Để xây dựng đƣợc DSML chúng ta cần xây dựng cú pháp trừu tƣợng, cú pháp cụ thể, ngữ nghĩa, để đảm bảo tạo ra một ngôn ngữ đúng đắn cần tạo ra các luật ràng buộc cho ngôn ngữ. Dƣới đây là các bƣớc cơ bản mà một dự án xây dựng DSML phải trải qua. a) Khảo sát miền Chúng ta sẽ khảo sát miền để tìm kiếm các khái niệm trừu tƣợng đúng đắn và ánh xạ các khái niệm thuộc miền thành các khái niệm trừu tƣợng. Với cách này giúp ngăn chặn các lỗi sớm trong giai đoạn thiết kế, giảm công việc đặc tả, và làm cho ngôn ngữ phù hợp hơn. Mô tả những vấn đề trong thuật ngữ miền vấn đề thay vì các khái 18 niệm triển khai. Các từ trừu tƣợng tốt nhất là chúng ta nên mƣợn những thuật ngữ thuộc miền. Giai đoạn này cho phép chúng ta thu đƣợc các khái niệm của miền, cách mà các khái niệm miền tƣơng tác với nhau, và các nghiệp vụ của miền. Để có thể hiểu đƣợc miền tốt nhất, đúng đắn nhất giai đoạn này cần phải làm việc hợp tác với các chuyên gia về miền, những ngƣời mà hiểu về miền và nghiệp vụ của miền nhất. b) Xây dựng metamodel và các ràng buộc Giai đoạn này, chúng ta sẽ chỉ định các khái niệm mô hình, các thuộc tính của chúng và các luật ràng buộc sử dụng ngôn ngữ và thực thi mô hình đúng đắn. Chúng ta sẽ ánh xạ các khái niệm chính của miền (các khái niệm này là kết quả tìm kiếm các khái niệm trong bƣớc trƣớc) tới các đối tƣợng ngôn ngữ mô hình hóa. Kết quả của giai đoạn này là chúng ta sẽ xây dựng đƣợc một MetaModel và các ràng buộc trên đó đây chính là cú pháp trừu tƣợng của DSML. c) Xác định ký pháp cho ngôn ngữ (notation) Ngôn ngữ cần trình diễn trực quan cho ngƣời sử dụng. Nhƣ các biểu đồ, sử dụng các ký hiệu, biểu tƣợng để đại diện cho các khái niệm khác nhau của ngôn ngữ. Vì vậy cần xây dựng các ký pháp cho ngôn ngữ. Kết quả của giai đoạn này chính là chúng ta xây dựng đƣợc cú pháp cụ thể cho DSML bằng cách ánh xạ các khái niệm trong cú pháp trừu tƣợng tới các ký hiệu đại diện cho nó bằng đồ họa. d) Thao tác mô hình Sau khi chúng ta xây dựng đƣợc cú pháp trừu tƣợng và cú pháp cụ thể cho DSML, chúng ta muốn các mô hình đƣợc mô hình hóa bằng DSML đã xây dựng có thể chuyển sang mã nguồn thực thi, hoặc kiểm tra mô hình, hoặc sinh tài liệu từ mô hình thì chúng ta cần xây dựng cho DSML bộ sinh mã nguồn (code generator), sinh tài liệu (documentation) hoặc kiếm tra mô hình (mode checking). Để thực xây dựng đƣợc bộ sinh mã nguồn, thì chúng ta cần ánh xạ các khái niệm mô hình sang code bằng các dự án chuyển mô hình M2T, kết quả của giai đoạn này là xây dựng bộ sinh mã nguồn tự động cho DSML cho phép dịch chuyển các mô hình đã đƣợc mô hình hóa bởi DSML sang mã nguồn thực thi. Có thể coi giai đoạn này là chúng ta đã xây dựng trình biên dịch cho DSML [2]. 19 1.4. Một số công cụ hỗ trợ xây dựng DSML 1.4.1. Giới thiệu về các công cụ cho DSML Bảng 1.1. Các công cụ cho xây dựng DSML [2] Bảng 1.1 trình bày tóm tắt về các Tool cho phát triển DSML. Bảng trên cho chúng thấy tất cả các tool đều xây dựng cho hệ nền Window, tuy nhiên với GEMS và MetaEdit+ có thể cho các hệ nền khác. Ngôn ngữ xây dựng Metamodelling của các 20
- Xem thêm -