Mô hình hóa Hệ thống bằng ngôn ngữ Maude

Một phần của tài liệu Các nguyên lý và kỹ thuật kiểm chứng chất lượng phần mềm (Trang 77)

5. Phương pháp nghiên cứu

3.4.3Mô hình hóa Hệ thống bằng ngôn ngữ Maude

Dựa vào biểu đồ trạng thái đã xây dựng ở trên, ta xây dựng mô hình mô phỏng bằng ngôn ngữ Maude như sau:

mod READ-PRACTISE is including NAT .

sorts Status Proc Conf . subsorts Proc < Conf .

op none : -> Conf [ctor] .

op __ : Conf Conf -> Conf [ctor assoc comm id: none] .

ops wait readT readF finish : -> Status [ctor] . *** Nhan trang thai cua chuong trinh

vars N M L : Nat . var S : Status .

*** Trang thai cua chuong trinh, mot trang thai duoc the hien boi 3 thong so *** Tham so 1: Nhan trang thai

*** Tham so 2: So tu nguoi dung doc dung

*** Tham so 3: So lan nguoi dung doc sai lien tiep *** Tham so 4: So tu nguoi dung khong doc lien tiep op [_,_,_,_] : Status Nat Nat Nat -> Proc [ctor] .

*** chuong trinh tu trang thai co nhan wait chuyen sang trang thai co nhan readT

*** So tu doc dung tang len 1 va so lan doc sai lien tiep quy ve 0 rl [read-true] : [wait, N, M, L] => [readT, N + 1, 0, 0] .

*** chuong trinh tu trang thai co nhan wait chuyen sang trang thai co nhan readF

*** So lan nguoi dung doc sai lien tiep tang len 1

rl [read-false] : [wait, N, M, L] => [readF, N, M + 1, 0] .

*** chuong trinh tu trang thai co nhan readT chuyen ve trang thai co nhan wait

*** neu so tu doc dung nho hon 100

crl [waiting1] : [readT, N, M, L] => [wait, N, M, L] if N < 100 .

*** chuong trinh tu trang thai co nhan readT chuyen ve trang thai co nhan finish

*** neu so tu doc dung bang 100

crl [finish1] : [readT, N, M, L] => [finish, N, M, L] if N == 100 .

*** chuong trinh chuyen tu trang thai co nhan readF ve trang thai co nhan wait

*** neu so lan doc sai lien tiep nho hon 5

crl [waiting2] : [readF, N, M, L] => [wait, N, M, L] if ( M < 5) .

*** chuong trinh chuyen tu trang thai co nhan wait ve trang thai co nhan wait

*** neu so tu khong doc lien tiep nho hon 99

*** chuong trinh chuyen tu trang thai co nhan wait ve trang thai co nhan finish

*** neu so tu khong doc lien tiep bang 99

crl [waiting3] : [wait, N, M, L] => [finish, N, M, 0] if ( L == 99) .

*** chuong trinh chuyen tu trang thai co nhan readF ve trang thai co nhan finish

*** neu so lan doc sai lien tiep la 5 (adsbygoogle = window.adsbygoogle || []).push({});

crl [finish] : [readF, N, M, L] => [finish, N, 0, L] if ( M == 5) . endm

mod READ-PRACTISE-PREDS is protecting READ-PRACTISE . including SATISFACTION . subsort Conf < State .

ops readFa readTr waitW finishF : -> Prop [ctor] . vars N M L : Nat .

var C : Conf . var P : Prop .

eq [readF, N, M, L] C |= readFa = true . eq [readT, N, M, L] C |= readTr = true . eq [wait, N, M, L] C |= waitW = true . eq [finish, N, M, L] C |= finishF = true . eq C |= P = false [owise] . endm mod READ-PRACTISE-CHECK is protecting READ-PRACTISE-PREDS . including MODEL-CHECKER . including LTL-SIMPLIFIER . op init : -> Conf .

eq init = [wait, 0, 0, 0] . *** Trang thai khoi tao endm

3.4.3.1 Tính sống còn

-Hệ thống ở trạng thái đang chờ đợi hoặc đang chạy thì có thể đạt được đến trạng thái kết thúc:

Hình 3.2.Kết quả kiểm tra Thuộc tính sống còn Hệ thống có thể đạt đến trạng thái kết thúc

-Hệ thống phải đảm bảo không luôn luôn ở trạng thái đợi:

~ [] waitW

Hình 3.3. Kết quả kiểm tra Thuộc tính sống còn Hệ thống đảm bảo không luôn ở trạng thái đợi.

3.4.3.2 Tính an toàn.

-Hệ thống không tồn tại 2 trạng thái kết thúc.

(waitW \/ readTr \/ readFa) U finishF.

Hình 3.4. Kết quả kiểm tra Thuộc tính an toàn Hệ thống đảm bảo không tồn tại hai trạng thái kết thúc.

