Tải bản đầy đủ (.pdf) (73 trang)

Kiểm chứng các tính chất thời gian thực cho hệ thống đồng thời bằng RT-SPIN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.05 MB, 73 trang )



ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




NGUYỄN TÀI TUẤN



KIỂM CHỨNG CÁC TÍNH CHẤT THỜI GIAN THỰC
CHO HỆ THỐNG ĐỒNG THỜI BẰNG RT - SPIN



LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN





Hà Nội, 2013


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




NGUYỄN TÀI TUẤN


KIỂM CHỨNG CÁC TÍNH CHẤT THỜI GIAN THỰC
CHO HỆ THỐNG ĐỒNG THỜI BẰNG RT - SPIN

Ngành: Công nghệ Thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số: 60 48 10

LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN


NGƢƠ
̀
I HƢƠ
́
NG DÂ
̃
N KHOA HO
̣
C: TS. Nguyễn Trƣờng Thắng


Hà Nội, 2013
iii

MỤC LỤC

Nội dung

Lời cảm ơn i
Lời cam đoan ii
MỤC LỤC iii
Danh mục hình vẽ v
Danh mục ký hiệu, từ viết tắt vi
Chƣơng 1: Mở đầu 1
Chƣơng 2 Cơ sở kiểm chứng mô hình 3
2.1 Kiểm chứng dựa trên mô hình 3
2.1.1 Khái niệm 3
2.1.2 Các bƣớc thực hiện 5
2.2 Ngôn ngữ Promela và Spin 5
2.2.1 Ngôn Ngữ Promela 5
2.2.2 Spin 7
2.3 Giới thiệu về hệ thống thời gian thực 11
2.3.1 Khái niệm 11
2.3.2 Đặc điểm của hệ thống thời gian thực 12
2.3.3 Cấu tạo hệ thời gian thực 13
2.3.4 Vì sao chọn hệ thời gian thực 13
2.4 Kết luận 13
Chƣơng 3 - Otomat thời gian 15
3.1 Giới thiệu 15
3.2 Otomat ω 16
3.3 Otomat thời gian 18
3.3.1 Ngôn ngữ thời gian 19
3.3.2 Bảng chuyển trạng thái với các ràng buộc thời gian 20
3.3.3 Các ràng buộc đồng hồ và đồng hồ biên dịch 22
3.3.4 Các bảng chuyển trạng thái thời gian 22
3.3.5 Ngôn ngữ hình thức thời gian 23
iv


3.3.6 Các tính chất của ngôn ngữ hình thức thời gian 25
3.3.7 Otomat Muller thời gian 27
3.4 Kiểm tra tính rỗng 28
3.4.1 Giới hạn đến các hằng nguyên 28
3.4.2 Các miền Đồng hồ 28
3.3.3 Otomat miền 30
3.3.4 Cấu trúc không thời gian 33
3.5 Otomat thời gian xác định 34
3.5.1 Định nghĩa 34
3.5.2 Các tính chất đóng 36
3.5.3 Sự biểu cảm 37
3.6 Ví dụ về kiểm chứng 38
3.7 Kết luận 41
Chƣơng 4 Tích hợp thời gian với Spin 42
4.1 Giới thiệu 42
4.2 Mở rộng Spin và Promela với thời gian thực 43
4.2.1 Ngôn ngữ thời gian và Otomat Buchi thời gian 43
4.2.2 Ngữ nghĩa trong Promela không có thời gian và có thời gian 44
4.2.3 Mở rộng Spin với thời gian thực 45
4.2.4 Định nghĩa TBA dựa trên chƣơng trình Promela thời gian thực 46
4.3 Mở rộng Spin và Promela với thời gian rời rạc 47
4.3.1 Mô hình thời gian rời rạc 47
4.3.2 Cú pháp Spin với mô hình thời gian rời rạc 48
Chƣơng 5 Thực nghiệm Spin với hệ thống thời gian thực 51
5.1 Thực nghiệm kiểm chứng giao thức truyền và nhận thông báo song song 51
5.2 Thực nghiệm kiểm chứng giao thức hệ thống Sapi 57
5.1 Thực nghiệm kiểm chứng Train-Gate-Controller 61
5.4 Kết luận 64
KẾT LUẬN 66
TÀI LIỆU THAM KHẢO 67



v

Danh mục bảng biểu

Bảng 2.1: Khả năng thực hiện của các câu lệnh trong Promela
Bảng 3.1: Các loại Otomat thời gian
Bảng 3.2: Các loại otomat ω
Danh mục hình vẽ
Hình 2.1 : Vấn đề với kiểm thử
Hình 2.2 : Kiểm thử mô hình
Hình 3.1 : Otomat Buchi chấp nhận (a+b)
*
a
ω

Hình 3.2 : Otomat Muller xác định chấp nhận (a+b)
*
a
ω

Hình 3.3 : Ví dụ bảng chuyển trạng thái thời gian
Hình 3.4 : Bảng chuyển trạng thái thời gian với 2 đồng hồ (đồng hồ)
Hình 3.5 : Otomat Buchi thời gian chấp nhận L
crt

Hình 3.6 : Otomat thời gian mô hình hóa hành vi lặp định kỳ
Hình 3.7 : Otomat thời gian chấp nhận ngôn ngữ L
converge


Hình 3.8 : Otomat Muller thời gian
Hình 3.9 : Miền đồng hồ
Hình 3.10: Otomat A0 và Otomat miền tƣơng ứng
Hình 3.11: Otomat Muller xác định
Hình 3.12: Mô hình Tàu
Hình 3.13: Mô hình cổng
Hình 3.14: Bộ điều khiển
Hình 3.15: Tính chất an toàn
Hình 3.16: Tính chất sống động thời gian thực
Hình 4.1 : Các thực thể của giao thức gửi và nhận song song
Hình 4.2: Mô hình hệ thống Sapi

vi

Danh mục ký hiệu, từ viết tắt

Từ viết tắt
Thuật ngữ
Ý nghĩa
SPIN
Simple Promela Interpreter
Biên dịch ngôn ngữ Promela đơn
giản
API
Application Programming
Interface
Giao diện lập trình ứng dụng
DtSpin
Discrete Time Spin

Spin tích hợp thời gian rời rạc
RtSpin
Real Time Spin
Spin tích hợp thời gian thực
LTL
Linear time logic
Logic thời gian tuyến tính
TS
Transition system
Hệ thống chuyển trạng thái
RTS
Real Time System
Hệ thống thời gian thực
TBA
Timed Buchi Automata
Otomat Buchi thời gian
MTA
Muller Timed Automata
Otomat Muller thời gian
DTMA
Deterministic Timed Muller
Automata
Otomat Muller thời gian xác định
DTBA
Deterministic Timed Buchi
Automata
Otomat Buchi thời gian xác định
TTS
Timed transition system
Hệ thống chuyển trạng thái theo

thời gian


1

