1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng đánh giá độ tin cậy phần mềm sử dụng lý thuyết bayes

54 290 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 559,25 KB

Nội dung

Theo hướng đó, tổ chức ANSI đã đưa ra khái niệm chuẩn về độ tin cậy phần mềm: “Độ tin cậy phần mềm là xác suất hoạt động không thất bại của phần mềm trong thời gian xác định và môi trườn

Trang 1

-

TRẦN BẮC

XÂY DỰNG ĐÁNH GIÁ ĐỘ TIN CẬY PHẦN MỀM SỬ

DỤNG LÝ THUYẾT BAYES

Chuyên ngành: Công nghệ thông tin

LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC:

PGS.TS Huỳnh Quyết Thắng

Hà Nội - Năm 2012

Trang 2

MỤC LỤC

MỤC LỤC 1 

LỜI CẢM ƠN 4 

NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN KHOA HỌCError! Bookmark not defined.  DANH MỤC CÁC HÌNH VẼ 6 

DANH MỤC CÁC BẢNG 6 

DANH MỤC CÁC TỪ VIẾT TẮT 6 

MỞ ĐẦU 7 

CHƯƠNG 1: LÝ THUYẾT ĐỘ TIN CẬY PHẦN MỀM 9 

1.1.  Khái niệm độ tin cậy phần mềm 9 

1.1.1.  Các khái niệm liên quan 10 

1.1.2.  Biểu diễn toán học cho độ tin cậy 15 

1.2.  Các biện pháp nâng cao độ tin cậy phần mềm 17 

1.2.1.  Nguyên tắc cơ bản 17 

1.2.2.  Phân loại các biện pháp 18 

1.3.  Đo lường độ tin cậy phần mềm 19 

1.4.  Mô hình độ tin cậy phần mềm 20 

1.4.1.  Khái niệm mô hình độ tin cậy 20 

1.4.2.  Phân loại mô hình độ tin cậy 21 

Tóm tắt chương 1 23 

Trang 3

2.1.  Xác suất tiên nghiệm và hậu nghiệm 24 

2.2.  Công thức Bayes 24 

2.3.  Phân phối liên hợp 26 

2.4.  Sử dụng lý thuyết Bayes để đánh giá độ tin cậy phần mềm 27 

2.4.1.  Hướng tiếp sử dụng lý thuyết Bayes để đánh giá độ tin cậy phần mềm 27 

2.4.2.  Thủ tục tổng quát sử dụng lý thuyết Bayes để đánh giá độ tin cậy phần mềm 27  CHƯƠNG 3: ĐÁNH GIÁ ĐỘ TIN CẬY PHẦN MỀM SỬ DỤNG LÝ THUYẾT BAYES 29 

3.1.  Mô hình hóa bài toán 29 

3.2.  Xác định phân phối tiên nghiệm và hậu nghiệm 30 

3.2.1.  Lựa chọn phân phối phối tiên nghiệm và hậu nghiệm 30 

3.2.2.  Xác định tham số của phân phối tiên nghiệm và hậu nghiệm 30 

3.3.  Đánh giá độ tin cậy Error! Bookmark not defined.  CHƯƠNG 4: THỰC NGHIỆM PHƯƠNG PHÁP ĐỀ XUẤT 34 

1.1.  Dữ liệu thử nghiệm 34 

1.2.  Kết quả thử nghiệm 34 

1.3.  Đánh giá kết quả thử nghiệm Error! Bookmark not defined.  Tóm tắt chương 4 40 

CHƯƠNG 5: KẾT QUẢ VÀ BÀN LUẬN 42 

5.1.  Nhiệm vụ đã hoàn thành 42 

5.2.  Các đóng góp khoa học 42 

Trang 4

5.3.  Hướng phát triển luận văn 42 

TÀI LIỆU THAM KHẢO 44 

PHỤ LỤC 01: KHÁI NIỆM CƠ BẢN VỀ XÁC SUẤT VÀ CÁC PHÂN PHỐI XÁC SUẤT ÁP DỤNG TRONG LUẬN VĂN 46 

1.  Khái niệm cơ bản về xác suất 46 

1.1.  Biễn ngẫu nhiên 46 

1.2.  Quy luật phân bố xác suất của biến ngẫu nhiên 46 

2.  Phân phối gama 47 

3.  Phân phối mũ 47 

PHỤ LỤC 02: CÔNG THỨC HÀM GAMMA TRONG BẢNG TÍNH EXEL 48 

PHỤ LỤC 03: DỮ LIỆU THỬ NGHIỆM 50 

Trang 5

LỜI CẢM ƠN

Đầu tiên em xin gửi lời cảm ơn tới các thầy cô giáo trong trường Bách Khoa nói chung và khoa công nghệ thông tin nói riêng, những người đã truyền thụ cho chúng em những kiến thức cơ bản nhất, giúp chúng em có được nền tảng trong quá trình làm việc

và công tác sau này

Em xin gửi lời cảm ơn đến PGS.TS Huỳnh Quyết Thắng, người không những truyền thụ kiến thức cho em mà còn giúp đỡ tận tình trong suốt quá trình em thực hiện luận văn này: giúp đỡ chọn lựa hướng thực hiện cũng như đề tài luận văn, cung cấp tài liệu, hướng dẫn kiến thức

