Luận văn: Nghiên cứu & Ứng dụng VDM++ cho Hệ thống IMP tại NTTData

Luận văn thạc sĩ: Nghiên cứu ứng dụng VDM cho mô hình hóa, kiểm thử hệ thống IMP tại NTTData Việt Nam. Tìm hiểu giải pháp hiệu quả.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Luận Văn Thạc Sĩ

2015

71
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

LỜI CAM ĐOAN

DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT

1. CHƯƠNG 1 – GIỚI THIỆU CHUNG

1.1. Giới thiệu về VDM

1.2. Cấu trúc class

1.3. Hàm khởi tạo (Constuctors)

1.4. Biến thể hiện (Instance Variables)

1.5. Hàm và Phương thức

1.6. Tính đồng thời (Concurrency)

1.7. Công cụ hỗ trợ VDM++

2. CHƯƠNG 2 – TỔNG QUAN VỀ DỰ ÁN

2.1. Giới thiệu về dự án

2.2. Hiện trạng nghiệp vụ

2.3. Mục đích xây dựng hệ thống IMP

2.4. Hệ thống IMP

2.5. Nền tảng hệ thống

2.6. Luồng nghiệp vụ hệ thống

2.7. Quy trình phát triển dự án. Quy trình phát triển hiện tại

2.8. Đánh giá vấn đề của dự án

2.9. Giải pháp tổng thể

3. CHƯƠNG 3 – ÁP DỤNG QUY TRÌNH MỚI VÀO DỰ ÁN IMP

3.1. Mô hình hóa thực thể dữ liệu

3.2. Mô hình hóa kiểu dữ liệu SQL

3.3. Mô hình hóa cấu trúc bảng

3.4. Mô hình hóa bảng dữ liệu

3.5. Mô hình hóa cơ sở dữ liệu

3.6. Mô hình hóa đặc tả hệ thống

3.7. Đặc tả kiến trúc

3.8. Đặc tả nghiệp vụ

3.9. Kiểm thử mô hình hóa

3.10. Kết quả thực nghiệm

3.11. Kinh nghiệm thực tiễn

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan VDM Mô Hình Hóa và Kiểm Thử Hệ Thống IMP

Phương pháp phát triển Vienna (VDM) là một trong những phương pháp mô hình hóa hệ thống hướng đối tượng lâu đời nhất. Nó bao gồm một nhóm các ngôn ngữ trên nền tảng toán học và các công cụ hỗ trợ việc mô tả và phân tích hệ thống tại bước thiết kế. Việc xây dựng và phân tích mô hình hóa hệ thống giúp cho việc nhận biết những đặc tả của hệ thống IMP còn thiếu sót hoặc chưa rõ ràng, và đảm bảo một mức độ tin tưởng trong quá trình phát triển, đặc biệt là vấn đề an toàn và bảo mật. VDM đã được ứng dụng nhiều trong công nghiệp, trong một số trường hợp, người sử dụng không phải là những chuyên gia trong các lĩnh vực chuyên nghiệp và logic. Theo kinh nghiệm cho thấy, việc mô hình hóa sẽ làm tăng chi phí ở giai đoạn thiết kế, nhưng nó có thể giúp rút ngắn giai đoạn phát triển nhờ việc hạn chế công sức làm lại do những lỗi trong giai đoạn thiết kế [6]. Trong chuẩn ISO, có một thông tin bổ sung về framework cho việc mô hình hóaVDM-SL. Ngôn ngữ VDM++ mở rộng của VDM-SL, được dùng để hỗ trợ đặc tả hệ thống IMP hướng đối tượng, và mô hình cấu trúc trong những định nghĩa class, mỗi class có những thành phần tương tự một đặc tả VDM-SL, với các biến trạng thái đóng vai trò của biến thể hiện và các hoạt động đóng vai trò là một phần của các phương thức. Các mô hình dữ liệu trong VDM++ được thành lập dựa trên các kiểu dữ liệu trừu tượng cơ bản cùng với một tập hợp các kiểu khởi tạo. Các kiểu dữ liệu cơ bản bao gồm kiểu số (tự nhiên, số nguyên, số hữu tỉ và số thực) và kiểu ký tự.

1.1. Lịch Sử và Các Loại VDM VDM SL VDM VDM RT

