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

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

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 (559.25 KB, 54 trang )

 

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------

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


 

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 
CHƯƠNG 2: LÝ THUYẾT BAYES .......................................................................... 24 

 


 

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 

2
 


 

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 

3
 


 

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

4
 


 

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.
Tác giả luận văn

Trần Bắc

5
 


 

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
STT

Từ viết tắt

1

ANSI

2

MTBF

3

CDF

Ý nghĩa
Amercian National Standarts Institue
Viện tiêu chuẩn quốc gia Mỹ.

Mean Time Between Failure
Thời gian trung bình giữa các thất bại
Cumulative distribution function
Hàm phân bố xác suất

 

6
 


 

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
- Đóng góp của tác giả:
+ Xây dựng thành công phương pháp đánh giá độ tin cậy của phần mềm
sử dụng lý thuyết Bayes
+ Đề xuất các hướng phát triển cho luận văn: Mở rộng các giải pháp xác
định tham số của hàm phân phối tiên nghiệm và hậu nghiệm

7
 


 

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.

8
 



 

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.

9
 



 

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.


10
 


 

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
Một thất bại phần mềm xảy ra khi người dùng thấy được
(Failures)
phần mềm dừng cung cấp các dịch vụ như mong đợi.Có
Thất bại
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ó.
Một hỏng hóc phần mềm xảy ra khi một thất bại chương
(Fault or Bug )
trình xảy ra hoặc một lỗi bên trong chương trình được
Sai sót
phát hiện. Nguyên nhân của thất bại hay lỗi bên trong
(Fault or Bug )
được gọi là hỏng hóc. Trong hầu hết các trường hợp hỏng
Sai sót
hóc phần mềm được xác định và gỡ bỏ, tuy vậy với một
số trường hợp chúng không được gỡ bỏ hết mà chỉ là giả
thuyết.
Đôi lúc sự phân biệt giữa sai sót và thất bại phần mềm
(Defect)
không được rõ ràng, người ta dùng khái niệm khiếm

Khiếm khuyết
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).
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
(Errors)
hoặc khiếm khuyết của thành phần, thiết bị phần cứng.
Lỗi
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
 Thời gian

11
 


 

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.
 Môi trường
Một số yếu tố môi trường như: tiểu sử hoạt động, hiệu quả của các dịch vụ
ngoài và phần cứng có ảnh hưởng đến độ tin cậy phần mềm [3].
Việc sử dụng tiểu sử hoạt động của phần mềm để dự đoán độ tin cậy đã
được đưa ra bởi Cheung và được mở rộng hướng đến các thỏa thuận tham số
khác. Lấy ví dụ như có một dịch vụ lỗi đơn lẻ trong một hệ thống phức tạp, thì
đối với người dùng thường xuyên các dịch vụ này có đánh giá độ tin cậy thấp
hơn so với những người dùng mà không yêu cầu dịch vụ nào cả.
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.

12
 


 

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.
 Các hàm về thất bại
Hàm tích lũy số thất bại: định nghĩa số thất bại của phần mềm tại một thời điểm t
nào đó.
Hàm mật độ thất bại biểu thị sự thay đổi giá trị của hàm tích lũy số thất bại được
định nghĩa ở trên.
Hàm tỷ lệ thất bại là hàm xác định xác suất của phần mềm gặp thất bại trong
khoảng thời gian (t, t+dt) và không gặp thất bại trước thời gian t.
Hàm MTBF (Mean Time Between Failures) là thời gian trung bình giữa các thất
bại 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ố

13
 


 


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
Số thất bại trên một
Thời gian
Số thất bại tích lũy
chu kỳ
8
4
4
16
4
8
24
3
11
32
5
16
40
3
19
48
2
21
56
1
22
64

1
23
72
1
24
Bảng 3 Khoảng thời gian giữa các thất bại
Khoảng thời gian giữa Thời gian thất
Số thứ tự thất bại
các thất bại
bại
1
0.5
0.5
2
1.2
1.7
3
2.8
4.5
4
2.7
7.2
5
2.8
10.0
6
3.0
13.0
7
1.8

14.8
8
0.9
15.7
9
1.4
17.1
10
3.5
20.6
11
3.4
24.0
12
1.2
25.2
13
0.9
26.1

14
 


 

14
15
16
17

18

1.7
1.4
2.7
3.2
2.5

27.8
29.2
31.9
35.1
37.6

 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]:
R (t )  P (T  t ) , t>0

với T là một biến ngẫu nhiên biểu diễn thời gian thất bại, hay chính là thời gian
từ lúc hoạt động đến lúc bị thất bại.

Xác suất thất bại là:

F  t   1  R  t   P T  t 
đâ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à
thống sẽ là:

15
 

f  t  , khi đó độ tin cậy của hệ


 



R  t    f  x  dx
t

Thời gian trung bình giữa thất bại (Mean Time Between Failure – MTBF
hoặc MTTF): là thời gian trung bình mà hệ thống sẽ tiếp tục gặp thất bại. Nói
cách khác đó chính là kỳ vọng của thời gian hệ thống hoạt động bình thường
trước khi bị thất bại [4]. Công thức toán học tính MTBF là:




0


0

MTTF   t  f  t  dt   R  t  dt
 

Nếu thời gian thời gian trung bình giữa thất bại của hệ thống là một biến
ngẫu nhiên tuân theo phân bố mũ với tham số là  với hàm phân bố


F  t   1  et , khi đó:




0

0

MTTF   R  t  dt   e t dt 

1



Hàm mật độ thất bại (Failure density function): hàm mật độ thất bại có vai
trò rất quan trọng trong phân tích độ tin cậy của phần mềm. Định nghĩa về mặt
toán học của hàm mật độ thất bại được cho bởi

R  t   R  t  t  f  t 


t 
tR  t 
R t 

  t   lim
Đạ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 t  dt . 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.

16
 


 

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à

f  t    e  t
 t  
  t  
R t 
e
Điều đó có nghĩa là hàm mật độ thất bại của phần mềm là một hằng số, nói cách

khác phần mềm không có hiện tượng lão hóa.

1.2. Các biện pháp nâng cao độ tin cậy phần mềm
1.2.1. Nguyên tắc cơ bản
Với vai trò quan trọng của phần mềm trong các ứng dụng hiện nay, việc nâng
cao độ tin cậy cho phần mềm là một nhu cầu thiết yếu, đặc biệt là trong các hệ thống
phần mềm phức tạp. Có rất nhiều hướng nghiên cứu với mục đích đưa ra phương pháp
nâng cao độ tin cậy của phần mềm. Tất cả các phương pháp này đều dựa trên giả thiết:
“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
dùng. Trên thực tế, chỉ có một số thành phần trọng yếu và trong một thời điểm cụ thể,
yêu cầu về độ tin cậy của hệ thống mới cần được đảm bảo. Ví dụ như, phần lớn thời
17
 


 

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ỹ
18
 


 


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:

19
 



 

-

Ở 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]:


20
 


 

 

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].

21
 


 

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:

22
 



 

 

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.

23
 


 

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]:

24
 


×