THIẾT KẾ HỆ THỐNG

Một phần của tài liệu Nghiên cứu và xây dựng công cụ hỗ trợ mô hình hóa hệ thống Triggers bằng event -B (Trang 39)

Thiết kế hệ thống về xử lý

- Sơ đồ phân cấp chức năng:

Output Database system CÔNG CỤ Mô hình Event - B File XML và định dạng Rodin Input

Học viên: Nông Thị Oanh - K18HTTT

Hình 4.2: Sơ đồ phân cấp chức năng của hệ thống mô hình hóa trigger

- Biểu đồ luồng dữ liệu mức ngữ cảnh:

Hình 4.3: Biểu đồ luồng dữ liệu mức ngữ cảnh

NGƢỜI SỬ DỤNG Công cụ hỗ trợ mô hình hóa trigger bằng Event-B Kết nối CSDL Tạo các Trigger Mô hình Event-B File XML và Rodin MÔ HÌNH HÓA HỆ THỐNG TRIGGER Tạo TRIGGER và ràng buộc hệ thống Xây dựng ràng buộc Kết nối hệ thống CSDL

Kiểm tra kết nối

Lấy thông tin CSDL

Tạo các trigger Phân tích và chuyển đổi tự động Xuất ra file XML và định dạng Rodin Chỉnh sửa mô hình Event-B Mô hình hóa Event-B

Học viên: Nông Thị Oanh - K18HTTT

Luồng công việc chính của chƣơng trình hỗ trợ mô hình hóa hệ thống trigger bằng Event-B:

Hình 4.4: Luồng công việc chính của chương trình

Thất bại

Bắt đầu

Kết thúc

Kết nối CSDL

Lấy thông tin

Tạo Trigger Tạo ràng buộc

Chuyển đổi tự động

Chỉnh sửa mô hình

Kết xuất ra XML và định dạng Rodin

Học viên: Nông Thị Oanh - K18HTTT

Thiết kế chƣơng trình:

Chƣơng trình đƣợc viết bằng ngôn ngữ lập trình Visual Basic.Net (phiên bản 2008).

Mô tả một số chức năng chính của chương trình:

Giao diện chính của chương trình:

Hình 4.5: Giao diện chính của chương trình hỗ trợ mô hình hóa hệ thống trigger bằng Event-B

Giao diện chính thể hiện các chức năng cơ bản của chƣơng trình nhƣ sau:  Setup Connect Database: Chức năng kết nối hệ thống cơ sơ sở dữ liệu.

Create Trigger: Chức năng tạo các trigger. (adsbygoogle = window.adsbygoogle || []).push({});

Constraint: Chức năng tạo các ràng buộc hệ thống.

Information System: Đƣa ra các thông tin về chƣơng trình. Chức năng kết nối hệ thống cơ sở dữ liệu:

Chức năng này cho phép ngƣời dùng kiểm tra và kết nối với các hệ thống cơ sở dữ liệu có sẵn.

Học viên: Nông Thị Oanh - K18HTTT

Ngƣời dùng có thể nhấn nút Test để kiểm tra kết nối với cơ sở dữ liệu có thành công hay không.

Nếu kết nối thành công ngƣời dùng nhấn nút Connect để lấy thông tin từ các bảng trong cơ sơ dữ liệu.

Hình 4.6: Giao diện kết nối hệ thống cơ sơ dữ liệu

Chức năng tạo ràng buộc hệ thống:

Chức năng này cho phép ngƣời dùng tạo các ràng buộc hệ thống nhƣ sau: ngƣời dùng chọn các bảng, các trƣờng, các toán tử so sánh và nhập các giá trị vào các ô. Sau đó nhấn nút Add constraint để tạo ràng buộc.

Học viên: Nông Thị Oanh - K18HTTT

Hình 4.7: Giao diện tạo ràng buộc hệ thống

Chức năng tạo các trigger: bao gồm hai chức năng con đó là: Chức năng tạo trigger.

Chức năng chuyển đổi sang Event- B.

Chức năng tạo Trigger: Chức năng này cho phép ngƣời dùng tạo các Trigger nhƣ sau:

Bƣớc 1: Nhập tên trigger cần tạo vào ô Name trigger.

Bƣớc 2: Chọn kiểu của trigger là Before hoặc After trong ô Option.

Bƣớc 3: Chọn thao tác dữ liệu là Update hoặc Insert hoặc Delete trong ô Action.

Bƣớc 4 và 5: Chọn vào bảng và trƣờng trong cơ sở dữ liệu của trigger trong ô Tables và Fields.

Bƣớc 6: Nhập nội dung của trigger cần tạo trong ô SQL. Bƣớc 8: Nhấn nút Create trigger.

Học viên: Nông Thị Oanh - K18HTTT

Hình 4.8: Giao diện tạo trigger

Hình 4.9: Giao diện thêm trigger vào danh sách thành công

Chức năng chuyển đổi sang Event-B: gồm ba chức năng con sau

Học viên: Nông Thị Oanh - K18HTTT

Chức năng chỉnh sửa mô hình Event-B.

Chức năng kết xuất ra file XML và định dạng Rodin.  Chức năng phân tích và chuyển đổi tự động:

Sau khi tạo xong các trigger ngƣời dùng có thể chuyển đổi các trigger đã tạo sang Event-B bằng cách nhấn nút Event-B.

Chọn trigger cần chuyển đổi trong ô List trigger. Nhấn nút Convert Event-B. (Hình 4.10)

 Chức năng chỉnh sửa mô hình Event-B:

Chức năng này cho phép ngƣời dùng có thể thêm thủ công các grd và act của mô hình Event-B bằng cách nhấn nút Modify Event-B, sau đó nhấn vào Add grd hoặc Add act và nhập các nội dung mà ngƣời dùng muốn chỉnh sửa. (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi chỉnh sửa xong mô hình Event-B, nhấn nút OK Event-B. (Hình 4.11)

Học viên: Nông Thị Oanh - K18HTTT

Hình 4.11: Giao diện chỉnh sửa mô hình Event-B

 Chức năng kết xuất ra file XML và định dạng Rodin:

Sau khi các trigger đã đƣợc chuyển đổi sang mô hình Event-B, ngƣời dùng có thể kết xuất mô hình này sang file XML hoặc định dạng Rodin.

Học viên: Nông Thị Oanh - K18HTTT

Hình 4.12: Giao diện xuất ra file XML 4.3. Đánh giá một số kết quả đạt đƣợc của chƣơng trình

Sau khi cài đặt chƣơng trình và chạy thử với ví dụ ở phần 3.4, chúng tôi có những đánh giá về chƣơng trình nhƣ sau:

Các kết quả đạt được:

 Chƣơng trình đã kết nối đƣợc với cơ sở dữ liệu để lấy đƣợc thông tin sử dụng cho mô hình hoá.

 Hỗ trợ xây dựng trigger trên giao diện.

 Phân tích và chuyển đổi tự động cơ sở dữ liệu vừa kết nối sang mô hình Event-B.

 Các phần đã chuyển đổi tự động:

- Chuyển đổi các bảng, trƣờng sang tập hợp trong Event-B. - Điều kiện trigger đã đƣợc chuyển đổi sang guard của các events.

- Một phần nội dung của trigger đƣợc chuyển đổi sang action của các events.

 Sau khi chuyển đổi tự động, chƣơng trình cho phép chỉnh sửa mô hình Event-B vừa thu đƣợc.

 Kết xuất mô hình ra file định dạng XML.  Các vấn đề chưa giải quyết được:

Học viên: Nông Thị Oanh - K18HTTT

 Chƣa chuyển đổi tự động toàn bộ nội dung của trigger sang Event- B ( vì chƣa phân tích đƣợc nội dung câu lệnh SQL, trong tƣơng lai sẽ có thể khắc phục bằng cách tích hợp các bộ phân tích SQL ( SQL parser)).

Học viên: Nông Thị Oanh - K18HTTT

KẾT LUẬN

Qua thời gian nghiên cứu, luận văn đã đạt đƣợc đƣợc những kết quả chính sau:

1. Xây dựng công cụ hỗ trợ mô hình hoá bán tự động hệ thống triggers từ pha thiết kế.

2. Các thành phần Event - B của hệ thống triggers đƣợc lƣu dƣới dạng XML, có thể sử dụng cho quá trình kiểm chứng tính đúng đắn của mô hình trên nền tảng Rodin.

Hƣớng phát triển tiếp theo của luận văn:

• Chuyển đổi tự động toàn bộ nội dung của trigger sang Event-B (tích hợp các bộ phân tích SQL ( SQL parser)).

• Kết xuất định dạng XML mở đƣợc trên công cụ Rodin.

• Xử lý các trƣờng hợp triggers phức tạp hơn.

Do thời gian nghiên cứu có hạn cộng với năng lực bản thân còn hạn chế, luận văn chắc chắn sẽ không tránh khỏi một số sai sót nhất định. Tôi rất mong nhận đƣợc ý kiến đóng góp của các Thầy Cô, các bạn đồng nghiệp cùng các cá nhân quan tâm để nội dung luận văn đƣợc hoàn thành với chất lƣợng tốt hơn.

Cuối cùng, em xin cảm ơn Thầy giáo PGS.TS. Trƣơng Ninh Thuận đã tận tình giúp đỡ em hoàn thành nội dung nghiên cứu đề ra. (adsbygoogle = window.adsbygoogle || []).push({});

Học viên: Nông Thị Oanh - K18HTTT

TÀI LIỆU THAM KHẢO

1. Choi, E.-H., Tsuchiya, T., Kikuno, T., “Model checking active database rules”. Technical report, AIST CVS, Osaka University, Japan (2006)

2. Ghazi, T., Huth, M., “An Abstraction-Based Analysis of Rule Systems for Active Database Management Systems”. Technical report, Kansas State University, Technical Report KSU-CIS-98-6, p.15 (April 1998)

3. Hong Anh Le and Ninh Thuan Truong, “Modeling and Verifying DML Triggers Using Event-B”, 5th ACCIDS, 2013.

4. Lee, S.-Y., Ling, T.-W., “Are your trigger rules correct?” In: Proceedings of the 9th International Workshop on Database and Expert Systems Applications, DEXA 1998, p. 837. IEEE Computer Society, Washington, DC (1998)

5. Lee, S.-Y., Ling, T.-W., “Verify Updating Trigger Correctness”. In: Bench- Capon, T.J.M., Soda, G., Tjoa, A.M. (1999)

6. B method web site (2012), http://www.bmethod.com

7. Event-b and the rodin platform (2012), http://www.event-b.org 8. Oracle7 Server Concepts Manual (2012), http://docs.oracle.com/

Học viên: Nông Thị Oanh - K18HTTT

PHỤ LỤC

NỀN TẢNG RODIN

RODIN (Rigorous Open Development Environment for Complex Systems) là một bộ công cụ mã nguồn mở dựa trên nền Eclipse để mô hình và chứng minh tự động trong Event – B.

Eclipse là một môi trƣờng phát triển phần mềm đa ngôn ngữ bao gồm một môi trƣờng phát triển tích hợp (IDE) và một hệ thống plugin mở rộng. Nó đƣợc viết chủ yếu bằng Java và có thể đƣợc sử dụng để phát triển các ứng dụng trong Java bằng các plugin khác nhau, ngôn ngữ lập trình khác nhƣ Ada, C, C + +, COBOL, Perl, PHP, Python, R, Ruby (bao gồm cả Ruby trên khung Rails), Scala, Clojure, Groovy và lƣợc đồ. Nó cũng có thể đƣợc sử dụng để phát triển các gói cho phần mềm Mathematica. IDE thƣờng đƣợc gọi là Eclipse ADT (Ada Development Toolkit) cho Ada, Eclipse CDT cho C / C + +, Eclipse JDT cho Java, và Eclipse PDT cho PHP. Eclipse cung cấp các nền tảng kỹ thuật của Rodin.

Các dự án Eclipse có một hoặc nhiều tính chất để mô tả mục đích của các dự án. Giao diện ngƣời dùng thích ứng với tính chất này. Các dự án Rodin phải có Rodin-Nature. Nếu ngƣời dùng tạo một dự án Evnet-B trong Rodin, nó tự động có tính chất đúng. Nếu ngƣời dùng muốn thay đổi một dự án hiện có, có thể chỉnh sửa các tập tin .project và thêm XML sau phần <natures>:

<nature> org.rodinp.core.rodinnature </ chất> [7]

1. Khung nhìn Event-B

Hình 1 minh họa tổng quan cửa sổ mở của khung nhìn Event-B. Các phần dƣới đây xác định phần tử khác nhau của giao diện ngƣời dùng Rodin (ví dụ các khung nhìn) có thể nhìn thấy và giải thích chức năng của nó [7].

Học viên: Nông Thị Oanh - K18HTTT

Hình 1: Tổng quan về khung nhìn Event-B

1.1 Thanh menu (Menu bar)

Thanh menu cung cấp tập tin, các thao tác chỉnh sửa và các thao tác cụ thể Event-B hữu ích khác. Chúng tôi sẽ mô tả ngắn gọn các mục menu quan trọng nhất ở đây.

 Menu đổi tên:

Khi mở file máy hoặc file ngữ cảnh, các hành động sau sẵn có cho ngƣời sử dụng để tự động đổi tên các phần tử trong mô hình Event-B

Một hành động sẵn có khi chỉnh sửa file ngữ cảnh (xem hình 2):

 Tự động ghi nhãn các tiên đề: hành động này sẽ đổi tên chữ cái và số các tiên đề theo thứ tự xuất hiện.

Hình 2: Hành động tự động đổi tên cho các file ngữ cảnh

Ba hành động sẵn có cho file máy (hình 3):

 Tự động ghi nhãn bất biến: hành động này sẽ đổi tên chữ cái và số của bất biến theo thứ tự xuất hiện. (adsbygoogle = window.adsbygoogle || []).push({});

Học viên: Nông Thị Oanh - K18HTTT

các guard theo thứ tự xuất hiện,

 Tự động ghi nhãn hành động: hành động này sẽ đổi tên chữ cái và số các hành động theo thứ tự xuất hiện.

Hình 3: Các hành động tự động đổi tên cho các file máy

 Menu Event-B:

Khi mở một file máy hoặc file ngữ cảnh, một số wizard tạo ra các phần tử mô hình Event-B có sẵn cho ngƣời sử dụng [7].

1.2 Thanh Công cụ (Tool bar)

Thanh công cụ cung cấp các phím tắt cho các lệnh quen thuộc nhƣ lƣu trữ, in, lùi lại và làm lại. Thanh công cụ cũng cung cấp các phím tắt cho các wizard tạo ra các phần tử nhƣ các tiên đề, các hằng số, bộ đếm…[7].

1.3 Khung nhìn soạn thảo (Editor view)

Mỗi khi máy hoặc ngữ cảnh đƣợc tạo ra, một cửa sổ xuất hiện trong khu vực chỉnh sửa (minh họa hình 4)

Hình 4: Trình soạn thảo Event-B

Trình soạn thảo mô tả ở đây đƣợc thực hiện trong trình soạn thảo mặc định Rodin 2.4 (tháng 2 năm 2012) và vẫn có một số vấn đề nhỏ. Trình soạn thảo cấu trúc thay thế vẫn có sẵn.

Trình soạn thảo cho phép ngƣời dùng chỉnh sửa các phần tử mô hình hóa của ngữ cảnh là các gói phụ thuộc, tập mang, các hằng số và các tiên đề. Bằng

Học viên: Nông Thị Oanh - K18HTTT

cách kích chuột ở những nơi đƣợc xác định trƣớc, ngƣời dùng có thể tạo ra phần tử mô hình mới. Ví dụ, biểu tƣợng xuất hiện trực tiếp ở bên phải của tên của ngữ cảnh (trong trƣờng hợp này, tên của các bối cảnh là "ctx"). Đặt con trỏ của ngƣời dùng trực tiếp bên trái của biểu tƣợng và nhấp chuột phải. Chọn các phần tử mà ngƣời dùng muốn thêm từ menu Add Child nhƣ minh họa trong hình 5.

Các phần tử của máy có thể thêm vào bằng cách tƣơng tự.

Hình 5: Bổ sung thêm một phần tử mô hình hóa mới

Để loại bỏ một phần tử mô hình hóa, kích chuột phải vào phần tử mô hình hóa và chọn Delete. Ta cũng có thể thêm các phần tử mô hình hóa bằng cách sử dụng wizard [7].

Khi một lỗi đƣợc phát hiện trong một dự án, một dấu hiệu xuất hiện bên cạnh dòng với các vấn đề trong khung nhìn trình soạn thảo và thành phần bị lỗi trong Event-B Explorer cũng tƣơng tự nhƣ đánh dấu bằng . Các lỗi chính nó (ví dụ nhƣ một lỗi cú pháp) đƣợc hiển thị trong khung nhìn vấn đề Rodin. Bằng cách nhấp đúp vào câu lệnh lỗi, ngƣời dùng sẽ đƣợc chuyển tự động đến nơi mà các lỗi đã đƣợc phát hiện để ngƣời dùng có thể chỉnh sửa dễ dàng [7].

1.4 Khung nhìn phác thảo (Outline view)

Khung nhìn phác thảo hiển thị các phác thảo hoạt động của trình soạn thảo Event-B và danh sách phần tử nhƣ các tiên đề, các biến, …[7]

Học viên: Nông Thị Oanh - K18HTTT

Khung nhìn biểu tƣợng đƣợc thiết kế cung cấp cho ngƣời dùng một cách thuận tiện để thêm các biểu tƣợng toán học cho các biên tập mô hình khác nhau. Nếu một trình soạn thảo đƣợc mở và một trƣờng văn bản đang hoạt động (con trỏ nhấp nháy), nhấp chuột vào một biểu tƣợng sẽ chèn nó vào vị trí hiện tại (xem hình 6).

Mã ASCII tƣơng ứng với các biểu tƣợng trên đó di chuyển chuột cũng đƣợc hiển thị nhƣ một tooltip để ngƣời dùng cũng có thể học cách nhập ký hiệu trực tiếp [7].

Hình 6: Chèn một biểu tượng vào vị trí hiện tại.

1.6 Event-B Explorer

Các dự án có thể đƣợc tìm thấy trong các nền tảng Rodin trong Event-B Explorer. Điều này thƣờng nằm ở phía bên tay trái của màn hình nhƣ minh họa trong hình 7. Event-B Explorer chứa một danh sách tên của các dự án hiện tại. Bên cạnh mỗi tên dự án là một nút . Bằng cách nhấn nó, ngƣời ta có thể mở rộng một dự án và xem máy và ngữ cảnh mà nó chứa. Các biểu tƣợng ( hoặc ) bên cạnh tên thành phần xác định cho dù đó là một ngữ cảnh hoặc máy tƣơng ứng.

Khi mở rộng một máy hoặc một ngữ cảnh, ngƣời dùng có thể tìm hiểu phần tử của nó. Kích đúp vào một phần tử cụ thể (ví dụ nhƣ một biến) mở trình soạn thảo Event-B và đánh dấu vị trí của biến trong máy hoặc ngữ cảnh nhƣ minh họa trong hình 7. Hơn nữa, bộ chứng minh đƣợc hiển thị khi nhấn vào hình tam giác

Học viên: Nông Thị Oanh - K18HTTT

nhỏ bên cạnh nhãn Bộ chứng minh [7]. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 7: Kích đúp vào một phần tử mở ra trình soạn thảo Evnet--B và đánh dấu vị trí tương ứng.

2. Cấu trúc trình soạn thảo Event-B

Trình soạn thảo mô tả ở đây là soạn thảo mặc định Rodin 2.3. Để sử dụng trình soạn thảo này, kích chuột phải vào một tập tin máy hoặc ngữ cảnh trong Event-B Explorer và chọn Open With > Event-B Machine Editor.

Mỗi khi máy hoặc ngữ cảnh đƣợc tạo, một cửa sổ xuất hiện trong khu vực

Một phần của tài liệu Nghiên cứu và xây dựng công cụ hỗ trợ mô hình hóa hệ thống Triggers bằng event -B (Trang 39)