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

Dự đoán lỗi phần mềm sử dụng kỹ thuật học máy

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 (352.42 KB, 18 trang )

1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG



NGUYỄN THỊ MAI
DỰ ĐOÁN LỖI PHẦN MỀM SỬ DỤNG
KỸ THUẬT HỌC MÁY
Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số: 60.48.15 - 0009
TÓM TẮT LUẬN VĂN THẠC SĨ
Người hướng dẫn khoa học: PGS. TS TỪ MINH PHƯƠNG





HÀ NỘI - 2010
2


Mở đầu
Giới thiệu
Xây dựng các dự án phần mềm thành công luôn là mối quan tâm hàng đầu đối với
mọi tổ chức doanh nghiệp, nhất là doanh nghiệp công nghiệp công nghệ thông tin. Đặc
biệt quan trọng là quá trình quản lý, kiểm soát tiến độ và đảm bảo chất lượng dự án.
Các vấn đề thường xảy ra đối với một dự án phần mềm:
 Thời gian thực hiện dự án vượt mức dự kiến.
 Nguồn lực thực hiện dự án vượt mức kiểm soát.
 Kết quả của dự án không như mong muốn .


 Phát sinh rủi ro.
Đảm bảo chất lượng sản phẩm là đảm bảo các sản phẩm phần mềm đến tay khách
hàng không còn lỗi, các yêu cầu của khách hàng được thỏa mãn, tối ưu nguồn lực thực
hiện dự án. Do đó việc kiểm tra để phát hiện lỗi nên được thực hiện xuyên suốt quá trình
thực hiện dự án phần mềm, ngay từ khi thu thập, phân tích yêu cầu, đến giai đoạn lập
trình, giai đoạn kiểm thử, hoặc đến khi nghiệm thu với khách hàng [4]. Phát hiện lỗi
càng sớm nguồn lực và rủi ro của dự án phần mềm càng giảm. Trên thực tế các công ty
phần mềm thường chờ đến khi kết thúc giai đoạn lập trình mới tiến hành kiểm tra lỗi của
chương trinh, do đó các lỗi nghiêm trọng của dự án sẽ được phát hiện muộn, tốn rất
nhiều nguồn lực để quay lại thực hiện lập trình từ đầu. Việc kiểm tra chương trình ngay
trong giai đoạn lập trình giúp phát hiện ra các sai sót kịp thời: các vấn đề tiềm ẩn, các lỗi
thời gian thực hoặc có thể sửa lỗi ngay từ ý tưởng thiết kế trước khi đóng gói bàn giao
toàn bộ chương trình cho nhóm kiểm thử thực hiện.
Để giúp quá trình sửa lỗi được thực hiện hiệu quả, người quản lý dự án cần có thông tin
càng chính xác càng tốt về khả năng có lỗi của từng thành phần cụ thể trong hệ thống.
Mặc dù biết chính xác thành phần nào có lỗi là vấn đề khó, một số nghiên cứu gần đây
chó thấy, dựa trên những thông tin về hệ thống cũng như quá trình phát triển phần mềm,
ta có thể dự đoán với một độ chính xác nhất định khả năng có lỗi hay số lượng lỗi trong
các thành phần của hệ thống phần mềm được xây dựng ra. Có nhiều phương pháp và
cách tiếp cận khác nhau trong việc dự đoán lỗi phần mềm. Các nội dung của luận văn
này sẽ tập trung vào kỹ thuật dự đoán lỗi phần mềm sử dụng phương pháp kỹ học máy

3


Mục đích của luận văn
Mặc dù trên thế giới có khá nhiều phương pháp dự đoán lỗi phần mềm, thông
thường mỗi phương pháp dựa trên một số đặc trưng nhất định của phần mềm hoặc lịch
sử phát triển phần mềm. Hơn nữa mô hình học máy dùng cho dự đoán thường tập trung
vào mô hình hồi quy tuyến tính (linear regression). Trong phạm vi luận văn tôi tập trung

vào nghiên cứu các ảnh hưởng tới độ chính xác khi dự đoán lỗi khi kết hợp các dạng đặc
trưng phần mềm khác nhau (gồm: OO, Delta, Process). Mục đích quan trọng là nghiên
cứu và áp dụng phương pháp rừng ngẫu nhiên (Random Forest) cho bài toán dự đoán
lỗi, đây là một mô hình phân loại/ hồi quy với nhiều ưu điểm sẽ được trình bày chi tiết
trong chương 2 của luận văn. Luận văn cũng đưa ra các kết quả khi thử nghiệm cho một
hệ thống ứng dụng Java có khả năng chứa lỗi dựa trên bộ dữ liệu có sẵn và đánh giá theo
các tiêu chí đánh giá hiệu quả khác nhau (gồm: CE, ROC) [3]. Chương trình sử dụng dữ
liệu theo nguồn: .
Chương 1
TỔNG QUAN VỀ DỰ ĐOÁN LỖI PHÂN MỀM

Chương này trình bày tổng quan về dự đoán lỗi trong phần mềm và đặc biệt áp
dụng cho một hệ thống Java có khả năng chứa nhiều lỗi. Trong phạm vi quản lý dự
án lợi ích đem lại từ việc dự đoán lỗi phần mềm đó là làm giảm nguồn lực của dự
án, thay vì việc phải kiểm tra lỗi cho tất cả các lớp trong hệ thống bao gồm các lớp
chứa lỗi và không chứa lỗi thì sẽ dự đoán các lớp nào có khả năng chứa lỗi sau đó
tập trung nguồn lực kiểm tra trên các lớp được dự đoán là chứa lỗi đó. Hiện trên
thế giới đã có một số kỹ thuật xây dựng mô hình dự đoán lỗi phần mềm tuy nhiên
với mỗi kỹ thuật lại có các ưu nhược điểm khác nhau, trong chương này cũng sẽ
trình bày các ưu nhược điểm của các kỹ thuật này. Cuối chương sẽ trình bày một
số dạng đặc trưng của phần mềm đó chính là các tham số được sử dụng trong quá
trình dự đoán lỗi.
1.1. DỰ ĐOÁN LỖI PHẦN MỀM
1.1.1. Giới thiệu
Trong thuật ngữ của chuyên ngành kỹ nghệ phần mềm, Quản lý dự án phần mềm là
các hoạt động trong lập kế hoạch, giám sát và kiểm soát tài nguyên dự án (ví dụ như chi
phí, con người), thời gian thực hiện, các rủi ro trong dự án và cả quy trình thực hiện dự
4