Và cuối cùng tôi muốn gửi lời cảm ơn chân thành nhất tới bạn bè và đặc biệt

là những người thân trong gia đình đã luôn quan tâm, động viên và giúp đỡ tôi trong quá trình hoàn thành luận văn tốt nghiệp này

Do kiến thức cũng như khả năng làm việc có hạn, luận văn không tránh khỏi những thiếu sót, những điều chưa tối ưu, mong các thầy cô giáo giúp đỡ và chỉ bảo thêm để sau này em có thể tiếp tục hoàn thiện đề tài này

Xin cảm ơn!

Hà Nội ngày tháng 03 năm 2012

Trang 6

LỜI CAM ĐOAN

Tôi cam đoan rằng nội dung của luận văn này là kết quả nghiên cứu của bản

thân, được thực hiện trên cơ sở nghiên cứu lý thuyết, khảo sát thực tiễn và dưới sự

hướng dẫn khoa học của: PGS TS Huỳnh Quyết Thắng Tất cả những tham khảo từ các

nghiên cứu liên quan điều được nêu rõ nguồn gốc một cách rõ ràng từ danh mục tài

liệu tham khảo được đề cập ở phần sau của luận văn Các số liệu, mô hình, giải pháp

thiết kế được đưa ra xuất phát từ thực tiễn và chưa từng công bố dưới bất kỳ hình thức

nào

Trần Bắc

Trang 7

DANH MỤC CÁC HÌNH VẼ

Hình 1 Mối quan hệ giữa fault, error và failure 11 Hình 2 Ý tưởng cơ bản về mô hình độ tin cậy 21 Hình 3 Phân loại các mô hình độ tin cậy phần mềm 23 

DANH MỤC CÁC BẢNG

Bảng 1 Các khái niệm liên quan lỗi phần mềm [3] 11 Bảng 2 Số thất bại trên một chu kỳ thời gian 14 Bảng 3 Khoảng thời gian giữa các thất bại 14  

DANH MỤC CÁC TỪ VIẾT TẮT

1 ANSI Amercian National Standarts Institue

Viện tiêu chuẩn quốc gia Mỹ

2 MTBF Mean Time Between Failure

Thời gian trung bình giữa các thất bại

3 CDF Cumulative distribution function

Hàm phân bố xác suất  

Trang 8

MỞ ĐẦU

i Lý do chọn đề tài

- Tìm hiểu về lý thuyết độ tin cậy phần mềm, lý thuyết Bayes

- Xây dựng phương pháp đánh giá độ tin cậy phần mềm sử dụng lý thuyết Bayes; đánh giá và so sánh kết quả áp dụng

ii Lịch sử nghiên cứu

- Tháng 11/2009: Nhận giáo viên hướng dẫn, định hướng và thống nhất đề tài luận văn

- Từ 12/2009 → 5/2010: Tìm hiểu lý thuyết độ tin cậy phần mềm, lý thuyết Bayes

- Từ 6/2010 → 12/2010: Tìm hiểu và xây dựng phương pháp đánh giá độ tin cậy phần mềm sử dụng lý thuyết Bayes

- Từ 1/2011 → 9/2011: Tổng hợp kết quả nghiên cứu và hoàn thành quyển luận văn

iii Mục đích, đối tượng và phạm vi nghiên cứu

- Mục đích: Tìm hiểu lý thuyết và ứng dụng của Bayes trong việc đánh giá độ tin cậy của phần mềm Nghiên cứu và đề xuất các hướng mở rộng phát triển của lý thuyết đã tìm hiểu

- Đối tượng: Độ tin cậy phần mềm và lý thuyết Bayes

- Phạm vi nghiên cứu: thuộc lĩnh vực đo chất lượng phần mềm, chuyên nghành Công nghệ phần mềm, ngành Công nghệ thông tin

iv Các luận điểm cơ bản và đóng góp mới của tác giả

- Các luận điểm cơ bản:

+ Độ tin cậy phần mềm + Lý thuyết Bayes

Trang 9

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

- Tìm hiểu và thực hành áp dụng lý thuyết Bayes

- Tìm hiểu lý thuyết về độ tin cậy phần mềm, thực hành công cụ đánh giá độ tin cậy phần mềm

- Áp dụng lý thuyết Bayes vào bài toán đánh giá độ tin cậy của phần mềm Thử nghiệm và so sánh kết quả về phương pháp áp dụng

Trang 10

CHƯƠNG 1: LÝ THUYẾT ĐỘ TIN CẬY PHẦN MỀM

1.1 Khái niệm độ tin cậy phần mềm