-Số từ mà người dùng đọc đúng luôn nhỏ hơn hoặc bằng 100.

Hình 3.5. Kết quả kiểm tra tính bất biến Số từ mà người dùng đọc đúng luôn nhỏ hơn 100.

-Số từ mà người dùng không đọc liên tiếp luôn nhỏ hơn 100

Hình 3.6. Kết quả kiểm tra tính bất biến

Số từ mà người dùng không đọc liên tiếp luôn nhỏ hơn 100.

-Số lần mà người dùng đọc sai liên tiếp phải nhỏ hơn hoặc bằng 5.

Hình 3.7. Kết quả kiểm tra tính bất biến

Số lần mà người dùng đọc sai liên tiếp phải nhỏ hơn hoặc bằng 5.

Đã kiểm chứng thành công các thuộc tính sống còn, an toàn và bất biến của mô hình. Với thuộc tính an toàn, Hệ thống không tồn tại hai trạng thái kết thúc. Thuộc tính sống còn, Hệ thống ở trạng thái đang chờđợi (hoặc đang chạy) thì có thể đạt đến trạng thái kết thúc, ngoài ra, Hệ thống phải đảm bảo không luôn luôn ở trạng thái đợi. Còn thuộc tính bất biến, đã được mô tả khá rõ trong biểu đồ trạng thái, đó là số từ mà người sử dụng đọc đúng luôn nhỏ hơn hoặc bằng 100, số từ mà người sử dụng không đọc liên tiếp luôn nhỏ hơn 100, và cuối cùng là số lần mà người sử dụng đọc sai liên tiếp phải nhỏ hơn hoặc bằng 5.

CHƯƠNG IV: KT QU VÀ BÀN LUN 4.1 Kết quả và các đóng góp của luận văn

Luận văn cũng đã trình bày các lý thuyết, khái niệm; các nguyên lý, cách áp dụng của phương pháp hình thức; mô hình, công cụ và kỹ thuật của Maude vào xây dựng ứng dụng. Áp dụng những lý thuyết, kỹ thuật trên vào bài toán cụ thể là

Reading Practise, và sử dụng MaudeChecker như một công cụ kiểm chứng.

Bên cạnh đó, luận văn đã xây dựng thành công mô hình kiểm chứng viết bằng ngôn ngữ lập trình Maude, sử dụng công cụMaudeChecker.

Trong luận văn đã ứng dụng mô hình kiểm chứng áp dụng cho một trường hợp (case-study) cụ thể là phần mềm ứng dụng Reading Practise. (adsbygoogle = window.adsbygoogle || []).push({});

4.2 Bàn luận

Một số nội dung còn tồn tại

Trong đề tài, chưa xem xét đến việc nếu công cụ MaudeChecker đưa ra các phản ví dụ. Khi có một tính chất mà có phản ví dụ (tức là Maude Checker trả về

False) thì ta sẽ phải sửa đổi lại mô hình, và đi kiểm chứng lại xem mô hình có thỏa mãn tính chất đó hay không. Ta sẽ tiếp tục thực hiện việc này đến khi nào tính chất được thỏa mãn thì thôi.

Ngoài ra, trong quá trình thực hiện đề tài vẫn có một số vấn đề chưa giải quyết được. Tác giả cũng chưa quyết định được nên đưa tính chất này vào thuộc tính nào của một trong ba thuộc tính trên. Có thể diễn giải vấn đề chưa giải quyết được qua một ví dụ trực quan sau đây:

Dựa vào biểu đồ trạng thái mà tác giả đã xây dựng ở trên, thì mỗi tiến trình

wait, ReadTrue hay ReadFalse rồi sẽ phải dẫn đến trạng thái kết thúc. Ta xét

ReadTrueReadFalse khi chúng đạt đến trạng thái kết thúc. Với ReadTrue, thì tổng số lần đọc đúng của người dùng là 100 thì Hệ thống sẽ kết thúc (chú ý rằng Hệ thống của chúng ta khá nhỏ, và để cho đơn giản, chỉ lấy đến tổng số lần đọc đúng là 100). Với ReadFalse thì số lần đọc sai liên tiếp là 5 lần thì Hệ thống sẽ kết thúc. Để cho dễ hình dung, giả sử một người sử dụng đọc đúng 99 lần liên tiếp rồi, vậy ta sẽ xét 5 lần đọc sau đó của người sử dụng. Giả sử các lần 100, 101, 102 và 103 người

sử dụng đều đọc sai. Như thế kết quả của lần đọc 104 sẽ không phụ thuộc vào việc người sử dụng đọc đúng hay đọc sai, bởi lẽđến lần đọc 104, nếu người sử dụng đọc đúng, thì ReadTrue sẽ đạt đến trạng thái kết thúc. Nếu người sử dụng đọc sai thì

ReadFalse sẽđạt đến trạng thái kết thúc.

