MỞ ĐẦU 8
1. Đặt vấn đề 8
2. Nhiệm vụ và bố cục của đồ án 9
CHƯƠNG 1: TỔNG QUAN VỀ LÝ THUYẾT ĐO PHẦN MỀM 10
1.1 Lý thuyết đo 10
1.1.1 Cơ bản về lý thuyết đo 10
1.1.2 Lý thuyết đo – cách tiếp cận 12
1.2 Cơ sở lý thuyết về phép đo phần mềm 14
1.2.1. Vai trò của phép đo phần mềm. 14
1.2.2. Mục đích và đối tượng của phép đo phần mềm 16
1.2.3 Các yêu cầu đối với một phép đo phần mềm 18
1.2.4 Các bước của quá trình đo phần mềm 18
1.2.5 Một ví dụ về phép đo phần mềm 18
1.2.6 Một số mô hình đo phần mềm 19
Ước tính chi phí và nhân lực 20
Mô hình đánh giá chất lượng 21
Mô hình đánh giá độ tin cậy 24
Mô hình đánh giá hiệu năng 25
Mô hình đánh giá độ phức tạp 25
1.3 Một số vấn đề về đo phần mềm 26
1.3.1 Phân biệt các đối tượng đo : sản phẩm, quá trình, nguồn lực. 26
Phép đo quá trình. 26
Phép đo sản phẩm 27
Phép đo nguồn lực 27
1.3.2 Phân biệt thuộc tính trong và thuộc tính ngoài 28
Kết luận chương 1: 28
CHƯƠNG 2: PHÉP ĐO PHẦN MỀM HƯỚNG ĐỐI TƯỢNG 30
2.1. Bộ các phép đo CK 31
2.1.1 Cơ sở lý thuyết của các phép đo CK 31
a. Cơ sở lý thuyết phát triển phần mềm hướng đối tượng 31
b. Cơ sở lý thuyết đo 32
c. Một số khái niệm 33
2.1.2 Các tính chất của phép đo hướng đối tượng. 35
2.1.3 Các phép đo trong hệ đo CK 36
1. WMC (Weight Method per Class) 36
2. DIT (Depth of Inheritance Tree) 37
3. NOC (Number Of Children) 37
4. CBO (Coupling Between Object) 38
5. RFC (Responce For a Class) 38
6. LCOM (Lack of Cohesion in Methods) 39
2.1.4 Tổng kết về các phép đo CK: 39
2.1.5 Một ví dụ về các phép đo CK 40
2.2 Mô hình đánh giá chất lượng phần mềm hướng đối tượng. 42
Mô hình REBOOT (ReusE Based on Object Oriented Technology) 42
Mô hình QMOOD (Quality Model for Object Oriented Design). 44
Kết luận chương 2: 47
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ VÀ XÂY DỰNG PHẦN MỀM TRỢ GIÚP ĐO PHẦN MỀM HƯỚNG ĐỐI TƯỢNG 48
3.1 Phân tích các yêu cầu 48
3.2 Các chức năng chính của chương trình 51
3.3 Cơ sở dữ liệu của chương trình 51
3.4 Chọn lựa công cụ thực hiện 52
3.5 Xây dựng chương trình 53
a. Mô tả cơ sở dữ liệu 53
b. Giao diện của chương trình 55
c. Xây dựng các chức năng của chương trình 55
3.6 Giới thiệu chương trình: 60
Mô tả chương trình nguồn: 60
Mô tả giao diện chương trình: 62
CHƯƠNG 4: MỘT SỐ KẾT QUẢ ĐO PHẦN MỀM HƯỚNG ĐỐI TƯỢNG 68
4.1 Kết quả các phép đo CK 69
4.1.1. Kết quả độ đo LCOM 70
4.1.2 Kết quả độ đo DIT 71
4.1.3. Kết quả độ đo CBO 72
4.1.4 Kết quả độ đo NOC 73
4.1.5 Kết quả độ đo RFC 75
4.1.6 Kết quả độ đo WMC 76
4.1.7. Tổng hợp kết quả các độ đo CK 78
4.1.8 Quan hệ ảnh hưởng giữa các độ đo CK và các thuộc tính khác. 79
4.2 Kết quả đo sử dụng mô hình QMOOD 82
4.2.1. Quá trình đo sử dụng mô hình QMOOD 82
4.2.2. Quan hệ ảnh hưởng giữa các kết quả đo và các thuộc tính khác 85
Nhận xét đánh giá về các kết quả đo thực nghiệm: 86
KẾT LUẬN 88
TÀI LIỆU THAM KHẢO 90
91 trang |
Chia sẻ: huong.duong | Lượt xem: 1621 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Xây dựng chương trình trợ giúp cho quá trình đánh giá phần mềm hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
P’ q P (đầy đủ: P phức tạp hơn P’ hoặc P’ phức tạp hơn P).
P q P’, P’ q P” Þ P q P” (bắc cầu: P phức tạp hơn P’ và P’ phức tạp hơn P” dẫn đến P phức tạp hơn P”).
Để có thể tiến hành đo đạc trên sơ đồ thiết kế hướng đối tượng, hệ thống quan hệ nêu trên cần được chuyển sang hệ thống quan hệ dựa trên trị số (biểu diễn thay thế).
Hệ thống quan hệ dựa trên trị số F được định nghĩa:
F º (C, S1...Sn, B1...Bn)
trong đó:
C là tập các phần tử (ví dụ là số thực)
S1...Sn là các quan hệ trên C ( ví dụ >, <, =)
B1...Bn là các phép toán nhị phân trên C (ví dụ +,-,*)
Việc chuyển đổi như trên được thực hiện qua ánh xạ từ hệ thống quan hệ D sang hệ thống quan hệ dựa trên trị số F, ánh xạ này được gọi là phép đo m. Với mỗi thực thể aÎD, m(a)ÎF. Phép đo m phải bảo toàn tất cả các quan hệ của hệ thống quan hệ, mỗi quan hệ trong D phải có một quan hệ trong F tương ứng.
c. Một số khái niệm
Một đối tượng trong hệ thống được biểu diễn bởi:
X = trong đó x là dấu hiệu hay tên để nhận dạng X trong hệ thống, p(x) là tập hữu hạn các thuộc tính và phương thức của đối tượng.
Cố kết (cohesion) là sự liên quan, gắn bó giữa các thành phần trong cùng một lớp. Đây là một thuộc tính quan trọng. Xu hướng tốt là tăng tính cố kết giữa các phương thức trong một lớp sẽ đảm bảo sự thực hiện ẩn, tăng khả năng bảo trì.
s(M1, M2) = I1 Ç I2
trong đó:
s(M1, M2): mức độ liên quan giữa phương thức M1 và M2
Ii : tập các biến được sử dụng bởi Mi
Ví dụ: I1 = {a, b, c, d, e} và I2 = {a, b, e} thì s(M1, M2) = {a, b, e}.
Nếu một lớp có nhiều phương thức cùng tác động lên một tập các biến, ta nói lớp đó có tính cố kết cao.
Kết dính (coupling) là sự liên quan gắn bó giữa các thực thể trong hệ thống (đối tượng). Một lớp được gọi là kết dính với một lớp khác nếu nó phụ thuộc vào lớp ấy, ví dụ nó truy cập vào thuộc tính hay kích hoạt phương thức của lớp khác. Các lớp có tính kết dính cao không thể coi là một thành phần độc lập của hệ thống. Khi sửa chữa các lớp này, các thành phần khác của hệ thống cũng có khả năng phải sửa chữa theo. Tính kết dính nhỏ thể hiện một thiết kế tốt, làm tăng tính độc lập giữa các modul, tăng khả năng tái sử dụng.
Giả sử ta có 2 đối tượng X = , Y =
p(x) = MX È IX
p(y) = MY È IY
trong đó Mi là tập các phương thức và Ii là tập các thuộc tính của đối tượng i.
Kết dính là sự kiện MX gọi MY hay MX truy cập IY và ngược lại. Một phương thức của lớp X nếu gọi tới phương thức hay sử dụng thuộc tính của lớp Y thì X có tính kết dính với Y.
Độ phức tạp của một lớp: độ phức tạp của một đoạn mã lệnh tỷ lệ với công sức cần để hiểu, viết ra nó hay sửa chữa đoạn mã lệnh đó. Tuy nhiên việc đo trực tiếp giá trị đó là không thể thực hiện được. Chúng ta dùng một cách đo tương đối bằng cách cộng độ phức tạp của các phương thức trong lớp đó ta được độ phức tạp của lớp. Độ đo này gọi là WMC (Weighted Method per Class). Độ phức tạp của một phương thức có thể đo bằng số dòng mã lệnh (LOC - lines of code) hoặc độ phức tạp cyclomatic. Độ phức tạp cyclomatic dựa vào tổng số các con đường đi độc lập qua đồ thị điều khiển của chương trình. Trường hợp đơn giản, WMC của một lớp chỉ cần tính bằng tổng số các phương thức trong lớp đó, độ phức tạp của mỗi phương thức bằng 1.
Độ phức tạp của = |p(x)| (|p(x)| là lực lượng của p(x) ).
Cây thừa kế : Cây thừa kế là đồ thị có hướng không có chu trình với các lớp là các nút, gốc và lá. Thừa kế là một tính chất quan trọng của lập trình hướng đối tượng. Sử dụng thừa kế rút ngắn thời gian phát triển qua việc sử dụng lại mã. Tuy nhiên sử dụng thừa kế nhiều sẽ gây khó khăn cho việc thiết kế và bảo trì. Hai độ đo tính thừa kế được giới thiệu là độ sâu và độ rộng của cây thừa kế.
Độ đo chiều sâu cây thừa kế (Depth of Inheritance Tree – DIT). Độ sâu thừa kế của một lớp là chiều dài đường đi từ nút của lớp đó đến lớp là gốc của cây thừa kế. Độ sâu này càng lớn thì lớp hậu duệ càng có khả năng có nhiều thuộc tính và phương thức thừa kế, càng khó kiểm soát các hành vi của nó. Độ sâu lớn đồng nghĩa với độ phức tạp thiết kế tăng, nhưng cũng đồng thời tăng tính tái sử dụng.
Độ đo số con của một lớp (Number Of Children – NOC) là số lớp được thừa kế trực tiếp từ lớp đó. Nó biểu hiện tiềm năng ảnh hưởng của một lớp lên toàn hệ thống. Một lớp có nhiều con sẽ cần được kiểm tra kỹ lưỡng vì chất lượng của nó ảnh hưởng đến các con. Độ đo này ảnh hưởng đến việc đánh giá thiết kế, kiểm tra, tái sử dụng.
Thông điệp giữa các lớp: Các đối tượng tương tác qua sự trao đổi các thông điệp. Đối tượng đáp lại thông điệp bằng cách kích hoạt một phương thức có chức năng xử lý thông điệp đó. Như vậy các phương thức là sự đáp lại các thông điệp mà lớp nhận được.
RFC (Responce set For a Class) = tập tất cả các phương thức có thể bị kích hoạt để đáp lại thông điệp mà lớp nhận được.
RFC có thể gồm cả những phương thức bên ngoài lớp vì lớp có thể gọi các phương thức bên ngoài lớp để đáp lại các thông điệp. Tập này là hữu hạn vì số phương thức của mỗi lớp là hữu hạn và số lớp cũng là hữu hạn. Trong pha triển khai hay bảo trì, tập này có thể thay đổi khi các lớp được tạo thêm các chức năng xử lý thông điệp mới.
Tổ hợp các lớp: Thiết kế lớp một quá trình lặp lại các hoạt động: tạo lớp con (tạo lớp mới dựa trên các lớp đã có), phân chia (chia nhỏ một lớp thành các lớp nhỏ hơn), tổ hợp (nhóm các lớp đã có vào trong một lớp mới). Tổ hợp của hai lớp là một lớp bao gồm các thuộc tính của cả hai lớp con hợp lại.
Giả sử X = và Y = là hai lớp, thế thì X+Y được ký hiệu là Z = trong đó p(z) = p(x) È p(y).
Giả sử lớp foo_a có các thuộc tính (phương thức và biến) a, b, c, d và lớp foo_b có các thuộc tính a, l, m, n thì foo_a + foo_b có các thuộc tính là a, b, c, d, l, m, n.
Kết quả của sự tổ hợp là một không gian trạng thái thống nhất cho các phương thức và biến cho hai lớp cũ, loại bỏ các thông điệp giữa hai lớp thành phần trước đây.
2.1.2 Các tính chất của phép đo hướng đối tượng.
Tính phân biệt:
Cho lớp P và hệ đo m, luôn luôn có thể tìm được lớp Q sao cho m(P) m(Q). Tính chất này nghĩa là tất cả mọi lớp không thể có cùng độ đo, nếu không sẽ mất ý nghĩa là một phép đo.
Tính không duy nhất
Có thể tồn tại lớp P và lớp Q sao cho m(P) = m(Q). Điều đó nghĩa là hai lớp khác nhau có thể có chung một độ đo, ví dụ hai lớp có cùng độ phức tạp.
Tính phụ thuộc vào chi tiết thiết kế
Hai lớp P và Q có cùng chức năng không đảm bảo rằng m(P) = m(Q). Chi tiết của việc thiết kế lớp mới ảnh hưởng quyết định đến độ đo của lớp.
Tính đơn điệu
Với hai lớp P và Q, tính chất sau phải được thỏa mãn: m(P) < m(P+Q) và m(Q) < m(P+Q), trong đó P+Q là lớp tổ hợp của hai lớp P và Q. Độ đo của lớp tổ hợp không bé hơn độ đo của hai lớp thành phần.
Tính khác nhau của tương tác
$ P, $ Q, $ R thỏa mãn:
m(P) = m(Q) nhưng m(P+R) m(Q+R).
Tương tác giữa lớp P và lớp R khác với tương tác giữa lớp Q và lớp R dẫn đến độ đo khác nhau của hai lớp tổ hợp P+R và Q+R.
Tương tác làm tăng độ phức tạp
$ P và $ Q thỏa mãn:
m(P) + m(Q) < m(P+Q)
Khi hai lớp được tổ hợp, sự tương tác giữa các lớp có thể làm tăng giá trị độ đo.
2.1.3 Các phép đo trong hệ đo CK
Trong phần này chúng ta trình bày nhóm các phép đo do Chidamber, Kemerer đề xuất gồm có WMC, DIT, NOC, CBO, RFC, LCOM. Để đơn giản, chúng ta bỏ qua chứng minh các độ đo này thỏa mãn 6 tính chất nêu trên. Các kết quả đo thực nghiệm được trình bày trong chương 4.
1. WMC (Weight Method per Class)
Định nghĩa: Cho lớp C1, các phương thức M1, M2,..., Mn được định nghĩa trong lớp đó. Gọi c1, c2, ..., cn là độ phức tạp của các phương thức đó, ta có:
Độ phức tạp của mỗi phương thức có thể được tính bằng số dòng mã lệnh (LOC) hay độ phức tạp cyclomatic. Tuy nhiên hai độ phức tạp này khó xác định ở pha thiết kế vì chưa có phần mã thực thi của phương thức. Để đơn giản quy ước độ phức tạp của mỗi phương thức là 1, thì WMC của lớp là tổng số phương thức có trong lớp đó.
Ý nghĩa: WMC là độ đo đặc trưng cho độ phức tạp của một lớp, bởi vì phương thức là thuộc tính của một lớp và độ phức tạp được đặc trưng bằng lực lượng của tập thuộc tính.
Quan niệm trực giác về WMC:
Số phương thức và độ phức tạp của các phương thức là một chỉ số để tiên đoán về thời gian và công sức để xây dựng và bảo trì lớp đó.
Càng có nhiều phương thức trong một lớp càng có nhiều khả năng gây ảnh hưởng lên các lớp con cháu vì các lớp này được thừa kế các phương thức từ lớp cha.
Lớp có nhiều phương thức thì có nhiều khả năng dùng cho một ứng dụng cụ thể, càng có ít khả năng tái sử dụng.
2. DIT (Depth of Inheritance Tree)
Định nghĩa: Độ sâu cây thừa kế là độ đo DIT của lớp. Trong trường hợp có đa thừa kế, DIT bằng chiều dài nhất đường đi từ nút đến gốc của cây.
Ý nghĩa: DIT của một lớp thể hiện số lớp cha có thể gây ảnh hưởng lên lớp đó.
Quan niệm trực giác về DIT:
Độ sâu thừa kế của một lớp càng lớn, nó càng có nhiều khả năng thừa kế nhiều phương thức, càng khó dự đoán cách xử lý tình huống của nó.
Cây càng sâu thể hiện độ phức tạp thiết kế lớn, bởi vì càng có nhiều phương thức và lớp.
Một lớp ở độ sâu càng lớn, nó càng có nhiều tiềm năng sử dụng lại các phương thức được thừa kế.
3. NOC (Number Of Children)
Định nghĩa: Độ đo NOC của một lớp được tính bằng số con trực tiếp của lớp đó.
Ý nghĩa: NOC thể hiện bao nhiêu lớp sẽ được thừa kế các phương thức của lớp cha.
Quan niệm trực giác về NOC:
Số con của một lớp càng lớn, tính sử dụng lại của lớp đó càng cao.
Số con của một lớp thể hiện tầm ảnh hưởng của lớp đó lên cả hệ thống. Nếu một lớp càng có nhiều con thì các phương thức của lớp đó càng yêu cầu phải được test kỹ lưỡng.
4. CBO (Coupling Between Object)
Định nghĩa: Độ đo CBO của một lớp được tính bằng số lớp có tính kết dính với lớp đó.
Ý nghĩa : Hai lớp được gọi là kết dính nếu phương thức của lớp này gọi tới phương thức hay biến của lớp kia.
Quan niệm trực giác về CBO:
Tính kết dính cao giữa các lớp làm giảm tính modul và giảm khả năng sử dụng lại. Một lớp càng độc lập thì càng có nhiều khả năng được sử dụng lại trong một ứng dụng khác.
Để tăng tính modul và sự bao bọc dữ liệu, tính kết dính giữa các lớp nên được giữ ở mức thấp. Tính kết dính của một lớp cao thì một thay đổi ở lớp đó càng có nhiều khả năng gây ra nhiều thay đổi ở các bộ phận khác trong hệ thống, gây khó khăn cho việc bảo trì.
5. RFC (Responce For a Class)
Định nghĩa: RFC = |RS| trong đó RS là tập trả lời của lớp đó.
Ý nghĩa: Tập trả lời của lớp bao gồm các phương thức có thể bị kích hoạt khi đối tượng nhận được thông điệp. Nó bao gồm cả các phương thức nằm ngoài lớp đó.
RS = M Èall i Ri
trong đó:
Ri = tập các phương thức được gọi bởi phương thức i và
M = tập tất cả các phương thức của lớp đó.
Quan niệm trực giác về RFC:
Nếu có một số lượng lớn phương thức bị kích hoạt để đáp lại một thông điệp, việc test và debug có thể khó khăn và tốn nhiều công sức hơn.
Càng có nhiều phương thức có thể được kích hoạt bởi một lớp, độ phức tạp của lớp đó càng cao.
6. LCOM (Lack of Cohesion in Methods)
Định nghĩa: Giả sử lớp C1 có n phương thức M1, ...., Mn. Gọi {Ij} = tập các biến được sử dụng bởi phương thức Mi. Gọi P = {(Ii, Ij)| Ii ÇIj = Æ} và Q = {(Ii, Ij)| Ii ÇIj Æ}.
LCOM = |P| - |Q|, nếu |P| > |Q|
0, ngược lại
Ý nghĩa: LCOM thể hiện sự tương tự giữa các phương thức trong cùng một lớp. Mức độ tương tự giữa hai phương thức là:
s() = I1ÇI2, trong đó I1 và I2 là các biến do M1 và M2 sử dụng.
LCOM là hiệu số của số cặp lớp có độ tương tự là 0 trừ đi số cặp lớp có độ tương tự khác 0. Càng có nhiều phương thức giống nhau thì lớp đó càng có tính cố kết cao, bởi vì cố kết là mối liên hệ giữa các thành phần trong cùng một lớp.
Quan niệm trực giác về LCOM:
Nếu một lớp có tính cố kết thấp thì lớp đó nên được chia nhỏ thành các lớp con.
Tính cố kết thấp làm tăng độ phức tạp, tăng khả năng xảy ra lỗi trong quá trình phát triển.
LCOM là mức độ thiếu cố kết giữa các phương thức trong một lớp, giá trị càng bé thể hiện một thiết kế lớp càng tốt.
2.1.4 Tổng kết về các phép đo CK:
Mỗi phép đo CK liên quan đến một khía cạnh của cách tiếp cận hướng đối tượng. WMC, DIT và NOC liên quan đến bước đầu tiên của quá trình thiết kế lớp, (xác định các lớp), WMC thể hiện độ phức tạp còn DIT và NOC liên quan đến vị trí của lớp trong sơ đồ thiết kế lớp. WMC va RFC thể hiện tiềm năng đáp lại các thông điệp từ bên ngoài của lớp. LCOM thể hiện tính đóng gói và bao bọc dữ liệu, tính cố kết giữa các thành phần trong lớp. WMC, RFC và LCOM liên quan đến bước thứ hai của quá trình thiết kế lớp (xác định ý nghĩa của các lớp). RFC và CBO là độ đo thể hiện mức độ trao đổi thông tin giữa các lớp qua số lớp kết dính và số phương thức được gọi tới, chúng liên quan đến bước thứ ba của quá trình thiết kế lớp.
Độ đo
Xác định các lớp
Xác định ý nghĩa các lớp
Mối quan hệ giữa các lớp
WMC
Ö
Ö
DIT
Ö
NOC
Ö
RFC
Ö
Ö
CBO
Ö
LCOM
Ö
Bảng 2.1: Vai trò của các độ đo CK trong các giai đoạn thiết kế lớp
Sử dụng các độ đo CK trong quá trình phát triển phần mềm hướng đối tượng giúp cho nhà quản lý kiểm soát và có thể có các cải tiến. Sử dụng WMC, DIT và NOC giúp nhà quản lý xác định xem liệu có nhiều lớp cha quá hay liệu các lớp cha có nhiều phương thức quá hay không (các lớp có nhiều phương thức thì thích hợp cho ứng dụng cụ thể, tính sử dụng lại thấp). Sử dụng RFC và CBO kiểm soát sự trao đổi thông điệp giữa các thành phần trong hệ thống. Các độ đo này sẽ thay đổi theo quá trình phát triển phần mềm, khi bổ xung thêm lớp mới, khi bổ xung thêm thông điệp giữa các lớp. Kiểm soát các độ đo này trong vòng đời phần mềm giúp nhà quản lý kiểm soát được tiến triển của hệ thống hướng đối tượng.
2.1.5 Một ví dụ về các phép đo CK
Để minh họa cho các phép đo nêu ở trên, ta đưa ra một ví dụ minh họa sử dụng các phép đo đó. Tập lồi (convex set) có 2 con là polygon và ellipse. Polygon có một phương thức tính chu vi perimeter. Các con của nó đều thừa kế phương thức này.
Hình 2.1: Ví dụ minh họa về các phép đo CK
Weighted Method per Class (WMC)
Để đơn giản, quy ước WMC được tính bằng số phương thức của mỗi lớp
WMC (POLYGON) = 2
Responce for a Class (RFC)
Ta đếm số phương thức có thể bị kích hoạt đáp lại một thông điệp. Với lớp Triangle có phương thức area có thể kích hoạt 3 phương thức của các lớp con nên
RFC (Triangle) = 3
Coupling Between Object (CBO)
Lớp Polygon không phụ thuộc vào lớp khác (không kể lớp thừa kế) nên
CBO (Polygon) = 0
Depth of Inheritance Tree (DIT)
DIT (Polygon) = 1
DIT (Triangle) = 2
Number of Children (NOC)
NOC (Polygon) = 2
Một số kết quả thực hiện các phép đo CK được trình bày trong chương 4.
2.2 Mô hình đánh giá chất lượng phần mềm hướng đối tượng.
Mô hình đánh giá chất chất lượng sản phẩm phần mềm hướng đối tượng dựa trên mô hình ISO 9126 và FCM. Các mô hình ISO 9126 và FCM chưa hoàn chỉnh do chưa chỉ ra cụ thể các nhân tố nào ảnh hưởng đến thuộc tính chất lượng, ngoài ra cũng chưa biết với mỗi nhân tố dùng các tiêu chuẩn và độ đo nào. Một số mô hình được phát triển từ ISO 9126 và FCM cho phần mềm hướng đối tượng như REBOOT, QMOOD. Mô hình REBOOT phát triển từ FCM, đề xuất hai nhân tố cần đo là chất lượng và khả năng tái sử dụng. Mô hình QMOOD (Quality Model for Object Oriented Design) xác định công thức liên hệ giữa các thuộc tính chất lượng bên ngoài với các thuộc tính trong như cố kết, kết dính, thừa kế. Điểm khác là QMOOD tiến hành ở pha thiết kế, còn REBOOT lại thực hiện khi đã có mã lệnh.
Mô hình REBOOT (ReusE Based on Object Oriented Technology)
REBOOT (mô hình sử dụng lại cho phần mềm hướng đối tượng) là kết quả nghiên cứu của dự án Espirit2 [20]. Nhóm nghiên cứu đưa ra mô hình chung để đánh giá khả năng sử dụng lại và chất lượng dựa trên mô hình FCM. Trong quá trình thiết lập mô hình, để xác định xem các độ đo (thuộc tính trong) nào ảnh hưởng lên chất lượng và tính sử dụng lại (thuộc tính ngoài), họ tiến hành thăm dò ý kiến của các chuyên gia phần mềm tại năm nước châu Âu tham gia vào dự án Espirit2. Các chuyên gia cho ý kiến về tầm quan trọng của các thuộc tính, nhân tố đối với chất lượng phần mềm. Sau đó nhóm REBOOT đã xây dựng lên mô hình đánh giá tính sử dụng lại và mô hình đánh giá chất lượng.
Hình 2.2: Mô hình REBOOT
Hình 2.2 thể hiện các thuộc tính được đánh giá trong mô hình QMOOD. Mô hình REBOOT đánh giá hai thuộc tính là tính sử dụng lại và chất lượng thành phần. Thuộc tính sử dụng lại được chia thành bốn nhân tố, thuộc tính chất lượng được chia thành hai nhân tố, các nhân tố này lại được xác định qua các tiêu chuẩn, mức dưới cùng để xác định các tiêu chuẩn là các độ đo, các độ đo này do người sử dụng lựa chọn. Mô hình REBOOT sử dụng 35 độ đo trong đó có 15 độ đo hướng đối tượng.
Các thông số được chuẩn hóa về giá trị nằm giữa 0 và 1. Nếu giá trị nằm gần 0 thì thuộc tính đó có vấn đề, nếu càng gần 1 càng tốt. Các thuộc tính mức cao được tính qua các thuộc tính mức thấp, mức cuối cùng là các độ đo. Tổng các hệ số của một công thức biểu diễn thuộc tính mức cao qua các thuộc tính ở mức thấp hơn bằng 1. Vì thế ta chỉ cần tiến hành chuẩn hóa các thuộc tính nằm ở mức thấp nhất là các độ đo về giá trị nằm giữa 0 và 1. Trong mô hình FCM có ba dạng hàm để tiến hành chuẩn hóa:
Hàm tuyến tính
Hàm giới hạn trên
Hàm giá trị tối ưu
f(a) = 1 ; f(b) = 0
f(a) = 0.99 ; f(a+b) = 0.5
f(a)=1 ; f(a+b) = f(a-b) = 0.5
Bảng 2.2: Các dạng hàm chuẩn hóa độ đo
Với mỗi độ đo muốn chuẩn hóa, ta cần xác định dạng chuẩn hóa (thuộc một trong ba loại trên). Ví dụ như độ đo WMC có thể dùng hàm chuẩn hóa là dạng thứ hai (hàm giới hạn trên) vì độ phức tạp của lớp càng thấp càng tốt. Ngoài ra ta cũng phải xác định các ngưỡng a và b cho hàm chuẩn hóa. Chẳng hạn với WMC thì ta có thể đặt ngưỡng a = 3, b = 20. Các tham số x và y được xác định bằng cách thay f(a) và f(b) vào f(m).
Mô hình QMOOD (Quality Model for Object Oriented Design).
QMOOD (mô hình chất lượng đánh giá thiết kế hướng đối tượng) [18] là mô hình để đánh giá các thuộc tính ngoài như: khả năng sử dụng lại, chức năng, tính hiệu quả của sơ đồ thiết kế hướng đối tượng dựa trên các thuộc tính trong (độ đo) trên các thành phần. Trong mô hình QMOOD, các độ đo được xác định dựa trên các thành phần của sơ đồ thiết kế hướng đối tượng như là các lớp, mối liên hệ giữa các lớp. Dựa trên độ đo của từng lớp, chúng ta xác định các độ đo cho sơ đồ thiết kế tổng thể hệ thống. Có 12 tiêu chuẩn thể hiện tính chất hướng đối tượng ví dụ như trừu tượng hóa (abstraction), bao bọc dữ liệu (encapsulation), kết dính (coupling), cố kết (cohesion)... Mô hình QMOOD thể hiện mối liên hệ giữa các nhân tố chất lượng như: sử dụng lại, chức năng, ... qua các tiêu chuẩn thể hiện tính chất hướng đối tượng. Các mối liên hệ và hệ số giữa chúng được xác định dựa trên ý kiến các chuyên gia về tầm ảnh hưởng của các thuộc tính trong lên các thuộc tính ngoài. Mô hình QMOOD đã được dùng để đánh giá một số hệ thống thương mại được phát triển hướng đối tượng [14].
QMOOD sử dụng 12 tiêu chuẩn thể hiện tính hướng đối tượng (xem bảng 2.3) Mỗi thuộc tính hướng đối tượng được cụ thể hóa qua một độ đo, các độ đo này liên quan đến pha thiết kế.
Tiêu chuẩn
Độ đo
Kích thước thiết kế
Kích thước thiết kế trong các lớp (DSC)
Các mức phân cấp
Số các mức phân cấp (NOH)
Trừu tượng
Trung bình số các lớp cha (ANA)
Đóng gói
Truy cập dữ liệu (DAM)
Tính độc lập
Tính độc lập chức năng (MFM)
Kết dính
Kết dính trực tiếp giữa các lớp (DCC)
Cố kết
Cố kết giữa các phương thức trong lớp (CAM)
Tổ hợp
Sự kết hợp giữa các lớp (MOA)
Thừa kế
Trừu tượng chức năng (MFA)
Đa hình
Số phương thức đa hình (NOP)
Thông điệp
Kích thước giao diện lớp (CIS)
Độ phức tạp
Số các phương thức (NOM)
Bảng 2.3: Các tiêu chuẩn và độ đo trong mô hình QMOOD.
Các hệ số thể hiện mối liên hệ giữa các thuộc tính trong qua các thuộc tính ngoài nằm giữa khoảng –1 và 1. Hệ số dương thể hiện mối liên hệ ảnh hưởng tích cực, ví dụ tính cố kết tăng thì tăng khả năng sử dụng lại, ngược lại hệ số âm thể hiện ảnh hưởng tiêu cực. Ví dụ như:
Khả năng tái sử dụng =
0.5 * Kích thước thiết kế - 0.25 * Kết dính + 0.25 * Cố kết + 0.5 * Thông điệp.
Khả năng tái sử dụng
Tính mềm dẻo
Khả năng hiểu
Chức năng
Khả năng mở rộng
Hiệu quả
Kích thước thiết kế
0.5
-0.33
0.22
Các mức phân cấp
0.22
Trừu tượng
-0.33
0.50
0.20
Đóng gói
0.25
0.33
0.20
Tính độc lập
Kết dính
-0.25
-0.25
-0.33
-0.50
Cố kết
0.25
0.33
0.12
Tổ hợp
0.50
0.20
Thừa kế
0.50
0.20
Đa hình
0.50
-0.33
0.22
0.50
0.20
Thông điệp
0.50
0.22
Độ phức tạp
-0.33
Tổng
+1.0
+1.0
-1.0
+1.0
+1.0
+1.0
Bảng 2.4: Mối liên hệ giữa các thuộc tính ngoài và thuộc tính trong
của mô hình QMOOD
Hình 2.3: Mô hình QMOOD.
Bảng 2.4 liệt kê các hệ số liên hệ giữa các độ đo dùng trong mô hình QMOOD. Mô hình QMOOD dựa trên mô hình ISO 9126 nên QMOOD cũng chia thuộc tính chất lượng thành 6 nhân tố là khả năng tái sử dụng, tính mềm dẻo, khả năng hiểu, chức năng, khả năng mở rộng, hiệu quả (hình 2.3).
Kết luận chương 2:
Trong chương này chúng ta đã tìm hiểu các phép đo CK cho phần mềm hướng đối tượng, các phép đo này thể hiện tính hướng đối tượng của sản phẩm, số lượng ít (6 độ đo) và dễ thu thập nên có nhiều triển vọng được sử dụng để đánh giá phần mềm.
Có nhiều mô hình được đề xuất để đánh giá phần mềm hướng đối tượng. Trong số đó nổi bật là các mô hình REBOOT, QMOOD. Muốn chứng minh được tính đúng đắn để có thể đem áp dụng rộng rãi những mô hình đó trong quá trình phát triển phần mềm, chúng cần được nghiên cứu kỹ hơn về mặt lý thuyết và cần nhiều kết quả đo thực nghiệm sử dụng các mô hình để kiểm định chúng.
Xuất phát từ nguyên nhân có nhiều phép đo và mô hình đánh giá phần mềm hướng đối tượng được đề xuất, chúng tôi đề xuất một quy trình đánh giá phần mềm hướng đối tượng có tính mở để người sử dụng có thể tạo dựng mô hình đánh giá phần mềm phù hợp với môi trường và yêu cầu cụ thể. Vấn đề về quy trình đánh giá này và xây dựng công cụ trợ giúp đo phần mềm hướng đối tượng được trình bày trong chương tiếp theo.
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ VÀ XÂY DỰNG PHẦN MỀM TRỢ GIÚP ĐO PHẦN MỀM
HƯỚNG ĐỐI TƯỢNG
3.1 Phân tích các yêu cầu
Các mô hình đánh giá chất lượng dựa trên mô hình ISO 9126 và FCM có nhược điểm là khó chứng minh về mặt lý thuyết, các thuộc tính được sử dụng trong các mô hình không thống nhất nhau. Ngoài ra việc sử dụng các mô hình trong các môi trường cụ thể cũng cần có những sử đổi cho phù hợp.
Ngày nay có hàng trăm công cụ đo phần mềm nói chung và đo phần mềm hướng đối tượng nói riêng trên thế giới. Các nhóm nghiên cứu khi đưa ra các phép đo hướng đối tượng của mình đều xây dựng các công cụ để thu thập các độ đo tương ứng. Có thể kể ra một số công cụ giúp cho quá trình thu thập các độ đo hướng đối tượng sau đây.
Công cụ
Chức năng
Địa chỉ
REBOOT [20]
Thu thập các độ đo và tính toán trên mô hình REBOOT
ftp://ftp.idt.unit.no/pub/reboot/
QMOOD++ [18]
Thu thập các độ đo (30 độ đo) và tính toán trên mô hình QMOOD
JBOOMT [14]
Thu thập các độ đo từ mã nguồn của chương trình (C++). Tính toán trên các mô hình đánh giá chất lượng phần mềm hướng đối tượng.
www.pku.edu.cn/research/JBOOMT
Understanding [21]
Phân tích mã nguồn của các phần mềm hướng đối tượng (C++, Java, Ada, Small talk ,...) và tính toán các độ đo (200 độ đo).
www.scitools.com
Canata [17]
Test các phần mềm viết bằng C++ và cung cấp các độ đo qua quá trình test đó (số lỗi, sự bao phủ các nhánh của chương trình )
Bảng 3.1: Một số công cụ đo phần mềm hướng đối tượng
Nhận xét:
Như vậy có rất nhiều công cụ để chúng ta lựa chọn khi tiến hành thu thập các độ đo hướng đối tượng. Mặt khác chúng ta nhận thấy rằng các mô hình phân cấp về chất lượng đều có điểm chung là chúng được phân thành 3 hoặc 4 mức, đều dựa trên các mô hình cơ bản như là ISO 9126 hay là FCM. Như vậy, cần thiết phải có một công cụ đánh giá chất lượng phần mềm hỗ trợ nhiều mô hình khác nhau, cung cấp một giao diện mềm dẻo cho phép người sử dụng xây dựng mô hình theo ý muốn, ngoài ra cũng nên tận dụng những công cụ đo phần mềm hướng đối tượng đã có sẵn.
Vì vậy chúng tôi đề xuất quy trình đánh giá phần mềm hướng đối tượng có tính mở để người sử dụng có thể thay đổi và sửa chữa mô hình cho phù hợp. Các mô hình được lưu trữ trong thư viện để người sử dụng lựa chọn và cải tiến hoặc có thể đưa thêm các mô hình mới vào.
Hình 3.1: Quy trình đo phần mềm hướng đối tượng
Các bước đo phần mềm hướng đối tượng:
Chọn lựa mô hình: Các mô hình như REBOOT, QMOOD được đưa sẵn vào thư viện mô hình. Người sử dụng có thể lấy mô hình có sẵn trong thư viện mô hình hoặc tạo mới các mô hình hoặc sửa đổi các mô hình đã có sẵn cho phù hợp.
Thu thập dữ liệu: Dữ liệu được thu thập nhờ các công cụ. Có rất nhiều công cụ hỗ trợ cho quá trình thu thập dữ liệu. Chẳng hạn như bộ công cụ Rational Rose [19] trợ giúp cho quá trình thu thập thông tin ở pha thiết kế hướng đối tượng. Một số bộ công cụ khác giúp phân tích mã nguồn của chương trình và thu thập các độ đo như: Understanding C++, Understanding Java [21]. Sau khi thu thập được dữ liệu, các độ đo sẽ được tính toán và đưa vào cơ sở dữ liệu. Trường hợp đơn giản nhất, người sử dụng có thể trực tiếp nhập các kết quả đo vào trong cơ sở dữ liệu.
Tính toán trên mô hình: Các độ đo được chuẩn hóa theo một trong ba
Các file đính kèm theo tài liệu này:
- P0081.doc