Để đơn giản, các thuật ngữ độ tin cậy và độ tin cậy phần mềm được hiểu là đồng nhất trong phạm vi luận văn này Độ tin cậy là thuộc tính quan trọng nhất của chất lượng phần mềm Đã có rất nhiều những quan điểm khác nhau về định nghĩa độ tin cậy, về vấn đề định lượng độ tin cậy như thế nào? Khi mà công nghệ phần mềm chưa phát triển, các chương trình phần mềm còn đơn giản, chỉ tồn tại một cách hiểu tương đương phần mềm hoặc có lỗi hoặc không có lỗi, thì định nghĩa độ tin cậy phần mềm chỉ đơn thuần là một giá trị nhị phân: giá trị một khi phần mềm không có lỗi và ngược lại Sau này, công nghệ phần mềm phát triển, phần mềm ngày càng trở lên phức tạp, chất lượng phần mềm được đánh giá dựa vào các kết quả trong pha kiểm thử phần mềm Theo hướng đó, tổ chức ANSI đã đưa ra khái niệm chuẩn về độ tin cậy phần mềm:

“Độ tin cậy phần mềm là xác suất hoạt động không thất bại của phần mềm trong thời gian xác định và môi trường xác định [1].”

Đầu tiên, độ tin cậy được định nghĩa là đo lường theo xác suất Điều này có nghĩa là về mặt dự đoán độ tin cậy không có bất kỳ phát biểu nào giống như “phần mềm không bao giờ thất bại” mà thay vào đó là phát biểu “xác suất chắc chắn hoạt động không thất bại” Hơn nữa, độ tin cậy là hàm của thời gian, tức là nó sẽ tương ứng với mong đợi trực giác phần mềm hoạt động càng lâu càng có khả năng thất bại xuất hiện Một yếu tố khác là độ tin cậy không chỉ phụ thuộc vào chính phần mềm mà còn chịu ảnh hưởng của môi trường mà phần mềm đó hoạt động Ví dụ như độ tin cậy của thành phần bên trong phụ thuộc trực tiếp vào các dịch vụ ngoài được gọi tới hay độ tin cậy phụ thuộc vào cấu hình phần cứng mà nó được triển khai trên

Trang 11

Nếu định nghĩa thất bại như là sự lệch hành vi phần mềm khỏi đặc tả của

nó thì sự chậm lại của hệ thống có thể gây ra thất bại nếu các mục tiêu hiệu năng của nó không được đáp ứng Thuật ngữ “hoạt động không lỗi” không trực tiếp bao gồm việc hướng người dùng của độ tin cậy phần mềm Điều này trở nên rõ ràng nếu xem xét một định nghĩa về độ tin cậy phần mềm được đưa ra bởi Cheung:

“Từ góc nhìn người dùng, độ tin cậy của hệ thống có thể được đo lường như là xác suất mà khi người dùng yêu cầu dịch vụ từ hệ thống thì nó sẽ thực hiện để thỏa mãn người dùng [2].”

Ở đây, độ tin cậy của phần mềm phụ thuộc vào các dịch vụ mà người dùng yêu cầu từ phần mềm Nếu dịch vụ lỗi không bao giờ được yêu cầu thì

nó không ảnh hưởng đến độ tin cậy được trải nghiệm bởi người dùng Hơn nữa,

sự xuất hiện của thất bại được quyết định bởi người dùng (và không phải bởi sự lệch khỏi đặc tả) Nếu phần mềm không thực hiện để thỏa mãn người dùng thì điều này được giả sử là tương đương với sự xuất hiện của lỗi Đây là một cách nhìn rất chặt chẽ về các thất bại vì nó bao gồm tất cả các dạng vấn đề hiệu năng cũng như các lỗi đặc tả và thiết kế của phần mềm Tuy nhiên, việc để lại quyết định thất bại đã xảy ra hay không hoàn toàn cho người dùng mang lại rủi ro của việc phụ thuộc vào tâm trạng của họ và không thể đưa ra các đo lường độ tin cậy khách quan, tin cậy và có thể kiểm tra

1.1.1 Các khái niệm liên quan

 Lỗi, sai sót và thất bại phần mềm

Nếu chỉ dùng khái niệm lỗi để chỉ một đoạn lỗi trong chương trình hoặc phần mềm chưa đáp ứng đúng và đủ một yêu cầu theo đặc tả ban đầu thì tạo ra

sự nhập nhằng Các khái niệm dưới đây được định nghĩa để loại bỏ sự nhập nhằng trên về lỗi của phần mềm

Trang 12

Bảng 1 Các khái niệm liên quan lỗi phần mềm [3]

Các khái niệm Giải thích

(Failures)

Thất bại

Một thất bại phần mềm xảy ra khi người dùng thấy được phần mềm dừng cung cấp các dịch vụ như mong đợi.Có nhiều cấp độ khác nhau của thất bại phần mềm tùy thuộc vào tính nghiêm trọng của nó

số trường hợp chúng không được gỡ bỏ hết mà chỉ là giả thuyết

(Defect)

Khiếm khuyết

Đôi lúc sự phân biệt giữa sai sót và thất bại phần mềm không được rõ ràng, người ta dùng khái niệm khiếm khuyết để nói về một sai sót (nếu xét về khía cạnh nguyên nhân) hoặc một thất bại (nếu xét về khía cạnh hiệu dụng)

(Errors)

Lỗi