Chương 1: Mở đầu
Kiểm chứng mô hình là một kỹ thuật kiểm chứng tự động các hệ thống hữu hạn
trạng thái. Kiểm chứng mô hình xác minh tính đúng đắn của một mô hình bằng việc
xác định xem các thuộc tính ngƣời dùng mong muốn có đƣợc thỏa mãn bởi mô hình
đó hay không [8]. Về nguyên tắc hoạt động, hệ thống cần kiểm chứng sẽ đƣợc mô
hình hóa. Công cụ kiểm chứng sẽ kiểm tra mô hình có thỏa mãn các thuộc tính đƣợc
cho hay không. Nhờ khả năng duyệt qua tất cả các trạng thái trong mô hình mà tính
đúng đắn của kết quả kiểm chứng mô hình luôn đƣợc đảm bảo. Tuy nhiên cho đến
nay, kiểm chứng mô hình chủ yếu tập trung bào các hệ phi thời gian hoặc các tính chất
thời điểm của hệ thời gian thực, tính chất khoản vẫn còn ít và hầu nhƣ các thuật toán
này chỉ giải quyết bài toán theo ngữ nghĩa đã thu hẹp của tính chất cần kiểm chứng.
Promela là ngôn ngữ mô hình mức cao nhằm đặc tả hệ thống. Thứ tự thởi gian
của các hành động trong chƣơng trình promela dựa trên trình tự của các lệnh trong
tiến trình. Tuy nhiên ngôn ngữ không cho phép đo lƣờng chính xác khoảng thời gian
giữa hai sự kiện [10]. Thực tế rất nhiều hệ thống bao gồm các giao thức giao tiếp, các
mạch không đồng bộ, các bộ điều khiển đèn hay giao thông và các hệ thống thực hiện
thời gian thực cần đƣợc mô tả nhƣ các hệ thống thời gian thực.
Do đó thúc đẩy cần mở rộng Promela cho thời gian thực trong đó thời gian liên
tục và số các sự kiện có thể xảy ra giữa hai khoảng thời gian không bị chặn. Hiện tại
có hai công cụ tích hợp thời gian với Spin DtSpin và RtSpin [5][13]. Cả hai công cụ
đều dựa trên lý thuyết Otomat thời gian (timed Otomat). RtSpin có thể mô hình
Otomat thời gian với các đồng hồ thời gian thực nhƣng khá cồng kềnh. Hạn chế của
RtSpin không tƣơng thích với thuật toán giảm số lƣợng không gian trạng thái của hệ
thống. DtSpin dựa trên Otomat thời gian lý tƣởng, thời gian đƣợc chia thành các
khoảng thời gian bằng nhau và thời gian đƣợc biểu thị là các số tự nhiên. DtSpin

tƣơng thích với thuật toán giảm số lƣợng không gian trạng thái của hệ thống. Tuy
nhiên DtSpin chỉ mở rộng với thời gian rời rạc.
Nội dung nghiên cứu: Tìm hiểu Spin, hệ thống thời gian thực, lý thuyết Otomat thời
gian và tích hợp thời gian với công cụ Spin.
Phần đầu của luận văn ta nghiên cứu về Spin, hệ thống thời gian thực và lý thuyết mô
hình kiểm chứng. Ta cũng đƣa ra những khái niệm cơ bản về kiểm chứng mô hình và
hệ thống thời gian thực là cơ sở nên tảng để thực hiện tích hợp và các công cụ tích hợp
thời gian thực với Spin nhằm định lƣợng khoảng thời gian giữa các sự kiện và các
ràng buộc về thời gian. Hai công cụ này dựa trên lý thuyết Otomat thời gian. Trong đó
RtSpin dựa trên mô hình thời gian liên tục, DtSpin dựa trên mô hình thời gian rời rạc.
Cuối cùng ta đƣa ra một số thực nghiệm với công cụ RtSpin và DtSpin bao gồm: mô
2

hình train-gate-controller đƣợc đặc tả trong phần lý thuyết Otomat thời gian, bài toán
này là bài toán kinh điển và là tiền đề để kiểm chứng các hệ thổng điều khiển giao
thông. Tiếp đến ta cũng kiểm chứng giáo thức truyền nhận song song dựa trên các
kênh truyền và gửi thông thông báo có thể mất mát thông tin. Cuối cùng mô hình Sapi
là mô hình có giá trị thực tiễn của hệ thống tính cƣớc của G-Mobile
Cấu trúc luận văn: Luận văn gồm các phần: 4 chƣơng, kết luận và tài liệu tham
khảo. Các phần còn lại của luận văn có cấu trúc nhƣ sau:
Chƣơng 2: Đầu tiên ta tìm hiểu Cơ sở lý thuyết cho kiểm chứng mô hình, một
công nghệ tự động trong đó mô hình với tập trạng thái hữu hạn của hệ thống và một
tính chất logical, hệ thống sẽ kiểm tra xem tính chất đó. Spin một công cụ kiểm chứng
mô hình. Spin là công cụ nhằm phân tích tính logic của hệ thống đồng thời, các giao
thức giao tiếp dữ liệu. Hệ thống đƣợc mô hình hóa bởi ngôn ngữ Promela. Tiếp đến ta
cũng trình bày các hệ thống thời gian thực.
Chƣơng 3: Atomat thời gian mô hình hóa các hành vi hệ thống thời gian thực.
Cung cấp các định nghĩa, đồ thị chuyển trạng thái với ràng buộc thời gian sử dùng
nhiều đồng hồ giá trị thực. Otomat thời gian chấp nhận chấp nhận từ ký tự và thời gan
– trình tự vô hạn với giá trị thời gian liên kết với ký tự vào. Chúng ta cung xem xét

các tính chất đóng với Otomat xác định và không xác đinh. Cuối cùng xem xét ứng
dụng của lý thuyết nhằm kiểm thử các yêu cầu của hệ thống với các trạng thái hữu
hạn.
Chƣơng 4: Vì Promela truyền thống không chứa thời gian. Trong chƣơng này
giới thiệu mở rộng thời gian thực với công cụ spin và Promela, có hai thành công bao
gồm RtSpin (Real-time Spin) và DtSpin (Discrete time Spin) nhằm mở rộng Spin với
thời gian. Trong đó RtSpin dựa trên mô hình thời gian liên tục, DtSpin dựa trên mô
hình thời gian rời rạc.
Chƣơng 5: Dựa trên cơ sở của chƣơng 4. Trong chƣơng này ta đƣa ra một số
thực nghiệm với công cụ RtSpin và DtSpin bao gồm: mô hình train-gate-controller
đƣợc đặc tả trong phần lý thuyết Otomat thời gian, bài toán này là bài toán kinh điển
và là tiền đề để kiểm chứng các hệ thổng điều khiển giao thông. Tiếp đến ta cũng
kiểm chứng giáo thức truyền nhận song song dựa trên các kênh truyền và gửi thông
thông báo có thể mất mát thông tin. Cuối cùng mô hình Sapi là mô hình có giá trị thực
tiễn của hệ thống tính cƣớc của G-Mobile



3

Chương 2 Cơ sở kiểm chứng mô hình
Quá trình thiết kế mô hình của hệ thống bằng ngôn ngữ mô hình Promela làm
việc dựa trên các khái niệm về kiểm chứng mô hình. Chƣơng này sẽ lần lƣợt trình bày
những khái niệm cơ bản về kiểm chứng mô hình và hệ thống thời gian thực.
2.1 Kiểm chứng dựa trên mô hình
2.1.1 Khái niệm
Nhằm kiểm tra xem hệ thống phần mềm có đáp ứng đƣợc các yêu cầu đề ra,
một nhiệm vụ thách thức là hệ thống phải đảm bảo tính đồng thời (concurrency). Tính
đồng thời của hệ thống nhằm đảm bảo các tiến trình chạy song song và xen kẽ lẫn
nhau sử dụng tài nguyên chung. Các công nghệ kiểm chứng bao gồm Dijkstra, Floyd,

