Mở đầu chương, chúng tôi giới thiệu về phương pháp phát triển phần mềm hướng mô hình. Phương pháp này hướng đến việc giải quyết các yêu cầu phần mềm dựa trên việc xây dựng và thao tác trên các mô hình. Hai công việc chính cần thực hiện khi phát triển theo hướng này là biểu diễn mô hình và thao tác với các mô hình. Ngôn ngữ mô hình hóa UML được tổ chức OMG đưa ra và thống nhất như một quy chuẩn cho việc xây dựng các mô hình.
Trong đó, hai khái niệm cần quan tâm khi biểu diễn mô hình là mô hình và siêu mô hình. Qua mỗi giai đoạn phát triển, các mô hình được biến đổi, làm mịn thông qua bước chuyển đổi tự động hoặc bán tự động. Hai phương pháp chuyển mô hình đang được nghiên cứu và phát triển rộng rãi là Query/View/Transformation và chuyển đồ thị. Trong luận văn, chúng tôi tập trung nghiên cứu giải pháp dựa trên hướng tiếp cận chuyển đồ thị, cụ thể chuyển dựa trên ngữ pháp đồ thị ba (TGGa).1 Phát triển phần mềm hướng mô hình Hiện nay, phát triển phần mềm hướng mô hình nổi lên như một phương pháp giúp cải thiện đáng kể tốc độ cũng như chất lượng phát triển phần mềm.
Phương pháp này tập trung xây dựng các mô hình nhằm biểu diễn hệ thống dưới các góc nhìn khác nhau, từ góc nhìn trừu tượng như các biểu đồ ca sử dụng đến các biểu đồ chi tiết như các mô hình phân tích. Các mô hình thường được biểu diễn một cách trực quan, thể hiện được đa dạng các góc nhìn hệ thống. Platform Independent > Independent Co > Specific Model Model Model Analysis Model Design Model Basic code skeleton Tĩnh 2.1: Phương pháp phát triển phần mềm hướng mô hình a Hình 2.1 thể hiện ba nhóm mô hình chính khi phát triển phần mềm hướng mô hình. Ở những mô hình đầu tiên được tạo ra, chúng ta thường chưa cần quan tâm tới vấn đề yêu cầu sẽ được tính toán, giải quyết như thế nào.
Vì vậy, những mô hình này được đặt trong nhóm mô hình độc lập tính toán. Một ví dụ điển hình cho loại mô hình này là biểu đồ ca sử dụng. Trong đó, mô hình chỉ ra những yêu cầu cần giải quyết, sự liên quan giữa các khối chức năng. Câu hỏi yêu cầu được xử lý như thế nào sẽ được trả lời qua nhóm mô hình độc lập nền tảng.
Ở nhóm mô hình này, luồng xử lý nghiệp vụ, chi tiết về cách thức thực hiện được mô tả. Tuy nhiên, việc mô tả này dừng lại ở một mức độ trừu tượng, mô tả chung cho tất cả các nền tảng. Ví dụ cho nhóm mô hình này là các biểu đồ phân tích như biểu đồ lớp, biểu đồ tuần tự. Biểu đồ nhóm này quy định cho chúng ta cách thức thực hiện nhưng không bắt buộc chạy trên nền tảng nào.
Nhóm mô hình thứ ba là mô hình nền tảng chỉ định. Mô hình này được xây dựng cho từng nền tảng cụ thể, ví dụ. Mã chương trình là một ví dụ điển hình cho loại biểu đồ này. Giữa các nhóm biểu đồ này, các công cụ chuyển đổi được sử dụng nhằm tăng tính tự động hóa.
Trong mỗi loại biểu đồ cũng có thể có những bước chuyển làm mịn dần các biểu đồ.1 Mô hình và siêu mô hình Mô hình là một khái niệm khó có thể định nghĩa được một cách rõ ràng và đầy đủ. Đã có nhiều định nghĩa về mô hình được đưa ra. Trong đó có hai định nghĩa được đề xuất tại [17] và [14]. Định nghĩa trong MDA [14| nói rằng: "Mô hành là một dạng miêu tả của (một phần của) một hệ thông uiết trên một ngôn ngữ được định nghãa một cách rõ ràng.
Ngôn ngữ ở đâu là một ngôn ngữ uới cú pháp va ngt nghĩa rõ ràng va có thể tự động biên dịch được bởi may tinh". Con tổ chức OMG đưa ra khái niệm mô hình trong [17| như sau: "Mô hành là một sự biểu diễn lại một cách biểu diễn một thú gà đó một cách tương tự hoặc một cách biểu diễn khác của nó. Mô hành đó lưu lại các khía cạnh khác nhau của của đối tượng cần được mô hành từ một điểm của góc nhần uà làm đơn giản hơn hoặc bỏ qua những phần không cần xem zét tới". Theo OMG định nghĩa trong [17], siêu mô hình là sự miêu tả của một mô hình.
Việc xây dựng siêu mô hình được gọi là kỹ thuật rmefamodeling. Đề xây dựng siêu mô hình, cần phân biệt được hai khái niệm mô hình và siêu mô hình và mối liên quan giữa chúng. Mô hình phản ảnh sự trừu tượng của một đối tượng nào đó trong thực tế, trong khi siêu mô hình cũng là một sự trừu tượng nhưng là sự trừu tượng cho chính mô hình. Nói cách khác, một mô hình là một thể hiện của siêu mô hình.
Mối quan hệ giữa mô hình và siêu mô hình được giải thích thông qua ví dụ ở Hình 2. Hình vẽ chỉ ra các tầng mô hình khác nhau của UML [8], mỗi một tầng là một thể hiện của Ms (MOF) ` ‘ — I «instanceOt» «instanceOf» «instanceOf» T “7 | ` 2 ` ⁄ I “ ` M2 (UML. \ Video / te: String K- _«snapshot» __| title = "2001: A Space Odyssey" s”ềtepceOf› ` ` M0 (Run-time instances) aVideo Hình 2.2: Các tầng của UML tầng ngay trên nó. Tầng M0 chứa các đối tượng khi hệ thống đang chạy, và tồn tại trong thực tế, ví dụ aV7đeo nói về một đoạn phim thực tế.
Tầng MI chứa các mô hình. Khái niệm V¡deo được định nghĩa với một thuộc tính te. Mỗi thành phần thuộc tầng M0 luôn là một thể hiện của một thành phần ở tầng M1: aVideo là một thể hiện của W7deo. Tương tự như vậy, mỗi thành phần ở tầng M1 1A mot thể hiện của một thành phần tầng M2.
M2 được gọi là tầng mô hình của mô hình (hay siêu mô hình). Cuối cùng là tầng M3: mô hình của mô hình M2. Đây là mức trừu tượng cao nhất của UML - metametamodel.2 Ngôn ngữ mô hình hóa Mô hình cần phải được biểu diễn trước khi có thể thao tác trên nó. Mỗi mô hình được biểu diễn thông qua ngôn ngữ mô hình hóa.
Ngôn ngữ mô hình hóa được định nghĩa trong [14| như sau: "Một ngôn ngữ mô hành hóa là một ngôn ngũ tới cú pháp oà ngữ nghãa rõ rùng, phù hợp để có thể tự động biên dịch bởi máy tính". Định nghĩa này chỉ ra rằng ngôn ngữ mô hình hóa phải được định nghĩa một cách rõ ràng giống như ngôn ngữ lập trình. Điều này là cần thiết vì theo kỹ nghệ hướng mô hình, các mô hình sẽ được xử lý bởi các công cụ máy tính một cách tự động. Cũng theo định nghĩa trên, một ngôn ngữ mô hình hóa bao gồm hai góc nhìn chính là cú pháp và ngữ nghĩa.
Cú pháp của một ngôn ngữ mô hình hóa có thể được biểu diễn dưới dạng ký hiệu đồ thị hoặc dạng từ khóa, ngôn ngữ khi đó lần lượt được gọi là ngôn ngữ mô hình hóa dạng đồ thị và ngôn ngữ mô hình hóa dạng văn bản. Ngữ nghĩa của một ngôn ngữ mô hình hóa được xem dưới hai góc nhìn tĩnh và động [13]: Ngữ nghĩa tĩnh tương ứng với các luật hình thức cho các mô hình, trong khi ngữ nghĩa động thể hiện ý nghĩa của mô hình. Metamodeling là một kỹ thuật để định nghĩa cú pháp cho ngôn ngữ mô hình hóa. Kỹ thuật này được sử dụng rộng rãi để định nghĩa cú pháp trừu tượng của ngôn ngữ mô hình hóa UML - ngôn ngữ mô hình hóa được sử dụng phổ biến hiện nay.
Mfefamodeling cho phép chúng ta xây dựng một mô hình hướng đối tượng của cú pháp trừu tượng của một ngôn ngữ. Một siêu mô hình biểu diễn các thành phần của ngôn ngữ như lớp và mối quan hệ giữa các lớp sử dụng thuộc tính (attributes) và các mối liên hệ (associations).2 Chuyển mô hình Bước tiếp theo sau khi đã biểu diễn được các mô hình là thao tác với các mô hình đó. Trong phát triển hướng mô hình, thao tác với mô hình chủ yếu là chuyển mô hình. Việc chuyển mô hình sẽ làm tăng tốc độ và tính đúng đắn của phần mềm.
Class model Person Int: person|ID String: name | sus Table Person personID name ICREATE TABLE Person { PersonID NUMBER(10) PRIMARY KEY, name VARCHAR2(50) NOT NUL } Tĩnh 2.3: Ví dụ chuyển từ biểu đồ lớp - bảng quan hệ dữ liệu Hình 2.3 mô tả một ví dụ về việc áp dụng chuyển mô hình trong phát triển phần mềm. Khi xem xét các mô hình, ta thấy rằng giữa các mô hình có những sự tương đồng nhất định. Sự tương đồng này có thể được tổng hợp lại và biểu diễn dưới dạng các luật chuyển.3, ta thấy ba dạng mô hình được biểu diễn. Biểu đồ lớp biểu diễn dạng trực quan của một đối tượng Person.
Tiếp theo là một dạng khác của đối tượng này: dạng 7sbie khi xem xét đối tượng dưới góc độ quan hệ dữ liệu. Và dạng cụ thể nhất của đối tượng Persơn ở đây là các câu lệnh SQL. Tại đây, chúng ta nhận thấy có thể áp dụng hai bước chuyển để thu được các câu lệnh SQL từ một biểu đồ lớp. Luật chuyển đồ thị định nghĩa sự tương ứng giữa biểu đồ lớp và biểu đồ quan hệ dữ liệu, và giữa biểu đồ quan hệ dữ liệu và các câu lệnh SQL.
Các bài toán chuyển mô hình cũng đòi hỏi phải đáp ứng một số những yêu cầu riêng. Thứ nhất đó là tính đúng đắn của mô hình phải được đảm bảo. Mỗi mô hình phải thỏa theo metamodel của nó. Ràng buộc OCL được định nghĩa trong mỗi metamodel phải được thỏa mãn.
Ví dụ, với chuyển mô hình từ biểu đồ lớp sang biểu đồ quan hệ dữ liệu, mô hình nguồn phải thỏa mãn metamodel của biểu đồ lớp; mô hình đích phải thỏa mãn metamodel của biểu đồ quan hệ dữ liệu; ràng buộc OCL định nghĩa của hai metamodel phải luôn đúng. Ví dụ, ràng buộc: "Mỗi lớp phải có ít nhất một thuộc tính" được biểu diễn dưới dạng OCL như sau: contezt Class inv hasAtLeastOneAttr: attrs->size() > 0 Ngoài ra, các bài toán chuyển mô hình còn phải đảm bảo tinh hợp lệ của chuyển. Thông thường, bài toán hợp lệ chuyển được thực hiện bằng cách kiểm tra chuyển trên một tập các dữ liệu đầu vào và đầu ra mong muốn, sau đó so sánh kết quả thu được với đầu ra mong muốn để có thể kết luận được chuyển có hợp lệ hay không.