Lỗi do hệ thống là một tiến trình, một bước hay một định nghĩa dữ liệu không đúng trong một chương trình hoặc khiếm khuyết của thành phần, thiết bị phần cứng Lỗi do con người là những hành vi sai sót của con người tạo ra lỗi trong hệ thống khi sử dụng những phương pháp, công cụ hay thông tin để giải quyết vấn đề

Hình vẽ dưới đây mô tả mối quan hệ của failure, fault và error

 

Hình 1 Mối quan hệ giữa fault, error và failure

Trang 13

Có ba loại thời gian cần phân biệt khi đánh giá độ tin cậy phần mềm: thời gian thực thi, thời gian ngày tháng và thời gian đồng hồ Trong đó thời gian ngày tháng là thời gian thực tế sử dụng qua các thuật ngữ như: năm, tháng, ngày, giờ…[3]

Thời gian thực thi của phần mềm là thời gian của CPU sử dụng thực sự khi thực thi phần mềm Nó có thể đo lường theo thời gian liên tục hoặc rời rạc, trong

đó thời gian rời rạc liên quan đến số chu kỳcủa bộ vi xử lý

Thời gian đồng hồ là thời gian trôi qua từ lúc bắt đầu đến khi kết thúc của máy tính khi thực thi phàn mềm Quá trình thực thi trên máy tính đang chạy bao gồm thời gian đợi và thời gian thực thi của các chương trình Nó có thể được xem như thời gian được trải nghiệm bởi khách hàng của phần mềm

Độ tin cậy phần mềm thường được cho dưới dạng các khoảng thời gian thực thi còn độ tin cậy phần cứng thường được đưa ra với thời gian hoạt động (là thời gian thiết bị phần cứng đang hoạt động được cho trước dưới dạng thời gian đồng hồ) nên khi kết hợp các thành phần phần mềm và phần cứng càn có sự chuyển đổi về thời gian

Hiệu quả của các dịch vụ ngoài có ảnh hưởng các dịch vụ bên trong được cung cấp bởi phần mềm

Trang 14

Cùng một hệ thống phần mềm mà chạy trên các phần cứng kháu nhau sẽ dẫn đến hiệu quả sử dụng các dịch vụ phần mềm, các trình dò sửa lỗi phần mềm khác nhau Như vậy xem xét yếu tố phần cứng, mà cụ thể là đánh giá độ tin cậy phần cứng có ảnh hưởng đến độ tin cậy phần mềm

 Hai mô hình dữ liệu

Mô hình độ tin cậy phần mềm thông thường được chia vào hai loại phụ thuộc vào môi trường chúng thực thi [3] Trong đó, mô hình thông dụng nhất là mô hình dựa trên thời gian Các mô hình này bao gồm các độ đo tin cậy, ví dụ như hàm mật độ lỗi của phần mềm Còn loại mô hình thứ hai lại có hướng tiếp cập ngược lại, bằng việc sử dụng các thao tác đầu vào như tính năng trung tâm Khi đó đánh giá độ tin cậy sẽ dựa trên tỷ lệ các hoạt động thành công trên tổng số các hoạt động trong các pha kiểm thử Tuy nhiên mô hình này sẽ tính toán không phù hợp thực tế với các hệ thống mà có thời gian hoạt động quá dài Do vậy phần lớn các nghiên cứu gần đây đều tập trung vào mô hình dựa trên thời gian

Trở lại mô hình dựa trên thời gian, việc đánh giá dựa trên dữ liệu thu được về số các lỗi tìm được trong một chu kỳ hoặc thời gian giữa các lỗi của phần mềm Mô hình này được chia nhỏ thành hai loại cơ bản dựa theo loại dữ liệu mà mô hình sử dụng: số

Trang 15

lỗi trong một chu kỳ thời gian và thời gian giữa các lỗi Hai bảng dưới đây minh

họa chi tiết hai mô hình cơ bản này

Bảng 2 Số thất bại trên một chu kỳ thời gian

Thời gian Số thất bại trên một chu kỳ Số thất bại tích lũy

Số thứ tự thất bại Khoảng thời gian giữa các thất bại Thời gian thất bại

Trang 16

 Sự khác biệt giữ độ tin cậy phần phầm và độ tin cậy phần cứng

Sự khác biệt chính giữa hai khái niệm này nằm ở chỗ các nguồn thất bại Các thất bại phần mềm thường gây ra bởi các lỗi thiết kế và xây dựng, từ đó đưa đến sự lệch hành vi phần mềm khỏi mong đợi của người dùng và đặc tả Hơn nữa nếu những thất bại phần mềm được sửa thì nó sẽ sửa cho tất cả thời gian còn những lỗi phần cứng

dù đã được sửa có thể vẫn xuất hiện lại Mặt khác, một đặc trưng của phần cứng là có tính đến độ hao mòn bởi thời gian sử dụng còn phần mềm thì không có ảnh hưởng bởi

độ hao mòn

1.1.2 Biểu diễn toán học cho độ tin cậy

Về phương diện toán học, hàm tin cậy của hệ thống R(t) là xác suất mà hệ thống

sẽ hoạt động thành công hay không có thất bại trong khoảng thời gian từ 0 đến thời điểm t[4]:

