6. Kết quả nghiên cứu, đóng góp khoa học của luận án
1.4.2. Tiến trình Poisson không đồng nhất mô hình độ tin cậy phần mềm
Hoàn toàn tương đồng với cách tiếp cận sử dụng tiến trình Markov, chúng tôi giới thiệu trong tiểu mục này cách thức áp dụng tiến trình Poisson không đồng nhất khi mô hình độ tin cậy phần mềm. Do đặc điểm của tiến trình Poisson, việc áp dụng tiến trình này trở nên hoàn toàn tự nhiên và đem lại những kết quả nhất định. Phát triển từ mô hình cơ bản nhất Goel-Okumoto với cặp hàm hằng và
được sử dụng để xây dựng mô hình, các nhà nghiên cứu khác nhau đề xuất các cặp hàm phức tạp hơn tương ứng với các giả thiết trong thực tế. Tính chất của các hàm này được phản ánh thông qua cụm từ được sử dụng để đặt tên nhóm, cụ thể là "tỉ lệ", "hình dạng S" và "chữa lỗi không hoàn hảo".
1.4.2.1. Xây dựng hệ phƣơng trình hợp lý ƣớc lƣợng tham số của mô hình
Phạm Hoàng [26] sử dụng các kí hiệu như trong Bảng 1.2 khi mô hình độ tin cậy phần mềm dựa trên tiến trình Poisson không đồng nhất. Sự khác biệt giữa các mô hình là "hàm giá trị trung bình (mean value function)" , phản ánh số lượng thất bại dự kiến tại thời điểm . Ta có phương trình biểu diễn quan hệ giữa số lượng lỗi phát hiện trong khoảng thời gian với tỉ lệ phát hiện lỗi
và số lượng lỗi còn lại của hệ thống :
24
Bảng 1.2. Các kí hiệu sử dụng trong nhóm mô hình Poisson
Kí hiệu Ý nghĩa Chú thích
Thời điểm thứ
Thông thường . Trong một số trường hợp, nghiên cứu
sẽ giúp đánh giá tính chính xác của mô hình
Tổng số lỗi của hệ thống Gồm lỗi có sẵn và lỗi chèn mới
Tỉ lệ phát hiện lỗi tại thời điểm
Số lượng lỗi được kì vọng sẽ phát hiện ở thời điểm Là hàm giá trị trung bình
Hàm tham số của phân phối Poisson Số lỗi phát hiện ra trong khoảng thời gian
Biến ngẫu nhiên biểu diễn tổng số lỗi tích lũy đến thời điểm
Thời điểm chính xác lỗi thứ xảy ra với rất nhỏ so với :
khi . Cho , (1.70) trở thành:
(1.71)
Phạm Hoàng [26] chỉ ra với điều kiện biên và , nghiệm tổng quát của 5.36 là:
∫ (1.72) với
∫ (1.73)
Nếu xác định được chính xác hàm , chúng ta hoàn toàn có thể xác định được các đặc điểm của hệ thống liên quan đến độ tin cậy: hệ thống có bao nhiêu lỗi và thất bại kế tiếp dự kiến tại thời điểm nào. Giả sử hàm là hàm theo thời gian với một tập các tham số , gọi chung là tham số . Từ dữ liệu thực tế, chúng ta sử dụng các kĩ thuật toán học nhằm ước lượng tập tham số này. Quá trình thu thập dữ liệu thực tế trong vòng đời phát triển phần mềm, ta có thể gặp hai dạng dữ liệu sau.
Dữ liệu dạng 1.
Gọi là số lượng lỗi phát hiện ra trong khoảng thời gian , là số lượng lỗi kỳ vọng sẽ phát hiện ở thời điểm . Khi đó có:
(1.74) Vì nên
25
( ) (1.75) Hàm hợp lý cực đại là hàm mật độ đồng thời của :
∑ ∏ ∏ (1.76) Suy ra ∑ (1.77 ) Lấy đạo hàm theo tham số θ có:
∑
(1.78)
Do vậy khi sử dụng phương pháp ước lượng hợp lý cực đại để ước lượng cho thì là nghiệm của phương trình hợp lý sau:
∑
(1.79)
Dữ liệu dạng 2.
Dữ liệu thu thập được là thời điểm chính xác phát hiện lỗi thứ . Phân phối Poisson không đồng nhất có hai hàm đặc trưng sau: hàm tỉ lệ
(1.80) và hàm giá trị trung bình ∫ (1.81) Khi đó có hàm mật độ xác suất: (1.82) Sử dụng phương pháp ước lượng hợp lý cực đại có hàm hợp lý:
∏ (1.83) và loga tự nhiên: ∑ (1.84)
26 Để ước lượng tham số , xét phương trình:
∑
(1.85) Trong các tiểu mục tiếp theo, chúng tôi sẽ trình bày cụ thể hơn về các mô hình. Mô hình cơ bản Goel-Okumoto sẽ được trình bày chi tiết nhất, các mô hình còn lại có các biến đổi toán học hoàn toàn tương tự.
1.4.2.2. Nhóm mô hình tỉ lệ
Phạm Hoàng [26] sử dụng sử dụng các giả thiết chung sau cho nhóm mô hình này:
1. Các lỗi trong hệ thống là độc lập với nhau.
2. Các lỗi có xác suất bị phát hiện là như nhau trong quá trình kiểm thử.
3. Khi hệ thống xảy ra một thất bại, lỗi tương ứng sẽ được loại bỏ ngay lập tức. 4. Không có lỗi nào được thêm vào trong quá trình loại bỏ lỗi đã phát hiện. 5. Số lượng lỗi được phát hiện trong một thời điểm bất kì tỉ lệ thuận với số lượng
lỗi còn lại trong hệ thống.
6. Số lượng lỗi của hệ thống và tỉ lệ giữa số lỗi được phát hiện với số lỗi còn lại là các hằng số.
Cụ thể, từ các giả thiết trên, chúng ta có các cặp hàm hằng: số lượng lỗi là cố định
và tỉ lệ phát hiện lỗi là cố định . Khái niệm "tỉ lệ" được phản ánh qua việc hàm là hằng số. Điểm khác biệt giữa các mô hình là cách thiết lập giá trị và khai thác hằng số và hoặc cách phân chia các trường hợp đặc biệt của hằng số và . Chúng ta có bốn mô hình sau.
Mô hình tỉ lệ của Goel-Okumoto
Goel-Okumoto [6] là mô hình sớm nhất với công thức:
(1.86)
Giải (1.86) với điều kiện biên và ta có:
(1.87) Xét lần lượt với hai dạng dữ liệu.
Dạng 1. Khi đó, vi phân của hàm m(t) theo hai biến và sẽ là:
(1.88) (1.89)
Thay (1.88) và (1.89) vào (1.79) có hệ hai phương trình:
∑ (1.90)
27 ∑ ∑ ∑ (1.91) Thay (1.90) vào (1.91) có: ∑ ∑ (1.92) Giải (1.92) thu được , thay vào (1.90) thu được .
Dạng 2. Từ (1.87) ta có: (1.93) Thay (1.87) và (1.93) vào (1.84) có: ∑ (1.94) Từ đó có các vi phân: (1.95) (1.96)
Thay (1.87), (1.93), (1.95) và (1.96) vào (1.85) có hai phương trình:
∑ (1.97) ∑ ∑ (1.98) Giải (1.98) thu được , thay vào và giải (1.97) thu được .
Mô hình tỉ lệ của Ohba
Ohba [60] đưa ra một cải tiến cho mô hình Goel-Okumoto bằng cách chia hệ thống thành cụm khác nhau, mỗi cụm có cặp tham số và khác nhau. Khi đó có:
∑
(1.99) và
28
∑
(1.100)
Mô hình tỉ lệ của Yamada-Osaki
Yamada [80] đưa ra một cải tiến khác: chia hệ thống thành module và xác suất để lỗi thuộc module là . Trong một module tỉ lệ là hằng số và các module khác nhau có tỉ lệ là khác nhau. Khi đó có các công thức tương ứng:
∑ (1.101) và ∑ (1.102) Mô hình Musa
Musa đưa ra một cải tiến, phản ánh qua phương trình vi phân:
(1.103)
trong đó và là hai tham số của chương trình, và là hai tham số của mô hình. Từ đó có các công thức: (1.104) (1.105) (1.106) (1.107) ∑ ∑ (1.108) Tính toán tiếp thu được hệ phương trình hợp lý:
∑ ∑ ∑ (1.109)
29
1.4.2.3. Nhóm mô hình sử dụng hàm hình dạng S
Các mô hình thuộc nhóm này vẫn giả thiết là hằng số nhưng xem xét
như là một hàm số của thời gian . Khái niệm hình dạng S được phản ánh qua hình dạng của hàm . Với nhóm mô hình sử dụng hàm hình dạng S, Phạm Hoàng [26] sử dụng các giả sử:
1. Tỉ lệ bị phát hiện của các lỗi khác nhau là khác nhau.
2. Mỗi khi hệ thống gặp thất bại, lỗi tương ứng sẽ bị loại bỏ ngay lập tức và không có lỗi mới được thêm vào.
Có hàm hình dạng S kinh điển là hàm logistic sau:
(1.110) Hàm phổ biến nhất là hàm logistic chuẩn, hay còn được gọi là hàm sigmoid với các tham số như công thức (1.111) và đồ thị minh họa trong Hình 1.3.
(1.111)
Trong thực tế, có một số họ hàm số khác cũng có hình dạng S gần tương đồng như vậy. Thay và vào (1.71) có phương trình vi phân:
(1.112)
và nghiệm tương ứng:
∫ (1.113)
30 Mô hình hình dạng S của Ohba
Mô hình này còn có tên mô hình "điểm uốn hình dạng S (inflection S-shaped)" do Ohba [61] giới thiệu với các giả thiết:
1. Có những mối quan hệ dẫn xuất giữa các lỗi: một số lỗi chỉ có thể được phát hiện khi một số lỗi khác được gỡ bỏ.
2. Xác suất phát hiện lỗi tại một thời điểm là tỉ lệ với số lượng lỗi có thể phát hiện của hệ thống tại thời điểm đó.
3. Tần suất gây ra thất bại của các lỗi có thể phát hiện là hằng số và giống nhau.
4. Các lỗi cô lập (không liên quan tới lỗi khác) có thể được loại bỏ hoàn toàn.
Ohba giới thiệu mô hình với hàm:
(1.114) với là một hằng số cụ thể. Khi đó có: ∫ (1.115) Từ đó có: ∫ (1.116) Thay (1.116) vào (1.112) có: (1.117) từ đó có: (1.118) Mô hình hình dạng S của Yamada
Mô hình này còn gọi là mô hình "trễ hình dạng S (delayed S-shaped)" do Yamada [81] giới thiệu. Mô hình này dựa trên các giả thiết:
1. Các lỗi là độc lập với nhau.
2. Tỉ lệ thất bại tại một thời điểm bất kì tỉ lệ với số lượng lỗi hiện tại của phần mềm.
3. Hàm mô tả tổng số lỗi của hệ thống là hằng số. 4. Số lỗi có sẵn của phần mềm là biến ngẫu nhiên.
5. Quãng thời gian từ thất bại thứ đến thất bại thứ là lệ thuộc vào quãng thời gian từ đầu tới thất bại thứ .
Khi đó có hàm:
31 Từ đó: (1.120) và: (1.121) Mô hình Nakagawa
Nakagawa [98] đề xuất mô hình "kết nối NHPP (connective NHPP)" chia các mô hình vào hai nhóm module: "tuyến chính (main route)" và các module còn lại. Khi kiểm thử, nhóm phát triển sẽ khởi chạy tiến trình kiểm thử các module của hai nhóm ở những thời điểm khác nhau. Ta có:
( ) (1.122) trong đó:
: số lỗi được kì vọng phát hiện được ở các module tuyến chính. : số lỗi được kì vọng phát hiện được ở các module còn lại. : mật độ lỗi.
: thời điểm bắt đầu kiểm thử các module còn lại. : hàm xác định sự thuộc một phần tử với một tập:
(1.123)
1.4.2.4. Nhóm mô hình có chữa lỗi mang tính không hoàn hảo
Nhóm mô hình này khai thác như là một hàm của biến thời gian và là hằng số. Khái niệm "chữa lỗi không hoàn hảo" được giải thích qua hàm : số lượng lỗi của hệ thống là có thể thay đổi theo thời gian, quá trình kiểm thử và chạy thực tế có thể phát sinh các lỗi mới. Yamada [81] đưa ra các giả thiết:
1. Khi gỡ bỏ một lỗi, hệ thống có thể xuất hiện một lỗi mới.
2. Xác suất tìm thấy một lỗi trong phần mềm tỉ lệ với số lỗi còn lại.
Khi đó, công thức của hàm là:
∫ (1.124) Mô hình chữa lỗi không hoàn hảo 1 của Yamada
Các hàm của mô hình:
(1.125)
(1.126)
Vẫn sử dụng phương pháp ước lượng hợp lý cực đại có hệ ba phương trình với ba biến , và :
32 ∑ {( ) ( *} (1.128) ∑ {( ) ( *} (1.129) với
Mô hình chữa lỗi không hoàn hảo 2 của Yamada
Mô hình Yamada 2 với các hàm:
(1.130) và
( * (1.131)
1.4.2.5. Nhóm mô hình chữa lỗi mang tính không hoàn hảo hình dạng S
Ở các tiểu mục trước, chúng tôi đã trình bày về trường hợp hoặc là hằng số. Tiểu mục này sẽ tìm hiểu về trường hợp tổng quát nhất: và là các hàm của thời gian. Thông thường, và là các hàm tăng theo thời gian theo các lập luận sau:
tăng do trong quá trình chữa lỗi, hoàn toàn có thể xuất hiện các lỗi mới. tăng do càng ngày các nhà phát triển càng nắm rõ hơn về hệ thống, giúp
tăng khả năng phát hiện các lỗi.
Tên gọi "chữa lỗi không hoàn hảo hình dạng S (Imperfect Debugging S-shaped)" phản ánh sự tổng hợp từ hai tiểu mục kế trước. Chúng ta quay lại với công thức:
∫ (1.132) với
∫ (1.133) Nhóm mô hình chữa lỗi mang tính không hoàn hảo hình dạng S sử dụngcác giả thiết chung sau:
1. Khả năng bị phát hiện của các lỗi là khác nhau.
2. Mỗi khi một lỗi được phát hiện, ngay lập tức nó bị loại bỏ. Tuy nhiên hệ thống có thể sẽ xuất hiện một hoặc nhiều lỗi mới.
33
3. Hàm tỉ lệ phát hiện lỗi là một hàm hình dạng S.
Ngoài các giả thiết chung trên, mỗi nhà nghiên cứu khi đề xuất mô hình của mình sẽ dựa trên các giả thiết riêng biệt mới. Chúng ta có bốn mô hình sau.
Mô hình Pham-Nordmann-Zhang (PNZ)
Phạm Hoàng và các đồng nghiệp [29] đề xuất mô hình với giả thiết: Số lượng lỗi là một hàm tuyến tính bậc nhất. Cụ thể có: (1.134) và (1.135)
Hoàn toàn có thể chứng minh:
( ) (1.136) với điều kiện đầu: . Ý nghĩa của hằng số là mỗi khi gỡ bỏ một lỗi sẽ có xác suất sẽ xuất hiện một lỗi mới trong hệ thống.
Mô hình lũy thừa của Phạm Loan
Phạm Loan [53] đề xuất mô hình dựa trên giả thiết: Số lượng lỗi là một hàm tuân theo cấp số nhân. Cụ thể có: (1.137) và (1.138)
Hoàn toàn có thể chứng minh:
(1.139)
với điều kiện đầu: và:
( )
(1.140)
Từ dữ liệu thực tế , chúng ta hoàn toàn có thể sử dụng phương pháp hợp lý cực đại để ước lượng các tham số , , và của hàm .
Mô hình Pham-Zhang
Mô hình này do Phạm Hoàng [28] đề xuất với giả thiết: Xác suất hệ thống xuất hiện lỗi mới là giảm dần. Điều này có nghĩa lập trình viên sau một thời gian làm việc với hệ thống đã thu nhận được các kinh nghiệm, giúp giảm dần việc xuất hiện lỗi mới.
34 Cụ thể có: (1.141) (1.142) Từ đó: (1.143)
Mô hình ràng buộc tham số của Phạm Hoàng
Đây là một mô hình đề xuất bởi Phạm Hoàng:
(1.144) (1.145) Khi đó có: (1.146) và (1.147)
1.4.2.6. Đánh giá nhận xét các kết quả nghiên cứu
Các kết quả thu đƣợc của các nghiên cứu hiện có: từ sự phù hợp của việc áp dụng tiến trình Poisson không đồng nhất để mô hình hóa dãy các thời điểm thất bại trên trục thời gian, các nhà nghiên cứu khác nhau đã đề xuất rất nhiều mô hình với những ứng dụng nhất định [26][6][60][80][61][81][98][29][53][28]. Trong các mô hình đó, tác giả đã sử dụng những giả thiết thực tế cũng như các công cụ toán học khác nhau nhằm đa dạng hóa các nghiên cứu của họ, từ đó thu được những kết quả phong phú hơn và tốt hơn. Ngoài ra, việc áp dụng các mô hình này trong thực tế phát triển cũng đem lại những kết quả nhất định, ví dụ như trong tính toán thời điểm phát hành phần mềm [26].
Các hạn chế của các cách tiếp cận trong các nghiên cứu liên quan hiện có: hiện các nhà nghiên cứu đã đưa ra rất nhiều mô hình khác nhau dựa trên các giả thiết và cách xây dựng khác nhau. Việc so sánh, đánh giá giữa các mô hình là một vấn đề tất yếu cần quan tâm. Hiện đã có nhiều công cụ toán học được sử dụng, tuy nhiên mỗi công cụ lại thích hợp với một khía cạnh khác nhau. Nói cách khác, chưa có một phương thức đo nào thực sự hữu hiệu trong đánh giá chất lượng các mô hình dựa trên tiến trình Poisson không đồng nhất. Bên cạnh đó, hạn chế thứ hai là việc nhóm các mô hình sử dụng hình dạng S (bao gồm cả hai trường hợp chữa lỗi hoàn hảo và không hoàn hảo) mới đánh giá việc áp dụng hàm hình dạng S có 3 tham số. Số lượng tham số của một hàm sẽ quyết định sự khả chuyển trong các trường hợp khác nhau. Rõ ràng, một hàm với nhiều tham số có thể suy biến về hàm đồng dạng ít tham số hơn trong một số trường hợp đặc biệt.
35
Từ các kết quả thu được cũng như hạn chế còn gặp phải của những nghiên cứu hiện có, chúng tôi nhận thấy khả năng xây dựng độ đo tổng quát từ các độ đo đơn để so sánh các mô hình thuộc nhóm dựa trên tiến trình Poisson không đồng nhất, từ đó đề xuất được bài toán con thứ nhất trong hướng tiếp cận này. Ngoài ra, chúng tôi nhận thấy việc phát triển từ hàm hình dạng S 3 tham số lên hàm hình dạng S 4 tham số để áp dụng tiến trình Markov trong mô hình độ tin cậy phần mềm có