án; nhằm đảm bảo thành công cho dự án. Trong đó đảm bảo chất lượng dự án phần mềm

là cân bằng giữa ba yếu tố: thời gian, tài nguyên và chất lượng. Ba yếu tố này được gọi
là tam giác dự án [15]:
Các vấn đề thường xảy ra đối với một dự án phần mềm:
 Thời gian thực hiện dự án vượt mức dự kiến.
 Chi phí thực hiện dự án vượt mức dự kiến.
 Kết quả của dự án không như dự kiến.
Vấn đề không thực hiện kiểm thử xuyên suốt và kịp thời dẫn đến quá muộn để phát hiện
các lỗ hổng từ khâu thu thập yêu cầu, phân tích, thiết kế và trong quá trình lập trình, khi
đó cán bộ thực hiện dự án sẽ phải quay lại khảo sát từ đầu dẫn đến nguồn lực dự án vượt
qua dự kiến, quản trị dự án không thể thể kiểm soát. Trong khi đó nếu các lập trình viên
thực hiện kiểm tra lỗi ngay trong giai đoạn lập trình sẽ mang lại lợi ích đáng kể trong
lĩnh vực quản lý dự án.
1.1.2. Dự đoán lỗi của phần mềm
Dự đoán lỗi phần mềm là phương pháp đánh giá các lớp trong hệ thống phần mềm
để xác định những lớp có khả năng có lỗi dựa vào các dữ liệu lịch sử qua các lần thay
đổi của hệ thống. Đánh giá lỗi cho hệ thống phần mềm bằng cách dựa vào những thay
đổi trong các phiên bản khác nhau qua các lần chuyển giao cho khách hàng [3]. Trong
phạm vi luận văn không đề cập đến việc dự đoán vị trí của lỗi, lỗi như thế nào trong một
lớp mà chỉ dự đoán những lớp nào có khả năng có lỗi, lớp nào chứa nhiều lỗi, lớp nào
chưa ít lỗi hơn. Luận văn tập trung vào việc đưa ra kỹ thuật dự đoán lỗi phần mềm áp
dụng cho một hệ thống Java có khả năng có nhiều lỗi. Để xây dựng mô hình dự đoán lỗi
phần mềm hầu hết sử dụng kỹ thuật học máy để dự đoán bằng cách sử dụng các phép đo
cấu trúc mã nguồn trong các lớp, tuy nhiên một số nghiên cứu cũng có thể sử dụng thêm
các thông tin khác ví dụ lịch sử các thay đổi trong các phiên bản trước đó: đo cấu trúc
mã nguồn trong các lớp, đo xem sự thay đổi các phương thức của các lớp đươc gọi như
thế nào, hoặc dựa trên chính dữ liệu lịch sử của các lập trình viên tác động vào các lớp ví
dụ: có bao nhiêu lập trình viên cập nhật trên lớp, số dòng code hay số lỗi mà các lập
trình viên gây trong các lớp đó.
Trong công việc quản lý và kiểm soát nguồn lực dự án thì việc kiểm soát nguồn lực
trong giai đoạn phát triển phần mềm đóng vai trò quan trọng. Như vậy thay vì tốn rất

nhiều nguồn lực để kiểm tra và sửa lỗi cho toàn bộ các lớp được sinh ra trong hệ thông
thì sẽ sử dụng kỹ thuật dự đoán lỗi để xác định những lớp nào có lỗi từ đó tập trung sửa
lỗi cho lớp đó sẽ giảm được 50% chi phí thực hiện cho việc phát triển và kiểm tra lỗi
5

ngay trong giai đoạn lập trình. Hiện nay có khá nhiều kỹ thuật được sử dụng để dự đoán
lỗi nhưng chưa có đánh giá cụ thể nào về kỹ thuật dự đoán nào là hiệu quả nhất mà sẽ
tùy thuộc vào các tiêu chí được áp dụng để đánh giá cho mô hình dự đoán. Luận văn
cũng sẽ tập trung vào một kỹ thuật dự đoán dựa trên học máy để xây dựng và thử
nghiệm cho mô hình dự đoán lỗi của một hệ thống phần mềm.
1.2. CÁC PHƯƠNG PHÁP DỰ ĐOÁN LỖI PHẦN MỀM
Có một số cách tiếp cận khác nhau trong việc dự đoán một thành phần nào có của
hệ thống phần mềm có lỗi hay không. Do luận văn chỉ tập trung vào cách tiếp cận dựa
trên học máy nên trong phần này sẽ giới thiệu ngắn gọn về một số phương pháp học máy
có thể sử dụng để dự đoán số lỗi trong phần mềm.
1.2.1. Thuật toán cây quyết định
Trong lĩnh vực học máy, cây quyết định là một kiểu mô hình dự đoán (predictive
model), nghĩa là một ánh xạ từ các quan sát về một sự vật/hiện tượng tới các kết luận về
giá trị mục tiêu của sự vật/hiện tượng. Kỹ thuật học máy dùng trong cây quyết định được
gọi là học bằng cây quyết định, hay chỉ gọi với cái tên ngắn gọn là cây quyết định.
Cây quyết định là cây mà những nút bên trong của nó bao gồm việc kiểm tra một thuộc
tính xác định và những nút lá của nó đưa ra sự phân lớp mà được áp dụng cho tất cả các
mẫu đạt đến nút lá, hoặc một tập của sự phân lớp, hoặc một xác xuất phân tán qua tất cả
các lớp có thể. Để phân lớp cho một mẫu chưa biết, nó được định tuyến xuống dưới cây
dựa theo giá trị của thuộc tính được kiểm tra lần luợt theo các nút, và khi một nút lá
được tìm thấy một mẫu được phân lớp dựa theo lớp mà được gán cho nút lá [9].
Cây quyết định cũng là một phương tiện có tính mô tả dành cho việc tính toán các xác
suất có điều kiện.
Thuật toán cây quyết định là một trong các thuật toán mà được sử dụng rộng rãi
nhất trong các thuật toán học máy trong việc xây dựng các mẫu phân lớp từ các nguồn

dữ liệu. Nó có thể được chọn cho việc thu thập những tri thức và tạo những quy tắc
quyết định từ kho lưu trữ dữ liệu dựa trên một vài đặc điểm sau:
 Cây quyết định có thể được chọn để tạo các quy tắc dễ hiểu.
 Đạt đến sự phân lớp mà không cần những tính toán chuyên sâu.
 Có thể được chọn để làm việc với cả những biến liên tục và biến phân loại,