Phương thức phát triển Vienna (Vienna Development Method - VDM) được phát triển đầu tiên bởi IBM vào năm 1970, là một trong những phương pháp hình thức được thành lập lâu đời nhất. VDM có 3 loại: VDM-SL (VDM Specification Language) một chuẩn ISO; VDM++ một mở rộng hướng đối tượng của VDM-SL; và mới đây thêm VDM-RT, một mở rộng của VDM++ để mô hình hóa những hệ thống nhúng phân tán thời gian thực. VDM-RT là một ngôn ngữ mô hình hóa với những tập con có thể thực thi được sử dụng để miêu tả những hệ thống nhúng thời gian thực phân tán [9,1]. VDM-SL: Đặc tả VDM-SL có cấu trúc rất đơn giản, đó là Module, mang tính diễn tả bài toán bằng Structure. Một module bao gồm một tập của types, constants, functions, operations và state (trạng thái). Diễn tả bài toán dạng module, một module bao gồm một tập của types, constants, functions, operations và state (trạng thái). Phù hợp với bài toán phân tích theo cấu trúc, theo module và cài đặt ngôn ngữ lập trình kiểu cấu trúc. VDM++: Đặc tả VDM++ là mở rộng của VDM-SL có cấu trúc dựa trên class, làm việc với diễn tả bài toán thông qua Class, hướng đối tượng. Một class bao gồm một tập hợp của types, constants, functions, operations và state. Phù hợp phân tích hệ thống hướng đối tượng. VDM-RT: Đặc tả VDM-RTVDM++ với hệ thống IMP có môi trường rằng buộc, áp dụng vào hệ thống nhúng thời gian thực và hệ thống IMP phân tán. Điểm khác biệt chính giữa VDM-SLVDM++ là cách thức mà cấu trúc được xử lý. VDM-SL có một phần mở rộng mô-đun thông thường, trong khi đó VDM++ có một cơ chế cấu trúc hướng đối tượng truyền thống với các class và sự thừa kế [10].

1.2. Cấu Trúc Class trong VDM Biến Thể Hiện Hàm Phương Thức

Một mô hình VDM++ bao gồm một tập các class. Một class mô tả một tập các đối tượng có các thành phần dùng chung như thuộc tính hoặc phương thức. Mô tả class cung cấp một khuôn mẫu cho các đối tượng được tạo ra từ class đó. Một số thành phần sẽ được nhìn thấy bởi các đối tượng khác và một số thành phần chỉ được sử dụng bởi chính đối tượng đó, điều này được khai báo bằng cách sử dụng phạm vi truy cập [12]. Trong một class bao gồm nhiều khối, mỗi khối được bắt đầu bởi một từ khóa chỉ ra loại các thành phần trong khối đó. Mọi thành phần được định nghĩa trong một khối được coi như một thành phần của class. Các khối được mô tả như sau: Biến thể hiện (Instance variables): mô hình trạng thái của một đối tượng. Kiểu (Types): định nghĩa các kiểu dữ liệu dùng cho đối tượng. Giá trị (Values): định nghĩa các hằng số. Hàm (Functions): định nghĩa các hàm mà không tác động đến các biến. Phương thức (Operations): định nghĩa các phương thức có thể thay đổi giá trị các biến. Khi một đối tượng là chủ động, nó có 1 luồng để khai báo tính chủ động, đối tượng này sẽ được gọi khi bắt đầu một luồng xử lý. Ràng buộc đồng bộ (Synchronisation constraints): VDM++ hỗ trợ mô hình hóa một hệ thống IMP phần mềm đồng thời (concurrent software system), điều này có nghĩa là một đối tượng có thể tồn tại đồng thời và hoạt động song song. Khối này xác định sự ràng buộc trong việc trao đổi giữa những đối tượng đồng thời được ràng buộc.

II. Thách Thức Mô Hình Hóa IMP Giải Pháp VDM

