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 (720.7 KB, 91 trang )
1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
Faid-xml
IntraFax
Css-m1
PG-Maintain-2002-1
CDS
CDS-MK
Aop
BDWizard3
MFC3
JDK1.1.8
C++
C++
Java
Java
C++
C++
C++
C++
C++
Java
78
4
37
201
207
249
9
89
154
533
31541
17113
36165
48011
155550
208099
4721
100478
74895
152231
GNU
C++
84
32122
STL
C++
43
Fsoft-fpt
Fsoft-fpt
Fsoft-fpt
Fsoft-fpt*
Fsoft-fpt
Fsoft-fpt*
Fsoft-fpt
Fsoft-fpt*
37318
Ghi chú : * các dự án bảo trì.
Bảng 4.1: Danh sách các dự án được đo
Trong số các dự án tại Fsoft-fpt có 3 dự án bảo trì là: PG-Maintain-2002-1,
CDS-MK và BDWizard3. Ngoài ra ta cũng chú ý thấy IntraFax và Aop là các dự
án nhỏ, sử dụng cả lập trình hướng đối tượng và lập trình cấu trúc nên có số lớp
ít. Ta tạm gọi nhóm 8 dự án tại Fsoft-fpt là “Fsoft”, nhúm cỏc thư viện hướng đối
tượng là “Library”.
Số lớp
Kích thước (LOC)
Fsoft
874
601678
Library
814
296566
Bảng 4.2: Tổng cộng số lớp các dự án được đo
Tổng số lớp đo được tại hai nhóm là gần bằng nhau. Trong khi đó kích thước
(LOC - lines of code) của nhúm cỏc dự án Fsoft cao hơn hẳn kích thước của
nhóm thư viện Library bởi vì các dự án là thực hiện mục tiêu cụ thể còn thư viện
để sử dụng lại nhiều nên chỉ cung cấp những tiện ích chung nhất.
4.1 Kết quả các phép đo CK
Phần này trình bày kết quả các phép đo CK trờn nhúm cỏc dự án ở Fsoft và
nhóm thư viện hướng đối tượng. Kết quả được thể hiện dưới dạng biểu đồ và
bảng thống kê giá trị lớn nhất, nhỏ nhất, giá trị trung bình. Trong mỗi biểu đồ cột
dưới đây, trục nằm ngang là giá trị độ đo, trục đứng là số lớp có giá trị độ đo
bằng giá trị trên trục nằm ngang.
68
4.1.1. Kết quả độ đo LCOM
Độ đo LCOM thể hiện mức độ thiếu liên quan giữa các phương thức trong
cùng một lớp (cố kết). Giá trị này lớn thể hiện tính cố kết thấp, các phương thức
trong cùng một lớp thiếu liên hệ là dấu hiệu của sự tách biệt chức năng, các
phương thức đú nờn thuộc về hai lớp khác nhau, vì thế nếu độ đo LCOM lớn,
nên phân chia lớp đó thành hai lớp con.
69
Fsoft
Library
Độ đo
Bé nhất
Lớn nhất
LCOM
0
100
LCOM
0
100
Hình 4.1: Kết quả độ đo LCOM
Trung bình
57.9
47.85
Nhận xét: Ở cả hai nhúm cú khoảng 1/3 số lớp có LCOM bằng 0 thể hiện độ cố
kết giữa các phương thức trong lớp tốt. Nói chính xác hơn là các biến của lớp có
xu hướng được sử dụng tại nhiều hơn một phương thức trong lớp đó. Điều này
phù hợp với quan điểm các phương thức của lớp được xây dựng xoay quanh các
biến (dữ liệu) trong lớp đó. Ngoài ra ta cũng nhận thấy là nhóm Library có độ đo
LCOM thấp hơn độ đo LCOM của nhóm Fsoft. Độ đo LCOM thể hiện tính cố
kết yếu giữa các phương thức trong một lớp, giá trị này càng bé càng tốt. Tốt
nhất là LCOM = 0% tức là khi đó hai phương thức bất kỳ trong lớp đều có mối
liên hệ, thể hiện tính cố kết tốt.
Trên đồ thị kết quả đo LCOM ta thấy cột cao nhất có giá trị độ đo
LCOM=0%, đó là các lớp có tính cố kết tốt. Cột cao thứ hai có độ đo LCOM =
100%. Đó là các lớp có tính cố kết thấp, giữa hai phương thức bất kỳ không có
mối liên hệ. Các lớp chỉ khai báo giao diện lớp mà không có phần triển khai
thuộc loại này.
4.1.2 Kết quả độ đo DIT
Độ đo DIT thể hiện chiều sâu cây thừa kế. Độ sâu này càng lớn thể hiện tính
sử dụng lại cao, tuy nhiên nếu độ đo DIT quá lớn lại làm cho các lớp con cháu có
tính phức tạp cao do được thừa kế nhiều thuộc tính từ các lớp cha. Qua quá trình
đo các thư viện phần mềm hướng đối tượng của cỏc hóng nổi tiếng (nhóm
Library), độ đo DIT trung bình là 2.22, như vậy độ đo DIT nằm giữa 2 và 3 có
thể coi là tốt. Độ đo DIT càng lớn thỡ cỏc lớp ở gốc càng phải được kiểm tra kỹ
lưỡng nhằm giảm sai sót cho các lớp con cháu.
Fsoft
Độ đo
DIT
Bé nhất
0
70
Lớn nhất
4
Trung bình
1.31
Library
DIT
0
6
2.22
Hình 4.2: Kết quả độ đo DIT
Nhận xét: Độ đo DIT ở nhóm Library cao hơn ở nhóm Fsoft (giá trị trung
bình gần gấp đôi). Có thể giải thích điều này là do các phần mềm được xây dựng
ở Fsoft để phục vụ mục đích cụ thể, trong khi các thư viện được xây dựng được
xây dựng với mục đích để sử dụng lại. Nhìn chung độ sâu cây thừa kế ở cả hai
nhóm đều không cao, người thiết kế đã không tận dụng khả năng sử dụng lại qua
việc sử dụng thừa kế nhằm làm giảm độ phức tạp của hệ thống.
4.1.3. Kết quả độ đo CBO
Độ đo CBO là độ đo thể hiện tính kết dính giữa các lớp. Hai lớp gọi là có tính
kết dính nếu lớp này sử dụng thuộc tính hay dữ liệu của lớp kia. CBO của một
lớp tính bằng số lớp có tính kết dính với lớp đó. Giá trị độ đo này càng lớn thể
hiện một thiết kế lớp tồi, khó hiểu, giảm khả năng sử dụng lại, khó bảo trì, không
phù hợp với quan điểm bao bọc và đóng gói dữ liệu của lập trình hướng đối
tượng.
Library
71
400
Number of classes
350
300
250
200
150
100
50
0
0
10
20
CBO metric value
Fsoft
Library
Độ đo
CBO
CBO
Bé nhất
0
0
Lớn nhất
129
51
Trung bình
8.86
3.59
Hình 4.3: Kết quả độ đo CBO
Nhận xét: Độ đo CBO của nhóm Fsoft cao hơn hẳn độ đo CBO của nhóm
Library. Có thể lý giải điều này do các ứng dụng ở nhúm cỏc dự án Fsoft được
xây dựng với các chức năng cụ thể nên có nhiều thông điệp được trao đổi giữa
các đối tượng hơn ở nhóm thư viện.
Quan sát trên đồ thị độ đo CBO của nhóm Library, chúng ta thấy số lớp có độ
đo CBO = 1 là cao nhất, đú chớnh là những lớp chỉ thừa kế từ một lớp cha nên
chỉ có tính kết dính với lớp cha đú, khụng sử dụng các phương thức của các lớp
khác ngoài lớp cha.
4.1.4 Kết quả độ đo NOC
Độ đo NOC là số lớp con trực tiếp của một lớp, số lớp con càng lớn thì lớp đó
càng có nhiều khả năng sử dụng lại, tầm quan trọng của lớp đó càng cao vỡ cỏc
thuộc tính của lớp cha được truyền lại cho các lớp con, yêu cầu phải được kiểm
tra kỹ lưỡng.
72
Fsoft
Library
Độ đo
NOC
NOC
Bé nhất
0
0
Lớn nhất
93
326
Trung bình
0.26
0.82
Hình 4.4: Kết quả độ đo NOC.
Nhận xét: Độ đo NOC của cỏc nhúm Fsoft bé hơn độ đo NOC của nhóm
Library, nguyên nhân là thư viện được xây dựng để sử dụng lại nờn cỏc lớp trong
thư viện có nhiều lớp con hơn. Lớp có nhiều lớp con nhất trong nhóm Library
(326 con) chính là lớp java.lang.Object là lớp cha của hầu hết mọi lớp khác trong
thư viện JDK. Nhìn vào biểu đồ ta cũng thấy phần lớn các lớp ở cả hai nhóm là
các lớp không có lớp con nào. Như vậy, qua các độ đo DIT và NOC ta có thể
thấy việc sử dụng thừa kế chưa nhiều (ít nhất là trong số các phần mềm được đo
trong báo cáo này). Ta có thể giải thích nguyên nhân là do quan điểm của người
thiết kế cho rằng nếu sử dụng thừa kế nhiều sẽ làm tăng độ phức tạp của hệ thống
73
dẫn tới khó kiểm soát, hoặc là do nhóm thiết kế phần mềm có nhiều người khác
nhau, trong đó người này không hiểu rõ phần thiết kế của người khác nên cũng
không thể thực hiện việc thừa kế.
4.1.5 Kết quả độ đo RFC
Độ đo RFC của một lớp là số phương thức mà lớp đó có thể kích hoạt (để đáp
lại thông điệp mà đối tượng của lớp đó nhận được). Giá trị này càng lớn thì độ
phức tạp của lớp càng cao, việc chữa lỗi và bảo trì lớp đó càng khó khăn bởi vì
cần nhiều thời gian để hiểu các thông điệp và lời gọi giữa lớp đó với môi trường
bên ngoài.
Fsoft
Độ đo
RFC
Bé nhất
0
74
Lớn nhất
407
Trung bình
25.1
Library
RFC
1
424
54.23
Hình 4.5: Kết quả độ đo RFC
Nhận xét: Độ đo RFC của hai nhóm cho thấy các lớp trong cả hai nhóm có thể
kích hoạt một số lượng tương đối lớn các phương thức. Ngoài ra, ta cũng thấy
của nhóm thư viện cao hơn của nhóm Fsoft. Tìm hiểu nguyên nhân, chúng tôi
thấy rằng trong nhóm Fsoft, các phương thức có xu hướng gọi các phương thức
khác thuộc cùng một lóp, trong khi đó ở nhóm Library, các phương thức có rất
nhiều lời gọi hàm tổng thể (hàm API) và các phương thức được thừa kế từ các
lớp cha. Lớp có độ đo RFC lớn nhất trong nhóm Library là CMDIFrameWnd có
tới 424 lời gọi các phương thức thuộc cả trong và ngoài lớp, trong khi lớp này
chỉ có 35 phương thức (chỉ tớnh riờng cỏc phương thức được khai báo mới,
không kể các phương thức được thừa kế).
4.1.6 Kết quả độ đo WMC
Độ đo WMC của một lớp là số phương thức có trong lớp đú. Nó thể hiện độ
phức tạp của một lớp. Giá trị này càng lớn thể hiện thời gian và công sức cần bỏ
ra để xây dựng lớp đó càng nhiều. Độ đo WMC lớn thì lớp càng có xu hướng
phục vụ mục đích cụ thể, giảm khả năng sử dụng lại.
75
Fsoft
Library
Độ đo
WMC
WMC
Bé nhất
0
0
Lớn nhất
343
262
Trung bình
17.35
10.67
Hình 4.6: Kết quả độ đo WMC
Nhận xét: Nhìn chung các lớp ở cả hai nhóm có số phương thức vừa phải. So
sánh giá trị trung bình của hai nhóm, ta thấy trong khi độ đo RFC của nhóm
Library cao hơn hẳn độ đo RFC của nhóm Fsoft thì độ đo WMC của nhóm Fsoft
lại cao hơn độ đo WMC của nhóm Library (RFC bao gồm cả WMC). Chênh lệch
giữa độ đo RFC và WMC (giá trị trung bình) của nhóm Fsoft không lớn (25.117.35), trong khi của nhóm Library lại rất lớn (54.23-10.67), điều đó một lần nữa
khẳng định các phương thức trong các lớp ở nhóm Fsoft có xu hướng gọi các
phương thức khác thuộc cùng lớp trong khi các phương thức ở các lớp thuộc
nhóm Library có xu hướng gọi hàm API và các phương thức được thừa kế nhiều
hơn. Lớp có nhiều phương thức nhất trong nhóm Library là lớp CWnd có tới 262
phương thức và tổng số 313 lời gọi các phương thức thuộc cả trong và ngoài lớp
(WMC = 262 và RFC = 313). Ngoài ra, ta cũng thấy rằng trong nhóm Library, số
lớp có WMC = 1 (có 177 lớp) và WMC = 2 (có 130 lớp) là nhiều nhất, đó là
những lớp chỉ có phương thức tạo đối tượng (constructor) và hủy đối tượng
(destructor). Trong khi đó cũng ở nhóm Library số lớp có RFC = 29 là nhiều nhất
(172 lớp).
Nhìn vào đồ thị kết quả đo WMC trong nhóm Library, chúng ta thấy số lớp có
WMC = 1 và WMC = 2 là nhiều nhất, đú chớnh là những lớp chỉ có phương thức
khởi tạo và phương thức hủy.
76
4.1.7. Tổng hợp kết quả các độ đo CK
Độ đo của một phần mềm hướng đối tượng bằng trung bình các độ đo của các
lớp có trong phần mềm ấy. Chúng ta có bảng kết quả các độ đo CK cho từng
phần mềm như sau:
Faid-xml
IntraFax
Css-m1
PG-Maintain2002-1
Aop
Cds
Cds-mk
Bdwizard3
MFC3
JDK1.1.8
GNU
LCO
M
31.58
81.33
75.95
35.79
71.22
63.41
70.83
72.74
75.16
44.43
32.69
DIT
0.88
1
1.64
1.84
0.55
1.22
1.19
0.98
2.11
2.6
0.89
CBO
4.86
2
5.94
5.42
3.77
4.91
16.91
8.71
3.73
4.05
1.64
NO
C
0.12
0
0
0.46
0.22
0.27
0.24
0.1
0.76
0.93
0.65
RFC
19.9
18
20.59
25
21.11
26.63
27.13
23.97
133.09
37.24
40.46
WM
C
18.06
18
15.4
11.33
15.33
18.74
19.28
22.66
20.33
7.87
11.37
Bảng 4.3: Kết quả độ đo CK của các phần mềm
Hình 4.7: Biểu đồ độ đo CK của các phần mềm
Nhận xét: Độ đo LCOM có sự biến thiên không nhiều. Nhìn chung nhóm phần
mềm Fsoft có độ đo LCOM cao hơn nhóm phần mềm Library. Độ đo DIT và
NOC của nhóm Library (đặc biệt là MFC3 và JDK1.1.8) cao hơn hẳn độ đo DIT
và NOC của nhóm phần mềm Fsoft. Xột riờng đối với từng phần mềm thì độ đo
RFC và WMC của nhóm thư viện có sự chênh lệch rất lớn trong khi chênh lệch
77
này của nhóm Fsoft nhỏ hơn. Độ đo CBO của nhóm Fsoft nhìn chung cao hơn độ
đo CBO của nhóm Library, trong nhóm Fsoft thì độ đo CBO của các dự án phần
mềm bảo trì như PG-Maintaint2002-1, Cds-mk, Bdwizard3 cũng lớn hơn các dự
án khác. Nguyên nhân của những sự chênh lệch này đã được giải thích ở các
phần trên.
4.1.8 Quan hệ ảnh hưởng giữa các độ đo CK và các thuộc tính khác.
Các giá trị độ đo luôn có ảnh hưởng lên chất lượng cuối cùng của sản phẩm.
Nếu các giá trị độ đo thể hiện một thiết kế tồi thì chất lượng sản phẩm cuối cùng
cũng không tốt. Bên cạnh việc thu thập các giá trị độ đo, chúng tôi cũng nghiên
cứu sự ảnh hưởng của các độ đo này lờn cỏc thuộc tính chất lượng phần mềm.
Đối với các phần mềm ở Fsoft, chúng tôi thu thập các độ đo về một số thuộc
tính: tỷ lệ chi phí công sức để chữa lỗi sản phẩm (correction cost), tỷ lệ lỗi trong
quá trình test (defect rate), tỷ lệ lỗi sau khi giao sản phẩm cho khách hàng
(leakage). Các độ đo này được lưu trữ trong cơ sở dữ liệu của dự án. Các độ đo
công sức chữa lỗi và tỷ lệ lỗi trong pha kiểm tra là các độ đo thuộc về quá trình
sản suất phần mềm, còn tỷ lệ lỗi sau bàn giao là độ đo thuộc về sản phẩm phần
mềm. Dựa trên kết quả các độ đo CK ở trên và các độ đo công sức chữa lỗi, lỗi
kiểm tra, lỗi sản phẩm thu thập được, chúng tôi lập ma trận hệ số tương quan
giữa các độ đo.
Hệ số tương quan giữa hai biến ngẫu nhiên X và Y được tính như sau:
trong đó:
cov (X, Y): hiệp phương sai của 2 biến ngẫu nhiên X, Y.
,
: giá trị trung bình của hai biến X, Y
: độ lệch tiêu chuẩn của hai biến X, Y.
n:số mẫu ngẫu nhiên của X và Y.
số mẫu ngẫu nhiên của X và Y.
Hệ số tương quan thể hiện mối liên hệ biến thiên giữa hai biến ngẫu nhiên. Hệ
số tương quan nằm giữa –1 và 1, trị tuyệt đối càng lớn thể hiện mối quan hệ biến
thiên càng mạnh. Hế số tương quan dương thể hiện mối quan hệ ảnh hưởng biến
thiên thuận (A tăng thì B tăng), hệ số tương quan âm thể hiện mối quan hệ ảnh
78