Để thực hiện các phép biến đổi trên mô hình chúng ta cần phân tích mô hình và xây dựng các hàm đánh giá. Các hàm đánh giá nhận đầu vào là các tham số đặc tả mô hình, phân tích ảnh hƣởng của các tham số đến các mục tiêu đánh giá nhƣ hiệu năng, bộ nhớ, tiêu thụ điện năng. Sau khi xây dựng, các hàm đánh giá này sẽ đƣợc sử dụng làm tiêu chí lựa chọn trong các bƣớc chuyển đổi cũng nhƣ sử dụng để đánh giá mô hình ban đầu và mô hình tối ƣu. Trong nghiên cứu của Phạm Văn Hƣởng và Nguyễn Ngọc Bình về “Đánh giá hiệu năng phần mềm
nhúng hướng đối tượng từ mô hình Class dựa trên DSL và T4” [17] đã xây dựng
hàm đánh giá hiệu năng phần mềm dựa trên biểu đồ lớp. Để làm cơ sở cho các phép biến đổi và tối ƣu trên mô hình, chúng tôi sẽ cải tiến các công thức đánh giá trong [17] để xây dựng hàm đánh giá hiệu năng và mức chiếm dụng bộ nhớ dựa trên mô hình dữ liệu trừu tƣợng tƣơng tự nhƣ biểu đồ lớp nhƣng không xét tính kế thừa và phạm vi truy xuất của các thành phần [17].
3.3.1 Hàm đánh giá hiệu năng
Hàm đánh giá hiệu năng đƣợc xây dựng dựa trên phân tích hoạt động của một chƣơng trình hƣớng đối tƣợng. Khi chƣơng trình đƣợc yêu cầu thực thi, đầu tiên mã nguồn các lớp sẽ đƣợc nạp vào bộ nhớ, các biến tĩnh và các phƣơng thức tĩnh cũng đƣợc cấp phát bộ nhớ trong thời điểm nạp. Do đó các thành phần tĩnh chỉ mất một lần cấp phát tĩnh và một lần truy xuất bộ nhớ để sử dụng sau khi nạp. Khi sử dụng các biến đối tƣợng và các phƣơng thức đối tƣợng cần tạo và cấp phát bộ nhớ cho đối tƣợng trƣớc. Khi tạo đối tƣợng, cần thực hiện hai bƣớc là truy xuất bộ nhớ để thực hiện câu lệnh tạo đối tƣợng và cấp phát động bộ nhớ cho các biến và phƣơng thức đối tƣợng. Do đó cần một thao tác cấp phát động và hai thao
tác truy xuất bộ nhớ để có thể sử dụng các thành phần thuộc đối tƣợng. Khi thực thi một phƣơng thức tĩnh, cần một thao tác truy xuất bộ nhớ để trỏ đến tập lệnh của phƣơng thức, một lần cấp phát bộ nhớ cho các tham số và sau khi thực hiện cần một lần truy xuất bộ nhớ để tham chiếu đến dữ liệu trả về. Đồng thời, để gọi một phƣơng thức tĩnh cần truy xuất mã nguồn của lớp đang chứa trong bộ nhớ nên quá trình thực thi một phƣơng thức tĩnh cần ít nhất một thao tác cấp phát và ba thao tác truy xuất bộ nhớ. Khi thực thi một phƣơng thức đối tƣợng, cần phải tạo đối tƣợng trƣớc rồi mới gọi thông qua biến tham chiếu đối tƣợng nên cần một thao tác cấp phát động và hai thao tác truy xuất bộ nhớ. Nhƣ vậy toàn bộ quá trình thực hiện của phƣơng thức đối tƣợng cần ít nhất hai thao tác cấp phát bộ nhớ và năm thao tác truy xuất bộ nhớ.
Từ biểu đồ lớp chúng tôi lấy các tham số nhƣ trong Bảng 3.2. Từ các tham số này, chúng tôi đã xây dựng các độ đo từ S1 đến S6 nhƣ mô tả trong Bảng 3.1.
và xây dựng hàm đánh giá hiệu năng dựa trên các độ đo này. Tuy nhiên, để cải tiến hàm đánh giá hiệu năng sử dụng trong biến đổi mô hình, chúng tôi bổ sung thêm tần số sử dụng n của các tham số. Theo đó, các công thức tính các độ đo S1
đến S6 đƣợc cải tiến nhƣ trong các công thức (3.1) đến (3.6). Hàm đánh giá hiệu năng vẫn đƣợc tính theo [17] và đƣợc trình bày trong công thức (3.7). Theo công thức (3.7), hàm hiệu năng có giá trị càng nhỏ càng tốt.
Bảng 3-1. Các độ đo ảnh hƣởng đến hiệu năng
Tham số Ký hiệu Mô tả
Kích thƣớc các biến tĩnh S1 Tổng kích thƣớc các thuộc tính tĩnh trong biểu đồ lớp Kích thƣớc các phƣơng thức tĩnh S2 Tổng kích thƣớc của các method tĩnh trong biểu đồ Kích thƣớc thực thi các phƣơng thức tĩnh S3 Tổng kích thƣớc tham số và kiểu trả về khi thực thi các method static Kích thƣớc các biến đối
tƣợng
S4 Tổng kích thƣớc các thuộc tính nonstatic của đối tƣợng
Kích thƣớc các phƣơng thức đối tƣợng
S5 Tổng kích thƣớc các method nonstatic của đối tƣợng
Kích thƣớc thực thi các phƣơng thức đối tƣợng
S6 Tổng kích thƣớc tham số và kiểu trả về khi thực thi method nonstatic của đối tƣợng
Bảng 3-2. Các tham số sử dụng để đánh giá hiệu năng
Tham số Ký hiệu Mô tả
Các phƣơng thức tĩnh S Là phƣơng thức tĩnh, đƣợc cấp phát bộ nhớ khi nạp chƣơng trình Các phƣơng thức đối tƣợng O Là phƣơng thức non-static, đƣợc cấp phát bộ nhớ động
Các biến tĩnh Xj Là thuộc tính tĩnh, đƣợc cấp phát bộ nhớ khi nạp chƣơng trình. Xj là thuộc tính tĩnh thứ j
trong một lớp
Các biến đối tƣợng Yj Là thuộc tính của đối tƣợng, đƣợc cấp phát bộ nhớ khi đối tƣợng đƣợc tạo. Yj là biến
instance thứ j của lớp Tham số phƣơng
thức
Pk Tham số thứ k của một method Tổng các lớp A Số class trong biểu đồ lớp Tổng các phƣơng
thức tĩnh
Bi Số các phƣơng thức tĩnh trong class i
B Tổng số phƣơng thức tĩnh trong biểu đồ Tổng các thuộc tính
tĩnh
Ci Số các thuộc tính tĩnh trong class i
C Tổng số thuộc tính tĩnh trong biểu đồ Tổng các phƣơng
thức đối tƣợng
Di Số các phƣơng thức non-static trong class i
D Tổng số phƣơng thức non-static trong biểu đồ Tổng các thuộc tính
đối tƣợng
Ei Số các thuộc tính non-static trong class i
E Tổng số các thuộc tính non-static trong biểu đồ
Tổng các tham số Fj Số các tham số trong phƣơng thức j
(3.1)
(3.2)