Vấn đề chung đối với các nhóm lập trình đó là coi nhẹ giai đoạn thiết kế và viết tài liệu, thường chú trọng đi vào lập trình hệ thống IMP trong khi phần tài liệu thiết kế chưa hoàn thành hoặc chưa được kiểm tra về chất lượng. Vì vậy, trong quá trình phát triển gặp rất nhiều vấn đề, thời gian phải làm lại tốn nhiều và các giải pháp đưa ra thường thiếu tính tổng quát và tối ưu. Những rủi ro gặp phải: Thiết kế không khả thi và thiết kế thiếu trường hợp: người phân tích sẽ phân tích và thiết kế chức năng nghiệp vụ theo yêu cầu người dùng, đôi lúc không tính toán đến kiến trúc hệ thống IMP dẫn đến lỗi khi thực hiện cài đặt và phải làm lại. Tài liệu thiết kế không đồng nhất và nhập nhằng: trong tài liệu thiết kế thường không đồng nhất về cách thức đặt tên biến, độ dài các trường dữ liệu, …. Khi phát triển mỗi người lại thực hiện theo từng module mình được giao, nên có thể dẫn đến phải thay đổi thiết kế và viết mã lại khi thực hiện test tích hợp, làm kéo dài thời gian phát triển, có thể làm chậm tiến độ dự án. Hàm/thư viện dùng chung không được cập nhật đầy đủ: thay đổi thiết kế của các hàm dùng chung thường bị sai sót do không cập nhật lại toàn bộ các chức năng liên quan, hoặc việc khai báo về số lượng biến, kiểu dữ liệu của các hàm dùng chung thường bị sai trong các thiết kế có liên quan do việc review bằng mắt thường rất khó phát hiện và nhớ được. Để giải quyết những vấn đề trên, giải pháp được đưa ra là: Tăng thời gian thiết kế để đảm bảo chất lượng. Áp dụng việc mô hình hóa bằng VDM++, sử dụng Overture để kiểm tra tính đúng đắn (đúng yêu cầu, thống nhất thiết kế, …) của tài liệu thiết kế.

2.1. Vấn Đề của Dự Án IMP Thiết Kế Tài Liệu và Cập Nhật

Vấn đề chung đối với các nhóm lập trình ở Việt Nam đó là coi nhẹ giai đoạn thiết kế và viết tài liệu, thường chú trọng đi vào lập trình hệ thống IMP trong khi phần tài liệu thiết kế chưa hoàn thành hoặc chưa được kiểm tra về chất lượng. Vì vậy, trong quá trình phát triển gặp rất nhiều vấn đề, thời gian phải làm lại tốn nhiều và các giải pháp đưa ra thường thiếu tính tổng quát và tối ưu. Những rủi ro gặp phải: Thiết kế không khả thi và thiết kế thiếu trường hợp: người phân tích sẽ phân tích và thiết kế chức năng nghiệp vụ theo yêu cầu người dùng, đôi lúc không tính toán đến kiến trúc hệ thống IMP dẫn đến lỗi khi thực hiện cài đặt và phải làm lại. Tài liệu thiết kế không đồng nhất và nhập nhằng: trong tài liệu thiết kế thường không đồng nhất về cách thức đặt tên biến, độ dài các trường dữ liệu, …. Khi phát triển mỗi người lại thực hiện theo từng module mình được giao, nên có thể dẫn đến phải thay đổi thiết kế và viết mã lại khi thực hiện test tích hợp, làm kéo dài thời gian phát triển, có thể làm chậm tiến độ dự án. Hàm/thư viện dùng chung không được cập nhật đầy đủ: thay đổi thiết kế của các hàm dùng chung thường bị sai sót do không cập nhật lại toàn bộ các chức năng liên quan, hoặc việc khai báo về số lượng biến, kiểu dữ liệu của các hàm dùng chung thường bị sai trong các thiết kế có liên quan do việc review bằng mắt thường rất khó phát hiện và nhớ được.

2.2. Giải Pháp VDM Kiểm Soát Thiết Kế và Mô Hình Hóa Hệ Thống IMP

Để giải quyết các vấn đề trên, các giải pháp được đưa ra bao gồm: Tăng cường tương tác giữa các thành viên trong nhóm thiết kế, yêu cầu cùng xem xét và đánh giá trong quá trình thiết kế. Đồng thời, thực hiện kiểm tra chéo tài liệu thiết kế để đảm bảo tính chính xác và nhất quán. Bổ sung thời gian cho giai đoạn thiết kế (giai đoạn đầu dự án) để đảm bảo chất lượng tài liệu thiết kế, từ đó giảm thời gian lập trình và kiểm thử. Thay vì kiểm tra thủ công tính đồng nhất giữa các thiết kế, áp dụng việc mô hình hóa bằng VDM++ và sử dụng Overture để kiểm tra tính đúng đắn (đúng yêu cầu, thống nhất thiết kế, …) của tài liệu thiết kế. Những giải pháp này giúp nâng cao chất lượng thiết kế, giảm thiểu rủi ro và tối ưu hóa quy trình phát triển hệ thống IMP.