cung cấp sự định hướng rõ ràng, và phạm vi nào là quan trọng nhất cho việc dự
đoán hoặc phân lớp.
6

 Tự động lựa chọn thuộc tính tương ứng.
 Có thể sử dụng truy vấn SQL để truy cập cơ sở dữ liệu.
 Khi thực hiện phân lớp thì độ chính xác cũng có thể được so sánh với các
phương pháp khác.
1.2.2. Kỹ thuật hồi quy logistic (logistic regression)
Trong thống kê, hồi quy logistic (mô hình logit ) được sử dụng cho dự đoán khả
năng xuất hiện lỗi của một hệ thống bằng một hàm logit. Kỹ thuật hồi quy logit được
phát triển trong những năm 1970 mô hình tuyến tính tổng quát hóa sử dụng cho hồi quy
nhị phân (chỉ có 2 giá trị). Giống như các dạng của phân tích hồi quy, hồi quy tuyến tính
tạo ra vài biến dự đoán mà có thể là số hoặc tên thể loại.
Hồi quy logit là một kiểu hồi quy mà các biến phụ thuộc là nhị phân hoặc số.Ví dụ
một người bị đau tim trong một khoảng thời gian thời gian cụ thể có thể được dự đoán
dựa trên những hiểu biết về tuổi, giới tính, chỉ số cơ thể. Thuật toán hồi quy logit được
sử dụng rộng rãi trong các ngành y tế, xã hội hoặc các ứng dụng kinh doanh tiếp thị, ví
dụ như dự đoán xu hướng khách hàng sẽ mua sản phẩm nào hoặc không mua sản phẩm
nào trong năm. Hàm logit f(z) có dạng:
f(z)=
z
e
1
1

1
z
e
z
e





1.2.3. Kỹ thuật mạng nơ ron (neural net works)
Mạng nơ ron nhân tạo (Artificial neural network – ANN) là một mô phỏng xử lý
thông tin, được nghiên cứu ra từ hệ thống thần kinh của sinh vật, giống như bộ não để
xử lý thông tin. Nó bao gồm số lượng lớn các mối gắn kết cấp cao để xử lý các yếu tố
làm việc trong mối liên hệ giải quyết vấn đề rõ ràng [13]. Thuật toán máy tính mô phỏng
các kiến trúc sinh học này thường được gọi là mạng nơron nhân tạo để phân biệt với các
phần mềm trong cơ thể động vật. ANNs hoạt động giống như bộ não con người, được
học bởi kinh nghiệm, lưu những kinh nghiệm hiểu biết và sử dụng trong những tình
huống phù hợp. Đầu tiên ANN được giới thiệu năm 1943 bởi nhà thần kinh học Warren
McCulloch và nhà logic học Walter Pits. Nhưng với những kỹ thuật trong thời gian này
chưa cho phép họ nghiên cứu được nhiều.
Mạng nơron hoạt động dựa trên nguyên lý học máy. Thông qua các mẫu có sẵn và
tập mục tiêu (với phương pháp học có thầy) để đưa ra kết luận khi có một mẫu mới được
đưa vào. Mạng nơron nhân tạo là một kỹ thuật mô phỏng lại bộ não và hệ thần kinh của
con người.Nó cũng có khả năng học từ các kinh nghiệm trong quá khứ, tổng quát hóa
7

các kinh nghiệm này để đưa ra một nhận định mới nhờ rút ra được các đặc trưng cơ bản
của tập mẫu. Các việc này được thực hiện thông qua việc xử lý tín hiệu giữa các nơron
cùng với các trọng số của chúng.

1.3. CÁC ĐẶC TRƯNG
1.3.1. Độ đo Object Oriented
Đơn vị đo OO (Object - Oriented) là phép đo bằng cách phân tích các thuộc tính
cấu trúc được đưa ra từ mã nguồn. Phép đo OO là phép đo trong các hệ thống hướng đối
tượng, để xác định sự thành công hay thất bại của một quy trình, để xác định có định
lượng sự cải tiến trong một quy trình phần mềm. Phép đo này được sử dụng để cải tiến
kỹ thuật lập trình hướng đối tượng tăng tính tin cậy của mã nguồn. Phép đo OO được
thu thập từ các đoạn mã nguồn đơn giản để xác định: số lượng hàm trong một lớp, số
lượng package được import trong một lớp, số lượng phương thức của các lớp kế thừa
được gọi… Đây là một phép đo được sử dụng để ước lượng và dự đoán chất lượng phần
mềm.
1.3.2. Độ đo Delta
Là phép đo lượng thay đổi trong một lớp qua 2 lần phiên bản thành công. Độ đo
Delta yêu cầu các phiên bản khác nhau của hệ thống có sẵn. Độ đo Delta được xác định
để so sánh sự thay đổi trong một lớp của phiên bản này với phiên bản mới hơn, nó được
xác định dựa trên độ đo OO. Với độ đo OO chỉ phân tích cấu trúc mã nguồn để xác định
số lượng hàm trong một lớp thì độ đo Delta sẽ xác định sự thay đổi giữa số lượng hàm
trong một lớp giữa 2 phiên bản nghĩa là xác định số lượng hàm trong một lớp trong
phiên bản 1 tăng hay giảm và là bao nhiêu so với phiên bản 2, hoặc số lượng package
trong 1 lớp được thay đổi giữa 2 phiên bản như thế nào hoặc các phương thức của các
lớp kế thừa được gọi trong một lớp thay đổi như thế nào trong phiên bản 1 với phiên bản
2.
1.3.3. Độ đo Process
Độ đo này được thu thập từ hệ thống quản lý cấu hình, bao gồm một phép đo dựa
trên kinh nghiệm của nhân viên phát triển thực hiện mỗi thay đổi, số lượng nhân viên
phát triển tạo ra các thay đổi trên một tập tin, số lượng lỗi trong phiên bản trước, phép
đo này đơn giản như là xác định số dòng được thêm vào hoặc xóa đi trong một tập tin
của một lập trình viên. Phép đo Process yêu cầu các bản ghi thông tin chi tiết của lập
trình viên gồm: các thay đổi, các phương pháp hiệu chỉnh lỗi, thời gian thay đổi, thông
tin nhân viên, liệu các thay đổi đã được kiểm tra chưa,…theo phương pháp thống nhất

