6. Kết quả nghiên cứu, đóng góp khoa học của luận án
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
Đặ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 lượng của mã nguồn. Chúng tôi thử nghiệm đánh giá ảnh hưởng việc áp dụng tập luật trên cây cú pháp trong lập trình trong giảm thiểu các lỗi của hệ thống qua đó nâng cao hiệu năng và độ tin cậy của hệ thống phần mềm. Các kết quả thực nghiệm trên hệ thống BKProfile cho thấy cách tiếp cận này thực sự mang lại các hiệu quả cho việc cải thiện chất lượng hiệu năng hoạt động của hệ thống, bao gồm trong đó có độ đo độ tin cậy phần mềm.
83
4.1. Xây dựng một số công cụ phần mềm hỗ trợ mô hình hóa độ tin cậy
4.1.1. Phần mềm dự đoán độ tin cậy theo mô hình PNZ cho phần mềm xây dựng theo kiến trúc hƣớng thành phần
4.1.1.1. Kịch bản dự đoán độ tin cậy của hệ thống đƣợc xây dựng theo kiến trúc hƣớng thành phần
Thành phần phần mềm là một module bộ phận của hệ thống, với các hành vi được định nghĩa thông qua các giao diện với các thành phần khác. Các giao diện đó được sử dụng để thực thi các chức năng của thành phần đó cũng như kiểm tra tính tương thích trong môi trường cài đặt. Tuy nhiên, để dự đoán tính tin cậy của một kiến trúc phần mềm hướng thành phần sẽ cần thêm một số thông tin bổ sung khác nữa [71]. Kịch bản dự đoán bao gồm sáu bước được thực hiện bởi nhóm phát triển thành phần phần mềm, kiến trúc sư phần mềm và công cụ dự đoán độ tin cậy như Hình 4.1.
Bƣớc 1: nhóm phát triển cung cấp đặc tả tin cậy của thành phần phần mềm. Một đặc tả tin cậy của thành phần phần mềm bao gồm các xác xuất liên quan đến tính tin cậy (xác suất thất bại, xác suất lỗi lan truyền …) và gọi các dịch vụ cần thiết cho thành phần đó.
Bƣớc 2: kiến trúc sư phần mềm tạo ra mô hình tin cậy của hệ thống bằng cách xử lý các đặc tả tin cậy theo kiến trúc định trước, từ đó cung cấp hồ sơ sử dụng của hệ thống hoàn thiện.
Bƣớc 3: từ mô hình tin cậy của hệ thống, hoàn toàn có thể mô tả luồng điều khiển của toàn bộ hệ thống bằng cách lan truyền các yêu cầu tại biên của hệ thống đến các thành phần phần mềm riêng biệt. Bởi đặc tả tính tin cậy của