III. Ứng Dụng VDM Trong Quy Trình Phát Triển Dự Án IMP

Nhằm nâng cao chất lượng của tài liệu thiết kế, giảm những lỗi xảy ra do việc phân tích, sớm đánh giá độ phức tạp của các module nghiệp vụ, trong dự án này, chúng tôi áp dụng VDM++ vào trong quá quy trình phát triển phần mềm hiện tại của công ty. VDM++ được áp dụng để mô hình hóa các module quan trọng, dùng chung của hệ thống IMP như quy trình phê duyệt qua các cấp, lập kế hoạch kiểm tra. Sử dụng Modelio Tools để mô hình hóa các class và mô hình hóa các lớp trong VDM++ sử dụng Overture Tools. Việc sử dụng hai công cụ này trong quá trình phân tích, thiết kế sẽ giúp tiết kiệm thời gian hơn vì hai công cụ này này có thể hỗ trợ import/export theo định dạng file .

3.1. Mô Hình Chữ V và Giai Đoạn Mô Hình Hóa VDM

Quy trình hiện tại được áp dụng thêm bước mô hình hóa bằng VDM++. Quy trình phát triển hệ thống IMP được thêm một quy trình kiểm soát chất lượng tài liệu thiết kế bằng quy trình thực hiện mô hình hóa bằng VDM++. Quy trình này nhằm đảm bảo chất lượng trong giai đoạn đặc tả yêu cầu, thiết kế chi tiết và hạn chế việc phải làm lại (rework) bằng việc thực hiện kiểm thử ở giai đoạn thiết kế để đảm bảo chất lượng tài liệu thiết kế.

3.2. Các Bước Chính trong Quy Trình Mô Hình Hóa VDM

Quy trình thực hiện mô hình hóa bằng VDM++ bao gồm các bước chính sau: Tạo bảng tiêu chuẩn thiết kế. Thu thập và phân loại yêu cầu chức năng và phi chức năng của hệ thống IMP. Xác định sơ đồ cấu trúc của hệ thống IMP. Đặc tả yêu cầu. Tạo tài liệu luồng nghiệp vụ của hệ thống IMP dựa trên thực tế sử dụng từ người dùng. Tạo các tài liệu định nghĩa màn hình và báo cáo của hệ thống IMP dựa trên luồng nghiệp vụ của hệ thống IMP. Tạo biểu đồ quan hệ thực thể ERD. Tạo bảng tiêu chuẩn viết mã. Tạo tài liệu đặc tả chi tiết màn hình, bao gồm: Thiết kế chi tiết những rằng buộc dữ liệu người dùng, trường dữ liệu tương ứng. Phân tích luồng xử lý dữ liệu (Activity Diagram). Thực hiện mô hình hóa các module nghiệp vụ và các chức năng bằng VDM++. Tạo đặc tả hình thức cho các thành phần của hệ thống IMP.

3.3. Vai Trò và Phạm Vi Công Việc của Các Nhóm trong Dự Án

Trong quy trình phát triển phần mềm mới, các nhóm vai trò trong dự án cần xác định rõ phạm vi công việc của mình để đảm bảo hiệu quả và chất lượng. Nhóm phân tích nghiệp vụ sẽ chịu trách nhiệm thu thập, phân tích yêu cầu của khách hàng và xây dựng tài liệu đặc tả chi tiết. Nhóm thiết kế hệ thống sẽ dựa trên tài liệu đặc tả để thiết kế kiến trúc hệ thống, cơ sở dữ liệu và các thành phần khác. Nhóm mô hình hóa VDM++ sẽ sử dụng các công cụ như OvertureModelio để mô hình hóa các module nghiệp vụ quan trọng và kiểm tra tính đúng đắn của thiết kế. Nhóm lập trình sẽ triển khai các module phần mềm dựa trên tài liệu thiết kế và mô hình VDM++. Cuối cùng, nhóm kiểm thử sẽ thực hiện kiểm tra tích hợp và kiểm thử hệ thống để đảm bảo chất lượng phần mềm.

IV. Công Cụ Hỗ Trợ VDM Overture và Modelio cho IMP