đây cũng chính là hàm phân bố của biến ngẫu nhiên T

Nếu biến ngẫu nhiên T có hàm mật độ xác suất là f t  , khi đó độ tin cậy của hệ thống sẽ là:

Trang 17

  lim          

t

R t R t t f t t

Đại lượng    t dt biểu diễn xác suất một phần mềm sẽ gặp thất bại trong

khoảng thời gian từ t đến tdt Hàm mật độ thất bại có vai trò quan trọng ở

chỗ nó chỉ ra mật độ lão hóa của phần mềm Ví dụ, hai thiết kế phần mềm khác nhau sẽ có cùng một độ tin cậy giống nhau ở cùng một thời điểm nào đó, nhưng mật độ tiến đến thất bại của chúng lại có

thể rất khác nhau

Trang 18

Trong trường hợp đặc biệt, nếu thời gian trước thất bại tuân theo phân bố mũ, với tham số là  thì hàm mật độ thất bại của nó sẽ là

“Hai thành phần cùng một sản phẩm không chứa các sai sót giống hệt nhau.” Dựa trên giả thiết đó, nguyên tắc cơ bản để nâng cao độ tin cậy của phần mềm đó

là dựa vào dư thừa về tài nguyên hệ thống Việc dư thừa này có thế là dư thừa tài nguyên về phần cứng, ví dụ như nhân bản hệ thống thành nhiều bản và cho chạy độc lập trong các hệ thống cluster, hay dư thừa về phần mềm, ví dụ như thêm các đoạn mã kiểm tra, những điểm kiểm tra trong quy trình hoạt động của hệ thống để đảm bảo sự hoạt động chính xác của hệ thống, hay dư thừa về thời gian thực thi, ví dụ như thêm vào quy trình hoạt động của hệ thống những giai đoạn kiểm tra đầu ra đầu vào

Trước đây, các biện pháp về phần cứng thường được sử dụng nhiều do tính đơn giản của nó Tuy nhiên, mặt trái của các phương pháp này đó là chi phí lớn, và nhiều khi hiệu quả đạt được chưa hẳn đã hoàn toàn như mong muốn Thêm vào đó, không phải mọi thành phần của hệ thống vào mọi thời điểm đều cần phải đảm bảo về độ tin

Trang 19

gian người dùng sử dụng cho những tác vụ không cần độ tin cậy cao (đọc báo, chơi trò chơi…), trong khi đó chỉ vào một số thời điểm họ sẽ cần ứng dụng phải

có độ tin cậy cao như lúc quản lý tình hình tài chính

Trong thời gian trở lại đây, một hướng nghiên cứu mới đó là nâng cao độ tin cậy của hệ thống dựa vào các phương pháp dựa trên phần mềm Mặt mạnh của phương pháp dựa trên phần mềm đó là chi phí giảm, thích hợp không những cho các ứng dụng lớn mà cả các ứng dụng trên máy cá nhân và các hệ thống nhúng Thêm vào đó, điều khiển độ tin cậy bằng phần mềm cho phép người phát triển có thể chỉ tập trung vào việc đảm bảo độ tin cậy cho một số thành phần trọng yếu của hệ thống, vào những thời điểm quan trọng Nhờ đó, những chi phí

về tài nguyên sẽ giảm đi tăng hiệu năng cho hệ thống [5]

1.2.2 Phân loại các biện pháp

Để đạt được độ tin cậy cao trong hệ thống, nhà phát triển có thể kết hợp nhiều phương pháp khác nhau, các phương pháp này được chia ra làm các nhóm sau [6]:

 Kỹ thuật tránh lỗi

Kỹ thuật này được thực hiện trong quá trình xây dựng phần mềm nhằm giảm bớt lỗi xảy ra sau này khi phần mềm hoạt động Nó góp phần xây dựng phần mềm tin cậy hơn thông qua các giai đoạn xây dựng phần mềm, bắt đầu từ thiết lập các yêu cầu kỹ thuật của phần mềm, cho đến khi thiết kế kiến trúc, lựa chọn các kỹ thuật lập trình phù hợp, lựa chọn ngôn ngữ lập trình, các công cụ trợ giúp phát triển phần mềm

 Kỹ thuật loại bỏ lỗi

Kỹ thuật này được thực hiện tại giai đoạn kiểm tra, kiểm soát phần mềm sau khi nó đã được phát triển Nó tiến hành tìm kiếm các lỗi vẫn còn tồn tại thông qua các biện pháp kiểm tra, kiểm soát rồi sau đó tìm cách loại bỏ chúng ra khỏi hệ thống Một số kỹ thuật được sử dụng để loại bỏ lỗi phần mềm như: kỹ

Trang 20

thuật kiểm thử (testing) phần mềm, kỹ thuật kiểm tra lại mã nguồn của phần mềm

 Kỹ thuật xây dựng phần mềm chịu lỗi

Kỹ thuật này đảm bảo rằng các sai sót trong hệ thống không gây ra lỗi hệ thống hay đảm bảo rằng các lỗi hệ thống không gây ra những hỏng hóc hệ thống Sự kết hợp các kỹ thuật tự kiểm tra trong hệ thống và việc sử dụng các module dư thừa là những ví