Gries, Hoare, Owicki, Manna and Plueni. Kiểm chứng là một mô hình lý thuyết và
đƣợc thực hiện dựa trên khả năng tính toán của máy tính [4].
Trong quá trình phát triển phần mềm, càng phát hiện ra lỗi sớm thì việc phát
triển sẽ dễ dàng hơn. Tuy nhiên, việc phát hiện lỗi nhờ kiểm chứng thƣờng rất muộn.
Một giải pháp nhằm cải thiện, chúng ta nên thực hiện kiểm chứng để có thể phát hiện
lỗi sớm hơn.











Hình 2.1: Vấn đề với kiểm chứng
Requirement
Analyis
System
Design
Operation
And Mantenance
Acceptance
Testing
System
Testing
Program Design
Unit and Integration

Testing
Coding
4

Kiểm chứng dựa trên mô hình là một kỹ thuật kiểm chứng mà các hoạt động
của hệ thống đƣợc chạy thử trong một thời gian sẽ đƣợc dự đoán trƣớc, nó đƣợc thực
hiện bởi một đặc tả hình thức hoặc một mô hình của hệ thống.
Các mẫu thiết kế hay mô hình là mô tả đơn giản của hệ thống dựa trên yêu cầu
hệ thống và chức năng xác định, giúp chúng ta có thể hiểu và dự đoán đƣợc hành vi
của hệ thống.
Năm 1981 Clarke and Emerson đã đƣa ra định nghĩa: Kiểm chứng mô hình là
một kỹ nghệ tự động trong đó mô hình với tập trạng thái hữu hạn của hệ thống và một
tính chất logical, hệ thống sẽ kiểm tra xem tính chất đó (với trạng thái đã cho) trong
mô hình. Đƣợc phát minh cách đây 20 năm bởi các nhóm nghiên cứu, đƣợc sử dụng
trong đơn vị công nghiệp chuyên biệt [10].









Hình 2.2: Kiểm chứng mô hình
Thông thƣờng có hai cách tiếp cận với ứng dụng của kiểm chứng mô hình.
Cách tiếp cận verification: luôn luôn bảo đảm sự đúng đắn của mô hình chi tiết M của
hệ thống dƣới dạng tính đúng đắn. Cách tiếp cận Debugging: luôn luôn đi tìm lỗi
trong mô hình M.
Kiểm chứng mô hình là phƣơng pháp hiệu quả nhất trong việc tiếp cận gỡ lỗi

thiết kế. Mô hình không chỉ tốt trong gỡ lỗi mà còn tìm lỗi bugs rất sớm trong việc
thiết kế một hệ thống mới.
Các bƣớc thực hiện xây dƣng Kiểm chứng mô hình. Đầu tiên ta mô hình hóa hệ
thống (xây dựng mô hình M cho hệ thống). Tiếp đến ta xây dựng yêu cầu dƣới dạng
Mô hình M
Byte n
Property anp()
do
od
Property Φ
[] (n <5)
Model Checker
YES
Tính chất
thỏa mãn
No +
Vêt lỗi
5

biểu thức Ф. Cuối cùng ta quyết định (deciding) và các thuật toán kiểm tra (đƣợc thực
hiện trong các công cụ kiểm chứng mô hình).
2.1.2 Các bước thực hiện
Quá trình kiểm chứng dựa trên mô hình đƣợc bắt đầu bằng việc xác định yêu
cầu của hệ thống từ đó xây dựng mô hình dựa vào các yêu cầu và chức năng của hệ
thống. Việc xây dựng mô hình còn phải dựa trên các yếu tố dữ liệu đầu vào và đầu ra.
Mô hình này đƣợc sử dụng để sinh ra các ca kiểm thử. Chúng ta có thể biết kết quả
đầu ra mong đợi từ mô hình hoặc từ quy định chuẩn (oracle). Khi chạy kịch bản và kết
quả thu đƣợc sẽ đƣợc so sánh với kết quả mong đợi. Từ đó quyết định hành động tiếp
theo nhƣ sửa đổi mô hình hoặc dừng kiểm thử,…
Các bƣớc để thực hiện kiểm thử dựa trên mô hình. Xây dựng mô hình dựa trên

các yêu cầu và chức năng của hệ thống. Tiếp đến tạo đầu ra dự kiến từ mô tả bài toán.
Sau đó ta chạy kịch bản kiểm chứng và so sánh kết quả đầu ra thực tế với kết quả đầu
ra dự kiến. Cuối cùng ta 1uyết định hành động tiếp theo (Sửa đổi mô hình, tạo thêm ca
kiểm chứng, dừng kiểm chứng, đánh giá chất lƣợng của phần mềm).
2.2 Ngôn ngữ Promela và Spin
Spin (Simple Promela Interpreter) là công cụ nhằm phân tích tính logic của hệ
thống đồng thời, các giao thức giao tiếp dữ liệu. Hệ thống đƣợc mô hình hóa bởi ngôn
ngữ Promela.
Ngôn ngữ Promela cho phép tạo các tiến trình giao tiếp với nhau trên các kênh
đồng bộ hoặc không đồng bộ. Ngôn ngữ Promela nhúng ngôn ngữ lập trình C và là
ngôn ngữ đặc tả để mô hình hóa hệ thống trạng thái hữu hạn.
2.2.1 Ngôn Ngữ Promela
Với Spin, ngôn ngữ Promela đựợc sử dụng để xây dựng mô hình của hệ thống và
các tính chất của nó. Promela là ngôn ngữ không tất định, là một trong các ngôn ngữ
có cú pháp và ngữ nghĩa tƣơng tự ngôn ngữ C.
Một chƣơng trình Promela bao gồm khai báo định nghĩa kiểu, biến, kênh, một
hay nhiều tiến trình, mỗi tiến trình chứa một chuỗi các câu lệnh. Các tiến trình có thể
có tham số hoặc không.Các tiến trình đƣợc khai báo với từ khóa kích hoạt sẽ đƣợc
khởi tạo và gán một giá trị pid (process id) duy nhất.
Một tiến trình thực hiện đồng thời với các tiến trình khác và giao tiếp với các
tiến trình khác bằng cách sử dụng biến chung phần hay giao tiếp qua các kênh. Trạng
thái của tiến trình đƣợc đặc trƣng bởi vị trị lệnh tiến trình đang thực hiện và nội dung
6

của các biến. Tiến trình đƣợc khởi tạo bởi hàm run() hoặc khai báo kích hoạt khi định
nghĩa tiến trình. Tiến trình không xác định thời gian thực hiện các lệnh, các tiến trình
đƣợc giao nhau tuy nhiên các lệnh khác nhau của các tiến trình không xảy ra cùng lúc
ngoại trừ kênh giao tiếp đồng thời. Mỗi tiến trình ở mỗi điểm có thể thực hiện lựa các
hành đồng khác nhau.
Một tiến trình bao gồm trình tự các câu lệnh. Mỗi câu lệnh có thể thực hiện đƣợc

ngay lập tức hoặc không thực hiện đƣợc. Tất cả các câu lệnh là nguyên tử và khi thực
hiện không giao với các tiến trình khác. Để kiểm chứng các tính chất chắc chắn đúng
trong chƣơng trình thƣờng dùng lệnh assert (expr) trong mô hình Promela. Lệnh này
luôn thực hiện đƣợc và nếu biểu thức trả vê 0 thì Spin thông báo một lỗi “has been
violated” [12].
mtype = {MSG, ACK}
chan toS = …
chang toR = …
bool flag;
proctype Sender() {

}
Init {

}