Việc kết hợp giữa VDM++ và UML (biểu đồ lớp và biểu đồ tuần tự) giúp cho việc sử dụng phần mềm vào hỗ trợ phân tích hệ thống mô hình hóa. Một trong những giới hạn của UML là chỉ cho phép xem xét được cấu trúc của các class. Bằng việc sử dụng OvertureModelio, người phân tích thiết kế có thể thực hiện mô hình UML trong Modelio, sau đó chuyển sang VDM++ bằng cách import mô hình UML từ Modelio vào Overture và export lại UML.

4.1. Modelio Mô Hình Hóa UML và Xuất Định Dạng .UML

Modelio là công cụ hỗ trợ vẽ UML diagrams, import/export biểu đồ UML, được sử dụng kết hợp với Overture để mô hình hóa một hệ thống IMP phần mềm. Modelio được cung cấp bởi công ty Softeam, có 2 phiên bản: thương mại và mã nguồn mở. Cũng tương tự như Overture, Modelio được phát triển trên nền tảng Eclipse. Bắt đầu việc mô hình hóa bằng việc tạo biểu đồ lớp UML trong Modelio. Sau đó, để chuyển đổi sang VDM++, chúng ta cần phải xuất biểu đồ lớp UML sang file định dạng .uml.

4.2. Overture IDE Hỗ Trợ Phát Triển và Phân Tích VDM

Overture là một IDE miễn phí hỗ trợ việc phát triển và phân tích hệ thống mô hình hóa bằng VDM++, được phát triển bởi cộng đồng tình nguyện viên từ các nhà khoa học nghiên cứu và sinh viên. Bộ công cụ Overture hỗ trợ cả ba loại VDM: VDM-SL, VDM++VDM-RT. Overture cung cấp các tính năng nổi bật như: Gỡ lỗi, Kiểm thử tổ hợp (Combinatorial Testing), tự động sinh mã Java, Chuyển đổi lại UML. Việc gỡ lỗi, kiểm tra được thực hiện trong quá trình phiên dịch mô hình hóa VDM.

V. Thực Nghiệm và Đánh Giá VDM Cho Hệ Thống IMP

Sau khi áp dụng quy trình mới với VDM++, việc phát hiện các lỗi tiềm ẩn và các lỗi về thiết kế logic của hệ thống IMP được thực hiện một cách hiệu quả hơn. Các lỗi liên quan đến kiểu dữ liệu, rằng buộc dữ liệu, và các lỗi về nghiệp vụ được phát hiện sớm trong giai đoạn thiết kế. Thêm vào đó, việc sử dụng VDM++ giúp giảm thiểu sự nhập nhằng và đảm bảo tính nhất quán trong tài liệu thiết kế. Điều này giúp cho quá trình lập trình trở nên dễ dàng hơn và giảm thiểu thời gian làm lại.

5.1. Kết Quả Thực Nghiệm Phát Hiện Lỗi Sớm với VDM

Thực nghiệm cho thấy việc áp dụng VDM++ giúp phát hiện lỗi sớm trong giai đoạn thiết kế, đặc biệt là các lỗi liên quan đến kiểu dữ liệu và rằng buộc dữ liệu. Việc này giúp giảm thiểu đáng kể thời gian và chi phí sửa lỗi so với việc phát hiện lỗi trong giai đoạn lập trình hoặc kiểm thử.

5.2. Kinh Nghiệm Thực Tế Ưu Điểm và Thách Thức khi Triển Khai

Kinh nghiệm thực tế cho thấy VDM++ giúp tăng cường tính chính xác và rõ ràng của tài liệu thiết kế. Tuy nhiên, việc triển khai VDM++ đòi hỏi người tham gia phải có kiến thức về formal methods và các công cụ hỗ trợ. Do đó, cần có sự đào tạo và hướng dẫn để đảm bảo hiệu quả của việc áp dụng VDM++.

VI. Kết Luận và Hướng Phát Triển VDM trong Tương Lai

Luận văn đã trình bày về phương pháp đặc tả hình thức sử dụng VDM++, giúp phát hiện các vấn đề tiềm ẩn, các lỗi thời gian thực và phát hiện các lỗi thiết kế sớm khi áp dụng vào dự án cụ thể IMP. Cần tiếp tục nghiên cứu và phát triển các công cụ và phương pháp để việc sử dụng VDM++ trở nên dễ dàng và hiệu quả hơn. Đồng thời, cần tăng cường đào tạo và chuyển giao công nghệ để VDM++ được ứng dụng rộng rãi trong ngành công nghiệp phần mềm.

