Mặc dù cả UML[1] và Alloy[2] được thiết kế để mô tả mô hình hướng đối tượng, tuy nhiên UML[1] và Alloy[2] có một số điểm khác biệt trong cách tiếp cận một số khái niệm trong hướng đối tượng ví dụ như cách tiếp cận trong vấn đề thừa kế, ghi đè...do vậy ảnh hưởng tới việc chuyển đổi giữa mô hình UML[1] sang Alloy[2].
Vấn đề thừa kế[4]
Cả UML[1] và Alloy[2] đều cung cấp khái niệm thừa kế. Trong UML[1], một lớp con thừa kế từ một hoặc nhiều lớp. UML[1] sử dụng khái niệm “redefine” để thể hiện những thuộc tính hoặc phương thức bị ghi đè ở lớp con.
Trong khi đó, một ký hiệu trong Alloy[2] có thể được kế thừa từ một ký hiệu khác và thành phần của ký hiệu là tập con của ký hiệu cha và một ký hiệu con không thể khai báo một trường có tên trùng với tên trường đã có trong lớp cha tức là việc ghi đè trực tiếp trong Alloy[2] là không cho phép.
Không gian tên[4]
Mọi thành phần mô hình trong UML[1] đều được định nghĩa trong một không gian tên. Ví dụ như, các lớp trong mô hình UML[1] được đặt trong một không gian tên của gói và các thuộc tính của lớp thì được đặt trong không gian tên của lớp nó thuộc về.
Trong khi đó, mọi thành phần trong Alloy[2] đều thuộc về một không gian tên mô đun. Ví dụ như trong đặc tả UML[1] có định nghĩa :”Tập hợp tên của thuộc tính và tên của lớp không cần thiết phải tách rời”. Nhưng trong Alloy[2], tên của ký hiệu có sự tách rời với tên các trường của nó. Chính vì thế trong khi chuyển đổi chúng ta phải chắc chắn tên duy nhất được tạo ra cho mỗi thành phần của Alloy[2] trong cùng một không gian tên mô-đun.
Kiểu được định nghĩa trước[4]
Đặc tả UML[1] định nghĩa trước một số kiểu dữ liệu nguyên thủy như (String, Real, Integer...)
36
Trong khi đó, Alloy[2] có một hệ thống kiểu rất đơn giản và chỉ duy nhất kiểu Integer là kiểu dữ liệu nguyên thủy được định nghĩa trước.
Ví dụ như kiểu dữ liệu String được đinh nghĩa trước trong UML[1] nhưng không được đinh nghĩa trong Alloy[2], cách tiếp cận cho các vấn đề này là chúng ta khai báo một ký hiệu kiểu String trong mô hình.
Kết tập và tạo thành[4]
Trong UML[1] cả kết tập và tạo thành là dạng đặc biệt của liên hệ giữa hai lớp. Alloy[2] không hỗ trợ trực tiếp hai kiểu quan hệ kết tập và tạo thành. Đây là khó khăn khi chuyển đổi biểu đồ lớp với các quan hệ kết tập và tạo thành trong Alloy[2]. Trong khóa luận của mình em có đưa ra cách thức chuyển đổi hai quan hệ trên sang đặc tả Alloy[2] trong phần chương 4.
Mô hình tĩnh và mô hình động[4]
Mô hình trong Alloy[2] là mô hình tĩnh. Một mô hình trong Alloy[2] định nghĩa các thể hiện của hệ thống thỏa mãn các ràng buộc. Bản thân Alloy[2] không chứa đựng trong nó khái niệm về trạng thái của hệ thống.
Trong khi đó UML[1] sử dụng khái niệm tĩnh để biểu diễn quan hệ cấu trúc giữa các thành phần của hệ thống thông qua các ràng buộc, các đặc tả phương thức với sự thêm vào các điều kiện như tiền điều kiện và hậu điều kiện của phương thức. Một mô hình hệ thống tĩnh được chỉ ra tại một thời điểm thông qua các giá trị của đối tượng, thuộc tính các liên kết giữa các thành phần trong mô hình hệ thống.
Một giải pháp cho vấn đề này là sử dụng mẫu mô hình động trong Alloy[2] để giải quyết vấn đề trên. Với cách này chúng ta có thể mô tả được giá trị tiền điều kiện của mỗi phương thức ở trạng thái đầu và mô tả giá trị hậu điều kiện của mỗi phương thức ở trạng thái tiếp theo.
3.3 Kết luận.
Như vậy, trong chương 3, em đã trình bày về mô hình chuyển đổi, các quy tắc chuyển đổi giữa các yếu tố của mô hình UML[1] sang các yếu tố mô hình Alloy[2] và các quy tắc chuyển giữa OCL[5] sang Alloy[2]. Cụ thể là các quy tắc chuyển đổi một lớp, các thành phần của lớp sang đặc tả Alloy[2], thể hiện được liên kết nhị phân, các quan hệ kết tập, tạo thành, tổng quát hóa trong biểu diễn biểu đồ lớp UML[1] sang biểu diễn Alloy[2] bằng cách đưa thêm các ràng buộc Alloy[2] logic. Bên cạnh đó, trong chương này còn đề cập tới vấn đề hạn chế khi chuyển đổi từ mô hình UML[1] sang mô hình Alloy[2], có những hạn chế do khách quan và có những yếu tố chủ quan của con người.
Trong chương 4, em sẽ trình bày bài toán minh họa áp dụng cho các quy tắc chuyển đổi mà đã nêu trong chương 3.
37
Chương 4 . Kiểm tra đặc tả hệ thống quản lý các tài khoản và các giao dịch trên máy ATM