Hình 2.3: Mô hình promela.






Phần thân tiến trình
Khởi tạo các tiến trình
7

Cú pháp của promela tổng kết nhƣ Bảng sau:
Lệnh
Thực thi

Skip
Luôn luôn thực hiện đƣợc
expression
Thực hiện đƣợc nếu biểu thức tra về khác 0
assignment
Luôn luôn thực hiện đƣợc
if
Thực hiện đƣợc nếu it nhất một bảo đảm
do
Thực hiện đƣợc nếu it nhất một bảo đảm
Break
Luôn thực hiện đƣợc (thoát câu lệnh do)
Send (ch!)
Thực hiện đƣợc nếu kênh không đầy
Receive (ch?)
Thực hiện đƣợc nếu kênh không rỗng
Bảng 2.1: Khả năng thực hiện của các câu lệnh trong Promela
2.2.2 Spin
Trong chế độ giả lập, Spin biên dịch và chạy một chƣơng trình promela, sau đó
in ra các trạng thái của chƣơng trình [17].
Một trạng thái của chƣơng trình là một bộ các giá trị gồm của các biến, các giá trị
của biến đếm vị trí của các tiến trình. Một tính toán của chƣơng trình là chuỗi các
trạng thái bắt đầu bởi trạng thái khởi tạo và tiếp tục với những trạng thái xuất hiện khi
mỗi câu lệnh đƣợc thực hiện.
Trong ví dụ 2.1 biến n đƣợc khởi tạo với giá trị 0, chƣơng trình bao gồm 2 tiến
trình: P và Q tƣơng ứng gán biến n giá trị 1 hoặc 2 và in ra giá trị của n cùng tên tiến
trình.
Ví dụ 2.1.Chƣơng trình với 2 tiến trình
byte n=0;
active proctype P(){

n=1;
printf("Process P, n=%d\n",n);
}
active proctype Q()
{
n=2;
printf("Process Q, n=%d\n",n);
}
Spin là công cụ kiểm tra mô hình kiểm thử tính chất trong dó M là mô hình của
hệ thống với số trạng thái hữu han và Φ là tính chất cần kiểm thử đƣợc quy định dƣới
dạng một số ký hiệu hình thức.
8

Với Spin có thể kiểm tra những loại tính chất: khóa chết (Deadlocks) là trạng
thái có một tiến trình chiếm hữu tài nguyên lâu dài làm cho các tiến trình có nhu cầu
sử dụng tài nguyên này luôn ở trạng thái đợi mãi mãi hay còn gọi trạng thái kết thúc
không hợp lệ, tính khẳng định (assertions) là cách đơn giản để kiểm tra chƣơng trình.
Một assertion là một mệnh đề đƣợc đặt trong 1 chƣơng trình mà ta cho rằng mệnh đề
sẽ luôn đúng tại vị trí đó. Spin sẽ tính toán các assertion trong quá trình tìm kiếm phản
ví dụ trong không gian trạng thái của chƣơng trình, code không đạt đƣợc (unreachable
code) là cách kiểm tra có những đoạn mã lệnh trong tiến trình nhƣng không bao giờ
đƣợc thực hiện, công thức LTL, tính chất sống động (liveness properties). Tính chất
sống động bao gồm: không có vòng lặp tiến trình (non-progress cycles) và vòng lặp
chấp nhận đƣợc (acceptance cycles). Khi kiểm tra tính chất không có vòng lặp tiến
trình, bộ kiểm chứng sẽ cảnh báo nếu có một thực hiện không đi qua vô hạn lần trạng
thái tiến trình. Trong đó trạng thái tiến trình là trạng thái hệ thống mà một số tiến trình
đang thực hiện lệnh đƣợc gán nhãn với tiền tố "progress". Khi kiểm tra tính chất có
vòng lặp chấp nhận đƣợc, bộ kiểm chứng sẽ cảnh báo nếu có một thực hiện đi qua vô
hạn lần trạng thái chấp nhận đƣợc. Trong đó trạng thái chấp nhận đƣợc là trạng thái hệ
thống mà một số tiến trình đang thực hiện lệnh đƣợc gán nhãn với tiền tố

"acceptance".
Spin sẽ tính toán assertion tại một vị trí nhất định trong chƣơng trình mà ở đó
assertion đƣợc thêm vào, do vậy assertion có hạn chế trong việc biểu diễn tính chất
của mô hình.
Ta cần dùng đến logic thời gian tuyến tính (LTL), LTL mạnh mẽ hơn trong việc
biểu diễn tính chất của mô hình (hệ thống). Với LTL ta có thể diễn tả những tính chất
chung cần đƣợc thỏa mãn mà không liên quan đến một vị trí nào trong chƣơng trình.
LTL đặc biệt phù hợp với các hệ thống tƣơng tác khi tính đúng đắn của hệ thống
không chỉ thể hiện ở kết quả tính toán mà ta phải kiểm tra sự giao tiếp và thực thi các
tiến trình trong hệ thống.
[ ] A: hệ thống luôn luôn mang tính chất A.
<> A: nếu hệ thống có tính chất A tại một thời điểm nào đó trong tƣơng lai thì ta
nói hiện tại hệ thống có tính chất <> A.
A U B: tại thời điểm hiện tại hệ thống có tính chất A U B có nghĩa là: nếu trong
một thời điểm nào đó trong tƣơng lai hệ thống có tính chất B thì hệ thống có tính chất
A tại tất cả các thời điểm từ hiện tại cho tới khi nó mang tính chất B.
Trong nhiều trƣờng hợp, hệ thống xây dựng phải thỏa mãn một tính chất bất biến
nào đó. Với LTL ta biểu diễn tính chất đó bởi toán tử [].
9

Chẳng hạn có thể biểu diễn một số tính chất bằng LTL.
 Safety (tính an toàn): Tính an toàn của một chƣơng trình đảm bảo rằng sẽ
không bao giờ xảy ra tình huống xấu trong chƣơng trình (“something bad
never happen”).
Tính an toàn có thể đƣợc biểu diễn bằng temporal logic nhƣ sau:
G

trong LTL
Trong đó ϕ là một biểu thức logic.
Ví dụ của tính an toàn:

- Nhiệt độ của phản ứng không bao giờ quá 100 độ C.
- Bất kì lúc nào chìa khóa xe chƣa vặn tới vị trí khởi động, xe sẽ không nổ
máy.
 Liveness (tính sống động): Tính liveness của một chƣơng trình đảm bảo rằng
nó có thể thực thi đƣợc một chức năng “tốt” nào đó đã đặt ra. (“something
good will happen eventually”).
Thuộc tính liveness có thể đƣợc biểu diễn bằng các phép kết hợp AF hoặc F
trong temporal logic:
F done
G (req → F grant)
G F tick
trong LTL.
Ví dụ:
- Khi chìa khóa xe vặn tới vị trí khởi động, xe sẽ nổ máy.
- Bóng đèn sẽ chuyển sang màu xanh
 Fairness (tính công bằng) Tính công bằng đảm bảo rằng nếu một sự kiện nào
