Cụ thể là phương pháp tối ưu cấu trúc dữ liệu dựa vào chuyển đổi mô Cấu trúc của luận văn có 4 chương gồm chương 1 nói về ngôn ngữ miền chuyên dụng DSL và công nghệ sinh mã T4, nội dung
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
- - - - - -
NGUYỄN THỊ THU HUYỀN
TỐI ƯU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ DỰA TRÊN CHUYỂN ĐỔI
MÔ HÌNH
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60480103
LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN NGỌC BÌNH
Hà Nội – 2014
Trang 2MỤC LỤC
MỞ ĐẦU 8
CHƯƠNG 1 NGÔN NGỮ MIỀN CHUYÊN DỤNG VÀ CÔNG NGHỆ SINH MÃ T4 11
1.1 GIỚITHIỆU 11
1.2 NGÔNNGỮMIỀNCHUYÊNDỤNG 11
1.2.1 Khái niệm 11
1.2.2 Phạm vi ứng dụng của DSL 12
1.2.3 Các công cụ hỗ trợ phát triển DSL 12
1.3 DSLMÔHÌNHPHẦNMỀMNHÚNG 15
1.3.1 DSL mô hình phần mềm nhúng 15
1.3.2 Quy trình xây dựng framework DSL và xây dựng siêu mô hình 16
1.4 CÔNGNGHỆSINHMÃT4 18
1.4.1 Khái niệm 18
1.4.2 Các công cụ tích hợp và sử dụng T4 19
1.4.3 Quy trình sinh mã theo T4 19
1.4.4 Tích hợp T4 vào DSL framework để sinh mã từ mô hình 19
CHƯƠNG 2 CÁC PHƯƠNG PHÁP TỐI ƯU TRONG GIAI ĐOẠN THIẾT KẾ 21 2.1 TỔNGQUANVỀTỐIƯUPHẦNMỀMNHÚNG 21
2.2 CÁCKHÍACẠNHTỐIƯUPHẦNMỀMNHÚNG 22
2.3 CÁCPHƯƠNGPHÁPTỐIƯUPHẦNMỀMNHÚNGTRONGGIAI ĐOẠNTHIẾTKẾ 24
CHƯƠNG 3 TỐI ƯU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ DỰA TRÊN CHUYỂN ĐỔI MÔ HÌNH 30
3.1 ÝTƯỞNGVÀQUYTRÌNHTRIỂNKHAI 30
3.2 CÁCPHÉPBIẾNĐỔITRÊNMÔHÌNH 31
3.2.1 Phân chia cấu trúc 31
3.2.2 Gộp cấu trúc 32
3.2.3 Thay đổi thứ tự mối quan hệ 33
3.2.4 Hướng giới hạn của mối quan hệ 34
3.2.5 Tạo hoạt động đặc trưng 34
3.2.6 Chuyển đổi thuộc tính thành tham số 37
3.2.7 Loại bỏ các thuộc tính dư thừa 37
3.2.8 Chuyển thuộc tính thành lớp 37
Trang 33.2.9 Thu gọn kiểu dữ liệu 37
3.2.10 Chuyển tham số thành thuộc tính 37
3.2.11 Chuyển các thành phần động thành tĩnh 38
3.3 XÂYDỰNGHÀMĐÁNHGIÁHIỆUNĂNGVÀBỘNHỚCHIẾM DỤNG 38
3.3.1 Hàm đánh giá hiệu năng 38
3.3.2 Hàm đánh giá bộ nhớ 41
3.4 ĐỊNHNGHĨADSL,XÂYDỰNGFRAMEWORKVÀTẠOMẪUT4 41
3.4.1 Định nghĩa DSL và xây dựng framework 41
3.4.2 Tạo mẫu T4 để sinh tham số tự động từ mô hình 43
3.5 XÂYDỰNGCHƯƠNGTRÌNHTỐIƯUDỰATRÊNBIẾNĐỔIMÔ HÌNH 44
3.5.1 Chuyển đổi mô hình để tối ưu hiệu năng 46
3.5.2 Chuyển đổi mô hình để tối ưu bộ nhớ chiếm dụng 46
4.1 MÔTẢVÀMÔHÌNHTHỰCNGHIỆM 49
4.2 THỰCNGHIỆM1-ỨNGDỤNGBÀITOÁNTHÁPHÀNỘI 49
4.2.1 Mô tả bài toán 49
4.2.2 Thiết kế lớp gốc 49
4.2.3 Biến đổi mô hình lớp 51
4.2.4 Đánh giá hiệu năng và lựa chọn mô hình tốt hơn 53
4.3 THỰCNGHIỆM2-ỨNGDỤNGBÀITOÁN8QUÂNHẬU 56
4.3.1 Mô tả bài toán 57
4.3.2 Thiết kế lớp gốc 57
4.3.3 Biến đổi mô hình lớp 58
4.3.4 Đánh giá hiệu năng và lựa chọn mô hình tốt hơn 61
4.4 THỰCNGHIỆM3-ỨNGDỤNGSẮPXẾPKIỂUPHÂNĐOẠN(QUICK SORT) 64
4.4.1 Mô tả bài toán 64
4.4.2 Thiết kế lớp gốc 64
4.4.3 Biến đổi mô hình lớp 65
4.4.4 Đánh giá hiệu năng và lựa chọn mô hình tốt hơn 68
4.5 THỰCNGHIỆM4-ỨNGDỤNGVẼĐỒTHỊ 71
4.5.1 Mô tả bài toán 71
4.5.2 Thiết kế lớp gốc 71
4.5.3 Biến đổi mô hình lớp 72
4.5.3 Đánh giá hiệu năng và lựa chọn mô hình tốt hơn 76
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỀN 79
TÀI LIỆU THAM KHẢO 80
PHỤ LỤC 80
Trang 4DANH MỤC CÁC BẢNG
Bảng 3-1 Các độ đo ảnh hưởng đến hiệu năng 39
Bảng 3-2 Các tham số sử dụng để đánh giá hiệu năng 40
Bảng 3-3 Các lớp ngữ nghĩa và trực quan chính trong siêu mô hình 42
Bảng 4-1 So sánh hiệu năng thực tế các chương trình Bài toán Tháp Hà Nội 56
Bảng 4-2 So sánh tỷ lệ giảm khi chạy chương trình Bài toán Tháp Hà Nội 63
Bảng 4-3 So sánh hiệu năng thực tế các chương trình Bài toán 8 quân hậu 63
Bảng 4-4 So sánh tỷ lệ giảm khi chạy chương trình Bài toán 8 quân hậu 63
Bảng 4-5 So sánh hiệu năng thực tế các chương trình Quick Sort 71
Bảng 4-6 So sánh tỷ lệ giảm khi chạy chương trình Quick Sort 72
Bảng 4-7 So sánh hiệu năng thực tế các chương trình Vẽ đồ thị 77
Bảng 4-8 So sánh tỷ lệ giảm khi chạy chương trình Vẽ đồ thị 78
DANH MỤC CÁC HÌNH Hình 1-1 Công cụ Microsoft DSL để định nghĩa DSL 13
Hình 1-2 Công cụ EMF 14
Hình 1-3 Công cụ GMF 14
Hình 1-4 Công cụ MOFScript 15
Hình 1-5 Một phần của siêu mô hình định nghĩa DSL 17
Hình 1-6 Framework DSL hỗ trợ thiết kế biểu đồ lớp 18
Hình 1-7 Các bước sinh mã theo T4 19
Hình 1-8 Một mẫu được xây dựng theo T4 để sinh tham số từ biểu đồ lớp 20
Hình 2-1 Quy trình triển khai kỹ thuật tối ưu hướng mô hình 26
Hình 3-1 Quy trình triển khai 31
Hình 3-2 Ví dụ về chuyển đổi phân chia cấu trúc 32
Hình 3-3 Ví dụ về chuyển đổi gộp cấu trúc 32
Hình 3-4 Ví dụ về chuyển đổi thay đổi thứ tự mối quan hệ 33
Hình 3-5 Ví dụ chuyển đổi hướng giới hạn mối quan hệ 34
Hình 3-6 Ví dụ chuyển đổi tạo hoạt động đặc trưng 34
Hình 3-7 Ví dụ chuyển đổi lập thuộc tính tạm thời 35
Hình 3-8 Ví dụ chuyển đổi loại bỏ các thuộc tính dư thừa 36
Hình 3-9 Ví dụ chuyển đổi thuộc tính thành lớp 36
Hình 3-10 Siêu mô hình của DSL hỗ trợ tối ưu hiệu năng cho biểu đồ lớp 42
Hình 3-11 Cập nhật các tham số thành phần của biểu đồ 43
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 43
Hình 3-13 Tập tin đầu ra của T4 trích xuất các tham số từ biểu đồ 44
Hình 3-14 Chương trình tối ưu 45
Hình 3-15 Tính toán hiệu năng, bộ nhớ chiếm dụng cho mỗi biểu đồ lớp 45
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 .46
Hình 4-1 Mô hình thực nghiệm 49
Hình 4-2 Biểu đồ lớp A1 50
Hình 4-3 Tệp XML của biểu đồ lớp A1 50
Trang 5Hình 4-4 Thuộc tính tần số truy xuất thành phần trong biểu đồ lớp A1 51
Hình 4-5 Chương trình thực hiện phép phân chia cấu trúc biểu đồ lớp A 51
Hình 4-6 Mẫu T4 lấy các thông tin ngữ nghĩa từ mô hình lớp A 52
Hình 4-7 Tệp XML được tạo từ chương trình tối ưu A 52
Hình 4-8 Mô hình dữ liệu mới A 53
Hình 4-9 Tệp tham số dựa trên các T4 templates của A 53
Hình 4-10 Tính toán hiệu năng và bộ nhớ cho mỗi biểu đồ lớp A 54
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 54
Hình 4-12 Giao diện chương trình Bài toán Tháp Hà Nội 55
Hình 4-13 Biểu đồ lớp B1 57
Hình 4-14 Tệp XML của biểu đồ lớp B1 58
Hình 4-15 Thuộc tính tần số truy xuất thành phần trong biểu đồ lớp B1 58
Hình 4-16 Chương trình thực hiện phép phân chia cấu trúc biểu đồ lớp B 59
Hình 4-17 Mẫu T4 lấy các thông tin ngữ nghĩa từ mô hình lớp B 59
Hình 4-18 Tệp XML được tạo từ chương trình tối ưu B 60
Hình 4-19 Mô hình dữ liệu mới B 60
Hình 4-20 Tệp tham số dựa trên các T4 templates của B 61
Hình 4-21 Tính toán hiệu năng và bộ nhớ cho mỗi biểu đồ lớp B 61
Hình 4-22 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 B 62
Hình 4-23 Giao diện chương trình Bài toán 8 Quân hậu 63
Hình 4-24 Biểu đồ lớp C1 64
Hình 4-25 Tệp XML của biểu đồ lớp C1 65
Hình 4-26 Thuộc tính tần số truy xuất thành phần trong biểu đồ lớp C1 65
Hình 4-27 Chương trình thực hiện phép phân chia cấu trúc biểu đồ lớp C 66
Hình 4-28 Mẫu T4 lấy các thông tin ngữ nghĩa từ mô hình lớp C 66
Hình 4-29 Tệp XML được tạo từ chương trình tối ưu C 67
Hình 4-30 Mô hình dữ liệu mới C 67
Hình 4-31 Tệp tham số dựa trên các T4 templates của C 68
Hình 4-32 Tính toán hiệu năng và bộ nhớ cho mỗi biểu đồ lớp C 68
Hình 4-33 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 C 69
Hình 4-34 Giao diện chương trình Quick sort 70
Hình 4-35 Biểu đồ lớp D1 71
Hình 4-36 Tệp XML của biểu đồ lớp D1 71
Hình 4-37 Thuộc tính tần số truy xuất thành phần trong biểu đồ lớp D1 72
Hình 4-38 Chương trình thực hiện phép phân chia cấu trúc biểu đồ lớp D 73
Hình 4-39 Mẫu T4 lấy các thông tin ngữ nghĩa từ mô hình lớp D 73
Hình 4-40 Tệp XML được tạo từ chương trình tối ưu D 74
Hình 4-41 Mô hình dữ liệu mới D 74
Hình 4-42 Tệp tham số dựa trên các T4 templates của D 75
Hình 4-43 Tính toán hiệu năng và bộ nhớ cho mỗi biểu đồ lớp D 75
Trang 6Hình 4-44 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 D 76 Hình 4-45 Giao diện chương trình Vẽ đồ thị 77
DSD Domain-specific description Mô tả miền chuyên dụng
DSL Domain Specific Language
Ngôn ngữ miền chuyên dụng
EDA Electronic Design Automation Thiết kế điện tử tự động EMF Eclipse Modeling Framework
GMF Graphical Modeling Framework
IDE
Integrated Development Environment; Integrated Design Environment; Integrated Debugging Environment
Môi trường phát triển tích hợp; Môi trường thiết kế hợp nhất; Môi trường gỡ lỗi hợp nhất
MDE Model Driven Engineering Kỹ thuật hướng mô hình
OOP Object-oriented programming
Lập trình hướng đối tượng
UML Unified Modeling Language Ngôn ngữ mô hình hóa
XML Extensible Markup Language
Ngôn ngữ đánh dấu mở rộng
Trang 7LỜI CAM ĐOAN
Tôi xin cam đoan: Luận văn “Tối ưu phần mềm nhúng trong giai đoạn thiết kế dựa trên chuyển đổi mô hình” là công trình nghiên cứu độc lập của tôi
Những số liệu, kết quả nêu trong luận văn là trung thực, được trích dẫn và
có tính kế thừa, phát triển từ các tài liệu, tạp chí, các công trình nghiên cứu đã được công bố, các website …
Các giải pháp nêu trong luận văn được rút ra từ những cơ sở lý luận và quá trình nghiên cứu thực tiễn
Người cam đoan
Trang 8MỞ ĐẦU
Hệ thống nhúng là hệ thống máy tính cùng phần mềm được gắn theo một
hệ thống khác để điều khiển hoạt động và xử lý thông tin của hệ thống đó Nói theo chuẩn IEEE như trong [1] thì: hệ thống nhúng là một hệ tính toán nằm trong sản phẩm, tạo thành một phần của hệ thống lớn hơn và thực hiện một số chức năng của hệ thống Khi hệ tính toán (có thể là máy tính cá nhân, vi xử lý, vi
hệ thống,…) được nhúng vào trong một sản phẩm hay một hệ thống một cách hữu cơ và thực hiện một số chức năng cụ thể của hệ thống thì ta gọi đó là một hệ thống nhúng
Hệ thống nhúng thường được thiết kế để thực hiện một chức năng chuyên biệt nào đó Khác với các máy tính đa chức năng, chẳng hạn như máy tính cá nhân, một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định, thường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và phần cứng chuyên dụng Trong một số trường hợp, hệ nhúng cũng có thể hoạt động như một hệ thống tồn tại độc lập
Phần mềm nhúng là phần mềm tích hợp trong các hệ thống nhúng Mục
đích của phần mềm nhúng nhằm điều khiển phần cứng, cho phép đáp ứng tương tác người dùng hoặc cung cấp môi trường để phát triển các phần mềm nhúng tích hợp khác Phần mềm nhúng tạo nên phần trí tuệ của các sản phẩm nhúng Phần mềm nhúng ngày càng có tỷ lệ giá trị cao trong giá trị của các sản phẩm nhúng Chúng ta có thể nhìn thấy các sản phẩm của hệ thống nhúng trong cuộc sống hàng ngày như ô tô, điện thoại di động, ti vi, tủ lạnh, thẻ tín dụng, phương tiện vận chuyển … hay trong những hệ thống lớn như máy móc thiết bị ở bệnh viện, công nghệ viễn thông, tự động hóa, các thiết bị năng lượng, các thiết bị cảnh báo bảo vệ và các sản phẩm đo và điều khiển
Việc thiết kế và chế tạo các hệ thống nhúng được các nước phát triển quan tâm và giải quyết từ lâu, nhưng bắt đầu phát triển với tốc độ nhanh từ giữa những năm 1970 khi xuất hiện các bộ vi xử lý và vi điều khiển, đáp ứng nhu cầu phát triển các hệ thống điện tử, dân dụng, an ninh quốc phòng, trò chơi, công nghiệp hóa, tự động điều khiển của nhiều quốc gia và thế giới Tuy nhiên, việc phát triển các hệ thống nhúng lâu nay chủ yếu phụ thuộc vào người thiết kế, nhất là kinh nghiệm phát triển hệ thống và trình độ công nghệ của người kiến trúc sư Điều đó
Trang 9chưa có gì đảm bảo bản thiết kế (về phần cứng và/hoặc phần mềm) là tối ưu hay tốt nhất trong những điều kiện đặt ra khi thiết kế và phát triển hệ thống nhúng Với sự phát triển nhanh chóng của công nghệ, nhất là công nghệ vi điện tử, hệ thống trên một chip thì việc thiết kế và phát triển hệ thống nhúng không thể làm bằng tay và chỉ theo kinh nghiệm của người thiết kế nữa, mà cần được làm tự động và/hoặc có sự hỗ trợ của các công cụ thiết kế Vì thế, tự động hóa thiết kế điện tử (EDA) đã thành chủ đề thời sự và luôn nóng bỏng, có sức hấp dẫn và cạnh tranh cao giữa các nước, giữa các tập đoàn xuyên quốc gia, giữa các trung tâm nghiên cứu và giữa các trường đại học trong suốt hơn 40 năm qua và ngày càng có tính cạnh tranh cao, thuộc về công nghệ lõi của công nghệ thông tin – truyền thông Hội nghị hàng đầu thế giới hàng năm về tự động hóa thiết kế là Design Automation Conference (DAC, www.dac.com) tại Hoa Kỳ được bắt đầu
từ năm 1973 và tại khu vực Châu Á Thái Bình Dương (ASP-DAC, http://www.aspdac.com/aspdac/bylaws) từ năm 1995 luôn có sức hấp dẫn cao với
cả giới hàn lâm và giới doanh nghiệp Các nghiên cứu và hội nghị quốc tế về hệ thống nhúng ngày càng tăng, nhu cầu đào tạo và phát triển hệ thống nhúng là cấp bách ở Việt Nam, nơi các nhà công nghiệp nước ngoài muốn hợp tác với các doanh nghiệp, viện nghiên cứu và đại học của Việt Nam để triển khai các dự án liên quan đến phát triển hệ thống nhúng, trong đó có lập trình nhúng và xây dựng
hệ thống gồm cả phần cứng lẫn phần mềm kèm theo [2]
Công nghệ phần mềm đặc biệt là phần mềm nhúng ngày càng phát triển mạnh mẽ Môi trường phát triển phần mềm nhúng bị giới hạn về: khả năng xử lý của CPU, kích thước bộ nhớ, thời gian sống của pin, vấn đề tiêu thụ năng lượng, vấn đề thời gian thực
thiết kế phần cứng – phần mềm – codesign hardware-s
như: không thể đánh giá chính xác hiệu năng, mức tiêu thụ điện năng, dung lượng bộ nhớ chiếm dụng … và các độ đo phần mềm trong giai đoạn thiết kế chủ yếu tập trung vào các độ đo chất lượng (khả năng tái sử dụng, tính dễ báo trì …) mà chưa tập trung vào các độ đo mức thực thi (thời gian thực thi, bộ nhớ sử dụng …), nhưng tối ưu giai đoạn thiết kế mang
Luận văn tập trung nghiên cứu và tìm hiểu một phương pháp tối ưu trong phát triển phần mềm nhúng giai đoạn thiết kế Đó là
để
Trang 10đặc tả, mô hình, tự động sinh mã tối ưu, độc lập nền tảng cho các phần mềm nhúng Cụ thể là phương pháp tối ưu cấu trúc dữ liệu dựa vào chuyển đổi mô
Cấu trúc của luận văn có 4 chương gồm chương 1 nói về ngôn ngữ miền chuyên dụng DSL và công nghệ sinh mã T4, nội dung tập trung nghiên cứu ngôn ngữ DSL có tích hợp công nghệ sinh mã T4 nhằm xây dựng một framework hỗ trợ thiết kế mô hình cấu trúc dữ liệu của phần mềm nhúng Chương 2 tập trung tìm hiểu các phương pháp tối ưu phần mềm nhúng trong giai đoạn thiết kế để từ
đó lựa chọn một phương pháp tối ưu mà luận văn tập trung nghiên cứu và phát triển thực nghiệm cho các nội dung chương sau Tiếp đến chương 3 với trọng tâm nghiên cứu là tối ưu phần mềm nhúng trong giai đoạn thiết kế dựa trên chuyển đổi mô hình, chúng tôi tập trung tìm hiểu các kỹ thuật chuyển đổi mô hình áp dụng trong giai đoạn thiết kế phần mềm nhúng để thực hiện tối ưu hiệu năng hay
bộ nhớ chiếm dụng Chương 4 đã xây dựng hệ thống thử nghiệm, cài đặt một số phép biến đổi với một số ứng dụng Cuối cùng chính là phần kết luận và các hướng nghiên cứu có thể phát triển tiếp của luận văn
Trang 11CHƯƠNG 1
NGÔN NGỮ MIỀN CHUYÊN DỤNG VÀ CÔNG NGHỆ SINH MÃ T4
1.1 Giới thiệu
Ngày nay với sự phát triển mạnh mẽ của công nghệ phần mềm, UML được
sử dụng phổ biến trong thiết kế phần mềm Tuy nhiên, UML có một số hạn chế như không đặc tả chi tiết phần mềm trong các lĩnh vực cụ thể; không chuẩn hóa
về định dạng lưu trữ - các công cụ hỗ trợ UML thường không thống nhất về định dạng lưu trữ nên không khả chuyển; khả năng tái sử dụng và khả năng sinh mã không mạnh Để khắc phục các hạn chế này, một xu hướng triển vọng hiện nay là
sử dụng ngôn ngữ miền chuyên dụng (DSL), DSL là ngôn ngữ chỉ sử dụng trong các lĩnh vực cụ thể như SQL, html, DSL cho phép lưu trữ các mô hình theo XML là chuẩn công nghệ độc lập ngôn ngữ và nền tảng nên tính khả chuyển cao
và khả năng sinh mã từ XML mạnh mẽ
Trong thiết kế phần mềm hướng đối tượng, biểu đồ lớp được sử dụng phổ biến nhất, nên chương này sẽ tìm hiểu và nghiên cứu phát triển một ngôn ngữ DSL để mô hình hóa phần mềm nhúng và phát triển framework dùng để thiết kế
mô hình cấu trúc dữ liệu của phần mềm nhúng, chính là thiết kế các biểu đồ lớp
để từ đó chúng ta sẽ triển khai các nghiên cứu tiếp theo về tối ưu phần mềm
nhúng trong giai đoạn thiết kế ở các chương sau
1.2 Ngôn ngữ miền chuyên dụng
1.2.1 Khái niệm
Một ngôn ngữ miền chuyên dụng là ngôn ngữ thiết kế để cung cấp ký hiệu
phù hợp cho một miền ứng dụng và chỉ dựa vào các khái niệm liên quan và các
tính năng của miền đó; hoặc là ngôn ngữ lập trình hoặc ngôn ngữ đặc tả thực thi, thông qua các ký hiệu và các trừu tượng hóa thích hợp, tính năng diễn tả,
thường bị hạn chế bởi một miền vấn đề cụ thể Ngôn ngữ miền chuyên dụng là
ngôn ngữ nhỏ, thường là khai báo, ngôn ngữ diễn tả toàn bộ các đặc điểm phân
biệt của các chương trình trong một miền vấn đề cụ thể; mô tả miền cụ thể
Trang 12(DSD), một chương trình (đặc tả, mô tả, truy vấn, quá trình, nhiệm vụ, …) viết
trong một DSL; hệ thống xử lý miền cụ thể, một công cụ phần mềm để biên dịch, phiên dịch hoặc phân tích các mô tả miền cụ thể [20, 26]
DSL đặc tả hệ thống, phần cứng, phần mềm trong một phạm vi ứng dụng cụ thể như SQL, html, VSDL Mỗi DSL áp dụng trong một miền ứng dụng cụ thể và
có ý nghĩa, dễ sử dụng Ngoài ra DSL có ít hệ thống ký hiệu, ít bảo trì và tăng
hiệu suất Nó cũng có thể kết nối tới các miền chuyên gia So với UML thì DSL
còn có một ưu điểm nổi bật là cho phép lưu trữ các mô hình theo XML là chuẩn công nghệ độc lập ngôn ngữ và nền tảng nên tính khả chuyển cao và khả năng sinh mã từ XML mạnh mẽ
Bên cạnh các ưu điểm trên thì DSL còn một vài hạn chế DSL là một ngôn ngữ kỹ thuật và ngôn ngữ học mới nên chúng ta cần phải đầu tư thêm thời gian nghiên cứu khi tiếp cận DSL hỗ trợ IDE yếu như trình soạn thảo, chương trình tìm và khắc phục lỗi, tái cấu trúc,…Sự di trú khó và khó khăn khi phát triển thành tổng quát
1.2.2 Phạm vi ứng dụng của DSL
DSL được ứng dụng trong rất nhiều lĩnh vực, một phần nhỏ DSL được ứng dụng trong công nghệ phần mềm Nổi tiếng nhất là PIC, SCATTER, CHEM, LEX, YACC, và Make [10], hoặc một vài ví dụ khác như SQL, BNF, và HTML,
chúng ta chia thành các lĩnh vực như Công nghệ phần mềm là các sản phẩm tài chính kiểm soát hành vi và phối hợp, kiến trúc phần mềm, và cơ sở dữ liệu Hệ thống phần mềm gồm mô tả và phân tích các cây cú pháp trừu tượng, video bộ
điều khiển chi tiết kỹ thuật, bộ nhớ cache gắn kết các giao thức, cấu trúc dữ liệu
trong C, và hệ điều hành chuyên dụng Multi-Media chính là Web máy tính, thao tác hình ảnh, hoạt hình 3D, và bản vẽ Về viễn thông bao gồm các ngôn ngữ
chuỗi và cây để kiểm tra mô hình, các giao thức truyền thông, chuyển mạch viễn thông, và mô hình tính toán ký hiệu số… Ngoài ra DSL cũng được ứng dụng nhiều trong các lĩnh vực khác như mô phỏng, các agent di động, robot điều khiển, giải phương trình vi phân từng phần, và thiết kế phần cứng kỹ thuật số [25, 27, 29]
1.2.3 Các công cụ hỗ trợ phát triển DSL
Các công cụ hỗ trợ phát triển và định nghĩa DSL có rất nhiều Chúng ta sẽ đi tìm hiểu một vài công cụ hỗ trợ DSL phổ biến hiện nay như:
Trang 13Microsoft DSL
Các công cụ DSL là một phần của Visual Studio SDK, công cụ DSL tích hợp trong Microsoft Visual Studio 2005, 2008 và 2010 Công cụ này cho phép dễ dàng xây dựng kiến trúc một DSL và các mô hình được hợp thức hóa, ngoài ra nó còn hỗ trợ sinh mã và mã được sinh có thể biên dịch dễ dàng Hình 1-1 dưới đây minh họa giao diện định nghĩa DSL trong Microsoft Visual Studio 2008
Hình 1-1 Công cụ Microsoft DSL để định nghĩa DSL Eclipse
Eclipse bao gồm công cụ Eclipse Modeling Framework (EMF) cho phép tạo
một framework mô hình và sinh mã dễ dàng, các mô hình biến đổi cụ thể và quản
lý (tạo, sửa, lưu, tải) các mô hình đối tượng; công cụ Graphical Modeling Framework (GMF) thì cung cấp thành phần sinh ra và thời gian chạy trong phát triển biên tập đồ họa dựa trên EMF và GMF; công cụ MOFScript cho phép một
mô hình MOFScript thực hiện để chuyển đổi ngôn ngữ văn bản Hình 2, 3,
1-4 dưới đây minh họa giao diện định nghĩa DSL trong Eclipse
Trang 14Hình 1-2 Công cụ EMF
Hình 1-3 Công cụ GMF
Trang 15có nhiều hỗ trợ khi chúng ta phát triển xây dựng DSL để thiết kế phần mềm nhúng Để định nghĩa và xây dựng DSL mô hình phần mềm nhúng, chúng ta cần xác định và định nghĩa các thành phần, cú pháp trong DSL cho phần mềm nhúng:
Định nghĩa các thành phần
Các thành phần trong phần mềm nhúng chúng ta chia thành các lớp như lớp chức năng chứa các hàm chức năng trong hệ thống, nó biểu diễn như ký hiệu lớp trong UML Lớp này còn chứa thêm thuộc tính thực thi Lớp tài nguyên chứa các thành phần tài nguyên hệ thống như CPU, bộ nhớ, tệp, Input/Output Lớp thông điệp mô tả các gói tin truyền đi trong môi trường mạng khi trao đổi thông
Trang 16tin giữa các thành phần (kích thước gói tin, kiểu dữ liệu,…) Lớp liên kết là biểu diễn liên kết giữa các lớp Lớp thuộc tính biểu diễn các thành phần của các lớp Lớp ràng buộc biểu diễn ràng buộc giữa các lớp, các thuộc tính của lớp
Các quy tắc cú pháp
Chúng ta định nghĩa các quy tắc cho mỗi lớp và mỗi thành phần của lớp, xác định các thuộc tính cho các thành phần lớp như màu sắc, độ rộng,… Ngoài ra chúng ra cần phải định nghĩa các hình ảnh xuất hiện các lớp (hình tròn, hình vuông,…) và xác định các quan hệ cho các thành phần của lớp
Xây dựng siêu mô hình hỗ trợ DSL
Để xây dựng siêu mô hình hỗ trợ DSL chúng ta phải dựa trên tập các thành phần, cú pháp đã định nghĩa DSL ở trên, để từ đó chúng ta sẽ xây dựng tập các
ký hiệu đồ họa tương ứng, tập các biểu diễn XML và ánh xạ giữa ký hiệu đồ họa XML và phát triển framework cho phép xây dựng mô hình đặc tả kiến trúc phần mềm từ siêu mô hình
1.3.2 Quy trình xây dựng framework DSL và xây dựng siêu mô hình
Các công cụ DSL cho phép xây dựng các siêu mô hình đặc tả DSL Siêu mô hình là mô hình sử dụng để định nghĩa và tạo các mô hình Quy trình định nghĩa DSL và xây dựng meta-model theo các bước sau:
- Định nghĩa các thành phần lôgic: Domain Classes, Components, Tasks, Flows, Comment Classes, Rules, Constrain, Relationship… và các ràng buộc
- Tạo các ký hiệu hình học tương ứng với mỗi thành phần lôgic ở trên Các
ký hiệu này sẽ sử dụng để thiết kế trong giao diện đồ họa sau khi DSL đã được biên dịch và triển khai
- Định nghĩa tệp siêu mô hình lưu trữ các định nghĩa và ánh xạ giữa lớp lôgic và ký hiệu hình học như hình 1-5
Trang 17Hình 1-5 Một phần của siêu mô hình định nghĩa DSL
Áp dụng theo quy trình ở trên và thực hiện trên công cụ DSL để xây dựng
một framework DSL và siêu mô hình hỗ trợ thiết kế biểu đồ lớp, sẽ được trình
bày cụ thể hơn ở chương sau Ví dụ hình 1-6 là một biểu đồ lớp của ứng dụng 8
quân hậu được thiết kế từ framework DSL
Trang 18Hình 1-6 Framework DSL hỗ trợ thiết kế biểu đồ lớp
1.4 Công nghệ sinh mã T4
Trong phần này chúng ta sẽ tìm hiểu và nghiên cứu về công nghệ sinh mã
T4 để tích hợp vào framework DSL đã xây dựng để trích xuất các tham số từ biểu
đồ
1.4.1 Khái niệm
Text Template Transformation Toolkit - T4 là một công cụ sinh mã dựa trên
mẫu Mẫu T4 là một tệp kết hợp giữa các khối văn bản và các khối logic điều
khiển Khối logic điều khiển đƣợc viết bằng C# hoặc Visual Basic.NET Mẫu T4
đƣợc sử dụng để sinh ra các tệp mã theo các định dạng khác nhau nhƣ: XML,
HTML, SQL, VHDL,… các tệp văn bản khác T4 có sẵn trong Visual Studio
Chúng ta sử dụng T4 cùng với các công cụ nhƣ Visual Studio Custom thì
T4 đƣợc tích hợp trong Visual Studio 2008, khi chúng ta thêm một tập tin văn
bản với phần mở rộng tt trong dự án của mình thì Visual Studio giao
TextTemplatingFileGenerator tự động tạo ra tập tin đầu ra từ mẫu Trong
Trang 19Command Line Utility thì T4 gồm các tiện ích dòng lệnh, TextTransform.exe có thể sử dụng để xử lý mẫu bên ngoài Visual Studio Trong công cụ Editor, T4 hỗ
trợ soạn thảo văn bản và gỡ lỗi còn hạn chế Chúng ta có thể sử dụng T4 Editor
từ Tangible Engineering, mở rộng Visual Studio cung cấp IntelliSense và cú pháp
mạnh hơn cho các tập tin tt Công cụ Debugger thì việc gỡ lỗi đòi hỏi phải thực
hiện gọi đến Debugger.Break phương pháp trong khối mã để thiết lập các điểm
ngắt Còn trong công cụ Visual Studio Templates thì phải cài đặt thêm T4
Toolbox từ CodePlex vào Visual Studio…
1.4.3 Quy trình sinh mã theo T4
Để định nghĩa các mẫu T4 chúng ta thực hiện theo các bước sau [30], hình 1-7 minh họa các bước định nghĩa T4:
- Định nghĩa các mẫu T4
- Sinh đặc tả từ mô hình kiến trúc
- Lấy thông tin các thành phần từ mô hình thành phần
- Sinh mã theo các nền tảng khác nhau từ luồng biểu đồ
Hình 1-7 Các bước sinh mã theo T4
1.4.4 Tích hợp T4 vào DSL framework để sinh mã từ mô hình
T4 là công nghệ sinh mã mạnh, cho phép xây dựng mẫu hỗ trợ sinh mã tự động dựa vào tệp XML định nghĩa DSL và tệp XML của mô hình thiết kế thực
tế T4 được sử dụng linh động, có thể sinh đầu ra theo dạng ngôn ngữ tùy ý, ngôn ngữ hình thức hoặc thậm chí là một mô hình trung gian
Các bước để tích hợp T4 vào DSL framework:
Trang 20- Thêm tệp có phần mở rộng tt vào dự án, công cụ hỗ trợ sẽ tự động sinh ra
tập tin đầu ra từ mẫu
- Định nghĩa các mẫu để trích xuất các tham số của mẫu thiết kế từ DSL
Hình 1-8 là ví dụ về T4 được định nghĩa để lấy thông tin về tần suất truy cập các thành phần từ của biểu đồ lớp được
Hình 1-8 Một mẫu được xây dựng theo T4 để sinh tham số từ biểu đồ lớp
Tổng kết chương
Tóm lại trong chương này đã đưa ra một quy trình xây dựng framework DSL cho phép chúng ta xây dựng hoàn thiện một framework DSL hỗ trợ thiết kế mô hình cấu trúc dữ liệu của ứng dụng, ngoài ra kết hợp với công nghệ sinh mã T4
để trích suất tham số tự động từ mô hình Ở các chương sau chúng ta sẽ áp dụng kết quả nghiên cứu này để xây dựng hoàn thiện framework DSL hỗ trợ thiết kế biểu đổ lớp của ứng dụng và lấy tự động các tham số của các thành phần trong biểu đồ lớp Trong nội dung chương tiếp theo chúng tôi tập trung tìm hiểu các phương pháp tối ưu trong giai đoạn thiết kế để lựa chọn ra một phương pháp tối
ưu mà luận văn sẽ nghiên cứu sâu hơn
Trang 21CHƯƠNG 2
CÁC PHƯƠNG PHÁP TỐI ƯU TRONG GIAI ĐOẠN THIẾT KẾ
2.1 Tổng quan về tối ưu phần mềm nhúng
Xu thế phát triển của công nghệ thông tin hiện nay tập trung vào công nghệ nhúng Hệ thống nhúng phát triển mạnh mẽ và có mặt trong hầu hết các lĩnh vực đời sống xã hội Cùng với công nghệ phần cứng, kỹ nghệ phần mềm nhúng ngày càng được nghiên cứu sâu rộn
: khả năng xử lý của CPU, kích thước bộ nhớ, thời gian sống của pin, vấn đề tiêu thụ năng lượng, vấn
đề thời gian thực… Do đó việc nghiên cứu vấn đề
Tối ưu phần mềm nhúng trong giai đoạn thiết kế đem lại nhiều lợi ích hơn trong các giai đoạn sau Tuy nhiên vấn đề tối ưu trong giai đoạn thiết kế có một
số thách thức như: không thể đánh giá chính xác hiệu năng, mức tiêu thụ điện năng, dung lượng bộ nhớ chiếm dụng… và các độ đo phần mềm trong giai đoạn thiết kế chủ yếu tập trung vào các độ đo chất lượng (khả năng tái sử dụng, tính dễ
Trang 22báo trì…) mà chưa tập trung vào các độ đo mức thực thi (thời gian thực thi, bộ nhớ sử dụng…) Việc đánh giá phần mềm nhúng về hiệu năng, bộ nhớ, mức tiêu thụ năng lượng của phần mềm vẫn là một thách thức đang trong quá trình nghiên cứu và thực nghiệm
Các mục tiêu chính của tối ưu là tối ưu hiệu năng, tối ưu tiêu thụ điện năng của hệ thống, tuổi thọ của pin, tối ưu bộ nhớ, dữ liệu và tối ưu kích thước phần mềm, tối ưu chi phí,… Có thể thực hiện tối ưu trong các giai đoạn khác nhau và phương pháp tối ưu theo mỗi khía cạnh cũng khác nhau Chúng ta không thể tối
ưu đồng thời các mục tiêu tối ưu vì các khía cạnh tối có thể mâu thuẫn Tối ưu khía cạnh này phải thỏa mãn các ràng buộc trên các khía cạnh khác
Tối ưu đa mục tiêu hướng tới sự cân bằng giữa các mục tiêu tối ưu của hệ thống Khi chúng ta cải tiến mục tiêu này thì phải không làm giảm mục tiêu tối
ưu khác Tối ưu đa mục tiêu dựa trên nguyên lý Pareto
2.2 Các khía cạnh tối ưu phần mềm nhúng
Các nghiên
:
Tối ưu hiệu năng
Tối ưu hiệu năng là bài toán được quan tâm nhiều nhất khi tối ưu phần mềm nói chung Bài toán tối ưu hiệu năng đã được nghiên cứu sâu rộng và có
, Olsen
S: “Phần mềm nhúng trong thế giới SoC Giúp HdS đối mặt như thế nào với
Sung: “Tối ưu phần mềm âm thanh MPEG 3 lớp của bộ xử lý RISC 32 bit” [22
-Yoon Cho,
Jong-Bae Moon, and Young-Chul Kim: “Một hệ thống để đánh giá hiệu năng của phần mềm nhúng” [23]
“Tối ưu hóa kết nối Client / Server
Trang 23Tối ưu tiêu thụ năng lượng
Vấn đề tối ưu tiêu thụ điện năng có ý nghĩa quan trọng trong các môi trường nhúng đặc biệt là trong các thiết bị không dây như: điện thoại, bộ điều khiển và ngay cả Laptop Bài toán tối ưu năng lượng cho phần mềm nhúng có vai trò quan trọng trong kỹ nghệ phần mềm, hiện đã được nghiên cứu rộng rãi và thu đượ
, Tajana Simunic, Giovanni De
Micheli, “Tối ưu phần mềm nhúng năng lượng yếu sử dụng đại số tượng trưng”
[4 , L & Nilsson, M., “Điều tra tiêu thụ năng lượng của một giao diện mạng không dây trong môi trường mạng ad hoc” [6] Một số hướng tiếp cận
mới đã ứng dụng trí tuệ nhân tạo, dựa trên các mô hình học máy và đại số để quyết định ngừng thực hiện một số ứng dụng hiện thời nhằm tiết kiệm thời gian cho ứng dụng thời gian thực Điển hình như trong nghiên cứu của Tang Lung
Cheung, Kari Okamoto, Frank Maker, “Khung tiến trình quyết định Markov cho tối ưu hóa phần mềm trên điện thoại di động” [16], tác giả đã áp xây dựng mô
hình quyết định Markov để quản lý các ứng dụng thời gian chạy
Tối ưu
Việc tối ưu truyền thông tin trong môi trường phân tán tập trung vào: tối ưu giao thức truyền thông, lựa chọn giao thức phù hợp, tối ưu dữ liệu tại các trạm đầu cuối trước khi gửi vào đường truyền Trong đó việc tối ưu giao thức truyền thông cụ thể rất phức tạp liên quan nhiều đến hạ tầng vật lý và các tầng khác nhau trong mô hình truyền thông và không có ý nghĩa thực tiễn với một ứng dụng
cụ thể Do đó vấn đề tối ưu truyền thông cho ứng dụng phân tán trong môi trường không đồng nhất tập trung chính vào việc lựa chọn giao thức truyền thông và tối
ưu dữ liệu tại các trạm đầu cuối Các ứng dụng phân tán Mobile theo mô hình điện toán đám mây dựa trên hạ tầng Web Services đã được nghiên cứu và đang là
xu thế phát triển cho ứng dụng phân tán Có nhiều nghiên cứu nhằm tối ưu dữ liệu truyền thông cho mô hình tính toán này tập trung nhiều vào loại bỏ dữ liệu thừa trong các thẻ XML mô tả gói SOAP, loại bỏ các thẻ, mã thừa trong tệp
Fox: “Tối
ưu hóa hiệu suất nhắn tin cho dịch vụ Web trong máy di động” [5
Sangyoon Oh, Mehmet S Aktas, Marlon Pierce, Geoffrey C Fox: “Tối ưu hóa hiệu suất nhắn tin dịch vụ Web sử dụng một kho bối cảnh cho dữ liệu tĩnh” [19,
20, 24]
Trang 24Tối ưu bộ nhớ chương trình
Tối ưu bộ nhớ chương trình cũng góp phần quan trọng trong việc tối ưu hiệu năng đặc biệt là trên môi trường Mobile với bộ nhớ hạn chế Các nghiên cứu trong khía cạnh này gồm: sử dụng nhiều các chip nhớ, thanh ghi trong chương trình, cấp phát và giải phóng
R Joshi, Matti Hiltunen, , Richard Schlichting, William H Sanders, and Adnan
Agbaria: “Thích ứng dựa trên mô hình trực tuyến để tối ưu hóa hiệu năng và độ
2.3 Các phương pháp tối ưu phần mềm nhúng trong giai đoạn thiết kế
Tối ưu mức thiết kế với mục tiêu chính là thiết kế kiến trúc tối ưu, thiết kế cấu trúc dữ liệu tối ưu rồi lựa chọn thuật toán tối ưu, lựa chọn framework phát triển tối ưu, lựa giao thức truyền thông tối ưu (http, https, SOAP) Tối ưu mức thiết kế thực hiện theo các phương pháp: Tối ưu cấu trúc dữ liệu trừu tượng bằng chuyển đổi mô hình và sinh mã mô phỏng chức năng; Lựa chọn cấu hình phát triển (framework, ngôn ngữ, giao thức truyền thông…) tối ưu cho phần mềm nhúng hướng mô hình; Tối ưu cấu trúc dữ liệu hướng mô hình dựa trên DSL, tối
ưu pareto và sinh mã mô phỏng; Lựa chọn cấu hình thiết bị tối ưu cho phần mềm nhúng bằng kỹ thuật hướng mô hình
Mục tiêu của tối ưu trong giai đoạn thiết kế là đánh giá, cải tiến và lựa chọn
mô hình tốt nhất Chúng ta có thể thực hiện theo mỗi khía cạnh tối ưu cụ thể hoặc
Trang 25là tối ưu đa mục tiêu Khi thực hiện tối ưu trong giai đoạn thiết kế thường có hai cách tiếp cận là từ tập các mô hình thiết kế, xây dựng và tính toán các hàm đánh giá mô hình, trên cơ sở đó chúng ta lựa chọn ra mô hình tốt nhất hoặc là từ mô hình thiết kế ban đầu chúng ta xây dựng các hàm đánh giá sau đó tiến hành phân tích và biến đổi rồi tái cấu trúc Các bước thực hiện cải tiến nhằm đạt được mô hình tối ưu theo hàm đánh giá
Để đánh giá phần mềm nhúng ở mức thiết kế, thường có ba cách tiếp cận là
có thể đánh giá trực tiếp từ mô hình hay chuyển từ mô hình thiết kế về mô hình hiệu năng và đánh giá mô hình hiệu năng hoặc đánh giá dựa trên mô phỏng Chúng ta chủ yếu tập trung đánh giá về hiệu năng, chuyển đặc tả hệ thống sang
mô hình hiệu năng, sử dụng một số phương pháp như: đặc tả hệ thống, phương pháp SPE, phương pháp dựa trên mẫu kiến trúc, phương pháp dựa trên mô phỏng, phương pháp tối ưu dựa trên phân chia phần cứng – phần mềm (đồng thiết kế)
Ba hướng tiếp cận để đánh giá và tối ưu phần mềm trong giai đoạn thiết kế:
Tối ưu dựa trên kỹ nghệ hiệu năng phần mềm (SPE)
Theo phương pháp này chúng ta sẽ chuyển mô hình thiết kế về mô hình hiệu năng để đánh giá tối ưu, chúng ta có thể thực hiện triển khai theo hai phương pháp như sau:
- Phương pháp sử dụng UML để đặc tả kiến trúc phần mềm, ngoài ra bổ sung thêm thông tin về hiệu năng vào các mô hình UML Sau đó chúng ta sẽ chuyên từ mô hình UML sang mô hình hiệu năng và đánh giá mô hình hiệu năng để lựa chọn kiến trúc tốt nhất
- Phương pháp tối ưu dựa trên DSL, chúng ta sẽ định nghĩa một số DSL để đặc tả phần mềm, chuyển sang mô hình hiệu năng để đánh giá và tối ưu Ban đầu chúng ta định nghĩa DSL với các ràng buộc SPE cho biểu đồ class, Sequence, Activity, Deploy Sau khi định nghĩa và xây dựng các loại biểu đồ chúng ta sẽ sử dụng công nghệ T4 để lấy tham số tự động từ mô hình rồi chuyển sang mô hình hiệu năng và đánh giá mô hình hiệu năng để chọn ra kiến trúc tốt nhất
Tối ưu dựa trên mô phỏng
Theo phương pháp này dựa trên cách tiếp cận kỹ nghệ hướng mô hình MDE Ban đầu chúng ta thiết kế mô hình tiếp theo là sinh mã mô phỏng cho các chức năng rồi chạy mã mô phỏng trên môi trường thực để đánh giá và lựa chọn mô
Trang 26hình hoặc môi trường phát triển Thực hiện triển khai dựa trên DSL, định nghĩa DSL để thiết kế mô hình và sinh mã mô phỏng các chức năng, thực thi mã mô phỏng để lựa chọn kiến trúc tốt nhất hoặc môi trường phát triển tốt nhất Hình 2-1 biễu diễn một quy trình triển khai kỹ thuật tối ưu hướng mô hình
Hình 2-1 Quy trình triển khai kỹ thuật tối ưu hướng mô hình
Tối ưu dựa trên đánh giá và chuyển đổi trực tiếp trên mô hình
Theo phương pháp này chúng ta sẽ đánh giá trực tiếp hiệu năng, bộ nhớ, năng lượng tiêu thụ từ mô hình, việc đánh giá này gặp rất nhiều khó khăn Trong phương pháp này thường đánh giá trực tiếp và tối ưu theo các độ đo chất lượng như tính đóng gói, khả năng tái sử dụng,… Một số nghiên cứu đưa ra cách đánh giá hiệu năng dựa trên biểu đồ Class, thường có hai hướng tiếp cận tối ưu là tối
ưu hiệu năng dựa trên đánh giá biểu đồ Class và tối ưu đa mục tiêu dựa trên biểu
đồ lớp và nguyên lý Pareto
Một số phương pháp tối ưu giai đoạn thiết kế theo ba hướng tiếp cận trên:
Tối ưu dựa trên phân chia phần cứng - phần mềm
Chúng ta sẽ phân tích và đánh giá hiệu năng, mức tiêu thụ điện năng, chi phí
và giai đoạn thiết kế hệ thống nhúng theo mỗi phân hoạch Để đánh giá hiệu
Trang 27năng, chúng ta tập trung vào chi phí thời gian thực thi trong phân hoạch Thời gian thực của phân hoạch bao gồm thời gian thực thi các tác vụ phần cứng, thời gian thực thi các tác vụ phần mềm và thời gian chuyển giữa 2 tác vụ Thời gian thực thi càng lâu thì hiệu năng càng giảm
và kiểm thử Điều này làm mất nhiều thời gian và chi phí tối ưu
Giải pháp khắc phục vấn đề trên là tối ưu hệ thống trong ngay giai đoạn thiết
kế dựa trên kỹ nghệ phần mềm hướng mô hình
: web application, web service…) T
p
Phương pháp này sẽ
Trang 28
Phương pháp này
Tối ưu dựa trên sinh mã thay thế mô phỏng chức năng
mã thay thế mô phỏng chức năng, nhằm xây dựng phương pháp tối ưu dựa trên sinh mã mô phỏng và phát triển framework DSL, T4 hỗ trợ tối ưu
Xây dựng phương pháp tối ưu phần mềm nhúng dựa trên sinh mã mô phỏng: xây dựng từ điển thao tác cơ bản để ước lượng cho mỗi tác vụ như: đọc tệp, ghi tệp, đọc ghi bộ nhớ; mỗi phần mềm nhúng được thiết kế theo các thao tác cơ bản trong từ điển; sinh mã mô phỏng các tác vụ dựa trên các thao tác cơ bản và các đoạn code mẫu ứng với các thao tác cơ bản (các đoạn code mẫu có thể thao các ngôn ngữ, môi trường khác nhau để tùy biến việc sinh mã); chạy mã mô phỏng trên thiết bị thực tế, thống kê, đánh giá, lựa chọn mô hình tốt nhất
Phát triển framework DSL và T4 hỗ trợ tối ưu: DSL để thiết kế mô hình, T4
để sinh mã thực thi từ mô hình Phương pháp này sẽ
tối ưu, mô hình tối ưu
Tối ưu dựa trên đánh giá biểu đồ lớp, DSL và T4
ưu Pareto dựa trên DSL và T4 Tối
ưu dựa trên đánh giá trực tiếp kiến trúc tĩnh của phần mềm nhúng (biểu đồ Class) Trong các mô hình đặc tả phần mềm, mô hình class là mô hình đặc tả phần mềm hướng đối tương quan trọng Các độ đo dựa trên mô hình class cũng được nghiên cứu rộng rãi nhằm đánh giá các khía cạnh chất lượng phần mềm như
độ phức tạp mô hình, khả năng bảo trì, khả năng tái sử dụng… Tuy nhiên việc
Trang 29đánh giá hiệu năng, kích thước trên mô hình class chưa được nghiên cứu nhiều đặc biệt là thiết kế hướng đối tượng phần mềm nhúng Có thể thực hiện tối ưu đơn mục tiêu (tối ưu hiệu năng) hay tối ưu đa mục tiêu Pareto Phương pháp này
C
ẫ
phương pháp này để nghiên cứu và triển khai tiếp ở chương sau.
Trang 30
3 CHƯƠNG 3
TỐI ƯU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ DỰA
TRÊN CHUYỂN ĐỔI MÔ HÌNH
3.1 Ý tưởng và quy trình triển khai
Tối ưu dựa trên biến đổi mô hình là một hướng tối ưu theo cách tiếp cận đánh giá trực tiếp mô hình hiện đang được quan tâm nghiên cứu Theo phương pháp này, từ mô hình thiết kế ban đầu, áp dụng các phép biến đổi trên mô hình để đưa về mô hình tối ưu dựa trên các hàm đánh giá đã xây dựng Tối ưu phần mềm dựa trên biến đổi mô hình tuy đang được quan tâm, nghiên cứu nhưng vẫn còn gặp nhiều thách thức Thứ nhất là khó đánh giá hiệu năng, kích thước bộ nhớ và điện năng tiêu thụ trong giai đoạn thiết kế Trong giai đoạn thiết kế chỉ có các mô hình phần mềm nên việc đánh giá được thực hiện dựa trên mô phỏng và phân tích
mô hình Thứ hai là xây dựng các phép biến đổi trên mô hình và kiểm tra tính đúng đắn của các phép biến đổi Thứ ba là khó thực hiện tự động quá trình lấy tham số từ mô hình, đánh giá và biến đổi mô hình cũng như chuyển từ các tham
số đặc tả thành mô hình Cuối cùng, vấn đề kiểm chứng kết quả tối ưu trong giai đoạn thiết kế là cần thiết và cũng là một thách thức Vì vậy luận văn đưa ra cách tiếp cận mới dựa trên DSL và T4 để tối ưu phần mềm nhúng trong giai đoạn thiết
kế dựa trên biến đổi mô hình Quy trình nghiên cứu tổng thể được biểu diễn ở hình 3-1 như sau:
Trang 31Hình 3-1 Quy trình triển khai
3.2 Các phép biến đổi trên mô hình
Trong phần này chúng tôi tập trung nghiên cứu các phép biến đổi mô hình cấu trúc dữ liệu của phần mềm nhúng trong giai đoạn thiết kế dựa trên các thành phần cấu trúc dữ liệu như phân chia cấu trúc, gộp cấu trúc, loại bỏ thuộc tính dư thừa, chuyển đổi thuộc tính, tạo thuộc tính tạm, loại bỏ quan hệ hai chiều giữa hai cấu trúc, dựa theo nghiên cứu của Keller [3] Trong nghiên cứu này tác giả chưa chứng minh tính đúng đắn và không đưa ra giải pháp cũng như các tiêu chí để thực hiện tự động các biến đổi Trong phần này, chúng tôi đưa thêm ba phép biến đổi là thu gọn kiểu dữ liệu, chuyển đổi tham số của các phương thức thành các thành viên dữ liệu của lớp và chuyển đổi từ tĩnh sang động và ngược lại để tối ưu hiệu năng
3.2.1 Phân chia cấu trúc
Phép biến đổi này nhằm phân chia một cấu trúc thành nhiều cấu trúc theo tần
số truy suất thành phần dữ liệu và tần số thực hiện hàm Các thành phần có tần số truy xuất lệch nhau nhiều sẽ được tách thành cấu trúc riêng Các tần số này phụ thuộc vào nhà thiết kế Vấn đề cốt yếu ở đây là tần số và số lượng phân chia như
Trang 32thế nào, để giải quyết vấn đề này chúng ta có thể sử dụng thuật toán phân cụm để thực hiện phân chia
Hình 3-2 là một ví dụ về phép phân chia cấu trúc, từ cấu trúc lớp ban đầu được chia thành 2 cấu trúc lớp khác nhau
Hình 3-2 Ví dụ về chuyển đổi phân chia cấu trúc Thực hiện phân chia cấu trúc có thể cải tiến mức chiếm dụng bộ nhớ của chương trình Hơn nữa, chuyển đổi này có thể làm giảm năng lượng tiêu thụ của ứng dụng Giả sử có hai cấu trúc được tạo mới đặt trong hai bộ nhớ khác nhau, mỗi bộ nhớ tùy theo kích thước của cấu trúc, truy cập bộ nhớ để thực hiện truy cập này tốn ít năng lượng hơn
3.2.2 Gộp cấu trúc
Hình 3-3 Ví dụ về chuyển đổi gộp cấu trúc
Phép biến đổi này dựa trên đánh giá toàn bộ mô hình dữ liệu sau khi đã phân tích các cấu trúc Phép biến đổi phân chia dựa trên phân tích từng cấu trúc để phân chia Điều này dẫn đến có thể tồn tại nhiều cấu trúc khác nhau mà tần số
Trang 33truy xuất của các thành phần lại gần như nhau Do đó, chúng tôi đưa ra phép biến đổi gộp cấu trúc sẽ giải quyết vấn đề này bằng cách hợp nhất mọi cấu trúc thành một cấu trúc sau đó mới phân chia Tuy nhiên với phép biến đổi này, đóng gói của hệ thống có thể bị phá vỡ và cũng chỉ sử dụng trong giới hạn các thành phần
dữ liệu và các hàm bình đẳng và có thể truy xuất từ các cấu trúc khác nhau
Chuyển đổi này có thể cải tiến mức chiếm dụng bộ nhớ của chương trình vì một vài cấu trúc được hợp nhất vào một cấu trúc Ngoài ra toàn bộ truy cập dữ liệu cũng được giảm vì không phải mỗi giá trị được truy cập riêng giao nhau Hình 3-3 là một ví dụ về phép gộp cấu trúc
3.2.3 Thay đổi thứ tự mối quan hệ
Chuyển đổi này nhằm thay đổi thứ tự các mối quan hệ giữa các cấu trúc Chuyển này đổi này nên được áp dụng nếu các cấu trúc không được truy cập theo thứ tự thì thứ tự mới sẽ thể hiện trạng thái truy cập của các cấu trúc chính xác hơn Hình 3-4 là một ví dụ về phép thay đổi thứ tự mối quan hệ
Hình 3-4 Ví dụ về chuyển đổi thay đổi thứ tự mối quan hệ
Chuyển đổi này không làm giảm bộ nhớ chiếm dụng vì không có các giá trị
dữ liệu được thêm hay xóa đi Truy cập dữ liệu giảm vì tăng truy cập do một thứ
tự khác nhau
Trang 343.2.4 Hướng giới hạn của mối quan hệ
Hình 3-5 Ví dụ chuyển đổi hướng giới hạn mối quan hệ Chuyển đổi này làm giảm hướng giữa hai lớp từ hai chiều hướng thành một chiều Chuyển đổi này được áp dụng khi hai lớp có mối quan hệ hai chiều nhưng lại không sử dụng được, có nghĩa là chỉ có một lớp gọi được lớp khác Mỗi chiều trong đó một mối quan hệ được định vị, bổ sung dữ liệu vào lớp mục tiêu cần phải được lưu, sau đó đưa ra tổng chi phí cho việc lưu trữ, truy cập và kiểm tra
dữ liệu Khi thực hiện chuyển đổi này có thể cải tiến mức chiếm dụng bộ nhớ của chương trình nhờ việc giới hạn hướng và số lượng truy cập dữ liệu cũng giảm Hình 3-5 là một ví dụ về phép hướng giới hạn mối quan hệ
3.2.5 Hoạt động đặc trưng
Phép chuyển đổi này nhằm tạo các hàm đặc trưng cho mỗi cấu trúc để tránh việc cùng truy cập vào các cấu trúc theo phương pháp tổng quát, phương pháp mới, riêng cho mỗi cấu trúc được tạo Hình 3-6 là một ví dụ về phép tạo hoạt động đặc trưng
Hình 3-6 Ví dụ chuyển đổi tạo hoạt động đặc trưng
Trang 35Trong chuyển đổi này toàn bộ số lượng truy cập dữ liệu được giảm do gọi trực tiếp tới hàm của chính cấu trúc đó Tổng thể bộ nhớ chiếm dụng của ứng dụng không tăng lên vì không có đối tượng dữ liệu nào được tạo ra hay xóa đi
3.2.6 Chuyển thuộc tính thành tham số
Hình 3-7 Ví dụ chuyển thuộc tính thành tham số
Chuyển đổi này sẽ lập các biến tạm thời như đầu vào và đầu ra của phương thức/hàm Khi chương trình được thực thi thì thuộc tính này được tạo ra như một biến cục bộ tạm thời Trong chuyển đổi này số lượng truy cập dữ liệu không thay đổi, khi chức năng của ứng dụng như trước (nghĩa là thuộc tính vẫn ghi và đọc như trước đây) Hình 3-7 là một ví dụ về phép chuyển thuộc tính thành tham số Chuyển đổi này làm giảm bộ nhớ chiếm dụng theo thời gian sống của ứng dụng Do các thuộc tính đang được tạo ra trên stack hiện tại chứ không phải trên heap Khi nó không được sử dụng, ví dụ như không ghi hoặc đọc thì nó không chiếm không gian bộ nhớ
Trang 363.2.7 Loại bỏ các thuộc tính dư thừa
Hình 3-8 Ví dụ chuyển đổi loại bỏ các thuộc tính dư thừa
Trong chuyển đổi này thì các thuộc tính dư thừa được loại bỏ Một thuộc tính dư thừa, tức là nó không được sử dụng, đã lưu hành rồi, đã lấy thông tin rồi Khi thực hiện chuyển đổi này thì bộ nhớ chiếm dụng giảm do việc xóa đi một thuộc tính Các thuộc tính thay thế cho các thuộc tính xóa đi sẽ được phân bổ trong trường hợp khác nên không làm tăng dung lượng bộ nhớ cấp phát Hình 3-8
là một ví dụ về phép loại bỏ các thuộc tính dư thừa
3.2.8 Chuyển thuộc tính thành lớp
Chuyển đổi này nhằm chuyển một thuộc tính thành một lớp riêng kết nối với lớp ban đầu thành một tập hợp Sử dụng một tập các mối quan hệ dựa vào đặc tính của tập hợp cùng với các đặc tính chính và phụ Chuyển đổi này nên được áp dụng khi một thuộc tính lớn, phức tạp và truy cập thường xuyên được gặp Hình 3-9 là một ví dụ về phép chuyển đổi thuộc tính thành lớp
Hình 3-9 Ví dụ chuyển đổi thuộc tính thành lớp
Trang 37Việc chuyển đổi một thuộc tính thành một lớp không mong đợi làm thay đổi
số lượng truy cập dữ liệu cũng như làm giảm dung lượng bộ nhớ chiếm dụng Tuy nhiên chuyển đổi này khởi đầu cho nhiều chuyển đổi với ưu và nhược điểm khác nhau, như đã trình bày ở trên
3.2.9 Thu gọn kiểu dữ liệu
Đây là phép biến đổi đơn giản nhưng hiệu quả trong cả cải tiến hiệu năng và
bộ nhớ Tư tưởng của phép biến đổi này dựa trên miền giá trị của các thành viên
dữ liệu để chuyển kiểu dữ liệu về kiểu nhỏ nhất chứa được miền giá trị Để thực hiện phép biến đổi này, trong quá trình thiết kế mô hình dữ liệu cần chỉ rõ miền giá trị của mỗi thuộc tính Hơn nữa, khi thiết kế siêu mô hình để xây dựng công
cụ DSL cũng cần định nghĩa thêm thuộc tính miền giá trị cho mỗi thành viên dữ liệu
3.2.10 Chuyển tham số thành thuộc tính
Dựa trên việc xây dựng hàm đánh giá hiệu năng trình bày phần sau, có thể chứng minh được thời gian thực thi một phương thức với tham số truyền vào sẽ nhiều hơn thời gian thực thi phương thức đó khi sử dụng các thành phần dữ liệu thay cho các tham số Điều này hiển nhiên đúng vì việc sử dụng các tham số sẽ mất thêm thời gian cấp phát bộ nhớ và gán giá trị cho các tham số này Do đó, để cải tiến hiệu năng, chúng tôi đề xuất và xây dựng phép biến đổi chuyển tham số thành thuộc tính Để đảm bảo việc truy xuất các thành phần tĩnh và động trong chương trình hướng đối tượng, các tham số của các phương thức tĩnh sẽ được chuyển thành các thành phần dữ liệu tĩnh và các tham số của các phương thức động sẽ được chuyển thành các thành phần dữ liệu động
Mặc dù phép biến đổi này cải tiến hiệu năng nhưng cũng làm tăng dung lượng bộ nhớ chiếm dụng Điều này có thể chỉ ra dựa vào công thức đánh giá bộ nhớ trong phần sau Do đó, khi xây dựng chương trình biến đổi tự động trên mô hình để tối ưu hiệu năng, cần xác định thêm các ràng buộc để không làm dung lượng bộ nhớ chiếm dụng tăng nhiều Điều này rất quan trọng đối với phần mềm nhúng khi bộ nhớ trong các thiết bị nhúng thường có kích thước nhỏ Ở đây chúng tôi xây dựng ràng buộc thực hiện phép biến đổi này dựa vào tần số sử dụng của các phương thức
Trang 38tự động và tối ưu
3.3 Xây dựng hàm đánh giá hiệu năng và bộ nhớ chiếm dụng
Để 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
Trang 39tá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ừ S 1 đến S 6 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 S 1 đến S 6 đượ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
Kích thước các biến tĩnh S 1 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
S 2 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
Trang 40Bảng 3-2 Các tham số sử dụng để đánh giá hiệu năng
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 X j Là thuộc tính tĩnh, được cấp phát bộ nhớ khi
nạp chương trình X j là thuộc tính tĩnh thứ j trong một lớp
Các biến đối tượng Y j Là thuộc tính của đối tượng, được cấp phát bộ
nhớ khi đối tượng được tạo Y j là biến instance thứ j của lớp
Tham số phương
thức
P k 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
B i 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
C i 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
D i 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
E i 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ố F j Số các tham số trong phương thức j
(3.1)
(3.2)
(3.3)