và có hệ thống trong hệ thống quản lý cấu hình hoặc quản lý thay đổi.
8

Chương 2
DỰ ĐOÁN LỖI PHẦN MỀM SỬ DỤNG
KỸ THUẬT HỌC MÁY

Trong chương này sẽ trình bày về thuật toán được áp dụng để xây dựng mô
hình dự đoán phần mềm, trước đó sẽ trình bày tổng quan về kỹ thuật cây quyết định
trong học máy, các nhược điểm của thuật toán này và cách khắc phục bằng cách
sử dụng thuật toán Random Forest (thuật toán rừng ngẫu nhiên). Trình bày chi tiết
lịch sử ra đời, ưu điểm của thuật toán này trong kỹ thuật dự đoán lỗi phần mềm.
Phần tiếp sẽ trình bày các phương pháp đánh giá hiệu quả mô hình dự đoán lỗi.
Với các phương pháp đánh giá này vẫn chưa có tài liệu hoặc nghiên cứu nào
khẳng định phương pháp nào là tốt nhất mà còn phụ thuộc vào thực tế của một hệ
thống quản lý chất lượng của một tổ chức.
2.1. NGUỒN GỐC RA ĐỜI CỦA THUẬT TOÁN
2.1.1. Nhược điểm của cây quyết định
Trong lĩnh vực nghiên cứu về khai phá dữ liệu nói chung cũng như trong nghiên cứu
về các thuật toán phân lớp nói riêng, vấn đề xử lý dữ liệu lớn ngày càng trở thành vấn đề
cấp thiết và đóng vai trò chủ đạo trong việc giải quyết các bài toán thực tế. Phần lớn các
thuật toán phân lớp đã phát triển chỉ có thể giải quyết với một số lượng dữ liệu có hạn
cũng như với một độ phức tạp dữ liệu giới hạn được. Trong khi đó dữ liệu thu được càng
trở nên đa dạng phong phú nhờ sự phát triển mạnh mẽ của khoa học.
Mặc dù kỹ thuật cây quyết định là công cụ khai phá dữ liệu mạnh trong lĩnh vực học
máy tuy nhiên kỹ thuật này không hoàn toàn hoàn hảo và thích hợp với một số loại vấn
đề. Các cây phân loại dữ liệu có thể ổn định và có sự biên đổi nhỏ (các biến đổi này
được tạo ra một cách ngẫu nhiên) có thể là cơ sở cho sự khác nhau của các cây tìm kiếm
được sinh ra. Đây là đặc điểm đặc biệt trong các trường hợp mà các chia tách tối ưu cho
các biến khác nhau gần với các biến khác về mặt giá trị. Trong tường hợp này, một biến

đổi nhỏ về mặt dữ liệu cũng đủ gây ảnh hưởng tới việc lựa chọn trong việc phân tách các
giá trị khác.
2.2. THUẬT TOÁN RANDOM FOREST
2.2.1. Giới thiệu thuật toán Random Forest
Thuật toán RF - Random Forest là một thuật toán đặc biệt dựa trên kỹ thuật lắp
ghép, Về bản chất thuật toán RF được xây dựng dựa trên nền tảng thuật toán phân lớp
9