6.1. Tổng Kết Về Nghiên Cứu và Ứng Dụng VDM

Luận văn đã giới thiệu tổng quan về VDM++, trình bày các thách thức trong việc mô hình hóa hệ thống IMP, và đề xuất giải pháp sử dụng VDM++ để giải quyết các thách thức này. Kết quả thực nghiệm cho thấy VDM++ giúp phát hiện lỗi sớm và tăng cường tính chính xác của tài liệu thiết kế.

6.2. Hướng Phát Triển Tiếp Theo Mở Rộng và Tối Ưu VDM

Hướng phát triển tiếp theo của VDM++ bao gồm việc mở rộng khả năng hỗ trợ cho các loại hệ thống IMP khác nhau, tối ưu hóa các công cụ hỗ trợ để việc sử dụng VDM++ trở nên dễ dàng và hiệu quả hơn, và nghiên cứu các phương pháp mới để kết hợp VDM++ với các phương pháp phát triển phần mềm khác.

24/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1 – GIỚI THIỆU CHUNG 1. Giới thiệu về VDM 1. Khái niệm Phương pháp phát triển Vienna (Vienna Development Method) là một trong những phương pháp mô hình hóa hướng đối tượng lâu đời nhất cho việc phát triển phần mềm. Nó bao gồm một nhóm các ngôn ngữ trên nền tảng toán học và các công cụ hỗ trợ việc mô tả và phân tích mô hình hệ thống tại bước thiết kế.

Việc xây dựng và phân tích mô hình giúp cho việc nhận biết những đặc tả của hệ thống còn thiếu sót hoặc chưa rõ ràng, và đảm bảo một mức độ tin tưởng trong quá trình phát triển, đặc biệt là vấn đề an toàn và bảo mật. VDM đã được ứng dụng nhiều trong công nghiệp, trong một số trường hợp, người sử dụng không phải là những chuyên gia trong các lĩnh vực chuyên nghiệp và logic. Theo kinh nghiệm cho thấy, việc mô hình hóa sẽ làm tăng chi phí ở giai đoạn thiết kế, nhưng nó có thể giúp rút ngắn giai đoạn phát triển nhờ việc hạn chế công sức làm lại do những lỗi trong giai đoạn thiết kế [6]. Mô hình hóa cấu trúc (Modeling structure) Trong VDM, mô hình bao gồm việc mô tả dữ liệu trên các phương thức và chức năng của hệ thống mà nó được thực thi.

Dữ liệu bao gồm việc nhập/xuất từ bên ngoài và dữ liệu trạng thái bên trong. Chức năng bao gồm các hoạt động có thể được gọi tại giao diện hệ thống cũng như các chức năng phụ, hỗ trợ việc thực hiện các hoạt động. Trong chuẩn ISO, có một thông tin bổ sung về framework cho việc mô hình hóa – VDM-SL. Ngôn ngữ VDM++ mở rộng của VDM-SL, được dùng để hỗ trợ đặc tả hệ thống hướng đối tượng, và mô hình cấu trúc trong những định nghĩa class, mỗi class có những thành phần tương tự một đặc tả VDM-SL, với các biến trạng thái đóng vai trò của biến thể hiện và các hoạt động đóng vai trò là một phần của các phương thức.

Mô hình hóa dữ liệu (Modeling data) Các mô hình dữ liệu trong VDM được thành lập dựa trên các kiểu dữ liệu trừu tượng cơ bản cùng với một tập hợp các kiểu khởi tạo. Các kiểu dữ liệu cơ bản bao gồm kiểu số (tự nhiên, số nguyên, số hữu tỉ và số thực) và kiểu ký tự. Chú ý, trong nguyên tắc trừu tượng của VDM thì không xác định giá trị lớn nhất cho kiểu số hoặc kiểu số thực. Nếu người dùng muốn xác định bởi yêu cầu của việc mô hình hóa, thì có thể xác định điều này bằng việc quy định tính bất biến (invariant).