dụ của kỹ thuật chịu lỗi

 Kỹ thuật dự đoán lỗi

Kỹ thuật này được sử dụng việc kiểm tra lại phần mềm sau khi được phát triển

để đánh giá (về trạng thái hiện tại ) hoặc dự đoán (về trạng thái tương lai) các lỗi của phần mềm có thể xảy ra trong quá trình hoạt động Nó sử dụng các công thức biểu diễn

sự liên quan của lỗi và hỏng hóc, đến môi trường hoạt động của phần mềm như hệ điều hành, dữ liệu của phần mềm

Luận văn này đề cập đến kỹ thuật dự đoán lỗi, trong đó tập trung vào nghiên cứu xây dựng mô hình độ đánh giá độ tin cậy Các tìm hiểu về mô hình độ tin cậy phần mềm sẽ được trình bày trong phần tiếp theo của luận văn

1.3 Đo lường độ tin cậy phần mềm

Công việc đo lường độ tin cậy phần mềm được chia làm hai loại là ước lượng độ tin cậy và dự đoán độ tin cậy

Ước lượng độ tin cậy: là hoạt động xác định độ tin cậy hiện thời của phần mềm bằng việc áp dụng các suy luận thống kê đối với những dữ liệu về thất bại của phần mềm trong quá trình hoạt động hoặc kiểm thử phần mềm Đó là phép đo độ tin cậy từ một thời điểm quá khứ đến hiện tại của phần mềm

Dự đoán độ tin cậy: là hoạt động xác định độ tin cậy phần mềm trong tương lai dựa vào các độ đo và metric phần mềm Kết quả của phép đo này phụ thuộc vào các giai đoạn phát triển phần mềm và các kỹ thuật dự đoán khác nhau:

Trang 21

- Ở giai đoạn hoạt động hoặc kiểm thử phần mềm, những kỹ thuật ước lượng độ tin cậy có thể được sử dụng để tham số hóa và dự đoán độ tin cậy

- Ở giai đoạn thiêt kế hoạc lập trình phần mềm: Metric phần mềm thu được từ quá trình phát triển phần mềm và những đặc điểm về kết quả sản phẩm có thể được sử dụng để xác định độ tin cậy

1.4 Mô hình độ tin cậy phần mềm

1.4.1 Khái niệm mô hình độ tin cậy

Mô hình độ tin cậy phần mềm là mô hình đặc tả dạng tổng quát của sự phụ thuộc quá trình sinh các thất bại phần mềm với các yếu tố ảnh hướng đến nó là: phát hiện hỏng hóc, loại bỏ hỏng hóc và môi trường thực thi [7] Bời vì trên thực

tế, hầu hết các nhân tố này là các quá trình ngẫu nhiên theo thời gian nên khi xây dựng mô hình độ tin cậy phần mềm, các quá sinh trình sinh các thất bại phần mềm theo thời gian thực thi sẽ được mô hình hóa với một vài quá trình điểm ngẫu nhiên nào đó [3]

Khi độ tin cậy được cải thiện theo thời gian, nghĩa là các hỏng hóc phần mềm sẽ được phát hiện và gỡ bỏ, kéo theo số các thất bại phần mềm trên sẽ giảm

và khoảng thời gian giữa các thất bại sẽ tăng lên Theo cách lý giải này, một ý tưởng cơ bản về mô hình độ tin cậy phần mềm được mô tả như hình vẽ dưới đây [7]:

Trang 22

 Hình 2 Ý tưởng cơ bản về mô hình độ tin cậy

Như vậy, theo hình vẽ, khi tỷ lệ thất bại phần mềm giảm dẫn đến các hỏng hóc phần mềm được phát hiện và gỡ bỏ Tại bất kỳ một thời điểm nào (như hình vẽ biểu diễn là thời điểm hiện tại), đều có thể xác định được tỷ lệ thất bại của phần mềm Mô hình độ tin cậy sẽ dự đoán một đường cong của tỷ lệ thất bại dựa trên các kỹ thuật về xác suất Phép đo này đem lại hai mục đích: thứ nhất là dự đoán lượng thời gian cần thiết phải tiến hành kiểm thử để đạt được tỷ lệ thất bại như mong muốn và thứ hai là dự đoán tỷ lệ thất bại tại một thời điểm kết thúc pha kiểm thử

1.4.2 Phân loại mô hình độ tin cậy

Trong ba mươi năm gần đây, cùng với sự phát triển của các nghiên cứu về lý thuyết độ tin cậy phần mềm là sự ra đời của hơn năm mươi mô hình xác suất độ tin cậy phần mềm Mặc dù các mô hình này đều dựa trên các giả định phức tạp khác nhau nhưng có thể phân loại chúng thành hai lớp chính: mô hình miền thời gian và mô hình miền dữ liệu [13]

Trang 23

Mô hình miền dữ liệu: các mô hình ở lớp này dựa trên giả thuyết đã biết trước

tất cả các tổ hợp đầu vào của phần mềm và việc ước lượng độ tin cậy thu được bằng cách thực thi các đầu vào này và quan sát các kết quả đầu ra Các mô hình có thể được chia vào hai loại nhỏ hơn [13]:

- Mô hình lỗi bản xứ: các mô hình này giả định rằng trong phần mềm tồn tại một

số không xác định các lỗi bản xứ Để phát các lỗi này phải dựa vào các phép thử chặt chẽ

- Mô hình miền đầu vào: các mô hình này giả định rằng độ tin cậy phần mềm ước lượng dựa trên kết quả thực thi của tập các lựa chọn ngẫu nhiên đầu vào

Mô hình miền thời gian: là lớp thông dụng cho phần lớn các mô hình độ tin cậy

Các mô hình này về cơ bản xét đến quá trình sinh lỗi của phần mềm và sử dụng dữ liệu thu được về các lỗi đã xảy ra để ước lượng số các lỗi còn lại và khoảng thời gian cần thiết để phát hiện ra các lỗi còn lại này Dựa vào tính chất số lỗi của phần mềm, lớp này chia nhỏ các mô hình vào các lớp nhỏ hơn [13]:

- Mô hình thuần nhất Markov: các mô hình này giả định rằng ban đầu số các lỗi phần mềm là không xác định nhưng là một số không đổi và tại một thời điểm bất kỳ, số các lỗi là các nút trạng thái của chuỗi Markov thuần nhất

- Mô hình không thuần nhất Markov: các mô hình này giả định rằng số các lỗi hiện tại của phần mềm là một biến ngẫu nhiên và biến này biểu diễn tính chất của quá trình Poisoin không thuần nhất

- Mô hình bán Markov: các mô hình này giả định rằng số các lỗi ban đầu của phần mềm là không xác định và không là hằng số Mật độ thất bại của phần mềm hoặc

tỷ lệ chuyển trạng thái không chỉ phụ thuộc vào số các lỗi còn lại mà còn phụ thuộc vào thời gian trôi qua ở trạng thái đó

- Mô hình khác: một số mô hình không thuộc các lớp trên, như mô hình Littlewood-Verall Bayesian, Keiller-Littlewood [9]

Hình vẽ dưới đây mô tả sự phân loại các mô hình độ tin cậy:

Trang 24

 Hình 3 Phân loại các mô hình độ tin cậy phần mềm

Tóm tắt chương 1

Trong chương này, luận văn trình bảy tổng quan về lý thuyết độ tin cậy phần mềm Đầu tiên là giới thiệu khái niệm về độ tin cậy phần mềm và các khái niệm liên quan Sau đó là các kỹ thuật để nâng câo độ tin cậy phần mềm được đề cập, trong đó nhấn mạnh đến kỹ thuật dự đoán lỗi với việc xây dựng các mô hình thống kê độ tin cậy phần mềm để ước lượng hoặc dự đoán độ tin cậy Phần tiếp trình bày về các vấn đề của mô hình độ tin cậy phần mềm

Trong chương sau, luận văn sẽ trình bày về lý thuyết Bayes và ý tưởng sử dụng

lý thuyết này trong việc đánh giá, ước lượng độ tin cậy phần mềm

Trang 25

CHƯƠNG 2: LÝ THUYẾT BAYES 2.1 Xác suất tiên nghiệm và hậu nghiệm

Xác suất tiên nghiệm (prior probability) hay xác suất vô điều kiện: là xác suất của một sự kiện trong điều kiện không có tri thức bổ sung cho sự có mặt hay vắng mặt của nó [14]

Xác suất hậu nghiệm (posterior probability) hay xác suất có điều kiện: là xác suất của một sự kiện khi biết trước một hay nhiều sự kiện khác [14]

Ví dụ: Cho trước một căn bệnh d và một triệu chứng s, thì xác suất một người

có triệu chứng s bị bệnh d là:

Để tính P(d|s) theo công thức trên thì ta phải thực hiện các cuộc điều tra thống kê trên một phạm vi cộng đồng dân cư rộng lớn mới cho ta được một xác suất chính xác Bayes đưa ra một công thức tính khác cho phép ta tính được P(d|s) từ những kết quả thống kê đã có trước đó hoặc những kết quả thống kê dễ đạt được hơn

2.2 Công thức Bayes

Ta ký hiệu P(h|e) là xác suất khẳng định giả thuyết h đúng cho trước bằng chứng

e Công thức Bayes được phát biểu như sau [14]:

Trang 26

Công thức này nói rằng xác suất đúng của giả thuyết h khi quan sát được bằng chứng e, bằng với xác xuất cho rằng chúng ta sẽ quan sát được bằng chứng e nếu giả thuyết h là đúng, nhân với xác suất tiên nghiệm của h, tất cả chia cho xác suất tiên nghiệm của việc quan sát được bằng chứng e

Công thức Bayes tổng quát

Trong thực tế có nhiều giả thuyết cạnh tranh nhau, vì vậy công thức Bayes tổng quát nhất là [14]:

Trong đó:

- P(hi | e) là xác suất mà hi đúng khi biết bằng chứng e;

- P(hi) là xác suất mà hi đúng tính trên tất cả các giả thuyết;