đó ở trạng thái sẵn sàng đƣợc thực thi thì đến một lúc nào đó nó sẽ đƣợc thực
thi.
Thuộc tính công bằng có thể đƣợc biểu diễn bằng các toán tử AF và phép suy
ra:
AG (san_sang=0 → AF thuc_thi=0)
AG (san_sang=1→ AF thuc_thi =1)
10

Một ví dụ cho tính công bằng trong một hệ thống truyền-nhận tin là khi một
gói tin đƣợc gửi đi thì đến một lúc nào đó nó sẽ đến đƣợc đích.
Trong Spin ta chỉ cần biểu diễn tính chất của hệ thống dƣới dạng một biểu thức
LTL sau đó đƣa vào Spin với lênh spin và tham số -f, Spin sẽ tự động chuyển biểu
thức LTL sang cấu trúc never claim của Promela dùng vào việc kiểm chứng.
Chẳng hạn

$ spin -f '[]<>(p U q)'
never { /* []<>(p U q) */
T0_init:
if
:: ((q)) -> goto accept_S9
:: (1) -> goto T0_init
fi;
accept_S9:
if
:: (1) -> goto T0_init
fi;
}
Với đoạn lệnh trên khi tiến trình thỏa mãn và nhảy đến nhãn accept thì bộ kiểm
chứng sẽ cảnh bảo mã lỗi “never claim”.
Có những tính chất mà ta mong muốn nó không bao giờ đƣợc xuất hiện trong hệ
thống. Trong Promela nó đƣợc biểu diễn bởi never claim. Khi thuật toán của chúng ta
là đúng và chƣơng trình không chứa lỗi, Spin sẽ kết thúc sau khi sinh ra tất cả các
trạng thái và thông báo không có trạng thái nào vi phạm đƣợc tìm thấy.
Ví dụ:
#define A (divisor > 0)
never { /* !([] a) */
T0_init:
if
:: (! ((A))) -> goto accept_all
:: (1) -> goto T0_init
fi;
accept_all:
skip
}
Tƣơng tự nhƣ trên tiến trình never nếu đạt đến trạng thái với mã lệnh đƣợc gán

nhãn “accept” thì bộ kiểm chứng sẽ cảnh bảo mã lỗi “never claim”. Ở ví dụ trên hệ
thống cần thỏa mãn rằng biến divisor luôn phải lớn hơn 0, do vậy trƣờng hợp ngƣợc
lại không bao giờ đƣợc xảy ra hay !(a)luôn phải nhận giá trị false.
11

