6. Kết quả nghiên cứu, đóng góp khoa học của luận án
3.2.2. Những tồn tại của các độ tin cậy phần mềm dựa trên tiến trình Poisson
3.2.2.1. Tính tăng của các hàm biểu diễn tổng số lỗi của các mô hình sử
dụng hàm tỉ lệ phát hiện lỗi hình dạng S
Như chúng tôi đã nhắc đến ở mục trước, một số mô hình độ tin cậy phần mềm hiện có đã sử dụng dạng đặc biệt của hàm hình dạng S: mô hình hình dạng S của Ohba [60], mô hình Pham-Zhang [28]; mô hình lũy thừa của Phạm Loan [53] và mô hình PNZ [29]. Để nhận xét tính tăng của các hàm biểu diễn tổng số lỗi trong các mô hình đó, chúng ta xét các hàm đó:
Mô hình hình dạng S của Ohba [61]
(3.30) Mô hình Pham-Zhang [28]
(3.31) Mô hình lũy thừa của Phạm Loan [53]
(3.32) Mô hình PNZ [29]
(3.33)
73
Rõ ràng, hàm biểu diễn tổng số lỗi của mô hình PNZ và mô hình lũy thừa của Phạm Loan là không bị chặn trong điều kiện :
(3.34)
(3.35)
Ta có
Hình 3.2 minh họa hình dạng của hai hàm trên trên cùng hệ trục tọa độ, trong đó đường nét liền minh họa hàm với và và đường nét đứt minh họa hàm với và . Trong thực tế, các nghiên cứu sử dụng những mô hình này đã đem đến những giá trị nhất định. Tuy nhiên, chúng tôi xem xét việc so sánh giữa hàm tiến tới vô cùng khi thời gian tăng dần và những hàm bị chặn.
3.2.2.2. Khó khăn tính toán toán học sơ cấp khi xây dựng mô hình mới
Như chúng tôi đã trình bày ở tiểu mục1.4.2, một mô hình mới được xây dựng thông qua việc tính toán một cách sơ cấp hàm đặc trưng được nhắc lại như sau:
∫
với
∫
Khi xây dựng mô hình mới, các nhà nghiên cứu sẽ dựa vào điều kiện thực tế để đưa ra các giả thiết của mình. Từ đó sẽ giới thiệu cặp hàm và tương ứng với các giả thiết đó và thay vào hai công thức trên. Tuy nhiên, vấn đề đặt ra là việc tính toán hàm một cách sơ cấp. Nếu cặp hàm và càng phức tạp tương ứng với các giả thiết sát thực tế, việc tính toán sơ cấp hàm trở nên rất khó khăn, đôi khi là bất khả thi.
3.2.3. Tính toán toán học cho mô hình độ tin cậy phần mềm NHPP cải tiến 3.2.3.1. Các tính toán tổng quát 3.2.3.1. Các tính toán tổng quát
Đặt , chú ý rằng , công thức (3.29) trở thành:
(3.36)
Do đó, với điều kiện đầu , ta có:
∫ ∫
74 ∫ ∫ ∫ ∫ ( ) Và: ( ) (3.38) Từ công thức biểu diễn nghiệm tổng quát, thay vào công thức (3.37) và (3.38) ta có:
∫ ∫ (3.39) Do đó: ∫ (3.40)
Từ công thức (3.40), chúng ta thấy được mối quan hệ giữa hàm biểu diễn số lỗi được kì vọng phát hiện với hàm tổng số lỗi của hệ thống . Tuy nhiên, như đã nói ở tiểu mục 3.2.2.2, việc tính toán sơ cấp sẽ trở nên bất khả thi nếu chúng ta lựa chọn những hàm không hợp lý. Các mục tiếp theo sẽ tìm hiểu một vài hàm cơ bản để chọn ra những hàm hợp lý nhất.
3.2.3.2. Hàm biểu diễn tổng số lỗi là hằng số
Trong trường hợp đơn giản nhất có hàm tổng số lỗi là hàm hằng:
(3.41) Thay công thức (3.41) vào công thức (3.40) có:
∫ ∫
75 ∫ ∫ ( ) ∫ ∫ [ ] ∫ ( ) Và (3.43) Đây là các công thức đặc trưng cho mô hình thứ nhất được chúng tôi tìm hiểu khi đánh giá khả năng áp dụng hàm hình dạng S tổng quát vào mô hình hóa độ tin cậy phần mềm dựa trên tiến trình Poisson không đồng nhất.
3.2.3.3. Hàm biểu diễn tổng số lỗi theo thời gian
Xét công thức (3.40), ta có biểu thức bên trong dấu tích phân là:
(3.44)
Chú ý rằng hàm được nhân với một thương, trong đó tử số là một tích hai hàm đơn và mẫu số là một hàm đơn. Do đó chúng ta có thể lựa chọn hàm là một thương từ ba hàm đơn đó nhằm triệt tiêu lẫn nhau khi thực hiện phép nhân, giúp quá trình tính toán trở nên đơn giản hơn. Xét lần lượt các hàm sau:
1. Hàm 1
(3.45) 2. Hàm 2
76 (3.46) 3. Hàm 3 (3.47) 4. Hàm 4 (3.48) 5. Hàm 5 (3.49) 6. Hàm 6 (3.50) 7. Hàm 7 (3.51)
Như đã phân tích tại tiểu mục 3.2.2.1 về tính tăng của hàm biểu diễn tổng số lỗi
, bằng các phân tích số học với điều kiện , , ta có: tăng theo hàm mũ khi .
. . . . . . .
Do đó chúng tôi lựa chọn hàm thứ 5 với công thức (3.49) sẽ giúp đánh giá được tính tăng của hàm biểu diễn tổng số lỗi. Chú ý rằng hàm này cũng là hàm hình dạng S. Từ đó ta có:
∫
*∫ ∫ +
77 *∫ + và (3.53) Đây là các công thức đặc trưng cho mô hình thứ hai được chúng tôi tìm hiểu khi đánh giá khả năng áp dụng hàm hình dạng S tổng quát vào mô hình hóa độ tin cậy phần mềm dựa trên tiến trình Poisson không đồng nhất.
3.2.4. Các tính toán vi phân của hai mô hình
Như đã trình bày tại tiểu mục 1.4.2 về cách thức xây dựng và tính toán các mô hình thuộc nhóm dựa trên tiến trình Poisson không đồng nhất, chúng tôi có các tính toán vi phân sau liên quan đến hai mô hình trên.
3.2.4.1. Mô hình thứ nhất
Vi phân của với lần lượt các biến và :
( ) (3.54) (3.55) ( ) * ( ) + (3.56) (3.57)
Vi phân của với lần lượt các biến và :
(3.58) (3.59) * ( ) + (3.60) (3.61)
78
3.2.4.2. Mô hình thứ hai
Vi phân của với lần lượt các biến và :
(3.62) (3.63) (3.64) (3.65)
Vi phân của với lần lượt các biến và :
(3.66) (3.67) (3.68) (3.69) 3.2.5. Cài đặt thực nghiệm
3.2.5.1. Môi trƣờng cài đặt thực nghiệm
Chúng tôi thực hiện các thực nghiệm tính toán trên máy tính cá nhân Thinkpad với các thông số kĩ thuật:
Processor Intel(R) Core(TM) i5-2410M CPU @2.30 GHz, 4.00 GB memory. Hệ điều hành Window 7 Professional Service Pack 1.
Matlab R2012a phiên bản stand alone.
3.2.5.2. Cài đặt tính toán hai mô hình trên ngôn ngữ Matlab
Chúng tôi cài đặt các mô hình trên ngôn ngữ Matlab bao gồm các tệp: dlamda_da_lamda.m: cài đặt hàm
79 dlamda_db_lamda.m: cài đặt hàm dlamda_dk_lamda.m: cài đặt hàm dlamda_dn_lamda.m: cài đặt hàm dm_da.m: cài đặt hàm dm_db.m: cài đặt hàm dm_dk.m: cài đặt hàm dm_dn.m: cài đặt hàm
MainFunction: cài đặt hàm fsolve() của Matlab để giải hệ phương trình hợp lý sử dụng 8 hàm được cài đặt trên.
Main_Modelx.m: cài đặt giải hệ phương trình hợp lý. Hai mô hình được đánh số lần lượt là 1, 2 và được đại diện bởi kí tự x trong tên tệp.
Mã nguồn các file Matlab được chúng tôi trình bày trong Phụ lục A.
3.2.5.3. Kết quả thực nghiệm ƣớc lƣợng tham số mô hình thứ nhất
Mô hình thứ nhất có 4 tham số và . Áp dụng cách thức ước lượng tham số của nhóm các mô hình dựa trên tiến trình Poisson không đồng nhất, ta thu được một hệ 4 phương trình 4 ẩn số. Ngoài ra, các tham số của hệ này được tính toán dựa trên các giá trị của tập dữ liệu về dự án T trình bày ở phụ lục B.7. Dễ dàng nhận thấy việc giải sơ cấp hệ này là bất khả thi, do đó chúng tôi đã cài đặt trên Matlab để sử dụng các công cụ hỗ trợ. Khi cài đặt, chúng tôi sử dụng câu lệnh fsolve() của Matlab để giải hệ phương trình hợp lý nói trên. Để giải quyết cả trường hợp hệ có nhiều hơn một nghiệm, chúng tôi sử dụng lệnh này với một tập các nghiệm khởi tạo được mô tả như sau:
Vector nghiệm khởi tạo bắt đầu từ
[a, b, k, n]=[24, 0.01, 0.1, 1]
Bước nhảy của vector là [1, 0.01, 0.1, 1], tức vector nghiệm khởi tạo kế tiếp của
[a, b, k, n]
là
[a+1, b+0.01, k+0.1, n+1]
Đến vector nghiệm khởi tạo
[a, b, k, n]=[50, 0.99, 0.9, 30]
80 ’MaxFunEvals’=1000000
’MaxIter’=1000
Sau 721710 vòng lặp, ta thu được duy nhất một nghiệm
[a*, b*, k*, n*]=[23.7451, 0.00341519, 1.0, 0.0]
Từ kết quả thực nghiệm, chúng tôi thấy rằng nếu sử dụng phương pháp hợp lý cực đại để ước lượng tham số dựa trên dữ liệu thực về dự án T, mô hình thứ nhất sẽ hội tụ về mô hình cơ bản Goel-Okumoto với hàm trung bình như công thức (1.87).
3.2.5.4. Kết quả thực nghiệm ƣớc lƣợng tham số mô hình thứ hai
Mô hình thứ hai có 4 tham số , , và . Áp dụng cách thức ước lượng tham số của nhóm các mô hình dựa trên tiến trình Poisson không đồng nhất, ta thu được một hệ 4 phương trình 4 ẩn số. Ngoài ra, các tham số của hệ này được tính toán dựa trên các giá trị của tập dữ liệu của Hải quân Hoa Kỳ trình bày ở phụ lục B.4. Dễ dàng nhận thấy việc giải sơ cấp hệ này là bất khả thi, do đó chúng tôi đã cài đặt trên Matlab để sử dụng các công cụ hỗ trợ. Khi cài đặt, chúng tôi sử dụng câu lệnh fsolve() của Matlab để giải hệ phương trình hợp lý nói trên. Để giải quyết cả trường hợp hệ có nhiều hơn một nghiệm, chúng tôi sử dụng lệnh này với một tập các nghiệm khởi tạo được mô tả như sau:
Vector nghiệm khởi tạo bắt đầu từ
[a,b,k,n]=[18,0.01,0.1,1]
Vector nghiệm khởi tạo kế tiếp của
[a,b,k,n]
là
[a+1,b+0.01,k+0.1,n+1]
Vì hệ phương trình hợp lý là không giải được khi , chúng tôi lựa chọn vector nghiệm khởi tạo kết thúc là
[a,b,k,n]=[24,0.71,0.9,20]
Ngoài ra, tùy chọn optimset() được thiết lập là: ’MaxFunEvals’=1000000
’MaxIter’=1000
Sau 89460 vòng lặp, ta thu được duy nhất một nghiệm
[a*,b*,k*,n*] = [29.42827, 0.007402, 1.0, 0.0]
Từ kết quả thực nghiệm, chúng tôi thấy rằng nếu sử dụng phương pháp hợp lý cực đại để ước lượng tham số dựa trên dữ liệu thực của Hải quân Hoa Kỳ, mô hình thứ hai sẽ hội tụ về mô hình cơ bản Goel-Okumoto với hàm trung bình có nghĩa trong công thức (1.87).
Từ những lý thuyết và kết quả thực nghiệm được trình bày trong tiểu mục, chúng tôi rút ra các nhận xét sau:
81
Cách thức đề xuất hàm hình dạng S tổng quát hơn so với các hàm đã tồn tại trong những nghiên cứu hiện có.
Ứng dụng của hàm hình dạng S tổng quát đó trong hai mô hình mới, từ đó đưa ra các tính toán toán học của các mô hình.
Các kết quả thực nghiệm cho thấy: (1) Hai mô hình mới không giải được trên một số bộ dữ liệu. (2) Với những bộ dữ liệu giải được, cả hai mô hình đều hội tụ về mô hình cơ bản Goel-Okumoto.
Kết quả nghiên cứu trong phần này đã được công bố trong công trình số 6 trong danh mục các công trình đã công bố của luận án.
3.3. Kết chƣơng
Chương 3 giới thiệu các nghiên cứu liên quan đến nhóm các mô hình độ tin cậy phần mềm dựa trên tiến trình Poisson không đồng nhất, là nội dung nghiên cứu thứ hai trong luận án. Thông qua các nghiên cứu thực hiện tại chương này, tác giả đưa ra một số tổng kết cho nội dung này như sau:
Các mô hình trong nhóm mô hình độ tin cậy dựa trên phân phối Poisson không đồng nhất khác nhau ở các giả thiết khi xây dựng mô hình, phản ánh thông qua cặp hàm , và hàm đặc trưng . Từ đó phát sinh nhu cầu so sánh các mô hình với nhau. Từ các hàm so sánh toán học đơn thuần, mục 3.1 cung cấp phương thức xây dựng một độ đo tổng quát dựa trên các hàm toán học đó. Các kết quả thực nghiệm trên 9 bộ dữ liệu chuẩn cho thấy sự khác biệt trong xếp hạng mô hình khi sử dụng độ đo tổng quát này và khả năng dự đoán của mô hình về thời điểm thất bại tiếp theo.
Phát triển từ một hàm hình dạng S đơn giản hơn với 3 tham số, tác giả đã đề xuất hàm hình dạng S tổng quát hơn với 4 tham số nhằm định hình tốt hơn. Dựa trên hàm hình dạng S tổng quát này, tác giả đã xây dựng 2 mô hình mới thuộc nhóm các mô hình dựa trên tiến trình Poisson không đồng nhất. Mô hình mới 1 có hàm biểu diễn tổng số lỗi là hằng số và mô hình mới 2 có hàm biểu diễn tổng số lỗi cũng mang hình dạng S. Nếu dựa vào cách phân chia như tại tiểu mục 1.2.4, mô hình mới 1 thuộc nhóm mô hình độ tin cậy sử dụng hàm hình dạng S và mô hình mới 2 thuộc nhóm mô hình độ tin cậy chữa lỗi không hoàn hảo sử dụng hàm hình dạng S. Các kết quả thực nghiệm cho thấy, với một số bộ dữ liệu, cả 2 mô hình đều hội tụ về mô hình cơ bản nhất Goel- Okumoto.
82
CHƢƠNG 4. MỘT SỐ ỨNG DỤNG THỰC TẾ LIÊN
QUAN TỚI MÔ HÌNH ĐỘ TIN CẬY PHẦN MỀM
Các chương trước đã trình bày các nghiên cứu về mô hình hóa độ tin cậy phần mềm: khái niệm, phương thức, cách thức xây dựng, v.v.. Từ đó phát sinh nhu cầu sử dụng các lý thuyết đó để ứng dụng trong thực tế. Nội dung trong chương 4 sẽ trình bày về việc áp dụng chúng trong thực tế. Hiện có hai cách tiếp cận khác nhau được trình bày: (1) Dự đoán độ tin cậy dựa vào các tài nguyên của quá trình phân tích, thiết kế; (2) Tính toán độ tin cậy dựa vào các tài nguyên của quá trình kiểm thử. Chương 4 giới thiệu các nội dung liên quan đến tính toán và ứng dụng độ đo độ tin cậy phần mềm trong thực tế, bao gồm:
Cài đặt các mô hình độ tin cậy trong cơ chế đánh giá và dự đoán độ tin cậy phần mềm: là hướng tiếp cận thứ ba khi trực tiếp phát triển các công cụ phần mềm thực tế. Phần mềm thứ nhất trình bày trong tiểu mục 4.1.1 thực hiện cài đặt mô hình PNZ thuộc nhóm dựa trên tiến trình Poisson không đồng nhất cho một kịch bản dự đoán độ tin cậy phần mềm. Phần mềm thứ hai trình bày trong tiểu mục 4.1.2 thực hiện cài đặt một số mô hình thuộc nhóm dựa trên tiến trình Poisson không đồng nhất để phân tích các bộ dữ liệu từ thực tế nhằm thu được các độ đo liên quan tới độ tin cậy phần mềm.
Mô hình tính toán chính sách phát hành phần mềm có tính đến yếu tố rủi ro là hướng tiếp cận thứ nhất khi ứng dụng một mô hình độ tin cậy dựa trên tiến trình Poisson không đồng nhất trong một vấn đề thực tế. Bài toán đặt ra là dựa trên các tính toán về độ tin cậy để lựa chọn thời điểm phát hành nhằm tối ưu hóa chi phí phát triển phần mềm. Chi phí rủi ro là chi phí cần thiết để khắc phục hậu quả khi hệ thống gặp thất bại, thường là rất lớn, bao gồm tiền phục hồi hệ thống, tiền đền bù hợp đồng, sự suy giảm thương hiệu, v.v.. Từ độ đo độ tin cậy sẽ tính được xác suất hệ thống xảy ra thất bại, từ đó sử dụng các giả thiết toán học để tính toán được thời điểm hợp lý nhất phát hành phần mềm. Nếu phát hành quá sớm sẽ dẫn đến độ tin cậy thấp, khả năng phải chi trả chi phí rủi ro là rất lớn. Nếu phát hành quá muộn sẽ khiến các chi phí sản xuất đội lên vượt mức cho phép, giảm hiệu quả kinh tế.
Ảnh hưởng của lập trình an toàn và tối ưu hóa mã nguồn đến chất lượng hiệu năng hoạt động của phần mềm, trong đó có độ đo độ tin cậy: là hướng tiếp cận thứ hai khi đánh giá sự ảnh hưởng của các thành tố khác của quá trình phát triển phần mềm đến độ đo độ tin cậy. Kế thừa các nghiên cứu của Aho [3], áp dụng tập luật trên cây cú pháp trừu tượng trong tối ưu mã nguồn: Luật là một nhóm các qui tắc được xây dựng nhằm giúp nâng cao quá trình viết mã; Việc áp dụng tập luật trên cây cú pháp trừu tượng sẽ giúp cải thiện chất