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. 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). 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.
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ế. Kết luận và hƣớng phát triển. 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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. 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.
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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Ví dụ về mô hình [6] 1. 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.
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.
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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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. 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.com/enterprise/Article/30550/0/page/2 14 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail. 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í. 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail. 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.