Nhãn To_init đảm bảo trong khi chƣơng trình đƣợc chạy (và sinh ra các trạng
thái), cho đến khi nào A còn đúng, lệnh goto thứ hai luôn luôn đƣợc chọn và Spin sẽ
liên tục.
Nhƣng nếu chƣơng trình tính toán đến một trạng thái mà ở đó A sai, Spin nhảy
tới nhãn accept_all và kết thúc chƣơng trình.
SPIN sử dụng thuật toán tìm kiếm theo độ sâu (depth first search algorithm DFS)
để tạo và thực hiên không gian trạng thái đầy đủ [11].
Procedure dfs(s: state) {
If error(s)
ReportError();
Foreach (successor t of s) {
If (t not in Statespace)
Dfs(t);

}


Hình 2.4: Thuật toán tìm kiếm không gian trạng thái trong Spin
Mỗi trạng thái đƣợc biểu diễn bởi một vector trạng thái là thông tin nhằm xác
định trạng thái hệ thống, bao gồm: Các biến toàn cục, nội dung của các kênh. Trong
đó với mỗi kênh trong hệ thống chứa Các biến cục bộ và Bộ đếm tiến trình.
2.3 Giới thiệu về hệ thống thời gian thực
2.3.1 Khái niệm
Trong các tài liệu cũng nhƣ trong thực tế, khái niệm thời gian thực và hệ thống
thời gian thực không phải lúc nào cũng đƣợc hiểu một cách thống nhất. Nhiều ngƣời

cho rằng hệ thống thời gian thực là một hệ thống phải làm việc với yêu cầu thời gian
rất nhanh. Ví dụ các hệ thống điều khiển tay máy, điều khiển động cơ,… Lại có ngƣời
cho rằng thời gian thực là thời gian tuyệt đối, hệ thống thời gian thực là một hệ thống
có khả năng làm việc với thời gian tuyệt đối theo giờ phút giây ngày tháng. Vậy chúng
ta nên hiểu thế nào là hệ thống thời gian thực?
Hệ thống thời gian thực (RTS – Real Time System) là một hệ thống mà tính
đúng đắn của nó không chỉ phụ thuộc vào các kết quả logic nó tạo ra mà còn phụ
thuộc vào các thời điểm các kết quả đƣợc tạo ra.
Các trạng thái đƣợc lƣu
trong bảng băm
Yêu cầu trạng thái hợp lệ
Chỉ làm việc với các
tính chất trạng thái
Các trạng thái cũ đƣợc lƣu trong ngăn xếp
tƣơng ứng với một đƣờng thực hiện đầy đủ
12

Nhƣ vây, hệ thống thời gian thực là một hệ thống mà sự hoạt động tin cậy của nó
chỉ phụ thuộc vào sự chính xác của kết quả mà còn phụ thuộc vào thời điểm đƣa ra kết
quả. Hệ thống có lỗi khi yêu cầu về thời gian không đƣợc thỏa mãn.
Hệ thống thời gian thực đƣợc thiết kế nhằm trả lời lại các yếu tố kích thích phát
sinh từ các thiết bị phần cứng.
Trong thực tế, các yếu tố kích thích xảy ra trong thời gian rất ngắn vào khoảng
vài mili giây, thời gian mà hệ thống trả lời lại yếu tố kích thích đó tốt nhất vào khoảng
dƣới một giây, khoảng thời gian để xử lý một sự kiện nhƣ vậy đƣợc gọi là dealtime,
dealtime đƣợc xác định bởi thời gian bắt đầu và thời gian hoàn tất công việc.
Trong RTS cũng cần quan tâm xem những công việc thời gian thực có tuần hoàn
hay không. Đối với real-time đƣợc hiểu công việc tuần hoàn dealtime ấn định theo
từng chu kì xác định, đối với công việc không tuần hoàn dealtime xác định vào lúc bắt
đầu công việc. Các biến cố kích hoạt công việc không tuần hoàn thƣờng dựa trên kỹ

thuật xử lý ngắt của hệ thống phần cứng.
Một hệ thống realtime đƣợc hiểu là một hệ thống làm việc với các sự kiện tức
thời (realtime). Tuy nhiên không phải mọi hệ thống đều có thể thực hiện đƣợc những
qui định tức thời hay đáp trả lại sự kiện một cách tức thời nhƣ chúng ta mong muốn.
Khi bắt tay xây dựng các ứng dụng phần mềm chúng ta luôn mong muốn thời gian trễ
để đƣa ra một lệnh hay một quyết định là nhỏ nhất, hay khi xây dựng các ứng dụng
phần cứng chúng ta lại muốn thời gian đƣa ra một tín hiệu đáp trả một sự kiện là phải
gần nhƣ tức thời, nhƣng sự thực không đƣợc nhƣ vậy vì các hệ thống đáp ứng sự kiện
bao giờ cũng có một thời gian trễ nhất định. Khái niệm “hệ thống thời gian thực”,ở
đây hiểu ngầm nhƣ một hệ thống đáp ứng sự kiện với một thời gian trễ chấp nhận
đƣợc hay nói cách khác, hệ thời gian thực là hệ thống có các ràng buộc về thời gian
đối với các hành động của hệ thống.
2.3.2 Đặc điểm của hệ thống thời gian thực
Tính bị động: hệ thống phải phản ứng với các sự kiện xuất hiện vào các thời
điểm thƣờng không biết trƣớc. Ví dụ: Sự vƣợt ngƣỡng của một giá trị đo, sự thay đổi
trạng thái của một thiết bị quá trình phải dẫn đến các phản ứng trong bộ điều khiển.
Tính nhanh nhạy: Hệ thống phải xử lý thông tin một cách nhanh chóng để có thể đƣa
ra kết quả phản ứng một cách kịp thời. Tuy tính nhanh nhạy là một đặc điểm tiêu biểu
nhƣng một hệ thống có tính năng thời gian thực không nhất thiết phải có đáp ứng thật
nhanh mà quan trọng hơn là phải có phản ứng kịp thời đối với các yêu cầu, tác động
bên ngoài.
Tính đồng thời: hệ thống phải có khả năng phản ứng và xử lý đồng thời nhiều sự
kiện diễn ra. Có thể cùng một lúc bộ điều khiển đƣợc yêu cầu thực hiện nhiều vòng
13

điều chỉnh, giám sát ngƣỡng giá trị nhiều đầu vào, cảnh giới trạng thái làm việc của
một số động cơ.
Tính tiền định: Dự đoán đƣợc thời gian phản ứng tiêu biểu, thời gian phản ứng
chậm nhất cũng nhƣ trình tự đƣa ra các phản ứng. Nếu một bộ điều khiển phải xử lý
đồng thời nhiều nhiệm vụ ta phải tham gia quyết định đƣợc về trình tự thực hiện các

công việc và đánh giá đƣợc thời gian xử lý mỗi công việc. Nhƣ vậy ngƣời sử dụng
mới có cơ sở để đánh giá về khả năng đáp ứng tính thời gian thực của hệ thống.
2.3.3 Cấu tạo hệ thời gian thực
RTS có cấu tạo từ các thành tố chính sau: Đồng hồ thời gian thực nhằm cung cấp
thông tin thời gian thực. Bộ điều khiển ngắt nhằm quản lý các biến cố không theo chu
kỳ. Bộ định biểu nhằm quản lý các quy trình thực hiện. Bộ quản lý tài nguyên nhằm
cung cấp các tài nguyên máy tính. Bộ điều khiển thực hiện nhằm khởi động các tiến
trình.
Các thành tố trên có thể đƣợc phân định là thành tố cứng hay mềm tùy thuộc vào
hệ thống và ý nghĩa sử dụng. Thông thƣờng, các RTS đƣợc kết hợp vào phần cứng có
khả năng tốt hơn so với hệ thống phần mềm có khả năng tƣơng ứng và tránh đƣợc chi
phí quá đắt cho việc tối ƣu hóa phần mềm.
Hệ thống thời gian thực là hệ thống có ràng buộc về thời gian, tuy nhiên nếu thời
gian ràng buộc này bị vi phạm (thời gian trả lời vƣợt quá giới hạn cho phép) hệ thống
vẫn tiếp tục hoạt động bình thƣờng, tác hại không đáng kể.
2.3.4 Vì sao chọn hệ thời gian thực
Có thể nói tất cả các hệ thống điều khiển là hệ thời gian thực. Ngƣợc lại một số
lớn các hệ thống thời gian thực là các hệ thống điều khiển, không hệ thống điều khiển
nào có thể hoạt động bình thƣờng nếu nhƣ nó không đáp ứng đƣợc các yêu cầu về thời
gian.
Hệ thống thời gian thực đƣợc ứng dụng phổ biến trong rất nhiều lĩnh vực nhƣ
thƣơng mại, quân đội, y tế, giá o dục, cơ sở hạ tầng… và ngày nay đang phát triển
mạnh mẽ mà một số lĩnh vực tiêu biểu: Các hệ thống phƣơng tiện nhƣ : ô tô, xe điện
ngầm, máy bay, tàu hỏa… Các hệ thống điều khiển giao thông: điều khiển không
lƣu, điều khiển tàu biển…
2.4 Kết luận
Trong chƣơng này chúng tôi trình bày về mô hình kiểm thử với ngôn ngữ
Promela và công cụ Spin. Kiểm chứng mô hình khảo sát tất cả các trạng thái có thể
của hệ thống là kiểm tra rằng chúng chứa sự đúng đắn đã đƣợc đặc tả. Việc sinh ra các
14


trạng thái và kiểm tra có thể đƣợc thực hiện một cách tự động bằng phần mềm và Spin
là một trong những bộ kiểm chứng (model checker) đƣợc sử dụng rộng rãi. Các bộ
kiểm chứng không kiểm tra trực tiếp chƣơng trình mà kiểm tra một mô hình là thể
hiện mức cao của hệ thống. Mô hình này mô tả hành vi của hệ thống. Để áp dụng
đƣợc các công cụ kiểm chứng mô hình, việc đầu tiên là phải xây dựng mô hình của hệ
thống. Các mô hình này cùng với đặc tả của thuộc tính cần kiểm tra là đầu vào của các
bộ kiểm chứng.
Chƣơng này ta cũng giới thiệu về hệ thống thời gian thực. Ở phần sau chúng ta
sẽ tìm hiểu sâu về otomat thời gian để mô hình hóa và kiểm chứng hệ thống thời gian
thực.





15

Chương 3 - Otomat thời gian
3.1 Giới thiệu
Chúng ta giới thiệu otomat thời gian để mô hình hóa hành vi của hệ thống thời
gian thực theo thời gian. Các định nghĩa đƣợc cung cấp một cách đơn giản nhƣng
mạnh mẽ, chú giải đồ thị chuyển trạng thái với các ràng buộc thời gian sử dụng các
đồng hồ giá trị thực. Otomat thời gian chấp nhận các từ ký tự theo thời gian – thời
gian với giá trị thực đƣợc liên kết với mỗi kí tự [1].
Trong mô hình thời gian tuyến tính với giả thiết một thực hiện hoàn toàn có thể
đƣợc mô hình hóa bởi trình tự các trạng thái của các sự kiện của hệ thống hay còn gọi
là excution trace (hoặc trace). Hành vi của hệ thống là tập trình tự thực hiên. Hơn nữa
tập các trình tự là ngôn ngữ hình thức nên dẫn đến sử dụng otomat trong việc đặc tả và
kiểm chứng hệ thống. Nếu hệ thống là hữu hạn trạng thái sẽ tƣơng ứng với otomat hữu

hạn. Đặc biệt sự đa dạng với nhiều loại otomat Bu chi, otomat không xác định, otomat
Muller xác định và không xác định, biểu thức hình thức ω có cùng chức năng nhằm
định nghĩa lớp các ngôn ngữ hình thức ω. Từ đó có rất nhiều lý thuyết kiểm chứng
dựa trên lý thuyết ngôn ngữ hình thức ω [2].
Để đơn giản chỉ mô hình các thực hiện là trình tự vô hạn các sự kiện. Mỗi sự
kiện gắn liền với thời gian, thành phần thứ i của trình tự thời gian tƣơng ứng với thời
gian xảy ra của sự kiện thứ i.
Mô hình thời gian đơn giản nhất là mô hình thời gian rời rạc (discrete-time) trong
đó trình tự thời gian tăng tuyến tính với trình tự các số nguyên. Mô hình này tƣơng
ứng với mạch kỹ thuật số đồng bộ, các tín hiệu thay đổi chính xác khi có tín hiệu đồng
hồ (signal clock). Các hành vi thời gian rời rạc có thể đƣợc thực hiện sử dụng otomat
hữu hạn. Tuy nhiên các sự kiện tiến trình không luôn luôn xảy ra với thời gian giá trị
nguyên trong các hệ thống vật lý.
Mô hình đồng hồ lý tƣởng (fictitious-clock) tƣơng tự với mô hình thời gian rời
rạc ngoại trừ mô hình này chỉ yêu cầu trình tự thời gian số nguyên và không giảm. Sự
biên dịch của vết thực hiện thời gian trong mô hình là các sự kiện xảy ra theo thứ tự
đƣợc quy đinh với thời gian giá trị thực, tuy nhiên thời gian thực sự đƣợc đọc bởi
đồng hồ số. Mô hình này dễ dàng chuyển đổi đến ngôn ngữ hình thức. Trong mô hình
này có thêm khái niệm tick. Chẳng hạn t
i+1
– t
i
số tick giữa sự kiện i và sự kiện i+1.
Tuy nhiên mô hình này khá đơn giản và chỉ thực hiện với nhƣng hành vi sử dụng
otomat hữu hạn.
Mô hình thời gian dày đặc (dense-time) trong đó thời gian là tập dày đặc vì vậy
thích hợp mô hình các tiến trình vật lý theo thời gian liên tục. Trong mô hình này, thời
16

gian của các sự kiên là các số thực, tăng đơn điệu và không có cận biên. Với thời gian

dày đặc (dense-time) otomat hữu hạn không thích hợp. Thay thế ta phát triển lý thuyết
ngôn ngữ hình thức thời gian và otomat thời gian nhằm ứng dụng cho hệ thống nhƣ
vậy.
Otomat thời gian chấp nhận các từ thời gian (timed words) – trình tự vô hạn các
sự kiện, mỗi sự kiện tƣơng ứng với một ký tự và thời gian giá trị thực. Otomat thời
gian là otomat với tập hữu hạn các đồng hồ giá trị thực (real-valued đồng hồs). Đồng
hồ có thể đƣợc thiết lập lại 0 với các bƣớc chuyển trạng thái của otomat hay theo dõi
thời gian trôi kể từ lần cuối đƣợc thiết lập. Các bƣớc chuyển của otomat bao gồm ràng
buộc giá trị đồng hồ (clock values): một thực hiện có thể đạt đƣợc nếu giá trị hiện tại
của đồng hồ thỏa mãn các ràng buộc liên kết. Vì vậy ta có thể mô hình tính chất thời
gian chẳng hạn “kênh chuyển tiếp thông báo trong 3 đên 5 đơn vị thời gian kể từ khi
nhận”. Otomat thời gian mô hình hóa hệ thống thời gian thực và duy trì các tính chất
thời gian thực: đặc điểm tính chất nhƣ tính sống động, tính công bằng và không xác
định; đặc điểm số lƣợng nhƣ : tính tuần hoàn, biên và độ trễ thời gian
Ta xem xét tính xác định và không xác định với otomat Buchi và otomat Muller.
Ta cũng chỉ ra otomat thời gian không xác định đóng với phép hợp và giao nhƣng
không đóng với phép bù. Tính chất đóng cho lớp otomat thời gian xác định tƣơng tự
với otomat không chứa thời gian: otomat Muller thời gian xác định đóng với tất các
phép boolean trong khi đó otomat Buchi thời gian xác định đóng chỉ với các phép
Boolean tích cực. Vì vậy otomat Muller thời gian xác định khả năng diễn đạt ngôn
ngữ kém hơn so với otomat không xác định.
Cuối cúng ta áp dụng lý thuyết otomat thời gian để chứng minh tính đúng đắn
của các hệ thống thời gian thực với trạng thái hữu hạn.
3.2 Otomat ω
Trong phần này ta giới thiệu các khía cạnh liên quan của lý thuyết ngôn ngữ hình
thức ω.
Định nghĩa quen thuộc của ngôn ngữ hình thức là một tập các từ hữu hạn bởi các
chữ cái, ngƣợc với hữu hạn là các từ không hữu hạn. Vì vậy ngôn ngữ ω qua tập các
ký tự hữu hạn ∑ tà tập hơn con của ∑
ω

– tập các từ không đơn định qua các ký tự ∑ .
Otomat ω cung cấp trình diễn hữu hạn cho các loại ngôn ngữ ω nhƣ vậy. Otomat ω
cơ bản giống nhƣ Otomat trạng thái hữu hạn đa định và điều kiện chấp nhận xử lý các
ký tự vào. Có nhiều loại Otomat nhƣng trong luận văn này chúng xem xét đến Bu chi
Otomat và Muller Otomat.
Một bảng chuyển A là một bộ (∑,S,S0, E) với ∑ là các ký tự vào, S là tập hữu
hạn các trạng thái của Otomat, S0 S là tập các trạng thái bắt đầu, E  S X S X ∑ là
17

tập các cung. Otomat bắt đầu bằng trạng thái khởi tạo và nếu (s, s’, a) Є E thì Otomat
có thể đổi thạng thái từ s đến s’ khi đọc dữ liệu đàu vào a
Cho một từ σ = σ1 σ2… bao gồm các ký tự ∑ ta nói rằng:
r: s0
1


s1
2


s2
3



là một thực hiện của Otomat A trên từ σ, với s0 Є S0, và (si-1, si , σi) Є E với i
 1. Với một thực hiện tập inf(r) bao gồm các trạng thái s Є S để s = s
i
cho vô hạn lần
i  1

Các loại Otomat ω khác nhau đƣợc định nghĩa bằng cách thêm điều kiện chấp
nhận đƣợc đến định nghĩa của các bảng chuyển trạng thái (transition tables). Otomat
Buchi A là một bảng chuyển (∑,S,S
0
, E) với tập thêm vào F  S là các trạng thái
chấp nhận đƣợc. Một thực hiện r của Otomat A trên từ σ Є ∑
ω
là thực hiện chấp nhận
đƣợc nếu nhƣ inf(r) Λ F  Ø. Mặt khác một thực hiện r đang chấp nhận nếu một số
trạng thái từ tập F xuất hiện vô hạn lần trên thực hiện r. Ngôn ngữ L(A) của Otomat A
bao gồm các từ σ Є ∑
ω
để A có một thực hiện chấp nhận đƣợc trên từ σ
Ví dụ 3.1: Xem xét Otomat bao gồm 2 trạng thái của Hình 3.1 qua ký tự {a,b}.
Trạng thái s
0
là trạng thái khởi tạo, s1 là trạng thái chấp nhận. Tất cả các thực hiện của
Otomat có dạng
r: s0
1


s1
2


s2
3




n


s0
a
 s1
a
 s1…
với σ
i
Є {a,b} cho i  1   với n  1. Otomat chấp nhận tất cả các từ chỉ với
số hữu hạn của ký tự b ngôn ngữ L
0
= (a+b)
*
a
ω




Hình 3.1: Otomat Buchi chấp nhận (a+b)
*
a
ω
Ngôn ngữ ω đƣợc gọi là ngôn ngữ hình thức ω nếu đƣợc chấp nhận bởi ít nhất
một Otomat Buchi. Vì vậy ngôn ngữ L
0
của ví dụ 1 là ngôn ngữ hình thức ω

Lớp các ngôn ngữ hình thức ω là đóng dƣới dạng phép toán Boolean. Ngôn ngữ
đƣợc thực hiện bởi xây dựng Otomat Buchi.
Buchi Otomat đƣợc sử dụng để mô hình các tiến trình đồng thời hữu hạn trạng
thái. Vấn đề kiểm thử suy dẫn đến vấn đề ngôn ngữ. Để kiểm tra liệu ngôn ngữ của
Otomat đƣợc chứa trong Otomat kia, chúng ta kiểm tra có phải là tập rỗng giao của
a
a
a,b
S0
S1
18

hai Otomat gồm Otomat gốc và Otomat bù. Kiểm tra tính rỗng là đơn giản, ta chỉ cần
tìm kiếm một chu kỳ đạt đƣợc từ trạng thái khởi tạo và bao gồm ít nhất một trạng thái
chấp nhận đƣợc. Tuy nhiên bổ sung cho Otomat Buchi là vấn đề bùng nổ tăng đột
biến số trạng thái. Liệu ngôn ngữ của Otomat đƣợc chứa trong ngôn ngữ của Otomat
đa định có thể đƣợc thực hiện trên thời gian đa thức.
Một bảng chuyển A = bộ (∑,S,S
0
, E) là đơn định nếu (i) có trạng thái khởi tạo
duy nhất |S
0
| = 1 và (ii) số các cung đƣợc gán nhãn a bắt đầu tại s nhiều nhất là 1 cho
tất cả các trạng thái s Є S và cho tất cả các ký tự a Є ∑ , Vì vậy bảng chuyển xác định,
trạng thái hiện tại và ký tự đầu vào kế tiếp xác định duy nhất trạng thái kế tiếp. Kết
quả Otomat đơn định có nhiều nhất một thực hiện cho một từ. Không giống nhƣ
Otomat với từ hữu hạn, lớp các ngôn ngữ đƣợc đƣợc chấp nhận bởi Otomat Buchi xác
định sẽ ít hơn lớp các ngôn ngữ hình thức ω. Trong ví dụ 2.1 không có Otomat Buchi
chấp nhận ngôn ngữ L
0.

Otomat Muller tránh đƣợc nhƣợc điểm này với điều kiện chấp
nhận đƣợc hiệu quả hơn.
Otomat Muller A là một bảng chuyển (∑,S,S0, E) với lớp chấp nhận đƣợc F 
2
s.
Một thực hiện r trên Otomat A qua từ σ Є ∑
ω
là một thực hiện chấp nhận nếu inf(r)
Є F. Nghĩa là một thực hiện r là chấp nhận đƣợc nếu tập các trạng thái bằng tập trạng
thái Є F. Ngôn ngữ đƣợc chấp nhận bởi A đƣợc định nghĩa nhƣ trong trƣờng hợp của
Otomat Buchi.
Ví dụ 3.2: Lớp các ngôn ngữ đƣợc chấp nhận bửi Otomat Muller của hình 2 chấp
nhận ngôn ngữ L
0
cả các từ qua {a,b} với chỉ một số hữu hạn ký tự b. Lớp chấp nhận
Muller là {{s
1
}}. Vì vậy các thực hiện chấp nhận có thể viếng thăm trạng thái s0 chỉ
với hữu hạn lần. Vì vậy Otomat Muller xác định đủ mạnh để trình diễn ngôn ngữ hình
thức ω.





Hình 3.2: Otomat Muller xác định chấp nhận (a+b)
*
a
ω
3.3 Otomat thời gian

Trong phần này ta định nghĩa các từ thời gian (timed word) bằng cách nhóm giá
trị thời gian thực với mỗi ký tự trong từ. Khi đó ta định nghĩa Otomat ω để chấp nhận
a
a
b
b
S0
S1
19

từ thời gian và sử dụng chúng để phát triển lý thuyết ngôn ngữ hình thức thời gian đến
lý thuyết của ngôn ngữ hình thức ω.
3.3.1 Ngôn ngữ thời gian
Ta định nghĩa từ thời gian cho một hành vi của hệ thống thời gian thực tƣơng
ứng với từ thời gian trên các ký tự của sự kiện. Nhƣ trong trƣờng hợp mô hình của
thời gian liên tục, tập các số thực dƣơng, R, đƣợc chọn là miền thời gian. Một từ σ
đƣợc nhóm với trình tự thời gian  đƣợc định nghĩa nhƣ sau [6].
Định nghĩa 3.1: Trình tự thời gian  = 12 . là một trình tự vô hạn các giá trị
thời gian    với  >0 và thỏa mãn các ràng buộc sau:
1. Tính đơn điệu:  tăng đơn điệu nghĩa là 
i
< 
i+1

2. Tiến trình: cho mọi t Є R thì tồn tại i  1 để 
i
> t
Một từ thời gian với các ký tự (σ, ) đƣợc xem nhƣ đầu vào của Otomat biểu
diễn σ
i

tại thời điểm 
i
. Nếu mỗi ký tự σ
i
đƣợc biểu thị một sự kiện xảy ra thì thành
phần tƣơng ứng 
i
biểu diễn thời gian xẩy ra sự kiện σ
i
. Để mở rộng thích hợp cho
phép tại một thời điểm với một giá trị thời gian có thể nhiều sự kiện liên tiếp, vì vậy ta
có thể định nghĩa khác một chút về từ thời gian bằng cách yêu cầu trình tự thời gian
tăng đơn điệu ( chẳng hạn i  i+1 với i  1).
Ta xem xét ví dụ về ngôn ngữ thời gian
Vị dụ 3.3: cho ký tự {a,b}. Định nghĩa ngôn ngữ thời gian L1 bao gồm tất cả các
ký tự thời gian để không có trƣờng hợp ký tự b theo sau thời gian 5.6. Vì vậy ngôn
ngũa L
1
đƣợc cho nhƣ sau:
L
1
= {(σ, ) | . ((
i
> 5.6) → (σ
i
=a)) (3.1)
Ví dụ khác của ngôn ngữ L
2
bao gồm các từ thời gian trong đó a và b là chuyển
đổi liên tục và các cặp a và b, thời gian khác biệt giữa a và b luôn tăng. Ngôn ngữ L

đƣợc cho nhƣ sau
L2 ={((ab)
ω
, ) | . ((
2i
- 
2i-1
) < (
2i+2
- 
2i+1
)) (3.2)
Các toán tử lý thuyết ngôn ngữ chẳng hạn phép giao, hợp, bù đƣợc định nghĩa
cho ngôn ngữ thời gian áp dụng nhƣ ngôn ngữ không có thời gian. Thêm vào đó ta
định nghĩa toán tử Untime. Phép toán này lƣợc bỏ thời gian đƣợc liên kết với các ký
tự, hay phép chiếu của vết thời gian (σ, ) trên thành phần σ
Định nghĩa 3.2 Cho một ngôn ngữ thời gian L trên ∑, Untime(L) là ngôn ngữ ω
bao gồm σ Є ∑
ω
sai cho (σ, ) Є L theo trình tự thời gian .

×