ThS37.121_Kiểm tra mô hình phần mềm sử dụng lý thuyết Ôtômat Buchi và Logic thời gian tuyến tín
Với sự phát triển nhanh tột bậc của lĩnh vực công nghệ thông tin và truyền thông trên cả các hệ thống phần cứng và phần mềm, khả năng xảy ra nhiều lỗi, đặc biệt là các lỗi tinh vi là rất cao. Những lỗi này có thể gây ra những hậu quả nghiêm trọng về tiền bạc, thời gian, thậm chí cuộc sống của con người. Nhìn chung, một lỗi càng sớm được phát hiện sẽ càng mất ít công sức để sửa lỗi đó.
• Theo thống kê của Standish Group (2000) trên 350 công ty với hơn 8000 dự án phần mềm có: 31% dự án phần mềm bị huỷ bỏ trước khi được hoàn thành. Với các công ty lớn, chỉ có khoảng 9% tổng số các dự án hoàn thành đúng tiến độ và trong ngân sách dự án ( với các công ty nhỏ, tỷ lệ này vào khoảng 16%)
• Theo thống kê của PCWeek (2001) trên 365 công ty chuyên cungcấp các dự án phần mềm chuyên nghiệp có: 16% các dự án là thành công, 53% sử dụng được nhưng không thành công hoàn toàn, 31% bị huỷ bỏ.
• NIST Study (2002): Lỗi phần mềm gây thiệt hại ước tính 59.5 triệu đô la cho nền kinh tế nước Mỹ mỗi năm chiếm 0.6% GDP.
• Vệ tinh nhân tạo Ariane-5 vào ngày 4/06/1996 chỉ sau 36 giây rời khỏi bệ phóng đã bị nổ vì lý do lỗi phần mềm: người ta đã sử dụng 16 bit lưu trữ số nguyên để lưu trữ
dữ liệu kiểu thực 64 bit gây thiệt hại 500 triệu USD…
Trong các ngành công nghiệp, luôn đặt ra một yêu cầu phát triển các phương pháp luận để có thể tăng độ tin cậy trong việc thiết kế và xây dựng phần mềm. Các phương pháp luận đó sẽ cải thiện chất lượng và hạ giá thành cho việc phát triển một hệ thống. Thêm nữa, về mặt lý thuyết, cần phải cung cấp một nền tảng toán học chặt chẽ và đúng đắn cho việc thiết kế các hệ thống thông tin, để những người xây dựng và phát triển phần mềm có thể kết hợp giữa kinh nghiệm thực tiễn và lý thuyết.
Một cách tiếp cận truyền thống là xây dựng hệ thống phần mềm bằng cách đi từ xây dựng mô hình. Những mô hình đó sẽ được chỉnh sửa cho đến khi đạt được đến độ tin cậy về tính chính xác và đúng đắn. Cách tiếp cận này có ưu điểm và chi phí thấp hơn so với việc xây dựng hệ thống một cách trực tiếp. Tuy nhiên, nhược điểm của cách tiếp cận này là sự định tính nhập nhằng trong việc xây dựng mô hình.
Cách tiếp cận thứ hai là sử dụng việc xác thực hình thức (Formal Verification) bằng cách xây dựng mô hình toán học của hệ thống, sử dụng một ngôn ngữ để đặc tả các thuộc tính của một hệ thống. Đồng thời cung cấp các phương thức để chứng minh mô hình đó thoả mãn các thuộc tính đề ra. Khi phương thức đó được chứng minh bằng ôtômat, người ta gọi là xác thực tự động (Automation Verification). Tuy nhiên, các phương thức xác thực đó chưa thoả mãn các điều kiện cần có với một công cụ tự động như sau:
• Có cơ sở hình thức để xây dựng được các công cụ có tính thực thi. Công cụ hoặc phương thức đó phải dễ dàng, hữu ích cho người sử dụng. Do đó, các ký hiệu phải rõ ràng, dễ hiểu với người sử dụng, có giao diện thân thiện.
• Có khả năng liên kết giữa các giai đoạn trong vòng đời phần mềm. Dễ dàng tích hợp giữa các pha trong vòng đời phần mềm
• Tính ổn định cao, nhất là với những phần mềm phức tạp.
• Có khả năng phát hiện lỗi và sửa lỗi
Cách tiếp cận thứ 3: Kiểm tra mô hình (Model Checking) là một phương thức có thể đáp ứng được các yêu cầu trên. Các kỹ thuật truyền thống đang được sử dụng như kiểm thử (testing) hoặc mô phỏng (simulation) thường không tự động, quá phức tạp hoặc chỉ đưa ra kết quả từng phần. Chúng có thể tìm ra rất nhiều lỗi nhưng không thể tìm ra tất cả các lỗi nhất là với những phần mềm tương tranh đa luồng, phần mềm nhúng, phần mềm thời gian thực, phần mềm hướng đối tượng…Khắc phục những nhược điểm đó, các giải thuật kiểm tra mô hình đã cung cấp một cách tiếp cận toàn diện và tự động để phân tích hê thống. Phương pháp kiểm tra mô hình phần mềm là một kỹ thuật tự động mà: khi cho một mô hình hữu hạn trạng thái của một hệ thống và một thuộc tính hệ thống cần thoả mãn, kiểm tra xem hệ thống đó có thoả mãn thuộc tính đưa ra hay không?[1]
Với lợi ích to lớn của kiểm tra mô hình đặc biệt là kiểm tra mô hình phần mềm, đây trở thành một vấn đề nóng hổi đang được rất nhiều người quan tâm trên thế giới. Tuy nhiên đây là một vấn đề rất rộng, cộng với tính phức tạp và mới mẻ của nó nên luận văn sẽ giới hạn nghiên cứu trong xây dựng giải thuật kiểm tra mô hình phần mềm tối ưu và có bố cục, nội dung như sau:
Chương 1: Tổng quan về kiểm tra mô hình phần mềm: giới thiệu về định nghĩa, lịch sử ra đời và phát triển của kiểm tra mô hình phần mềm, các vấn đề đang được quan tâm và cần giải quyết xung quanh kiểm tra mô hình phần mềm hiện nay.
Chương 2: Các giải thuật kiểm tra mô hình phần mềm. Trong chương này sẽ đề cập đến các giải thuật kiểm tra mô hình phần mềm đang được áp dụng hiện nay. Từ đó sẽ xem xét và đưa ra kiến trúc và giải thuật đề xuất phù hợp nhất giải quyết các vấn đề đặt ra và cho hiệu năng cao
Chương 3: Đề xuất và xây dựng giải thuật kiểm tra mô hình phần mềm: Đề cập đến các kiến thức nền tảng nhưng rất mới mẻ như hệ thống chuyển trạng thái, lôgic thời gian tuyến tính, Ôtômat Buchi… trên cơ sở lý thuyết đó, sẽ đề xuất xây dựng giải thuật kiểm tra mô hình phần mềm tối ưu nhất.
Chương 4: Xây dựng mô hình minh hoạ: Dựa vào giải thuật đề xuất, lựa chọn công cụ để xây dựng mô hình minh hoạ. Giới thiệu ngôn ngữ PROMELA để mô hình hoá hệ thống và công cụ SPIN để kiểm tra mô hình phần mềm. Đồng thời đưa ra các ví dụ về để minh hoạ cơ chế hoạt động của SPIN với các hệ thống tương tranh.
Kết luận: Tổng kết những gì đã đạt được, đóng góp khoa học của luận văn và hướng mong muốn phát triển trong tương lai của đề tài