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)
(3.4)
(3.5)
(3.6) (3.7)
3.3.2 Hàm đánh giá bộ nhớ
Trong quá trình thực thi một chƣơng trình hƣớng đối tƣợng, các thành phần thuộc lớp sẽ đƣợc cấp phát bộ nhớ và tồn tại đến khi kết thúc chƣơng trình; các thành phần thuộc đối tƣợng bắt đầu đƣợc cấp phát bộ nhớ khi đối tƣợng đƣợc tạo và tồn tại đến khi hủy đối tƣợng; các tham số và các biến cục bộ bên trong phƣơng thức tĩnh hoặc động đƣợc cấp phát bộ nhớ khi phƣơng thức đƣợc gọi và bị thu hồi bộ nhớ khi phƣơng thức kết thúc. Theo đó, hàm đánh giá mức chiếm dụng bộ nhớ có thể tính theo công thức (3.8). Ở đây, công thức (3.8) không sử dụng để tính dung lƣợng bộ nhớ chiếm dụng mà chỉ đƣợc sử dụng để đánh giá xem mô hình nào chiếm dụng bộ nhớ nhiều hơn. Theo công thức (3.8), hàm đánh giá bộ nhớ có giá trị càng nhỏ càng tốt.
(3.8)
3.4 Định nghĩa DSL, xây dựng framework và tạo mẫu T43.4.1 Định nghĩa DSL và xây dựng framework 3.4.1 Định nghĩa DSL và xây dựng framework
Để triển khai phƣơng pháp tối ƣu dựa trên biến đổi mô hình tự động, chúng ta cần xây dựng mô hình dữ liệu hệ thống. Mô hình này 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. Theo đó, mô hình bao gồm một tập các cấu trúc và quan hệ giữa các cấu trúc. Mỗi cấu trúc bao gồm một tập các thành phần dữ liệu và tập các thao tác. Mỗi thành phần dữ liệu đƣợc đặc tả bao gồm tên, kiểu dữ liệu, loại tĩnh hay động và tần số truy xuất đƣợc ƣớc lƣợng. Đồng thời, mỗi thành phần dữ liệu cũng có thêm đặc tả về miền giá trị. Mỗi thao tác đƣợc đặc tả gồm tên, kiểu dữ liệu trả về, loại tĩnh hay động và tần số thực hiện cũng đƣợc ƣớc lƣợng. Để xây dựng DSL đặc tả dữ liệu, chúng
ta định nghĩa các lớp lôgic và các lớp ký hiệu nhƣ trong Bảng 3.3. Sau đó xây dựng siêu mô hình.
Bảng 3-1. Các lớp ngữ nghĩa và trực quan chính trong siêu mô hình
Lớp ngữ nghĩa Mô tả Lớp trực quan tƣơng
ứng
Comment Lớp biểu diễn chú thích CommentBoxShape
ModelClass Lớp biểu diễn một cấu trúc ClassShape ModelAttribute Lớp biểu diễn một thành phần
dữ liệu
Không có ModelOperation Lớp biểu diễn một hàm Không có ModelMultiAssociati
on
Lớp biểu diễn một liên kết giữa hai cấu trúc
AssociationConnector
3.4.2 Tạo mẫu T4 để sinh tham số tự động từ mô hình
Trong phần này chúng tôi sẽ định nghĩa các mẫu theo chuẩn công nghệ T4 và sử dụng để trích xuất các tham số từ biểu đồ lớp. T4 đọc tệp mô hình thiết kế thực tế và tệp XML định nghĩa DSL để từ các ký hiệu hình học trong mô hình thực tế sẽ chuyển thành các thành phần lôgic rồi phân tích và sinh mã phù hợp theo các template, thực hiện theo các bƣớc sau:
- Thiết kế biểu đồ lớp theo DSL đã đƣợc xây dựng ở phần trƣớc - Cập nhật các tham số của biểu đồ đã đƣợc thiết kế
- Thêm tập tin có phần mở rộng .tt vào dự án
Định nghĩa các mẫu theo chuẩn công nghệ T4 và sử dụng để trích xuất các tham số về Name, Frequence từ biểu đồ.
Hình 3-11. Cập nhật các tham số thành phần của biểu đồ
Hình 3-12. Một mẫu đƣợc xây dựng theo T4 để sinh tham số Name và Frequence từ biểu đồ lớp
Tập tin đầu ra có kiểu là .txt đã trích xuất các tham số từ biểu đồ.
Hình 3-13. Tập tin đầu ra của T4 trích xuất các tham số từ biểu đồ
3.5 Xây dựng chƣơng trình tối ƣu dựa trên biến đổi mô hình
Để thực hiện phép biến đổi mô hình tự động nhằm tối ƣu hóa, trong phần này chúng tôi tập trung xây dựng ứng dụng tối ƣu mức mô hình cài đặt một số phép biến đổi. Trong mô hình dữ liệu, các thành phần dữ liệu và các hàm có thêm thuộc tính tần số truy xuất hoặc thực hiện. Tần số này sẽ đƣợc ngƣời thiết kế ƣớc lƣợng. Mô hình dữ liệu đƣợc sử dụng làm đầu vào cho chƣơng trình tối ƣu để thực hiện các phép biến đổi. Trong chƣơng trình tối ƣu, chúng tôi cài đặt phép biến đổi phân chia cấu trúc dựa trên thuật toán phân cụm K-mean với số phân cụm tùy chọn. Số phân cụm chính là số cấu trúc đƣợc phân chia từ cấu trúc ban đầu. Chƣơng trình tối ƣu phân tích và chuyển từ mô hình trực quan sang biểu diễn toán học của mô hình (dạng tập hợp) dựa trên T4. Sau đó thực hiện phép biến đổi để đạt đƣợc mô hình tối ƣu dạng tập hợp. Từ mô hình tối ƣu dạng tập hợp, có thể sinh ngƣợc lại mô hình trực quan hoặc sinh mã.
Hình 3-14. Chƣơng trình tối ƣu
Chúng tôi tiến hành cài đặt hàm đánh giá hiệu năng và hàm đánh giá bộ nhớ ở trên vào chƣơng trình tối ƣu để đánh giá hiệu năng và bộ nhớ chiếm dụng, từ đó đƣa ra cấu trúc có hiệu năng tốt hơn hoặc bộ nhớ chiếm dụng tốt hơn. Ứng dụng tối ƣu sẽ nhận đầu vào là thông tin đặc tả mô hình và bộ tham số tƣơng ứng với mô hình đã đƣợc trích xuất tự động từ framework DSL và T4, ở đây là tên và tần suất truy suất các thành phần dữ liệu. Sau đó chƣơng trình tối ƣu thực hiện các phép biến đổi và tính toán hiệu năng và bộ nhớ chiếm dụng cho mô hình ban đầu và mô hình tối ƣu theo công thức đã cài đặt nêu ở trên, tiến hành so sánh để lựa chọn mô hình tốt hơn. Hình 3-14, 3-15 là giao diện của chƣơng trình tối ƣu.
Hình 3-16. Biểu đồ so sánh tối ƣu hiệu năng, bộ nhớ chiếm dụng của biểu đồ lớp
Kết quả từ biểu đồ so sánh của ứng dụng tối ƣu chúng ta sẽ lựa chọn đƣợc cấu trúc có hiệu năng tốt hơn hoặc bộ nhớ chiếm dụng tốt hơn. Hình 3-16 là giao diện biểu đồ so sánh của chƣơng trình tối ƣu.
3.5.1 Chuyển đổi mô hình để tối ƣu hiệu năng
Để thực hiện tối ƣu hiệu năng dựa trên chuyển đổi mô hình, chúng ta có thể cài đặt các phép chuyển đổi đó là thu gọn kiểu dữ liệu, chuyển các tham số thành các thành phần dữ liệu và chuyển các thành phần dữ liệu cũng nhƣ các phƣơng thức động thành tĩnh. Trong phép chuyển đổi thứ nhất, chƣơng trình sẽ căn cứ vào miền giá trị của các thành viên dữ liệu để chuyển về kiểu nhỏ nhất có thể. Hai phép chuyển đổi sau đƣợc thực hiện theo ràng buộc về tần số sử dụng. Chỉ các phƣơng thức nào có tần số sử dụng lớn hoặc bằng hơn tần số ngƣỡng mới đƣợc thực hiện phép chuyển đổi thứ hai. Chỉ các thành viên dữ liệu và phƣơng thức có tần số lớn hơn hoặc bằng tần số ngƣỡng mới đƣợc thực hiện phép chuyển đổi thứ ba.
3.5.2 Chuyển đổi mô hình để tối ƣu bộ nhớ chiếm dụng
Để thực hiện tối ƣu bộ nhớ chiếm dụng dựa trên chuyển đổi mô hình, chúng ta có thể cài đặt ba phép chuyển đổi là thu gọn kiểu dữ liệu, phân chia và gộp cấu trúc. Phép chuyển đổi đầu tiên cũng đƣợc thực hiện nhƣ trong phần tối ƣu hiệu năng. Hai phép biến đổi sau đƣợc thực hiện dựa trên tần số sử dụng. Trong mô hình dữ liệu, các thành phần dữ liệu và các hàm có thêm thuộc tính tần số truy
xuất hoặc thực hiện. Tần số này sẽ đƣợc ngƣời thiết kế ƣớc lƣợng. Mô hình dữ liệu đƣợc sử dụng làm đầu vào cho chƣơng trình tối ƣu để thực hiện các phép biến đổi. Trong chƣơng trình tối ƣu, chúng tôi cài đặt phép biến đổi phân chia cấu trúc dựa trên thuật toán phân cụm K-mean với số phân cụm tùy chọn. Số phân cụm chính là số cấu trúc đƣợc phân chia từ cấu trúc ban đầu. Chƣơng trình tối ƣu phân tích và chuyển từ mô hình trực quan sang biểu diễn toán học của mô hình (dạng tập hợp) dựa trên T4. Sau đó thực hiện phép biến đổi để đạt đƣợc mô hình tối ƣu dạng tập hợp. Từ mô hình tối ƣu dạng tập hợp, có thể sinh ngƣợc lại mô hình trực quan hoặc sinh mã.
Tổng kết chƣơng
Chương này chúng tôi đã phát triển phương pháp tối ưu phần mềm nhúng dựa trên biến đổi mô hình và xây dựng chương trình tối ưu cũng như công cụ hỗ trợ. Ngoài ra chúng tôi đã triển khai cách tiếp cận mới để tối ưu phần mềm nhúng trong giai đoạn thiết kế theo chuyển đổi mô hình dựa trên DSL và T4. Chúng tôi bổ sung tham số vào hàm đánh giá hiệu năng từ mô hình phần mềm, xây dựng chương trình cài đặt hàm đánh giá hiệu năng và bộ nhớ chiếm dụng. Từ việc nghiên cứu các phép chuyển đổi, chúng tôi đưa ra một số phương pháp tối ưu kết hợp giữa các phép biến đổi.
4 CHƢƠNG 4 THỰC NGHIỆM
4.1 Mô tả và mô hình thực nghiệm
Trong Chƣơng 3, chúng tôi đã xây dựng một khung làm việc (framework) DSL để thiết kế, sinh tham số đặc tả tự động từ biểu đồ lớp và xây dựng chƣơng trình cài đặt một số phép chuyển đổi mô hình để tối ƣu. Để đánh giá khung làm việc DSL, chƣơng trình và phƣơng pháp tối ƣu, chúng tôi tiến hành thực nghiệm trên các chƣơng trình nhƣ Tháp Hà Nội, 8 Quân Hậu, Sắp Xếp Nhanh, Vẽ đồ thị, Mã đi tuần, Game Snake, chi tiết thực nghiệm và kết quả đƣợc trình bày chi tiết ở phần sau.
Đầu tiên, chúng tôi sử dụng framework DSL và T4 xây dựng để thiết kế mô hình ban đầu. Từ mô hình ban đầu, thông tin đặc tả và các tham số đƣợc lấy tự động theo các mẫu T4. Các thông tin và tham số này đƣợc sử dụng làm đầu vào cho chƣơng trình tối ƣu. Trong chƣơng trình tối ƣu, chúng ta thực hiện các phép biến đổi phân chia cấu trúc và chuyển các thành phần động thành tĩnh để tối ƣu hiệu năng, bộ nhớ chiếm dụng và thu đƣợc mô hình tối ƣu. Chƣơng trình tối ƣu cũng tính toán và vẽ biểu đồ so sánh giá trị của các hàm tối ƣu trên mô hình ban đầu và mô hình tối ƣu để đánh giá. Cuối cùng để kiểm chứng kết quả tối ƣu theo các hàm đánh giá và kết quả thực tế, chúng tôi sẽ cài đặt các chƣơng trình thử nghiệm theo mô hình ban đầu và mô hình tối ƣu. Các chƣơng trình thử nghiệm thực tế này cùng thuật toán và chỉ khác nhau về cấu trúc. Thực thi các chƣơng trình thử nghiệm trên cùng một môi trƣờng thực tế 20 lần, tính thời gian thực thi trung bình để đánh giá hiệu năng thực tế của chƣơng trình theo mô hình ban đầu và mô hình tối ƣu. Quy trình thực nghiệm nhƣ sau.
Hình 4-1. Mô hình thực nghiệm
4.2 Thực nghiệm 1 - Ứng dụng Bài toán Tháp Hà Nội4.2.1 Mô tả bài toán 4.2.1 Mô tả bài toán
Bài toán “Tháp Hà Nội” nhƣ sau: Có ba cọc A, B, C bằng kim cƣơng và n
cái đĩa bằng vàng các đĩa có đƣờng kính đôi một khác nhau. Nguyên tắc chuyển đĩa là: mỗi lần chỉ chuyển một đĩa và không đƣợc chồng đĩa to lên trên đĩa nhỏ hơn nó. Ban đầu, cả n đĩa đƣợc đặt chồng lên nhau ở cột A; hai cột B, C trống.
Vấn đề là phải chuyển cả n đĩa đó từ cột A sang cột B lấy cột C làm trung gian. Chƣơng trình thực nghiệm cho phép thực hiện số đĩa tối đa là 5.
4.2.2 Thiết kế lớp gốc
Dựa vào DSL đã xây dựng trong chƣơng trƣớc để thiết kế mô hình dữ liệu ban đầu cho ứng dụng Bài toán Tháp Hà Nội. Biểu đồ lớp ban đầu của ứng dụng đƣợc thiết kế nhƣ Hình 4-2.
Hình 4-2. Biểu đồ lớp A1
Hình 4-3. Tệp XML của biểu đồ lớp A1
Sau khi thiết kế xong biểu đồ chúng ta sẽ bổ sung thông tin về thuộc tính tần số truy suất các thành phần của lớp, nhƣ Hình 4-4, tên thuộc tính có tên là + m: int và thông tin về tuần suất truy suất của thuộc tính là 1000 lần.
Hình 4-4. Thuộc tính tần số truy xuất thành phần trong biểu đồ lớp A1
4.2.3 Biến đổi mô hình lớp
Để thực hiện các phép biến đổi mô hình tự động để tối ƣu hiệu năng, chúng tôi sử dụng chƣơng trình tối ƣu mức mô hình đã xây dựng ở trên. Chƣơng trình tối ƣu sử dụng T4 để chuyển từ tệp mô hình sang biểu diễn toán học dạng tập hợp, phân tích tần suất truy xuất các thành phần của lớp và thực hiện phép biến đổi phân chia cấu trúc dựa theo thuật toán K-mean và chuyển thành phần động thành tĩnh. Sau khi phân chia sẽ thu đƣợc mô hình dữ liệu mới. Mô hình dữ liệu mới này cũng đƣợc biểu diễn sang tập hợp của mô hình mới. Từ mô hình dữ liệu mới dạng tập hợp, có thể thực hiện sinh mã hoặc chuyển sang mô hình trực quan. Để sinh ngƣợc lại mô hình trực quan, chƣơng trình tối ƣu sẽ phân tích biểu diễn tập hợp của mô hình và ghi ra tệp XML theo cấu trúc của DSL đã định nghĩa.
Hình 4-6. Mẫu T4 lấy các thông tin ngữ nghĩa từ mô hình lớp A
Hình 4-7. Tệp XML đƣợc tạo từ chƣơng trình tối ƣu A
Sau khi chƣơng trình tối ƣu phân tích biểu diễn tập hợp của mô hình ban đầu và ghi ra tệp XML theo cấu trúc của DSL đã định nghĩa thì mô hình dữ liệu cải tiến dựa trên phân chia cấu trúc nhƣ Hình 4-8 đƣợc tạo thành.
Biểu đồ lớp A2
Hình 4-8. Mô hình dữ liệu mới A
Hình 4-9. Tệp tham số dựa trên các T4 templates của A
4.2.4 Đánh giá hiệu năng và lựa chọn mô hình tốt hơn
Chƣơng trình tối ƣu sẽ nhận đầu vào là tập các tệp tham số tƣơng ứng với các mô hình và tính toán hàm đánh giá hiệu năng theo thuật toán đã cài đặt cho mô hình ban đầu và mô hình tối ƣu để lựa chọn mô hình tốt hơn.
Hình 4-10. Tính toán hiệu năng và bộ nhớ cho mỗi biểu đồ lớp A
Hình 4-11. Biểu đồ so sánh tối ƣu hiệu năng và bộ nhớ chiếm dụng của biểu đồ lớp A
Kết quả tối ƣu hiệu năng và tối ƣu bộ nhớ chiếm dụng đƣợc chỉ ra nhƣ trong biểu đồ ở Hình 4-11. Trong biểu đồ này, nếu chúng ta muốn tối ƣu hiệu năng thì biểu đồ lớp A2 đƣợc lựa chọn vì có hiệu năng tốt hơn, giá trị của hàm mục tiêu là nhỏ hơn và nếu chúng ta muốn tối ƣu bộ nhớ chiếm dụng thì biểu đồ lớp A1 đƣợc