1. Trang chủ >
  2. Công nghệ thông tin >
  3. Lập trình >

CHƯƠNG 4: MỘT SỐ KẾT QUẢ ĐO PHẦN MỀM

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



Xem Thêm
Tải bản đầy đủ (.doc) (91 trang)

×