Ví dụ đưa ra ở trên là nhằm mục đích đưa ra câu hỏi, liệu một Hệ thống khi đạt đến trạng thái như vậy, thì chất lượng của Hệ thống sẽ như thế nào, khi giá trị đọc cuối cùng không còn phụ thuộc vào việc người sử dụng đọc như thế nào nữa.

Đó cũng là vấn đề còn tồn đọng mà đề tài chưa thể giải quyết được.

Hướng nghiên cứu tiếp theo:

Với đề xuất quy trình đặc tả và kiểm chứng mô hình sử dụng MaudeChecker, vì thời gian có hạn nên trong đề tài tác giả chưa xem xét đến việc nếu công cụ

MaudeCheckerđưa ra các phản ví dụ, và vấn đề còn tồn đọng chưa giải quyết được mà tác giả đã nêu ở trên. Trong tương lai, tác giả sẽ tiếp tục xem xét và hoàn thiện những vấn đề tồn tại nêu trên.

Ngoài việc ứng dụng phương pháp kiểm chứng mô hình và ngôn ngữ lập trình Maude để kiểm chứng các hệ thống phần mềm ở giai đoạn thiết kế, tác giả cũng tiếp tục nghiên cứu việc sử dụng ngôn ngữ lập trình Maude và các công cụđể có thể kiểm chứng mã nguồn của phần mềm.

Ngoài ra với đề xuất sử dụng kỹ thuật kiểm chứng mô hình để kiểm chứng các ứng dụng trên các công cụ kiểm chứng của Maude, công việc mô hình hóa bằng ngôn ngữ Maude không được thuận tiện vì phải thực hiện bằng tay và sử dụng ngôn ngữ Maude. Trong tương lai tác giả mong muốn phát triển thêm tính năng mô hình hóa đồ họa, giao diện trực quan cho công cụ Maude.

KT LUN

Nội dung luận văn đã tập trung vào tìm hiểu lý thuyết các nguyên lý và kỹ thuật kiểm chứng chất lượng phần mềm đặc biệt là kỹ thuật kiểm chứng mô hình, đồng thời nghiên cứu về việc ứng dụng của phương pháp hình thức; mô hình, công cụ và kỹ thuật của ngôn ngữ lập trình Maude vào xây dựng ứng dụng.

Dựa trên các kết quả tìm hiểu và nghiên cứu đã đạt được, tác giả đã áp dụng những lý thuyết, kỹ thuật nêu trên vào bài toán cụ thể là kiểm chứng mô hình phần mềm Reading Practise, và sử dụng công cụ kiểm chứng mô hình là MaudeChecker.

Trong quá trình thực hiện luận văn này, tác giả đã cố gắng tìm hiểu, học hỏi thêm các kinh nghiệm cũng như các kiến thức mới. Tuy nhiên có nhiều hạn chế chủ quan cũng như khách quan nên có một số vấn đề mà đề tài vẫn chưa giải quyết được nhưđã nói ở trên. Tác giả mong muốn nhận được sự quan tâm, giúp đỡđểđề tài có thểđược phát triển và hoàn thiện hơn nữa.

Sau cùng, tác giả xin chân thành gửi lời cảm ơn PGS.TS. Huỳnh Quyết Thắng đã tận tình hướng dẫn, giúp đỡ tác giả hoàn thành luận văn này. Tác giả cũng xin chân thành gửi lời cảm ơn tới tất cả các bạn bè, các thầy cô giáo, các đồng nghiệp đã động viên, tạo điều kiện cho tác giả trong suốt thời gian thực hiện luận văn này.

Hà Nội, tháng 9 năm 2011 Tác giả luận văn

TÀI LIU THAM KHO Tiếng Việt

[1] ThS Thạc Bình Cường, “Bài giảng điện tử môn học Kiểm thử và đảm bảo chất lượng phần mềm”. ĐHBK HN, 2010.

[2] Thư viện cao học trường Đại học Công nghệ thông tin, “ Kiểm thử phần mềm”, 2010.

Tiếng Anh

[3] Christel Baier Joost-Pieter Katoen, “Principle Of Model Checking”, The MIT Press Cambridge, Massachusetts London, England, 2008.

[4] Ian Sommerville (2004), “Software engineering, 7th edition”, Thomas Casson, 2007

[5] Manuel Clavel - Francisco Durán - Steven Eker - Patrick Lincoln- Narciso Martí- Oliet José Meseguer - Carolyn Talcott, All About Maude - A High- Performance Logical Framework”. Springer, 2007. (adsbygoogle = window.adsbygoogle || []).push({});

[6] Peter Marweden (2006), “Embedded Systems Design”. Spinger, 2006

[7] http://en.wikipedia.org/wiki/Maude_system

Một phần của tài liệu Các nguyên lý và kỹ thuật kiểm chứng chất lượng phần mềm (Trang 77)