cây phân loại và hồi quy, sử dụng kỹ thuật có tên gọi là “bagging” [5]. Thuật toán này
cho phép lựa chọn một nhóm nhỏ các thuộc tính tại mỗi nút của cây để phân chia cho
mức tiếp theo của cây phân lớp. Bằng cách chia nhỏ không gian tìm kiếm thành các cây
nhỏ hơn như vậy cho phép thuật toán có thể phân loại một cách rất nhanh chóng cho dù
không gian thuộc tính rất lớn. Các tham số đầu vào của thuật toán khá đơn giản bao gồm
các thuộc tính được chọn trong mỗi lần phân chia. Giá trị mặc định của tham số này là
căn bậc hai của p với p là số lượng các thuộc tính. Số lượng cây được tạo ra là không
hạn chế và cũng không sử dụng bất kỳ kỹ thuật nào để hạn chế mở rộng cây. Phải lựa
chọn tham số cho biết số lượng cây sẽ được sinh ra sao cho đảm bảo rằng sẽ mỗi một
thuộc tính sẽ được kiểm tra một vài lần. Thuật toán sử dụng kỹ thuật “out of bag” để xây
dựng tập huấn luyện và phương pháp kiểm tra trên nó [5].
2.2.2. Lịch sử của thuật toán Random Forest
Thuật toán tạo một rừng ngẫu nhiên được phát triển bởi Leo Breiman và Adele
Cutler [5], thuật ngữ Random Forest được lấy làm tên phổ biến cho thuật toán này.
Thuật ngữ RF được xuất lần đầu tiên năm 1995, sau đó kết hợp với phương pháp
“bagging” trong lựa chọn các thuộc tính ngẫu nhiên của Leo Breiman năm 1996 để xây
dựng phương pháp chọn các cây quyết theo các thay đổi có thể kiểm soát được. Năm
2001 Breiman xây dựng thuật toán RF có bổ sung thêm một lớp ngẫu nhiên để phân lớp.
Ngoài việc xây dựng mỗi cây sử dụng các mẫu dữ liệu khác nhau, các rừng ngẫu nhiên
được thay đổi để xây dựng các cây phân loại và hồi quy khác nhau. Các gói thư viện cài
đặt thuẩt toán RF được xây dựng bằng ngôn ngữ Fortran bởi Leo Breiman và Cutler có
thể tham khảo tại đường dẫn: (

2.2.3. Thuật toán Random Forest
Về cơ bản thuật toán Random Forest (RF) – rừng ngẫu nhiên dựa trên kỹ thuật cây
quyết định. Ý tưởng của RF chúng ta có thể liên tưởng tới việc bầu cử theo nguyên tắc
phổ thông đầu phiếu. Nếu sử dụng một cây quyết định chẳng khác nào việc bầu cử mà
chỉ có 1 người bỏ phiếu. Việc sinh các cây quyết định từ một mẫu dữ liệu nhằm đa dạng
hoá các “phiếu bầu” (giống như việc mọi thành phần, tầng lớp, giai cấp đều được đi bỏ
phiếu) cho kết luận. Việc áp dụng các kỹ thuật sinh ra các mẫu dữ liệu hay việc lựa chọn
rẽ nhánh ngẫu nhiên sẽ tạo ra các cây “dị tật” trong rừng (giống việc cho phép công dân
không cần phân biệt trình độ học vấn, sức khỏe đi bầu cử). Càng nhiều loại hình, càng
nhiều phiếu bầu sẽ cung cấp cho chúng ta cái nhìn đa chiều, chi tiết hơn và do đó kết
luận sẽ có tính chính xác, gần với thực tế hơn.
10

Định nghĩa: Một RF là một bộ phân loại gồm một tập các bộ phân loại có câu hình cây
{ h(x, ⊖

), k=1,…} trong đó { ⊖

} là các vecto ngẫu nhiên, độc lập, có cùng phân bố
xác suất, mỗi cây bầu cử một phiếu cho lớp phổ biến nhất tại đầu vào x [5].
2.2.4. Đặc tính của thuật toán Random Forest
Đối với rừng ngẫu nhiên, cận trên sẽ bắt nguồn cho các lỗi phát sinh dưới dạng hai
tham số, là cách xác định tính chính xác (Strength - Accuracy) và tính tương quan
(hay còn gọi là độ nhạy - Correlation) của các bộ phân loại riêng lẻ có trong rừng ngẫu
nhiên.
Hàm tương quan như sau:
mr(X, Y) = 
Ө
(h(X, Ө) = Y) –



Ө
(h(X, Ө) = j)
Hàm tính độ chính xác như sau: s =
,
mr(X, Y)
Giả sử s ≥0 ta có bất đẳng thức sau:


≤ var (mr)/ 


Công thức thể hiện sự dao động của mr như sau:
Nếu:
j (X, Y) = arg 


Ө
(h(X, Ө) = j)
Thì:
mr(X, Y)= 
Ө
(h(X, Ө) = Y) – 
Ө
(h(X, Ө) = j(X, Y))
= 
Ө
[ I(h(X, Ө)= Y) – I( h (X, Ө)= j (X, Y))]
Như vậy: trong rừng ngẫu nhiên, hai tiêu chí đánh giá phương pháp phân loại là: tính
chính xác của từng cây và tính tương quan giữa các cây trong rừng tỷ lệ nghịch với

nhau. Nếu tính tương quan giữa các cây trong rừng càng cao thì độ chính xác sẽ giảm.
Độ chính xác và độ nhạy nếu đứng tách nhau thì không có ý nghĩa. Hai độ đo này có sự
tương quan nghịch: độ chính xác càng cao thì độ nhạy càng thấp và ngược lại. Khi độ
chính xác hoặc độ nhạy đạt giá trị tối thiểu thì cũng là lúc hệ thống mất khả năng phân
loại. Vì vậy người ta phải kết hợp hai độ đo trên trong một độ đo thống nhất, vấn đề đặt
ra là làm sao để có thể cân bằng hai tham số này khi thực hiện phân loại để đạt hiệu quả
cao nhất. Theo công thức độ chính xác là tỷ lệ phần trăm các lớp phân loại đúng hoặc
các lớp phân loại không lỗi: (TP/ (TP + FP)). Độ nhạy là tỷ lệ phần trăm các lớp phân
11

loại sai hoặc các lớp phân loại lỗi: (TP/ (TP + FN)). Ta có bảng mô tả mối tương quan
hai tiêu chí này như ở dưới.
Thực tế
Thuộc

Không thuộc

Mô hình dự đoán

Thuộc TP
i
FP
i

Không thuộc

FN
i
TN
i


Trong đó:
 TPi là số lượng mẫu được phân loại đúng, và được phân vào lớp c
i
.
 FPi là số lượng mẫu bị phân loại sai, và được phân vào lớp c
i
.
 FNi là số lượng mẫu có nhãn thực là c
i
nhưng không được phân vào lớp c
i
.
 TN
i
là số lượng mẫu có nhãn thực khác c
i
và không được phân vào lớp c
i
.
Độ chính xác (p
i
) và độ nhạy (r
i
) tính theo từng phân lớp được định nghĩa như sau:
ii
i
i
FPTP
TP

p


;
ii
i
i
FNTP
TP
r



Độ chính xác chung là: A =
FN
FP
TN
TP
FNTP



Độ sai chung là: E = 1 – A

2.2.5. Phân tích thuật toán
Để cải thiện tính chính xác trong phân lớp, kỹ thuật rừng ngẫu nhiên bổ sung một
số phương pháp để tối ưu hóa độ nhạy nhưng vẫn đảm bảo duy trì độ chính xác. Sự ảnh
hưởng của hai tiêu chí này cũng dẫn đến sự thay đổi của các lỗi phát sinh trong quá trình
phân loại. Có nhiều phương pháp tạo rừng ngẫu nhiên đã được nghiên cứu và thử
nghiệm với tập huấn luyện khác nhau. Với phương pháp rẽ nhánh ngẫu nhiên có hiệu

quả cao hơn kỹ thuật bagging, khả năng phát hiện nhiễu trong các kết quả đầu ra cũng
tốt hơn. Tuy nhiên hiện tại chưa có phương pháp nào tốt như kỹ thuật Adaboost của
Yoav Freund and Robert Schapire [10]. Kỹ thuật rừng ngẫu nhiên sử dụng các đầu vào
được chọn ngẫu nhiên và kết hợp các đầu vào tại mỗi nút để phát triển mỗi cây.
So với kỹ thuật Adaboost có các so sánh như sau:
 Độ chính xác cao hơn Adaboost, thỉnh thoảng đạt hiệu quả cao hơn.
12

 Kỹ thuật này tương đối mạnh đối với các thuộc tính phía ngoài biên và đối với
nhiễu.
 Đưa ra các ước lượng bên trong về lỗi, độ chính xác và độ nhạy.
 Phương pháp này đơn giản và có thể thực hiện song song.
 Tăng khả năng ước lượng chính xác khi các đặc tính ngẫu nhiên được sử dụng.
 Có thể ước lượng liên tục các lỗi phát sinh, tính chính xác và độ nhạy.
Thuật toán RF đơn giản nhất với các thuộc tính ngẫu nhiên được thực hiện bằng cách
chọn một lớp nhỏ các biến đầu vào để phân tách ngẫu nhiên tại mỗi nút.
Số lượng biến được chọn ngẫu nhiên là F, ta có kết quả đã được kiểm nghiệm như sau:
F= 1 và F= int (

+1) với M là số lượng đầu vào.
2.3. CÁC ĐẶC TRƯNG PHẦN MỀM
2.3.1. Giới thiệu
Trong dự đoán lỗi phần mềm, việc lựa chọn các tham số đầu vào được sử dụng để
huấn luyện giữ vai trò khá quan trọng. Đối với một hệ thống phần mềm có quy trình
thay đổi mã nguồn phức tạp có thể gây ra nhiều lỗi dẫn đến trễ tiến độ, tốn nguồn lực
sửa lỗi. Trong luận văn sử dụng tham số quy trình thay đổi mã nguồn để làm đầu vào
cho tập huấn luyện dữ liệu trong quá trình thực nghiệm. Một quy trình thay đổi mã
nguồn phức tạp sẽ ảnh hưởng tiêu cực đến chất lượng sản phẩm, hệ thống phần mềm,
nếu phức tạp hơn sẽ có thể ảnh hưởng đến các tập tin và có thể gây ra lỗi. Tham số quy
trình thay đổi mã nguồn được sử dụng làm đầu vào cho tập huấn luyện được xác định là

sự thay đổi trong các tập mã nguồn thực hiện bởi các lập trình viên khi họ cập nhật hoặc
sửa lỗi. Đối với một hệ thống lớn, số lượng các lớp nhiều, mỗi lớp chưa nhiều hàm phức
tạp thì quá trình đánh giá sự thay đổi sẽ trở nên khó khăn. Do đó đối với các hệ thống
phần mềm lớn cần phải có các hệ thống hộ trợ quản lý mã nguồn do các lập trình viên
tạo ra. Các hệ thống này sẽ lưu trữ các bản ghi chứa dữ liệu lịch sử cần thiết sử dụng
cho các lần đánh giá ví dụ: lịch sử tạo mới hoặc cập nhật một tập tin, thời gian thay đổi,
tên lập trình viên đã thay đổi, chi tiết thông tin thay đổi như số dòng mã được thêm vào
hay xóa đi.
2.3.2. Phương pháp đánh giá sự thay đổi
Để đánh giá sự thay đổi trong tập mã nguồn, có thể áp dụng kỹ thuật trong lý thuyết
thông tin để đo lượng ngẫu nhiên entropy. Nếu chia quá trình thay đổi hệ thống thành
các chu kỳ ví dụ theo tuần hoặc theo tháng hoặc theo năm, và gọi P là xác suất tập tin
thứ i được thay đổi trong một chu kỳ đã xác định thì P chính là tỷ lệ giữa tổng sổ lần
thay đổi trong một chu kỳ của một tập tin trên tổng số lần thay đổi của tất cả các tập tin
trong hệ thống trong một chu kỳ. Ví dụ một hệ thống có 10 tập tin thay đổi, tập tin A chỉ
bị thay đổi một lần trong một chu kỳ thì 

=


= 0.1, như vậy nếu P của tập tin A là 1
13

thì tất cả các tập còn lại không bị thay đổi khi đó ta thu được lượng entropy là nhỏ nhất.
Để tính toán sự thay đổi hiệu quả và chính xác hơn, người ta cũng xác định sự thay đổi
các dòng mã dựa vào việc tính toán các dòng mã được thêm vào hoặc xóa đi trong một
chu kỳ của một tập tin.
Để tính entropy H của thay đổi ta có công thức sau:
H(P) =





* H

(P) = -




*

(p

∗log

P

)


= -

(p

∗log

P

)




Trong đó n là số lượng tập tin trong hệ thống, 

 là lượng entropy lớn nhất trong một
phân phối.


≥ 0,

k 1, 2,…., n và





= 1.
Cho một chu kỳ i, với giá trị Entropy 

mà một tập các file, 

bị thay đổi với xác xuất


cho mỗi file j € 

, ta có định nghĩa chu kỳ phức tạp lịch sử (History Complexity
Period Factor- HCP


) cho một tập tin j trong chu kỳ i là:
HCP

= 


∗

,  € 

0,trường hợp khác

Trong đó 

là đơn vị phức tạp được gán vào cho tập tin j trong chu kỳ i, với các giá trị


khác nhau như sau:
 Với c

= 1 có nghĩa là tất cả các tập tin đều được gán đơn vị phức tạp do đó tất cả
các tập tin sẽ bị thay đồi trong một chu kỳ.
 Với c

= 

là tỷ lệ phần trăm của sự đơn vị phức tạp được kết hợp trong một chu
kỳ của 

. Đây là khả năng của tập tin j bị thay đổi trong chu kỳ i. Giả sử rằng các

tập tin bị ảnh hưởng dựa trên tần suất thay đổi trong suốt chu kỳ của chúng. Càng
nhiều tập tinh bị thay đổi, thì càng có nhiều hảnh hưởng bởi đơn vị phức tạp của
chu kỳ i.
 Với 

=

|

|
có nghĩa là phân bố đồng đều sự kết hợp đơn vị phức tạp trong một
chu kỳ của 

giữa tất cả các tập tin được thay đổi trong chu kỳ đó. Càng nhiều
file bị thay đổi, ảnh hưởng của chu kỳ phức tạp trên mỗi tập tin càng giảm.
2.3.3. Tiêu chí ROC (receiver operating characteristic)
Việc đánh giá các mô hình dự đoán lỗi nhằm:
14

 Cung cấp sự so sánh toàn diện giữa các mô hình.
 Đánh giá sự ảnh hưởng của việc chọn lựa tiêu chí đánh giá sẽ tác động đến thứ
hạng của các mô hình đó như thế nào.
Đường cong ROC mô tả lợi ích của việc sử dụng mô hình (đại diện bằng thuộc tính
Dương thật) và chi phí sử dụng mô hình (đại diện bằng thuộc tính Dương giả). Đường
cong ROC cho phép đánh giá hiệu quả của một mô hình nói chung mà không phụ thuộc
vào giá trị ngưỡng cụ thể nào. Phần diện tích phía dưới đường cong ROC (gọi là AUC -
area under the curve) có thể được sử dụng như một thông số thống kê mô tả. Ví dụ nếu
chọn ngẫu nhiên 2 lớp (một lớp lỗi và một lớp không lỗi) để kiểm thử bởi một mô hình
có AUC = 0.85; thu được xác xuất kết quả phát hiện lỗi của lớp lỗi thực sự cao hơn xác
suất phát hiện lỗi của lớp không bị lỗi 0.85 (hay là 85%). Do vậy, giá trị AUC của một

mô hình có thể sử dụng để xếp hạng các thành phần (hoặc lớp) một cách khá chính xác.
Một mô hình hoàn hảo, có nghĩa là mô hình đó phân loại các lớp một cách chính xác
hoàn toàn, sẽ có giá trị phần ROC = 100%.
2.3.4. Tiêu chí CE (cost effectiveness )
Vấn đề với các tiêu chí ma trận độ nhạy/ độ chính xác và đường cong ROC là các
tiêu chí này được tạo ra để áp dụng cho tất cả các bài toán phân loại và chúng không
được thiết kế một cách rõ ràng và trực tiếp liên quan đến hiệu quả chi phí (cost
effectiveness) khi việc sử dụng các mô hình phát hiện lỗi.
Do vậy, trong phần còn lại của luận văn này, chúng ta sẽ xem độ phức tạp để kiểm thử
một số lượng các lớp xấp xỉ hàm số mũ của kích thước của những lớp này. Dựa trên giả
thuyết ở trên, một mô hình dự đoán lỗi không mang lại nhiều ý nghĩa nếu mô hình dự
đoán lỗi chỉ thực hiện được công việc phát hiện lỗi và số lượng lỗi này tỉ lệ với hàm mũ
của kích cỡ lớp mà cần phải quan tâm đến hiệu quả chi phí của mô hình này như thế
nào.
Với mỗi phiên bản, chúng ta không thể xác định được chính xác trước vùng kiểm thử
cho một mô hình tối ưu. Do vậy, trong thực tế, với mỗi bản phát hành chúng ta tính diện
tích vùng đó như sau:
 Đầu tiên chọn ra tất cả các lớp chứa lỗi sau đó sắp xếp các lớp có lỗi này theo thứ
tự tăng dần của kích thước các lớp chứa lỗi đó.
 Các lớp không có lỗi sau đó cũng sắp xếp theo thứ tự tăng dần của kích thước các
lớp không chứa lỗi đó.
Thủ tục này nhằm tối đa hóa diện tích vùng của bản phát hành trong lần này và tập các
lớp lỗi với giả thiết tương lai có thể dự đoán chính xác hoàn hảo. Sau khi đã được tính
15

toán, với mỗi tỉ lệ phần trăm NOS cụ thể, chúng ta có thể so sánh tỉ lệ phần trăm cực đại
lỗi mà chúng ta có thể thu được với một mô hình tối ưu và sử dụng nó như là đường bao
(đường giới hạn) phía trên để đánh giá các mô hình, như đường nét đứt mờ ở hình trên.
Để so sánh các diện tích CE chúng ta cần lưu ý rằng mô hình tối ưu có thể khác nhau đối
với với các tập hợp mẫu thử nghiệm khác nhau. Do vậy, chúng ta đưa ra một giá trị CE

chuẩn hóa như dưới đây:
CE
л
= (CE
л
(model) - CE
л
(baseline))/( CE
л
(optimal) - CE
л
(baseline))
Trong đó, CE
л
(x) là diện tích dưới đường cong x (baseline, model hoặc optimal - tối ưu)
của một л phần trăm NOS cho trước.
Chương 3
THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ

Trong chương 3, luận văn sẽ trình bày các bước trong quá trình thực thi chương
trình thử nghiệm trên dữ liệu được lấy theo đường dẫn của tác giả bài báo tham
khảo. Đầu tiên sẽ mô tả các bước thu thập dữ liệu từ các công cụ MKS, WebMetric
được tập dữ liệu ban đầu, sau đó phân tích các các đặc trưng trong tập dữ liệu sẽ
đưa ra để phân loại. Mô tả các bước thực nghiệm để đưa ra các kết quả với các
loại biến đầu vào và đánh giá theo các tiêu chí hiệu quả mô hình khác nhau. Từ
các kết quả thu được khi thử nghiệm mô hình, phần cuối luận văn sẽ phân tích các
kết quả theo các tiêu chí để đưa ra phương pháp hiệu quả và phù hợp với hệ thống
quản lý chất lượng của Viettel.
3.1. THU THẬP, PHÂN TÍCH DỮ LIỆU
3.1.1. Thu thập dữ liệu

Hệ thống được lựa chọn để thử nghiệm các kết quả nghiên cứu là hệ thống mã
nguồn mở Eclipse JDT Core [18]. Hệ thống cho đến nay đã phát triển qua 91 phiên bản
được tính theo mỗi 2 tuần, với gần 1000 lớp Java. Dữ liệu được sử dụng cho chương
trình thử nghiệm gồm chia thành ba loại tương ứng với ba loại biến đã được trình bày
trong chương 1.
3.1.1.1. Thông tin về Process
Để xác định thông tin về Process, sử dụng công cụ được viết bằng Perl Script
được sử dụng để thu thập dữ liệu chứa các thông tin về những thay đổi của các tập tin
16

hay các lớp Java dành cho những phiên bản Eclipse JDT Core được nghiên cứu thông
qua hệ thống quản lý cấu hình (configuration management system – MKS) [17].
3.1.1.2. Phép đo hướng đối tượng OO
Để thu thập giá trị đo cấu trúc của các lớp đối với mỗi phiên bản, ta sử dụng phần
mềm phân tích mã nguồn WebMetric [6]. WebMetric là một công cụ thu thập dữ liệu tự
động, được viết hoàn toàn bằng Java và sử dụng bộ parse JavaCC (phân tích cấu trúc cú
pháp mã nguồn của Java).
3.1.1.3. Phép đo Delta
Phép đo này đo lượng thay đổi của một tập tin giữa 2 phiên bản. Trong luận văn
này, phép đo Delta được tính toán từ những phép đo hướng đối tượng bằng phần mềm
WebMetric.
3.1.2. Phân tích dữ liệu
Sau quá trình thu thập dữ liệu như trên, dữ liệu thu được của chúng ta sẽ bao gồm 3
file dữ liệu định dạng csv:
 process-metrics.csv
 oo-metric.csv
 delta-metric.csv
Mỗi file sẽ chứa 997 mẫu mỗi mẫu tương đương với một lớp java của Eclipse JDT,
trong đó file process-metrics.csv sẽ chứa các dữ liệu về 6 thuộc tính process, file oo-
metric.csv sẽ chứa các dữ liệu về 18 thuộc tính hướng đối tượng, và file delta-metric.csv

chứa 17 thuộc tính delta thông tin thay đổi của 2 phiên bản gần nhất tương ứng với 17
thuộc tính hướng đối tượng trong file oo-metric.csv trừ thuộc tính bugs.
3.2. THỰC THI CHƯƠNG TRÌNH
3.2.1. Giới thiệu công cụ thực nghiệm
Phần mềm được sử dụng để thực hiện phân lớp trên các tập dữ liệu ở trên là phần
mềm weka [19]. Tiến hành phân loại bằng thuật toán RF với thuộc tính phân loại được
lựa chọn bugs, tuy nhiên trước khi tiến hành phân loại, chúng ta sẽ phải lựa chọn chế độ
kiểm thử để xây dựng tập kiểm thử và tập huấn luyện.
Luận văn xây dựng 7 mô hình dự đoán lỗi dựa trên tập dữ liệu huấn luyện ở phần
trên theo hai tiêu chí ROC, CE
0.01
, CE
0.05
, CE
0.20
, CE
1.00
với 7 tổ hợp biến Process, OO,
17

Delta, Process + OO, OO + Delta, Process + Delta, Total. Đánh giá theo tiêu chí ROC:
Khi chạy chương trình lần lượt với hai độ đo Process và OO.
- Đánh giá theo ROC: Khi chạy chương trình lần lượt với 7 tập độ đo Process và
OO, ta thu được bảng giá trị ROC lần lượt của từng mô hình như sau:
Bảng 3.1. Tổng hợp kết quả ROC theo các biến
Tổ hợp biến ROC
Process 0.734
OO 0.83
Delta 0.82
Process+OO 0.843

OO+Delta 0.848
Delta+Process 0.825
All 0.859

Có thế nhận thấy xác suất để một lớp lỗi sẽ được phân vào lớp lỗi cao hơn xác suất của
một lớp không lỗi trong mô hình tương sử dụng tập độ đo Process là thấp nhất 0.734,
còn đối với các tập độ đo còn lại kết quả tương đối giống nhau từ khoảng 0.82 đến
0.859. Kết quả phân lớp theo tiêu chí ROC đạt được tốt nhất khi ta sử dụng kết hợp đồng
thời cả 3 tập độ đo.
- Đánh giá theo CE: Tiến hành đánh giá 2 tập độ đo theo tiêu chí CE với các giá trị
 khác nhau, lần lượt là 0.01, 0.05, 0.20 và 1.00 ta được bảng giá trị như sau:
Bảng 3.2. Tổng hợp kết quả CE
Biến

=
0
.
01


=
0
.
0
5

=
0
.
20



=
1
.
00

Process 0.6309 0.6309 0.6309 0.2066
OO 0.4102 0.4102 0.4102 0.2066
Delta 0.4553 0.4553 0.4553 0.2066
Process+OO 0.4072 0.4072 0.4072 0.2066
OO+Delta 0.4012 0.4012 0.4012 0.2066
Delta+Process 0.4302 0.4302 0.4302 0.2066
Total 0.3941 0.3941 0.3941 0.2066
Với  = 1.00 khi chúng ta có thể thấy chi phí của tất cả các mô hình đều như nhau, bởi
vì chúng ta cùng lựa chọn thuộc tính phân lớp cho mô hình tất cả các mô hình đều cùng
18

là thuộc tính bugs. Các mô hình khi đều có ngưỡng  lớn hơn 0.20, khi  nhỏ hơn 0.20
thì chi phí của mô hình là đồng nhất. Có thể nhận thấy với  ở dưới ngưỡng 0.20 thì CE
của mô hình thương ứng với tập độ đo Process là cao nhất 0.6309, còn đối với các tập độ
đo còn lại giá trị này gần như tương đương nhau từ khoảng 0.3941 đến 0.4302.

3.2.2. Phân tích đánh giá
Theo các kết quả thực nghiệm ở trên, với trường hợp thực thi phân loại trên tổ hợp
các biến Process + Delta + OO theo cả 2 tiêu chí ROC và CE đều đạt kết quả tốt hơn khi
thực hiện phân loại chỉ trên 1 hoặc 2 biến riêng biệt.
Với đặc thù của hệ thống quản lý phần mềm của Trung tâm phần mềm – Viettel có
đầy đủ các công cụ để đánh giá các tham số như yêu cầu về dữ liệu đầu vào của mô hình
phân loại:

 Công cụ quản lý cấu hình Starteam version 2008: Lưu lại thông tin về toàn bộ sự
thay đổi của các lớp trong phần mềm:
- Thông tin về lập trình viên, thời gian cập nhật các lớp trong các phiên bản
khác nhau.
- Thông tin về số dòng code, biến, hàm, package… được thay đổi trong các
lớp khi cập nhật trên các lớp.
 Công cụ quản lý lỗi Mantis version 1.1.5:
- Lưu lại toàn bộ lỗi với trọng số lỗi khác nhau: Hight, Medium, Low tương
ứng với mức độ phức tạp của lỗi khi kiểm thử chương trình.
- Lưu lại thông tin về các lập trình viên sửa các lỗi theo các trọng số cho các
lớp lỗi.
Như vậy ta có thể thu thập được các thông tin tập dữ liệu đầu vào gồm các loại Process,
OO, Delta.
Với thực tế kỹ năng và kinh nghiệm của các lập trình viên trong Trung tâm chưa
đồng đều nên kết quả của quá trình lập trình có nhiều điểm khác nhau. Hơn nữa các lập
trình viên chưa được đào tạo bài bản và chưa có quy trình lập trình cụ thể nên với một
nhân viên lập trình tiến hành lập trình một lớp thì tỷ lệ mắc lỗi trong lớp này cũng không
đồng đều giữa các dòng code. Hơn nữa các dự án phần mềm của Viettel quy mô tương
đối lớn thông thường số lượng lớn hơn 1000 lớp thực hiện các chức năng nghiệp vụ
chưa bao gồm các lớp tự sinh ra. Do đó nếu sử dụng tiêu chí CE để đánh giá trên tỷ phần
trăm các dòng mã trong các lớp được đem ra phân loại sẽ có kết quả phù hợp với đặc thù
trên.
Như vậy có thể áp dụng mô hình dự đoán lỗi với việc kết hợp các độ đo thành một biến
tổ hợp OO + Delta + Process làm đầu vào cho phân loại và đánh giá hiệu quả mô hình
theo tiêu chí CE sẽ có được kết quả chính xác nhất.

×