Bất biến là các biểu thức logic đại diện cho các điều kiện được tôn trọng bởi các tất cả các thành phần kiểu dữ liệu mà chúng đính kèm [6]. TIEU LUAN MOI download : skknchat@gmail. Các loại VDM Phương thức phát triển Vienna (Vienna Development Method - VDM) được phát triển đầu tiên bởi IBM vào năm 1970, là một trong những phương pháp hình thức được thành lập lâu nhất. VDM có 3 loại: VDM-SL (VDM Specification Language) một chuẩn ISO; VDM++ một mở rộng hướng đối tượng của VDM-SL; và mới đây thêm VDM-RT, một mở rộng của VDM++ để mô hình hóa những hệ thống nhúng phân tán thời gian thực.

VDM-RT là một ngôn ngữ mô hình hóa với những tập con có thể thực thi được sử dụng để miêu tả những hệ thống nhúng thời gian thực phân tán [9,1]. - VDM-SL: Đặc tả VDM-SL có cấu trúc rất đơn giản, đó là Module, mang tính diễn tả bài toán bằng Structure. Một module bao gồm một tập của types, constants, functions, operations và state (trạng thái). Diễn tả bài toán dạng module, một module bao gồm một tập của types, constants, functions, operations và state (trạng thái).

Phù hợp với bài toán phân tích theo cấu trúc, theo module và cài đặt ngôn ngữ lập trình kiểu cấu trúc. - VDM++: Đặc tả VDM++ là mở rộng của VDM-SL có cấu trúc dựa trên class, làm việc với diễn tả bài toán thông qua Class, hướng đối tượng. Một class bao gồm một tập hợp của types, constants, functions, operations và state. Phù hợp phân tích hướng đối tượng.

- VDM-RT: Đặc tả VDM-RT là VDM++ với hệ thống có môi trường rằng buộc, áp dụng vào hệ thống nhúng thời gian thực và hệ thống phân tán. Điểm khác biệt chính giữa VDM-SL và VDM++ là cách thức mà cấu trúc được xử lý. VDM-SL có một phần mở rộng mô-đun thông thường, trong khi đó VDM++ có một cơ chế cấu trúc hướng đối tượng truyền thống với các class và sự thừa kế [10]. VDM ++ Một mô hình VDM++ bao gồm một tập các class.

Một class mô tả một tập các đối tượng có các thành phần dùng chung như thuộc tính hoặc phương thức. Mô tả class cung cấp một khuôn mẫu cho các đối tượng được tạo ra từ class đó. Một số thành phần sẽ được nhìn thấy bởi các đối tượng khác và một số thành phần chỉ được sử dụng bởi chính đối tượng đó, điều này được khai báo bằng cách sử dụng phạm vi truy cập [12]. Cấu trúc class Cấu trúc của một class được mô tả như dưới đây.

Trong một class bao gồm nhiều khối, mỗi khối được bắt đầu bởi một từ khóa chỉ ra loại các thành phần trong khối đó. Mọi thành phần được định nghĩa trong một khối được coi như một thành phần của class. Các khối được mô tả như sau:  Biến thể hiện (Instance variables): mô hình trạng thái của một đối tượng.  Kiểu (Types): định nghĩa các kiểu dữ liệu dùng cho đối tượng.

 Giá trị (Values): định nghĩa các hằng số. TIEU LUAN MOI download : skknchat@gmail.com 12  Hàm (Functions): định nghĩa các hàm mà không tác động đến các biến.  Phương thức (Operations): định nghĩa các phương thức có thể thay đổi giá trị các biến. Khi một đối tượng là chủ động, nó có 1 luồng để khai báo tính chủ động, đối tượng này sẽ được gọi khi bắt đầu một luồng xử lý.

 Ràng buộc đồng bộ (Synchronisation constraints): VDM++ hỗ trợ mô hình hóa một hệ thống phần mềm đồng thời (concurrent software system), điều này có nghĩa là một đối tượng có thể tồn tại đồng thời và hoạt động song song. Khối này xác định sự ràng buộc trong việc trao đổi giữa những đối tượng đồng thời được ràng buộc. class class-name instance variables Internal object state. types values functions Definitions operations.

thread Dynamic behaviour. sync Synchronization control. end class-name Hình 1. Cấu trúc class trong VDM++ Giữa các lớp có những mối quan hệ kế thừa, lớp kế thừa được gọi là subclass và lớp được kế thừa được gọi là superclass.