- P(e | hi) là xác suất quan sát được e khi hi đúng Thông thường, tất cả các P(e|hk) phải độc lập nhau;

- n là số giả thuyết có khả năng

Từ luật Bayes phát triển thành lý thuyết suy luận Bayes Điểm quan trọng của lý thuyết Bayes là các con số ở vế phải của công thức dễ dàng xác định, ít nhất là khi so sánh với vế trái Ví dụ với trường hợp xác định xác suất có triệu chứng sốt bị bệnh cúm:

Theo công thức trên do số lượng nhỏ hơn, nên việc xác định số bệnh nhân bị sốt kèm theo triệu chứng cúm dễ hơn là xác định số người có triệu chứng sốt bị cúm

P (sốt|cúm) chính là tri thức về nguyên nhân, tức là xác suất hậu nghiệm ở vế phải,

Trang 27

ở vế trái Vì vậy, ta nói luật Bayes cho phép chúng ta sử dụng tri thức về nguyên nhân

để suy ra tri thức về chuẩn đoán

2.3 Phân phối liên hợp

Giả sử X là một biến ngẫu nhiên có hàm mật độ là f x ( )phụ thuộc vào tham số

trong đó giá trị không cố định, gọi là biến ngẫu nhiên có hàm mật độ là   ( )

Như vậy ta có các định nghĩa [11]:

-   ( ) là phân phối tiên nghiệm của 

- f x ( | )  là hàm mật độ có điều kiện của X khi   

- f x ( , )  là hàm mật độ đồng thời của X và  và f x ( , )   f x ( | ) ( )   

-   ( | ) x là hàm phân phối hậu nghiệm của 

Áp dụng công thức Bayes để tính phân phối hậu nghiệm của  như sau:

( | ) ( ) ( | )

( | ) ( )

f x x

  được gọi là tiên nghiệm liên hợp cho f x ( | )  [11] Trong lý thuyế xác suất

thống kê, các phân phối của họ phân phối mũ đều tồn tại phân phối liên hợp Ví dụ các cặp phân phối liên hợp, bao gồm phân phối Gamma và phân phối mũ, phân phối Beta

và phân phối nhị phân [11]

Ngày đăng: 27/07/2017, 20:36

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] A.A. Adbel Chally, P.Y. Chain, and B. Littlewood, ”Evaluation of Competing Software Reliability Predictions”, IEEE Trans. On Software Engineering, Vol. SE-12, No.9, Septemper 1986 Sách, tạp chí
Tiêu đề: Evaluation of Competing Software Reliability Predictions
[2] [ANSI91] ANSI /IEEE, "Standard Glossary of Software Engineering Terminology," STD-729-1991, ANSI /IEEE, 1991 Sách, tạp chí
Tiêu đề: Standard Glossary of Software Engineering Terminology
[3]C. Cheung, “A user-oriented software reliability model," IEEE Transactions on Software Engineering, vol. 6, no. 2, pp. 118-125, Mar. 1980, special collection from COMPSAC '78 Sách, tạp chí
Tiêu đề: A user-oriented software reliability model
[6] NIST (National Institute of Standards and Technology), “Assessing Product Reliability ” , 2006 Sách, tạp chí
Tiêu đề: Assessing Product Reliability"”
[7] Michael Rung-Tsong Lyu, The Chinese University of Hong Kong,” Software Reliability Theory” Sách, tạp chí
Tiêu đề: Software Reliability Theory
[8] Min Xie,Yuan-Shun Dai, Kim-Leng Poh, Computing System Reliability-Models and Analysis.: Kluwer Academic Pulishers, ©2004 Sách, tạp chí
Tiêu đề: Computing System Reliability-Models and Analysis
[9] Michael R. Lyu (AT&T Bell Labs.) Handbook of Software Reliability Engineering Sách, tạp chí
Tiêu đề: Michael R. Lyu (AT&T Bell Labs.) 
[10] George A. Reis et. al., "Software-Controlled Fault Tolenrance", ACM Transactions on Architecture and Code Optimization, Vol. V, No. N, pp. 1-28, December 2005 Sách, tạp chí
Tiêu đề: Software-Controlled Fault Tolenrance
[11] Jean-Clande Laprie, "Dependable Computing and Fault Tolerance: Concepts and Terminology" , IEEE Proceedings of FTCS-25, 1995, pp. Volume III, Page(s) 2-11 Sách, tạp chí
Tiêu đề: Dependable Computing and Fault Tolerance: Concepts and Terminology
[12] Michael R. Lyu, “Handbook of Software Reliability Engineering ” , IEEE Computer Society Press and McGraw-Hill Book Company , May 2005 Sách, tạp chí
Tiêu đề: Handbook of Software Reliability Engineering"”
[13] Swapna S. Gokhale, Peter N.Marinos and Kishor S. Trivedi, “Important Milestones in Software Reliability Modeling” Sách, tạp chí
Tiêu đề: Important Milestones in Software Reliability Modeling
[14] Võ Huỳnh Trâm – Trần Ngân Bình “Giáo trình suy luận không chắc chắn” Sách, tạp chí
Tiêu đề: Giáo trình suy luận không chắc chắn

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w