Định nghĩa lớp kế thừa sẽ được mở rộng với các thành phần của lớp cha (được kế thừa) mà cho phép kế thừa bằng cách khai báo là public hoặc protected. Một class có thể kế thừa một hoặc nhiều lớp. Có một giới hạn trọng việc đa thừa kế là chỉ duy nhất một lớp cha có khai báo luồng. Cấu trúc một lớp thừa kế như dưới đây: TIEU LUAN MOI download : skknchat@gmail.com 13 class class name is subclass of sc1, sc2,.

end class name Hình 1. Cú pháp khai báo lớp thừa kế 1. Phạm vi truy cập (Access Modifier) Mỗi khai báo thành phần bên trong một class có thể có một phạm vi truy cập. Trong VDM++ có 3 loại phạm vi truy cập là: private, protected và public.

Phạm vi truy cập mặc định của tất cả các thành phần là private. Phạm vi truy cập không thể được giới hạn lại ở các lớp kế thừa. Ví dụ, một lớp kế thừa không thể ghi đè phạm vi truy cập của một phương thức ở lớp cha được khai báo public thành private. Static có thể được sử dụng để khai báo các biến độc lập với một thể hiện cụ thể của lớp.

Biến static có thể được truy cập thông qua tên class thay vì thông qua một thể hiện của class. Một thành phần static (tĩnh) của class không cho phép các thành phần không phải static truy cập. Trong VDM++ thì khối value và type mặc định là static. Hàm khởi tạo (Constuctors) Mỗi class có thể có một số hàm khởi tạo.

Hàm khởi tạo được phân biệt với các hàm khác bằng tên class và kiểu trả về tương tự. Việc trả về kết quả không cần phải rõ ràng và hàm khởi tạo sẽ được gọi khi một thể hiện của lớp được tạo mới. Biến thể hiện (Instance Variables) Trạng thái của một đối tượng được mô hình hóa bằng ý nghĩa của các biến thể hiện. Khối định nghĩa các biến thể hiện trong một class có định dạng như sau: class class name instance variables instance variable definition 1; instance variable definition 2;.

instance variable definition n end class name Hình 1. Cú pháp khai báo biến thể hiện TIEU LUAN MOI download : skknchat@gmail.com 14 Tính đồng nhất của các thuộc tính được mô hình hòa là bất biến (invariant) trong VMD++. Trong trường hợp cần giới hạn giá trị cho các biến thể hiện hoặc quy định mối liên hệ giữa chúng thì VDM++ hỗ trợ việc khai báo rằng buộc đối với các giá trị của biến thể hiện. Một định nghĩa bất biến theo ngay sau khai báo biến thể hiện, có cấu trúc như sau: class class name instance variables instance variable definition 1; instance variable definition 2;.

instance variable definition n; inv expression using the instance variables end class name Hình 1. Cú pháp khai báo tính bất biến Ví dụ, ta định nghĩa một class mô hình hóa một đối tượng người, với các thuộc tính là tên và tuổi. Trong đó, tuổi phải đảm bảo rằng buộc là lớn hoặc bằng không tuổi và không lớn hơn 99 tuổi. Điều này có thể được định nghĩa như sau: class Person types string = seq of char instance variables name: string := []; age: int := 0; inv 0 <= age and age <= 99; end Person Hình 1.

Ví dụ khai báo rằng buộc biến thể hiện bằng biểu thức INV Thuộc tính bất biến này có hiệu lực tại mọi thời điểm đối với các thể hiện của lớp. Mọi việc gán giá trị mới cho biến điều phải được kiểm tra thỏa mãn rằng buộc đã khai báo. Bằng việc khai báo tính bất biến của các biến thể hiện, VDM++ đã cho phép mô hình hóa các rằng buộc của các thuộc tính của hệ thống phần mềm trong quá trình thiết kế hệ thống. TIEU LUAN MOI download : skknchat@gmail.com 15 Biến thể hiện chỉ có thể được truy cập bởi các thành phần trong class nó khai báo.

Để đọc hoặc thay đổi giá trị của biến thể hiện từ bên ngoài class, cần phải khai báo các phương thức truy cập. Ví dụ, để lấy tên của một người, ta khai báo hàm GetName như sau: class Person. instance variables name: string := [];. operations public GetName: () ==> string GetName () == return name end Person Hình 1.

Ví dụ cài đặt hàm truy cập biến cục bộ 1.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