ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
BÙI ANH TÚ
MỘT SỐ PHƯƠNG PHÁP TỐI ƯU NĂNG
LƯỢNG TIỂU THU CHO CAC THIET BỊ DIĐỘNG DỰA TRÊN PHÂN TÍCH MÃ NGUÔN
LUẬN ÁN TIEN SĨ KY THUAT PHAN MEM
Ha Noi - 2024
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
BÙI ANH TÚ
MỘT SỐ PHƯƠNG PHÁP TỐI ƯU NĂNG
LƯỢNG TIEU THU CHO CÁC THIET BỊ DIĐỘNG DUA TREN PHAN TÍCH MA NGUON
Chuyên ngành: Kỹ thuật phần mềmMã số: 9480103.01
LUẬN ÁN TIEN SĨ KY THUẬT PHAN MEMNGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS Trương Ninh Thuận
Hà Nội - 2024
Trang 3Lời cam đoan
Tôi xin cam đoan luận án “Một số phương pháp tối ưu năng lượng tiêu
thụ cho các thiết bị di động dựa trên phân tích mã nguồn” là công trình
nghiên cứu của riêng tôi Các số liệu, kết quả được trình bày trong luận án là
hoàn toàn trung thực và chưa từng được công bố trong bất kỳ một công trình
nào khác.
m Tồi đã trích dẫn đầy đủ các tài liệu tham khảo, công trình nghiên cứu liênquan ở trong nước và quốc tế Ngoại trừ các tài liệu tham khảo này, luận
An hoàn toàn là công việc của riêng tôi.
m Trong các công trình khoa học được công bố trong luận án, tôi đã thể hiện
rõ ràng và chính xác đóng góp của các đồng tác giả và những gì do tôi đã
đóng góp.
a Luận án được hoàn thành trong thời gian tôi làm Nghiên cứu sinh tại Bộ
môn Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại họcCông nghệ, Đại học Quốc gia Hà Nội.
Tác giả:
Hà Nội:
Trang 4Lời cảm ơn
Trước hết, tôi muốn bay tỏ sự biết ơn đến PGS.TS Trương Ninh Thuận, cánbộ hướng dẫn, người đã trực tiếp giảng dạy và định hướng tôi trong suốt thờigian thực hiện luận án này Thầy đã hướng dẫn cho tôi nhiều kiến thức trong
học thuật và phương pháp nghiên cứu Vinh dự lớn cho tôi khi được học tập,
nghiên cứu dưới sự hướng dẫn của Thầy.
Tôi xin bày tỏ sự biết ơn sâu sắc đến các thầy, cô trong Bộ môn Công nghệphần mềm vì sự tận tâm, giúp đỡ và các đóng góp rất hữu ích cho luận án củacác thầy, cô.
Tôi xin trân trọng cảm ơn Ban Giám hiệu, Khoa Công nghệ thông tin và
Phòng Đào tạo trường Dại học Công nghệ - Đại học Quốc gia Hà Nội đã tạođiều kiện cho tôi trong suốt quá trình học tập và nghiên cứu tại Trường.
Tôi cũng bày tổ sự biết ơn đến Ban Giám hiệu, Khoa Công nghệ thông tin,các phòng trong Trường Dại học Công nghệ Thông tin và Truyền thông - Đạihọc Thái Nguyên đã tạo điều kiện về thời gian và tài chính cho tôi thực hiệnluận án này Tôi muốn cảm ơn đến các đồng nghiệp tại Trường Đại học Côngnghệ Thông tin và Truyền thông - Đại học Thái Nguyên đã giúp đỡ, động viênvà sát cánh bên tôi trong suốt quá trình nghiên cứu.
Tôi muốn cảm ơn đến tất cả những người bạn của tôi, các anh chị nghiên cứusinh đã luôn động viên, chia sé với tôi trong những giai đoạn khó khăn nhất của
Trang 5Tóm tắt
Nghiên cứu ảnh hưởng của phần mềm đối với sự tiêu thụ năng lượng trên
các thiết bị di động được coi là hướng tiếp cận hiệu quả để cải thiện hiệu năng,đồng thời giảm thiểu sự tiêu thụ năng lượng trên các thiết bị di động Trong cácnghiên cứu về năng lượng, các mô hình toán học được đề xuất để biểu diễn các
tác động của phần mềm tới sự tiêu thụ năng lượng trên thiết bị di động, từ đóđưa ra các giải pháp phân tích, đánh giá, cải thiện chất lượng của phần mềm.
Đã có nhiều mô hình được đề xuất, tuy nhiên chưa có một mô hình nào biểu
diễn đầy đủ sự ảnh hưởng của mã nguồn chương trình tới mức tiêu thụ nănglượng của thiết bị di động.
Luận án tập trung nghiên cứu sự ảnh hưởng trực tiếp của mã nguồn phầnmềm tới mức độ tiêu thụ năng lượng của các thiết bị di động Bằng kỹ thuật
phân tích chương trình tĩnh, luận án xây dựng một mô hình biểu diễn sự phụ
thuộc giữa mã nguồn của chương trình và mức tiêu thụ năng lượng của thiết bịđi động Dựa vào mô hình đã xây dựng, luận án đề xuất các thuật toán và côngcụ ước lượng mức độ tiêu thụ năng lượng của thiết bị di động, phương pháp tối
ưu bộ kiểm thử tính chất năng lượng và phương pháp giảm tải mức độ tiêu thụ
năng lượng cho thiết bị di động.
Các đóng góp chính của luận án bao gồm:
(i) Dé xuất mô hành va phương pháp tước lượng múc độ tiêu thụ năng lượng
trên các thiết bi di động dựa trên phân tích mmã nguồn Luận ấn tập trungphân tích sự ảnh hưởng của mã nguồn phần mềm tới mức độ tiêu thụ nănglượng, từ đó xây dựng mô hình tiêu thụ năng lượng cho từng phần cứng,
thiết bị di động dưới tác động của các câu lệnh điều khiển trong mã nguồn.
Mô hình được định nghĩa dưới dạng các ôtômát năng lượng để biểu diễn
sự thay đổi mức độ tiêu thụ năng lượng dưới sự điều khiển của mã nguồn
chương trình Dựa trên mô hình ôtômát năng lượng, luận án tiếp tục đềxuất phương pháp ước lượng mức độ tiêu thụ năng lượng theo thời gian
cho các ca sử dụng Một công cụ ước lượng được triển khai nhằm hỗ trợcho đội ngũ phát triển phần mềm tính toán mức năng lượng tiêu thụ dựa
vào mô hình mà không phải thực thi các ca sử dụng trên thiết bị di động.So sánh với số liệu đo lường bằng thiết bị chuyên dụng, công cụ ước lượng
11
Trang 6đã chứng minh tính đúng đắn và tính hiệu quả của phương pháp với kếtquả ước lượng có độ sai số nhỏ.
(ii) Dé xuất phương pháp tối wu bộ kiểm thử tính chất năng lượng dựa trên
phân tích mã nguồn Dựa trên mô hình ôtômát năng lượng kết hợp với kỹ
thuật phân tích đồ thị dòng điều khiển, luận án đề xuất thay đổi đồ thịdòng điều khiển bằng cách bổ sung các trọng số năng lượng và đánh dấucác nút trên đồ thị dòng điều khiển có trọng số lớn làm cơ sở đánh giá độphủ và hệ số phủ năng lượng của mỗi ca kiểm thử Tiếp theo, luận án đềxuất các thuật toán để tính toán tỷ lệ phát hiện lỗi của các ca kiểm thử vàthuật toán lựa chọn các ca kiểm thử tốt nhất đưa vào bộ kiểm thử tối ưu.
Kết quả thực nghiệm cho thấy bộ kiểm thử tối ưu có kích cỡ nhỏ hơn rất
nhiều so với bộ kiểm thử ban đầu trong khi độ phủ tương đương.
(iii) Dé xuất phương pháp giảm tải sự tiêu thụ năng lượng cho thiết bị di độngdựa trên phân tích mã nguồn Luận ấn đề xuất phương pháp giảm tải việcxử lý các tác vụ cho thiết bị đi động trong mô hình điện toán đám mây di
động nhằm giảm thiểu sự tiêu thụ năng lượng Bằng cách ứng dụng phương
pháp ước lượng mức tiêu thụ năng và phân tích các ràng buộc về mặt thời
gian thực hiện tác vụ, luận án đã xây dựng một hàm mục tiêu và các thuật
toán để giảm tải cho thiết bị đi động bằng cách đưa một số tác vụ lên máychủ điện toán đám mây để xử lý Kết quả thực nghiệm cho thấy phương
pháp đề xuất đã giúp thiết bị di động tiết kiệm năng lượng đồng thời tối
ưu thời gian thực thi.
Luận án đóng góp giải pháp về mặt lý thuyết và công cụ giúp đội ngũ phát
triển phần mềm mở rộng khả năng phân tích sự tiêu thụ năng lượng, ước lượng
mức tiêu thụ năng lượng dựa vào mã nguồn Luận án đề xuất phương pháp tối
ưu bộ kiểm thử tính chất năng lượng, góp phần giảm thiểu thời gian thực hiệncác ca kiểm thử trong thực tế Luận án cũng trình bày một phương pháp giảmtải sự tiêu thụ năng lượng cho thiết bị di động có thể áp dụng trong thực tiễn
nhằm cải thiện chất lượng phần mềm.
Từ khóa: Kiểm chứng, kiểm thử, giảm tải, ước lượng, tiêu thụ năng lượng,
điện toán đấm mây di động, phân tích tĩnh.
1V
Trang 7Mục lục
TOM tat ằ.ằ-ÔÔÔÔÔÔÔÔÔÔÔÔÔÔ- iliMu UC cc cc cc cee eee eee ee ee ee ee ee ee ee ee eee eens iv
Danh mục các từ viết tắt c2 ix
Danh mục các thuật toan cece cc cee ce rece eee ence eee x
Chương 1 GIỚI THIỆU - 1
1.1 Đặt vấn đề 2Q 2n nh xa 11.2 Đóng góp của luận ấn 2n 51.3 Cấu trúc luận ấn ng ng ng nh vn v xy 7Chương 2 KIÊN THUC CƠ SỞ 10
2.1 Phân tích và biểu diễn chương trình 10
2.1.1 Phân tích chương trình 10
2.1.2 Các kỹ thuật biểu diễn chương trình 13
2.1.3 Ôtômát hữu hạn các trạng thấi 14
2.2 Một số vấn đề trong kiểm thử phần mềm 16
2.2.1 Khái niệm kiểm thử phần mềm 16
2.2.2 Các kỹ thuật kiểm thử phần mềm 16
2.2.3 Kiểm thử cấu trúC c 226222122 172.3 Thiết bị di động va van đề năng lượng 19
2.3.1 Thiết bị di động và cấu tạo phần cứng 20
2.3.2 Phần mềm trên thiết bị di động - 21
2.3.3 Vẫn đề năng lượng trên thiết bị di động 23
2.4 Két Chuong đa ences 26Chương 3 UGC LƯỢNG MUC TIEU THU NANG LƯỢNG CUACAC THIẾT BỊ DI DONG DUA TREN PHAN TÍCH MA NGUON283.1 GiGi thiGu so ii 28
Trang 83.2 Các nghiên cứu liên quan 2c c2 eee es 31
3.3 Mô hình hóa mức tiêu thụ năng lượng của thiết bị di động 34
3.3.1 Anh hưởng của mã nguồn tới sự tiêu thụ năng lượng 34
3.3.2 Mô hình hóa trang thái năng lượng cho các phần cứng 35
3.3.3 Mô hình hóa trạng thái năng lượng cho thiết bị di động 41
3.3.4 Ôtômát năng lượng cho ứng dụng di động 44
3.4 Ước lượng mức tiêu thụ năng lượng của thiết bị di động 47
3.4.1 Dac ta hình thức cho các ỦC 48
3.4.2 Bộ đếm thời gian trong mô hình trạng thái năng lượng ol3.4.3 Hệ số tiêu thu năng lượng tại mỗi trạng thái 51
3.4.4 Công thức ước lượng mức độ tiêu thụ năng lượng cho UC 55
3.5 Công cụ mô hình hóa và ước lượng mức tiêu thụ năng lượng 56
3.5.1 Công cụ trực quan hóa trang thái năng lượng 56
3.5.2 Công cụ ước lượng mức tiêu thu nang lượng 58
3.6 Thực nghiệm - 2Q nh sa 613.6.1 Công cụ thực nghiệm ccc c2 613.6.2 Kết quả thực nghiệm - 64
3.7 Thảo luận và đánh giá - Sa 643.7.1 Thảo luận về ôtômát năng lượng - 64
3.7.2 Đánh giá phương pháp ước lượng 66
3.8 Tổng kết chương 2220222122 67Chương 4 TOI UU BO KIEM THU TÍNH CHAT NANG LUGNGCUA PHAN MEM DI DONG DUA TREN PHAN TÍCH MA NGUON694.1 Giới thiỆU eee een ng Hung vn xa 694.2 Một số vấn đề trong kiểm thử tính chất năng lượng của phần mềm diỘNE ng ng ng HH HT HH ng kg kg k kg ng Hà hà kg ki và 714.2.1 Khái niệm về lỗi năng lượng 71
4.2.2 Phan loại lỗi năng lượng 73
4.2.3 Kiểm thử tinh chat năng lượng 74
4.3 Các nghiên cứu liên quan c2 een sa 754.4 Phương pháp tối ưu bộ kiểm thử tính chất năng lượng của phần mềm di501220115 - -(/ 77
4.4.1 Tong quan về bai toán tối ưu bộ kiểm thử tinh chất năng lượng 77
vil
Trang 94.4.2 Cải tiến đồ thị CFG cho bài toán tối ưu bộ kiểm thử tính chất năng
4.4.3 Tính toán hệ số phủ năng lượng cho các ca kiểm thử 84
4.5.1 Công cụ thực nghiém 2 ene nee 89
4.5.2 Dánh giá kết quả c2 22222222 91
4.6 Tổng kết chương : 2622222222112 1v 92
Chương 5 GIẢM TẢI SỰ TIÊU THỤ NĂNG LƯỢNG CHO THIẾT
BỊ DI ĐỘNG DUA TREN PHAN TÍCH MÃ NGUON 94
5.1 Giới thiỆU cece eee eect e eee eene ees 94
5.1.1 Mô hình điện toán đấm mây di động 955.1.2 Bài toán giảm tải trong mô hình điện toán đấm mây di động 96
5.3 Mô hình giảm tai cho các tác vụ trong mô hình điện toán đấm mây di
511211 99
5.3.1 Các nhân tố ảnh hưởng tới hiệu năng xử lý của thiết bị di động 100
5.3.2 Một số vấn đề trong giảm tải mức độ tiêu thụ năng lượng 101
5.3.3 Dề xuất mô hình giảm tải mức độ tiêu thụ năng lượng 103
5.4 Phương pháp giảm tải cho các tác vụ trong mô hình điện toán đấm mây
5.5.2 Dánh giá kết quả c2 2222222 ees 113
5.6 Tổng kết chương cence eee een nee enn 22 114
Chương 6 KẾT LUẬN c cà 117
6.1 Kết luận Q2 n2 n2 eee n eben en vu ened 117
vil
Trang 10Danh mục các công trình khoa học 122
Tài liệu tham khảo 123
vill
Trang 11AST Abstract Syntax Tree Cây cú pháp trttu tượng
CFG Control Flow Graph Đồ thị luồng điều khiển
CG Call Graph Đồ thi lời gọi
DFA Deterministic Finite Au- | Otomat hữu han đơn định
FA Finite Automata Otomat hữu han
ILP Integer Linear Programming | Quy hoach tuyén tinh nguyén
MCC Mobile Cloud Computing Điện toán đám mây di động
QoS Quality of Service Chat lugng dich vu
SDK Software Development Kit | Cong cu va phan mém ding dé phattriển ứng dụng
UC Use-Case Ca stt dung
ix
Trang 12Danh mục các hình vẽ1.1
Cấu trúc của luận An 2 ee 8
Ví dụ về một hàm chuyển trạng thái của DFA 15
Cac trạng thái năng lượng của bộ phát âm thanh 36
Sự chuyển trạng thái năng lượng của thiết bị di động 43
Sơ đồ đo lường mức tiêu thụ năng lượng 53
Thiết bị đo lường Keweisi KWS-MXIS 54
Tổng quan về PS§A vo 57Tổng quan về PCE TQ vo 59Kết quả ước lượng từ công cạẶ PCE 61
Đo lường mức tiêu thu năng lượng với AccuBattery - Pin 63
Xây dựng đồ thị CFG„ từ CFG Q.2 82Xây dựng đồ thi CFG~t từ CFG 22 ee 84Kiến trúc của mô hình điện toán đám mây di động 95
Mô hình giảm tải cho các tác vụ trong MCC 103
Biểu đồ so sánh tổng thời gian thực thi 113
Biểu đồ so sánh tổng mức năng lượng tiêu thụ 114
Biểu đồ so sánh khả năng tiết kiệm năng lượng và thời gian 115
Trang 13Danh mục các thuật toán
Sinh ôtômát năng lượng cho thiết bị di dong 45
Tối ưu ôtômát năng lượng thành phan cho ứng dụng cụ thể 47
Tính tổng trọng số năng lượng cho các nút v trong path; 80
Xác định trọng số năng lượng cực đại cho các nút trong đồ thị CFG 81Xác định các nút tiêu thụ năng lượng đủ lớn trên #⁄ŒG, 83
Tính hệ số phủ năng lượng cho các ca kiểm thử 86
Tối ưu bộ kiểm thử năng lượng 88
Thuật toán ra quyết định giảm tải cho thiết bị di động 110
XI
Trang 14Chương 1
GIỚI THIEU
1.1 Đặt vấn đề
Trong những năm gần đây, sự bùng nổ của thiết bị di động đặt ra nhiều
vấn đề phức tạp cho các nhà nghiên cứu Một trong các vấn đề được nhiều nhànghiên cứu đặc biệt quan tâm đó là vấn đề năng lượng trên các thiết bị di động.
Để đảm bảo tính di động cho các thiết bị, bộ phận lưu trữ năng lượng của thiếtbị thường được thiết kế với sự ưu tiên về kích thước để đảm bảo độ nhỏ gọn,
cũng vì thế mà thời gian sử dụng của các thiết bị di động luôn có một giới han
nhất định Để mở rộng giới hạn về thời lượng sử dụng, các nhà nghiên cứu phát
triển phần mềm tập trung vào việc nghiên cứu sự ảnh hưởng của phần mềm tới
sự tiêu thụ năng lượng, từ đó đưa ra các giải pháp nhằm tối ưu phần mềm giúpquá trình thực hiện các tác vụ ít tiêu tốn năng lượng của thiết bị hơn Dưới đây
là một số định hướng nghiên cứu phổ biến về năng lượng trên thiết bị di động.
Thứ nhất, van đề tính toán mức độ tiêu thụ năng lượng trên các thiết bị diđộng trong quá trình thực thi phần mềm Bài toán tính toán mức tiêu thụ nănglượng được giải quyết bằng hai phương pháp đó là đo lường thực tế và ước lượngdựa trên mô hình Phương pháp đo lường thực tế [89, 26] được thực hiện bằng
cách sử dụng các thiết bị chuyên dụng để lấy mẫu, đo lường mức độ tiêu thụ
năng lượng trong các điều kiện nhất định, từ đó đưa ra công thức về mức tiêuthụ năng lượng cho các ca sử dụng Phương pháp này cho ra kết quả tính toán
có độ chính xác tiệm cận với thực tế, nhưng phương pháp chỉ có thể áp dụng
cho các thiết bi di động với thông số phần cứng cố định và thực thi với một
phần mềm cụ thể Trong khi đó, kỹ thuật ước lượng sử dụng các phương pháp
mô hình hóa hoặc các công thức toán học để xây dựng mô hình tiêu thụ nănglượng của thiết bị di động dưới sự tác động của các câu lệnh điều khiển trong
chương trình Phương pháp ước lượng dựa mô hình [66, 113, 88] cho phép tính
toán được mức độ tiêu thụ cho nhiều thiết bị khác nhau với nhiều phần mềmkhác nhau, tuy nhiên độ chính xác của kết quả ước lượng trên mô hình còn tùythuộc vào phương pháp xây dựng mô hình và sự phù hợp của mô hình đối thiết
Trang 15bị di động hay phần mềm cụ thể.
Thứ hai, kiểm thử tính chất năng lượng là giải pháp cơ bản để phát hiện lỗi
năng lượng của các ứng dụng di động Hai hướng nghiên cứu trong kiểm thửtính chất năng lượng đó là sinh ra ca kiểm thử tính chất năng lượng và tối ưucác bộ kiểm thử tính chất năng lượng Đối với hướng nghiên cứu sinh ca kiểmthử tính chất năng lượng, các nghiên cứu sinh ca kiểm thử tính chất năng lượng
[50, 53, 65, 52, 20] đã đề xuất các phương pháp để tạo ra các ca kiểm thử nhằm
phát hiện các đoạn mã nguồn trong chương trình làm tiêu hao năng lượng lớnhoặc phát hiện ra lỗi về năng lượng Trong khi đó, quá trình thực thi các ca
kiểm thử tính chất năng lượng tốn kém chi phí hơn rất nhiều so với các ca kiểm
thử chức năng Do đó, các hướng nghiên cứu thứu hai về phương pháp tối ưu
bộ kiểm thử tính chất năng lượng [96, 53, 63, 61] có vai trò quan trọng trong
việc tối wu quy trình phát hiện lỗi năng lượng của phần mềm.
Thứ ba, vấn đề giảm thiểu sự tiêu thụ năng lượng trên thiết bị di động Ngoàiviệc phát hiện và gỡ các lỗi năng lượng nhằm giảm thiểu sự tiêu thụ năng lượngmột cách vô ích, thiết bị vẫn phải tiêu thụ năng lượng để xử lý các tác vụ cầnthiết Một giải pháp để giảm bớt sự tiêu thụ năng lượng là đưa các tác vụ sang
một hệ thống khác để xử lý Chăng hạn, trong mô hình điện toán đám mây di
động các tác vụ được đưa lên máy chủ điện toán đám mây để xử lý thay vì xử
lý tại thiết bi di động Tuy nhiên, chi phí về năng lượng trong quá trình vận
chuyển tác vụ từ thiết bị đi động lên máy chủ điện toán đám mây có thể lớn hơn
chi phí năng lượng khi xử lý tại chỗ, do đó việc tính toán chi phí năng lượng
trước khi quyết định vận chuyển tác vụ lên máy chủ điện toán đám mây là rất
cần thiết Từ đây các giải pháp giảm tải cho thiết bị di động ra đời với các thuậttoán ra quyết định giảm tải dựa trên việc đánh giá chi phí năng lượng trong cáctrường hợp thực thi tác vụ ở môi trường khác nhau Các nghiên cứu về giảmtải [59, 48, 111, 107, 37, 106] đã đóng góp nhiều giải pháp quan trọng giúp các
nhà phát triển phần mềm có được các thuật toán, công cụ để tích hợp vào ứngdụng di động nhằm giảm thiểu sự tiêu thụ năng lượng khi thực thi phần mềm.
Ba hướng nghiên cứu chính về năng lượng trên thiết bị di động đều dựa trêncác phân tích về sự ảnh hưởng của phần mềm đối với sự tiêu thụ năng lượng,trong đó mã nguồn của phần mềm đóng vai trò quyết đinh, tác động tới sự tiêuthụ năng lượng của thiết bị di động Trong các phương pháp nghiên cứu về tácđộng của mã nguồn của phần mềm tới sự tiêu thụ năng lượng của thiết bị di
động, phân tích chương trình là kỹ thuật được sử dụng phổ biến Dựa trên các
Trang 16kĩ thuật phân tích chương trình, nhiều nghiên cứu về năng lượng trên thiết bị diđộng đã dược công bố như tự động phân tích [42, 64, 72, 69, 42, 22, 109, 30, 77],
kiểm thử [108, 53, 51, 20], tái cấu trúc [21, 79], và cải tiến phần mềm [70, 62].Các nghiên cứu này đã đóng góp nhiều giải pháp giúp cho các nhà phát triển
phần mềm tạo ra các phần mềm ít tiêu tốn năng lượng hơn.
Một trong những nhiệm vụ quan trọng nhất trong các nghiên cứu về nănglượng trên thiết bị di động là tìm ra được sự tương quan giữa mã nguồn phan
mềm đối với sự tiêu thụ năng lượng, sự tương quan này thường được biểu diễn
bởi các mô hình năng lượng Mô hình năng lượng sau đó sẽ được sử dụng để
giải quyết các vấn đề như tính toán mức tiêu thụ năng lượng, kiểm thử tính
chất năng lượng hoặc giảm tai sự tiêu thụ năng lượng cho thiết bị di động Có
nhiều mô hình năng lượng đã được đề xuất để giải quyết các vấn đề về nănglượng trong phần mềm di động Cụ thể, mô hình [66, 113] cho phép phân tích
mức độ tiêu thụ năng lượng cho từng đoạn chương trình, trực quan hóa mức độ
tiêu thụ năng lượng trên mỗi dòng lệnh, giúp cho người lập trình có thể quan
sát, đánh dấu những đoạn mã nguồn gây ra mức độ tiêu thụ năng lượng lớn;
Shin Nakajima và các công sự [88] đề xuất mô hình để phân tích sự tiêu thụnăng lượng của phần mềm trên thiết bị di động, mô hình được áp dụng để mô
hình hóa trạng thái tiêu thụ năng lượng của các phần cứng của thiết bị; Nghiêncứu [89, 26] cho phép đo lường mức độ tiêu thu năng lượng trên các thành phầncứng bằng cách sử dụng các thiết bị chuyên dụng, từ đó đưa ra các công thức
tính toán mức tiêu thụ năng lượng cho các ca sử dụng.
Ngoài các ưu điểm kể trên, các mô hình biểu diễn sự ảnh hưởng của phầnmềm tới sự tiêu thụ năng lượng cũng bộc lộ một số nhược điểm Chẳng hạn,
nghiên cứu [66, 113] cho phép ước lượng mức tiêu thụ trên từng câu lệnh ma
không có sự liên kết với các câu lệnh khác, do đó khi xuất hiện lỗi về mặt ngữ
nghĩa làm cho các câu lệnh mâu thuẫn nhau thì kết quả ước lượng tổng thể của
cả đoạn mã nguồn sẽ bi sai lệch Nghiên cứu của Nakajima [88] cho phép môhình hóa trạng thái năng lượng của phần cứng nhưng chưa đưa ra phương pháp
biểu diễn trạng thái năng lượng tổng quát của thiết bi di động Nghiên cứu của
Nichanametla [89] và Carroll [26] đưa ra phương pháp đo lường mức tiêu thu
năng lượng cho các trạng thái hoạt động của phần cứng nhưng chưa phân tích
được sự tác động của mã nguồn đối với sự thay đổi trạng thái năng lượng Cácnhược điểm này khiến cho các mô hình không biểu diễn được một cách toàn diệnsự tác động của mã nguồn tới sự tiêu thụ năng lượng, do đó không thể áp dụng
Trang 17các mô hình này để đồng thời giải quyết ba vấn đề về năng lượng trên thiết bị
di động.
Sau khi phân tích uu nhược điểm của các phương pháp, luận án đề xuất các
giải pháp để giải quyết các vấn đề năng lượng trên thiết bị di động Mục tiêu
chính là tìm ra các phương pháp có thể ứng dụng trong quy trình phát triển
phần mềm nhằm tối ưu mức năng lượng tiêu thụ trên thiết bị di động Thứnhất, phương pháp ước lượng mức tiêu thụ năng lượng dựa trên phân tích mã
nguồn cho phép các nhà phát triển phần mềm tính toán trước mức độ tiêu thụ
năng lượng từ đó điều chỉnh mã nguồn giúp tối ưu năng lượng tiêu thụ Thứ
hai, phương pháp tối ưu các bộ kiểm thử giúp cải thiện quá trình phát hiện lỗi,
từ đó tránh được các lỗi tiêu hao năng lượng vô ích Thứ ba, phương pháp giảm
tải sự tiêu thụ năng lượng cho thiết bị di động trong mô hình điện toán đámmây di dong đã đề xuất các thuật toán ra quyết định xử lý tác vụ giúp thiết
bị di động giảm thiểu sự tiêu thụ năng lượng Luận ấn tập trung vào ba mục
tiêu chính: (i)Xay dung mô hành biểu diễn sự tiêu thu năng lượng của thiết bị
đi động dựa trên phân tích mã nguồn của phần mềm nhằm khắc phục các nhược
điểm của các mô hành đã có; (ii) Đề xuất các giải pháp, thuật toán để giải quyết
ba van dé vé năng lượng trên thiết bi di động bao gồm tước lượng mic tiêu thụ
năng lượng, tối uu bộ kiểm thử năng lượng va giảm tải sự tiêu thụ năng lượng;
(iti) Phát triển một số công cụ hỗ trợ quy trình phát triển phần mềm.
Phương pháp nghiên cứu của luận án là đánh giá các ưu nhược điểm của các
mô hình đã có, xem xét khả năng ứng dụng của các mô hình vào giải quyết cácvan đề về năng lượng Đồng thời, luận án tiến hành phân tích một số lượng lớn
các mã nguồn của ứng dụng di động để tìm ra mô hình phù hợp khắc phục đượccác nhược điểm của mô hình đã có và cho khả năng ứng dụng để giải quyết các
bài toán khác nhau như ước lượng, tối ưu bộ kiểm thử, giảm tải sự tiêu thụ
năng lượng.
Trong khuôn khổ phạm vi nghiên cứu, luận án sử dụng các kỹ thuật phântích chương trình tĩnh để phân tích các mã nguồn của ứng dụng di động: nghiêncứu các phương pháp mô hình hóa để xây dựng mô hình biểu diễn sự tiêu thụnăng lượng; đề xuất một số thuật toán để giải quyết các vấn đề về năng lượng
dựa trên mô hình và ứng dụng các kỹ thuật lập trình để xây dựng các công cụ
hỗ trợ cho đội ngũ phát triển phần mềm.
Đối tượng nghiên cứu chính của luận án là các phần mềm chạy trên các thiết
Trang 18bị di động Cu thé là mã nguồn của các ứng dụng di động và sự ảnh hưởng của
chúng tới việc tiêu thụ năng lượng của thiết bị di động Đồng thời, luận án cũng
quan tâm tới các mô hình năng lượng và ứng dụng của các mô hình này trong
việc giải quyết các vấn đề năng lượng trên thiết bị di động Từ đó, có sự đánh
giá, phân tích, tổng hợp và đề xuất những giải pháp mới.
Để hoàn thành các mục tiêu đã đặt ra, luận án tập trung nghiên cứu các nội
dung sau:
e® Nghiên cứu các mô hình biểu diễn sự tiêu thụ năng lượng trên các thiết bịđi động dưới sự tác động của phần mềm.
e Nghiên cứu các giải pháp tính toán, tối ưu, giảm tải mức độ tiêu thụ năng
lượng dựa trên mô hình.
e Dé xuất một mô hình biểu diễn sự tiêu thụ năng lượng của thiết bi dựa trên
việc phân tích mã nguồn của phần mềm, khắc phục một số nhược điểm của
các mô hình đã có.
e Dé xuất các thuật toán để ước lượng, tối wu bộ kiểm thử, giảm tải mức độtiêu thụ năng lượng dựa trên mô hình đã đề xuất.
e Xây dựng các công cụ theo các phương pháp đã đề xuất để hỗ trợ đội ngũ
phát triển phần mềm phân tích, ước lượng, tối ưu mã nguồn nhằm giảmthiểu mức tiêu hao năng lượng trong quá trình phần mềm được thực thi.1.2 Đóng gốp của luận án
Sau quá trình giải quyết bài toán với mục tiêu, đối tượng và nội dung nghiêncứu đã đề ra, luận án có các đóng góp chính sau đây:
(i) Đề xuất mô hành va phương pháp tước lượng năng lượng tiêu thụ trên cácthiết bị di động dựa trên phân tích mã nguồn Luận án đã tập trung phần
tích một số lượng lớn các đoạn mã nguồn của ứng dụng di động, xác địnhsự ảnh hưởng của mã nguồn tới sự tiêu thụ năng lượng của thiết bị di động.
Từ đó luận án đề xuất xây dựng mô hình biểu diễn sự tiêu thụ năng lượng
của các phần cứng và thiết bị di động dưới tác động của các câu lệnh trong
mã nguồn Mô hình sử dụng các ôtômát năng lượng để biểu diễn sự thayđổi mức tiêu thụ năng lượng của phần cứng và thiết bị Bằng phương pháp
phân tích chương trình tĩnh, luận án đề xuất phương pháp tự động sinh
Trang 19ôtômát năng lượng từ mã nguồn phần mềm Dựa vào ôtômát năng lượng,luận án tiếp tục đề xuất phương pháp ước lượng mức tiêu thụ năng lượngcủa thiết bị di động theo thời gian cho các UC Phương pháp ước lượngđược thực hiện dựa trên mô hình mà không cần phải thực thi các UC trênthiết bị vật lý giúp tiết kiệm chi phí cho quá trình tính toán Đồng thời,
luận án triển khai xây dựng một công cụ ước lượng mức tiêu thụ năng
lượng cho phép cài đặt trên các bộ lập trình như Android Studio và IntelliJ
theo dạng cài-cắm (plug-in).
(ii) Đề xuất phương pháp tối ưu bộ kiểm thử tính chất năng lượng của phan
mềm di động Dựa vào ôtômát năng lượng kết hợp với kỹ thuật phân tích
đồ thị luồng điều khiển, luận án đã đề xuất cải tiến đồ thị luồng điều khiểnbằng cách bổ sung trọng số năng lượng nhằm xác định các câu lệnh chương
trình gây ra mức tiêu thụ năng lượng lớn Kết hợp đồ thị luồng điều khiển
có trọng số năng lượng với phương pháp ước lượng đã đề xuất, luận án
đánh giá khả năng phát hiện lỗi của từng ca kiểm thử trong bộ kiểm thử
dựa trên các tiêu chí về độ phủ và hệ số phủ năng lượng, từ đó đưa ra thuật
toán lựa chọn các ca kiểm thử tốt nhất để đưa vào bộ kiểm thử tối ưu Kết
quả thực nghiệm trên các ứng dụng di động chứng minh khả năng tối ưu
và hiệu quả của phương phấp.
(iii) Đề xuất phương pháp giảm tải sự tiêu thu năng lượng cho thiết bị di động.
Vận chuyển các tác vụ lên máy chủ điện toán đám mây để xử lý là phươngpháp hiệu quả để giảm tải cho thiết bị di động Tuy nhiên, trước khi quyết
định vận chuyển mỗi tác vụ lên máy chủ điện toán đám mây, các chi phívề năng lượng và thời gian cần được tính toán để xác định hiệu quả của
việc giảm tải Bằng cách áp dụng phương pháp ước lượng mức tiêu thụnăng lượng đã đề xuất, luận án tiến hành tính toán chỉ phí năng lượng và
thời gian thực thi cho từng tấc vụ trong hai trường hợp, đó là thực thi
trên thiết bị di động và thực thi trên máy chủ điện toán đám mây Căncứ vào kết quả tính toán chi phí năng lượng và thời gian, luận án đề xuất
xây dựng một hàm mục tiêu và các thuật toán để ra quyết định đưa một
số tác vụ lên máy chủ điện toán đám mây nhằm giảm tải cho thiết bị diđộng Kết quả thực nghiệm của luận án đối với các ứng dụng di động cho
thấy phương pháp đề xuất đem lại hiệu quả tốt trong việc giảm thiểu chỉ
phí năng lượng và thời gian thực thi các tac vụ.
Các kết quả nghiên cứu của luận án góp phần bổ sung, hoàn thiện các mô
6
Trang 20hình, phương pháp ước lượng, tối ưu bộ kiểm thử tính chất năng lượng và giảmthiểu sự tiêu thụ năng lượng trên thiết bị di động Bên cạnh đó, các công cụ
được xây dựng từ các phương pháp đề xuất trong luận án đã hỗ trợ đội ngũ
phát triển phần mềm tối ưu mã nguồn để đảm bảo các yêu cầu về năng lượng
trên thiết bi di động.
1.3 Cau trúc luận án
Luận án bao gồm sáu chương Trong đó, Chương | Gidi thiệu trình bày vềlý do thực hiện đề tài, phạm vi, đối tượng, phương pháp, nội dung nghiên cứu,các đóng góp và cấu trúc của luận án Các chương tiếp theo của luận án được
tổ chức như Hình 1.1 và có nội dung lần lượt như sau:
Chương 2 Kiến thúc cơ sở trình bày về các kiến thức nền tảng được sử dụng
trong các chương tiếp theo Mở đầu của chương này, luận án trình bày một số
kỹ thuật phân tích chương trình trong đó tập trung vào các kỹ thuật phân tích
chương trình tĩnh O mục kế tiếp, luận án tổng hợp một số kiến thức về kiểm
thử phần mềm, các kỹ thuật kiểm thử và phương pháp kiểm thử cấu trúc Cuối
cùng, luận án trình bày về đặc trưng của các thiết bi di động, van dé năng lượngtrên các thiết bị đi động và sự liên hệ giữa mã nguồn với năng lượng.
Chương 3 Ước lượng múc độ tiêu thu năng lượng của thiết bi di động dựa trênphan tích mã nguồn Chương này trình bày về phương pháp mô hình hóa sự tiêu
thụ năng lượng dựa trên phân tích mã nguồn chương trình, phương pháp ước
lượng mức tiêu thụ năng lượng và triển khai xây dựng một số công cụ trực quan
hóa, ước lượng mức tiêu thụ năng lượng cho thiết bị di động Đầu tiên, luận ántrình bày phương pháp mô hình hóa sự tiêu thụ năng lượng bằng các ôtômátnăng lượng, thuật toán hợp nhất tao ra ôtômát năng lượng của thiết bị di độngvà thuật toán tối ưu tạo ra ôtômát năng lượng của ứng dụng Tiếp theo, luận án
trình bày phương pháp bổ sung các hệ số tiêu thụ và bộ đếm thời gian vào các
trạng thái của ôtômát năng lượng, từ đó đưa ra các công thức ước lượng mức
độ tiêu thụ năng lượng dựa trên mô hình Cuối cùng, luận án trình bày một hệ
thống các công cụ hỗ trợ đội ngũ phát triển phần mềm trực quan hóa các trạng
thái năng lượng và ước lượng mức tiêu thụ năng lượng của thiết bị di động dựa
trên mô hình.
Chương 4 Tối uu bộ kiểm thử tính chất năng lượng của phần mềm di động
dựa trên phân tích mã nguồn Chương này giới thiệu một hướng tiếp cập trong
Trang 21Đóng góp chính của luận an
“ Chương 3: \
Đề xuất mô hình và phương pháp ước lượngmức tiêu thụ năng lượng cho thiết bị đi động
dựa trên phân tích chương trình.
Mục tiêu: Xây dựng một mô hình biểu diễnmức tiêu thụ năng lượng khắc phục được một
số hạn chế của các mô hình đã có Đề xuất
các phương pháp và xây dựng công cụ ước
lượng mức độ tiêu thụ năng lượng dựa trên
dựa vào mô hình và phương pháp
: | ước lượng đã đề xuất.
¡ | Mục tiêu: Cai tiến do thị luong điêu¡| khiển bằng cách bồ sung các trọngsố tiêu thụ năng lượng làm cơ sở xác
định khả năng phát hiện lỗi của các
ca kiểm thử, từ đó dé xuất các thuậttoán tối ưu bộ kiểm thử tính chất
ee luong.
cho thiết bị di động dựa vào phương
pháp ước lượng mức tiêu thụ năng
lượng đã đề xuất.
Mục tiêu: Ứng dụng phương pháp ước
lượng tính toán mức tiêu thụ năng
lượng cho các tác vụ, làm cơ sở đề xuấtphương pháp giảm tải cho thiết bị diđộng bằng cách ra quyết định xử lý một
so tac vụ trên máy chủ điện toán dam
may /
Chuong 6:
Két luan
Hình 1.1: Cau trúc của luận án.
việc tối ưu bộ kiểm thử tính chất năng lượng của phần mềm di động Luận ángiới thiệu phương pháp cải tiến đồ thị luồng điều khiển bằng cách kết hợp chúngvới các ôtômát năng lượng được đề xuất ở Chương 3 nhằm bổ sung các trọng số
năng lượng cho các nút trên đồ thị Tiếp theo, luận án trình bày phương pháp
Trang 22đánh giá khả năng phát hiện lỗi của các ca kiểm thử dựa vào độ phủ và hệ sốphủ năng lượng của các ca kiểm thử trên đồ thị luồng điều khiển đã được cảitiến, từ đó đưa ra thuật toán tối ưu bộ kiểm thử ban đầu Cuối chương, luậnán trình bày các kết quả thực nghiệm tối uu bộ kiểm thử với một phần mềm diđộng để chứng minh tinh đúng đắn của phương pháp đã đề xuất.
Chương 5 Giảm tải sự tiêu thụ năng lượng cho thiết bi di động dựa trên phantích mã nguồn Trong chương này, luận án đề xuất một phương pháp giảm tảimức tiêu thụ năng lượng cho thiết bi di động bằng cách sử dụng mô hình điệntoán đám mây di động Dầu chương, luận án giới thiệu mô hình điện toán đámmây di động và các vấn đề về năng lượng trong mô hình này Tiếp đến, luận
ấn trình bày một phương pháp giảm tải sự tiêu thụ năng lượng cho các tac vụđược xử lý trong mô hình đám mây di động, phương pháp nay cho phép tính
toán được mức tiêu thụ năng lượng của thiết bị di động trong cả hai trườnghợp thực thi tác vu, đó là thực thi trên thiết bị di động và thực thi trên máychủ điện toán đám mây Luận án đề xuất xây dựng một hàm mục tiêu nhằm
đánh giá kết quả thực thi các tác vụ, so sánh hai phương án thực thi tác vụ để
tìm kiếm giải pháp tối ưu nhất Luận án trình bày thuật toán giảm tải mức độtiêu thụ năng lượng của thiết bị nhưng vẫn đảm bảo các ràng buộc về mặt thời
gian Cuối chương, luận án trình bày các kết quả thực nghiệm để chứng minh
cho tính đúng đắn của phương pháp đã đề xuất.
Cuối cùng là Chương 6 Kết luận, chương này tiến hành phân tích về các ưu,
nhược điểm của từng phương pháp đã đề xuất và so sánh với một số phương
pháp nghiên cứu liên quan Từ đó, luận án thảo luận về các hướng nghiên cứutiếp theo trong tương lai.
Trang 23Chương 2
KIÊN THỨC CƠ SỞ
Chương này giới thiệu một số kiến thức làm cơ sở cho các nghiên cứu trongcác của luận án Đầu tiên, chương này trình bày một số kỹ thuật phân tích và
biểu diễn chương trình được sử dụng trong các nghiên cứu mô hình năng lượng,
ước lượng và giảm tải sự tiêu thụ năng lượng Tiếp theo, chương này trình bày
về một số vấn đề liên quan tới kiểm thử phần mềm, đây là cơ sở lý thuyết đểtriển khai các nghiên cứu về tối ưu bộ kiểm thử tính chất năng lượng Cuối cùnglà các kiến thức tổng quan về thiết bị di động và vấn đề năng lượng phục vụ
cho các nghiên cứu về ước lượng, đo lường và xây dựng các công cụ liên quan.
2.1 Phân tích và biểu diễn chương trình
2.1.1 Phân tích chương trình
Phân tích chương trình cho phép các nhà nghiên cứu hiểu và phát hiện một
số lỗi của chương trình trong giai đoạn lập trình Các trình biên dịch của các
ngôn ngữ lập trình cũng có thể phát hiện và cung cấp các thông tin liên quanđến lỗi cú pháp của chương trình, tuy nhiên chúng chưa thể phát hiện ra các lỗi
về năng lượng Các nhà nghiên cứu về phần mềm sử dụng các kỹ thuật phân
tích chương trình làm nền tảng để mở rộng khả năng phân tích đặc tính nănglượng của phần mềm Phân tích chương trình là phương pháp phổ biến được áp
dụng trong các nghiên cứu về tác động của phần mềm đối với mức độ tiêu thụnăng lượng của thiết bị.
Có hai cách tiếp cận chính trong hoạt động phân tích chương trình đó là:
(i) Phân tích chương trành tinh (static program analysis): Phương pháp này
thực hiện mà không cần thực thi chương trình, chủ yếu dựa vào việc phântích mã nguồn hoặc trên một ngôn ngữ mô hình hóa nhất định.
(ii) Phân tích chương trinh động (dynamic program analysis): Thực thì chương
trình trên các bộ vi xử lý thực tế cùng với bộ dữ liệu đầu vào, kiểm trakết quả đầu ra hoặc các phản ứng của hệ thống để kết luận chương trình
có thực hiện thỏa mãn các hành vi mong đợi.
10
Trang 24Phương pháp phân tích chương trình tĩnh cung cấp nhiều phương pháp luận
khác nhau làm nền tảng cho việc kiểm chứng, kiểm thử phần mềm Các bộ phân
tích chương trình tĩnh cho khả năng nắm bắt một cách chính xác và toàn diệnmô hình của phần mềm, xác định đầy đủ các đường thực thi của chương trìnhmà không cần phải thực thi phần mềm Do sự phù hợp của phương pháp đốivới các yêu cầu của bài toán, luận án sử dụng phương pháp phân tích chương
trình tĩnh [73] là phương pháp chủ yếu để phát triển các kĩ thuật phân tích đặc
tính năng lượng của phần mềm.
2.1.1.1 Một số phương pháp phân tích chương trình tĩnh
Phân tích chương trình tĩnh được sử dụng ở giai đoạn sớm của quá trình phát
triển, nó cho phép áp dụng với các tệp đơn lẻ hoặc toàn bộ mã nguồn mà không
phải thực thi chương trình.
Những kỹ thuật phân tích chương trình tĩnh đã và đang thu hút nhiều nghiên
cứu trên thế giới, hiện có nhiều kỹ thuật nhưng nhìn chung có thể phân theo4 nhóm chính, bao gồm: phân tích dòng điều khiển và dữ liệu, diễn giải trừutượng, kiểm chứng mô hình và phân tích tượng trưng.
Nhóm kỹ thuật được sử dụng trong luận án để giải quyết các bài toán năng
lượng là kỹ thuật phân tích chương trình tĩnh dựa trên phân tích dòng điều
khiển va dòng dữ liệu[100].
(i) Phân tích dòng điều khiển: là một trong các kỹ thuật được sử dụng phobiến để phân tích chương trình tĩnh Dòng điều khiển chương trình đượcmô hình hóa thành một đồ thị dòng điều khiển (Control Flow Graph -
CFG), được giới thiệu đầu tiên bởi Frances E Allen [15] CFG là đồ thị
có hướng được sử dụng để biểu diễn các khối mã dưới dạng các nút, sự
phụ thuộc điều khiển tạo thành các cạnh có hướng, bắt đầu với một nút
vào và kết thúc với điểm cuối của chương trình Việc xây dựng CFG cóthể được thực hiện dựa vào đồ thị cú pháp trừu tượng như là cây cú pháp
trừu tượng (Abstract Syntax Tree - AST)[102, 101] Đặc trưng chính củakỹ thuật này là xác định các thủ tục trong một chương trình gọi lẫn nhau
như thế nào cũng như xác định hàm nào được gọi một cách hiệu quả.
(ii) Phân tích dòng dữ liệu: Dựa trên biểu diễn trừu tượng của ngữ nghĩachương trình và tập trung vào xác định các giá trị có thể của dữ liệu nhằmbiểu diễn sự phụ thuộc của dữ liệu trong mã nguồn Phân tích dòng dữ liệu
có mục tiêu dự đoán tĩnh hành vi động của chương trình được phân tích.
11
Trang 25Phân tích dòng điều khiển tập trung vào việc phân tích từng câu lệnh điều
khiển để tạo ra mô hình đồ thị dòng điều khiển, phân tích dòng dữ liệu là một
quá trình thu thập thông tin về dữ liệu trong các đoạn mã được thực thi thựctế mà không cần phải chạy đoạn mã đó Phân tích dòng dữ liệu là một cách rấthiệu quả và khả thi trong việc phát hiện lỗi chương trình và tối ưu hóa trong
các trình biên dịch.
2.1.1.2 Một số công cụ phân tích chương trình tĩnh
Các công cụ phân tích chương trình tĩnh cho phép đọc vào mã nguồn, phân
tích cấu trúc tĩnh của chương trình và xây dựng các đồ thị nhằm biểu diễn
chương trình Có nhiều công cụ phân tích chương trình tĩnh, tuy nhiên luận
án sử dụng hai công cụ chính để phân tích mã nguồn đó là JavaParser [4] và
CFGBuilder [28], đây là hai bộ thư viện của Java cho phép phân tích cấu trúc
tĩnh của chương trình:
(i) JavaParser là thư viện cho phép phân tích trực tiếp các mã nguồn Java.JavaParser đọc trực tiếp vào mã nguồn và phân tích cau trúc của các tệp tin
Java, các lớp, phương thức, thuộc tính và các lệnh điều khiển trong chương
trình, từ đó cho phép các lập trình viên sử dụng dữ liệu mà JavaParser
cung cấp để phát triển các ứng dụng liên quan tới mã nguồn JavaParsersử dụng ba bước chính là phân tích, biến đổi và tạo dựng để xây dựng cây
cú pháp trừu tượng từ mã nguồn của chương trình.
(ii) CFGBuilder là thư viện được viết bằng ngôn ngữ Java Tương tự nhưJavaParser, CFGBuilder là công cụ phân tích mã nguồn tinh của chương
trình CFGBuilder có khả năng tự động sinh ra các đồ thị luồng điều khiển
từ mã nguồn chương trình thông qua hai bước Đầu tiên, mã nguồn được
biến đổi thành cây cú pháp trừu tượng, sau đó CFGBuilder sẽ tự động sinhra đồ thị luồng điều khiển từ cây cú pháp trừu tượng Ngoài ra, CFGBuilder
cho phép lấy các thông tin về các đỉnh, các cạnh trong đồ thị luồng điều
khiển một cách dễ dàng.
Trong luận án này, JavaParser được ứng dụng để phân tích mã nguồn một
cách tự động nhằm tạo ra mô hình năng lượng từ mã nguồn và xây dựng các
UC tượng trưng trong bài toán ước lượng mức độ tiêu thụ năng lượng trong
Chương 3 Trong khi đó, CFGBuilder được sử dung để tao dựng đồ thị luồngđiều khiển CFG từ mã nguồn nhằm phục vụ cho các bài toán tối ưu bộ kiểm
thử ở Chương 4 và giảm tải sự tiêu thụ năng lượng ở Chương 5.
12
Trang 262.1.2 Các kỹ thuật biểu diễn chương trình
Sau khi phân tích mã nguồn, tùy vào đặc trưng của các bài toán mà các
nhà nghiên cứu sẽ biểu diễn mã nguồn dưới dạng các mô hình khác nhau Cácnghiên cứu trong luận án có sử dụng tới hai kỹ thuật biểu diễn chương trình, làkỹ thuật biểu diễn sử dụng đồ thị lời gọi và đồ thị luồng điều khiển.
2.1.2.1 Đồ thị lời gọi
Đồ thị lời gọi [95, 14, 103] là một đồ thị biểu diễn mối quan hệ goi giữa cácchương trình con trong chương trình phần mềm Mỗi đỉnh của đồ thị biểu diễncho một ham và mỗi cạnh từ a đến b (được viết là (ø,b)) biểu diễn hàm a có gọitới hàm b Nhu vậy, một khuyên trong đồ thị biểu diễn một hàm với lời gọi lai
chính nó hay còn gọi là lời gọi hàm đệ quy.
Đồ thị lời gọi được chia thành hai loại chính: động va tĩnh Do thị gọi động
ghi lại quá trình thực thi trong một trường hợp cu thể của chương trình, do đó
Đồ thị gọi động chính xác, nhưng chỉ biểu diễn một lần chạy chương trình duynhất Trong khi đó, Đồ thi gọi tĩnh biểu diễn mọi nhánh thực thi của chươngtrình Vì vậy, thuật toán biểu diễn đồ thị gọi tĩnh thường rất phức tạp việc biểudiễn các tất cả quan hệ “gọi” có thể xảy ra nhưng trong thực tế mốt số quan hệ“goi” này có thể không bao giờ xảy ra.
2.1.2.2 Đồ thị luồng điều khiến
Đồ thị luồng điều khiển [85, 17, 12] là một đồ thị có hướng, trong đó mỗi nút
của đồ thị biểu diễn một lệnh hoặc khối lệnh trong mã nguồn (trong đó đoạn
mã lệnh đảm bảo không chứa lệnh nhảy) Các cạnh có hướng được sử dụng đểthể hiện các đường di trong luồng điều khiển Các cạnh nối từ đỉnh A đến đỉnhB (viết tắt là (A > B)) được hiểu là luồng điều khiển rời khỏi khối A và đi tới
khối B.
Đồ thị gọi và đồ thị luồng điều khiển đều sử dụng để biểu diễn cấu trúc tĩnh
chương trình, chúng đều được xây dựng dựa trên mã nguồn Tuy nhiên, CFG
thường được sử dụng để mô tả cấu trúc bên trong của các hàm trong khi đồ thịlời gọi được biểu diễn ở mức độ trừu tượng hóa cao hơn (mối quan hệ “goi” giữa
các lời gọi chương trình con) Luận án sử dụng đồ thị lời gọi trong các đề xuấtvề việc ước lượng mức độ tiêu thụ năng lượng của chương trình trong Chương
3 và đồ thi CFG trong các nghiên cứu tối ưu bộ kiểm thử ở Chương 4 và giảm
13
Trang 27tải sự tiêu thụ năng lượng ở Chương 5.
2.1.3 Ôtômát hữu hạn các trạng thái
Ôtômát hữu hạn là một mô hình tính toán của hệ thống với sự mô tả bởi
các đầu vào và đầu ra Tại mỗi thời điểm, hệ thống có thể được xác định ở mộttrong số hữu hạn các các trạng thái Mỗi trạng thái của hệ thống thể hiện sự
tóm tắt các thông tin liên quan đến những đầu vào đã chuyển qua và xác địnhcác phép chuyển kế tiếp trên dãy đầu vào tiếp theo.
Trong lĩnh vực phần mềm, ta có thể tìm thấy nhiều ví dụ về hệ thống trạng
thái hữu hạn và lý thuyết về ôtômát hữu hạn là một công cụ thiết kế hữu ích
cho các hệ thống này Chẳng hạn, mỗi phần cứng của thiết bị di động tồn tạiở các trạng thái tiêu thụ năng lượng khác nhau, các trạng thái này chuyển qualại do các tín hiệu điều khiển đầu vào, ta có thể mô tả nó như một ôtômát hữu
hạn trạng thái Tương tự như vậy, nếu xét ở góc độ tiêu thụ năng lượng, mỗi
thiết bị di động có thể là một ôtômát trạng thái với các trạng thái tiêu thụ khác
nhau và hữu hạn.
Lý do quan trọng nhất cho việc nghiên cứu các hệ thống trạng thái hữu hạnlà tính tự nhiên của khái niệm và khả năng ứng dụng đa dạng trong nhiều lĩnhvực thực tế ôtômát hữu hạn được chia thành hai loại: Đơn định và không đơnđịnh Cả hai loại ôtômát hữu hạn đều có khả năng nhận dạng chính xác tập
chính quy Ôtômát hữu hạn đơn định có khả năng nhận dạng ngôn ngữ dễ dàng
hơn ôtômát hữu hạn không đơn định, nhưng thay vào đó thông thường kíchthước của nó lại lớn hơn so với ôtômát hữu hạn không đơn định tương đương.
Các nghiên cứu trong luận án này chủ yếu sử dụng ôtômát hữu hạn đơn định.
Ôtômát hữu hạn đơn định:
Một ôtômát hữu hạn đơn định (Deterministic Finite Automata - DFA) gồm
một tập hữu hạn các trạng thái và một tập các phép chuyển từ trạng thái này
tới trạng thái khác trên các ký hiệu vào được chọn từ một bộ chữ cái nào đó
trong bang kí hiệu vào Ð Mỗi ký hiệu vào có đúng một phép chuyển khỏi mỗitrạng thái (có thể chuyển trở về chính nó) Dưới dây là định nghĩa về ôtômát
hữu hạn đơn định A:
Trong đó:
14
Trang 28Bảng 2.1: Ví dụ về một hàm chuyển trạng thái của DFA
Trạng thái Kí hiệu vào
0 1
q0 q2 q1
ql q3 q0q2 q0 q2q3 ql q3
Hình 2.1: Ví dụ về một hàm chuyển trang thái của DFA
Hàm chuyển trạng thai ð đóng vai trò điều khiển việc chuyển trang thái trongôtômát Hình 2.1 là một ví dụ về việc biểu diễn các trạng thái và mô hình chuyểntrạng thái của một ôtômát hữu hạn đơn định, hàm chuyển này còn có thể được
biểu diễn tương ứng dưới dạng Bảng 2.1.
15
Trang 292.2 Một số vẫn đề trong kiểm thử phần mềm
2.2.1 Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm là quá trình kiểm tra được tiến hành trên phần mềm
nhằm cung cấp cho các bên liên quan về chất lượng hoặc dịch vụ phần mềm.
Kiểm thử phần mềm cung cấp cho các bên liên quan một cách nhìn độc lập vềphần mềm từ đó cho phép đánh giá các rủi ro trong quá trình triển khai phần
Có triển khai được với các đặc tính tương tự hay không?
(iv) Có đáp ứng được nhu cầu của các bên liên quan hay không?
Quá trình kiểm thử phần mềm có thể được thực hiện trong bất kì pha nàocủa quy trình phát triển phần mềm, các phương pháp kiểm thử phần mềm được
xây dựng dựa trên các tính chất, đặc trưng của mỗi pha trong quy trình phát
triển phần mềm, do đó phương pháp kiểm thử bị chi phối theo một quy trình
nhất định.
2.2.2 Các kỹ thuật kiểm thử phần mềm
Có nhiều các kỹ thuật kiểm thử khác nhau, mỗi một kỹ thuật kiểm thử đượcxây dựng để phục vụ cho quá trình kiểm tra trong quy trình phát triển phần
mềm, dưới đây là một số kỹ thuật phổ biến:
(i) Kiểm thử chúc năng hay còn gọi là kỹ thuật kiểm thử hộp đen: Là kỹ thuậtkiểm thử dựa trên đặc tả chức năng của phần mềm Căn cứ vào yêu cầucủa chức năng, người thiết kế ca kiểm thử sẽ tạo ra các tập dữ liệu dựa để
đánh giá quá trình hoạt động của các chức năng mà không cần quan tâmtới cầu trúc bên trong của phần mềm Dây là một quy trình nhằm cố gắngtìm ra sự khác biệt giữa đặc tả và kết quả thực thi trên phần mềm.
(ii) Kiểm thử cấu trúc hay còn gọi là kỹ thuật kiểm thử hộp trắng: Là kỹ thuật
cho phép kiểm tra cấu trúc bên trong của phần mềm (mã nguồn), kỹ thuật
16
Trang 30này dam bao mỗi câu lệnh bên trong mã nguồn sẽ được thực thi ít nhất
một lần trong quá trình kiểm thử Kiểm thử hộp trắng dựa trên cấu trúc
của chương trình bằng cách sử dụng các thuật toán cụ thể, nó đòi hỏi ngườikiểm thử cần phải có hiểu biết nhất định về đoạn mã nguồn kiểm thử.
(iii) Kiểm thử hộp xám: Là kỹ thuật kết hợp giữa kiểm thử hộp đen và kiểm
thử hộp trắng Trong kiểm thử hộp xám, cấu trúc bên trong chương trình
được sử dụng để thiết kế các ca kiểm thử, tuy nhiên khi thực hiện kiểm
thử thì người kiểm thử lại đóng vai trò là người dùng cuối cùng để thựchiện các ca kiểm thử.
Ngoài các kỹ thuật kiểm thử đã trình bày ở trên còn có các kỹ thuật kiểmthử khác như kiểm thử động, kiểm thử tĩnh, kiểm thử phi chức năng Luận ánsử dụng chính là phương pháp kiểm thử cấu trúc, nội dung này sẽ được trình
bày chi tiết ở phần tiếp theo.
2.2.3 Kiểm thử cấu trúc2.2.3.1 Đồ thị kiểm thử
Đồ thị kiểm thử là đồ thị có hướng được sử dụng để định nghĩa nhiều tiêu chíđể kiểm thử cấu trúc Đồ thị kiểm thử được xây dựng từ cấu trúc của chươngtrình (chẳng hạn như các thủ tục hoặc hàm) Các lộ trình trong đồ thị kiểm thửtương ứng với các ca kiểm thử cho các đối tượng cần kiểm thử.
Đồ thị kiểm thử G được định nghĩa bao gồm tập các đỉnh N và tập các cạnh
- Một đường đi (path - hay còn gọi là một lộ trình) là một chuỗi các đỉnh
[n1,n2, , ng], trong đó mỗi cặp đỉnh liền kề [n;,n;] với 1 =< i,j <= k thuộc
Trang 31Đồ thị được sử dụng phổ biến nhất trong kiểm thử cấu trúc là đồ thị luồng
điều khiển D6 thị luồng điều khiển là đồ thị có hướng với tập đỉnh tương ứng
với các câu lệnh (hoặc nhóm câu lệnh) và các cạnh là các dòng điều khiển, đồ thịluồng điều khiển được xây dựng từ mã nguồn của chương trình hoặc các đoạn
chương trình.
2.2.3.2 Tiêu chí bao phủ
Một trong những van đề quan trọng trong kiểm thử đó là việc tạo ra các cakiểm thử với số lượng phù hợp và chất lượng cao nhất Trong kiểm thử có cấutrúc, mức độ bao phủ chương trình của một tập ca kiểm thử chính là độ đo kiểmthử Tập các ca kiểm thử có độ phủ cao hơn trên đồ thị CFG được đánh giá là
tốt hơn tập các ca kiểm thử có độ phủ thấp.
Độ bao phủ được tính bằng tỷ lệ giữa các thành phần được kiểm thử trêntổng số các thành phần sau khi đã thực hiện kiểm thử Có nhiều tiêu chí để
đánh giá độ bao phủ, dưới đây là một số tiêu chí bao phủ kiểm thử phổ biến:
- Bao phủ đỉnh (hay còn gọi là bao phủ câu lệnh): Yêu cầu thực thi các đường
đi kiểm thử sao cho tất cả các đỉnh trên đồ thị đều được thực hiện ít nhất
một lần Điều này đồng nghĩa với việc mỗi câu lệnh trong mã nguồn đềuđược thực thi ít nhất một lần.
- Bao phủ cạnh (hay còn gọi là bao phủ nhánh): Yêu cầu thực thi các đường
đi kiểm thử sao cho tất cả các cạnh trên đồ thị đều được đi qua ít nhất một
lần Nghĩa là mọi nhánh trong chương trình đều được thực thi ít nhất mộtlần.
- Bao phủ đường đi: Yêu cầu tất cả các đường đi đều được thực thi ít nhất
một lần trong quá trình kiểm thử Tuy nhiên, tiêu chí này rất khó đạt được
nếu trong các đoạn mã nguồn có chứa các vòng lặp vô hạn.
- Bao phủ đường di độc lập: Đối với các chương trình có chứa các vòng lặpvô hạn, số lượng các đường đi trong đồ thị sẽ là vô hạn Tuy nhiên, tồn tạimột tập con (nhỏ nhất) các đường đi cho phép tạo ra các đường đi còn lại,tập con các đường đi này gọi là tập các đường đi độc lập Số đường đi độc
lập của một đồ thị luồng điều khiển G bằng số điều kiện cộng với 1 Tiêu
chí bao phủ đường đi độc lập yêu cầu phải bao phủ tất cả các đường đi độc
lập theo cách tính toán trên.
18
Trang 322.2.3.3 Kiểm thử dựa trên đồ thị luồng điều khiển
Kiểm thử dựa trên đồ thị luồng điểu khiển nhằm tạo ra tập các ca kiểm thử
thỏa mãn các tiêu chí bao phủ như: Bao phủ đỉnh, bao phủ cạnh hoặc bao phủ
đường đi Tiêu chí bao phủ chính là điều kiện quan trọng để xác định đường đikiểm thử trên đồ thi CFG, từ đó tạo ra các ca kiểm thử tương ứng.
Quy trình kiểm thử dựa trên đồ thị luồng điều khiển được thực hiện qua các
bước dưới đây:
- Bước 1: Xây dựng đồ thị luồng điều khiển: Xuất phát từ mã nguồn
của chương trình, ta xây dựng đồ thị luồng điều khiển cho chương trình,đoạn chương trình bằng cách phân tích các câu lệnh, các dòng điều khiển.
Kết quả ta được một đồ thị CFG tương ứng với chương trình, đoạn chương
trình cần kiểm thử.
- Bước 2: Lựa chọn đường đi kiểm thử: Với đầu vào là đồ thị CFG kèm
theo tiêu chí kiểm thử, ta sử dụng các thuật toán trên đồ thị có hướng để
xác định được các đường đi thỏa mãn tiêu chí bao phủ theo yêu cầu Kếtquả của quá trình này là tập các đường đi được xây dựng từ đồ thị.
- Bước 3: Tạo các ca kiểm thử và thực hiện kiểm thử: Từ các đường
đi được tạo ra ở Bước 2, ta xây dựng tập các ca kiểm thử dựa trên tập cácđường di này và tiến hành kiểm thử.
2.3 Thiết bị di động và vấn đề năng lượng
Một trong những nội dung quan trọng của luận án là nghiên cứu sự ảnh
hưởng của mã nguồn tới mức độ tiêu thụ năng lượng của thiết bị Vì vậy, trongmục này luận án sẽ phân tích cấu trúc phần cứng của các thiết bị di động, trong
đó đặc biệt quan tâm tới van đề năng lượng Ngoài ra, phần này sẽ giới thiệu
về một số vấn đề liên quan tới phần mềm, các hệ điều hành và các công cụ lậptrình ứng dụng trên các thiết bi di động Van đề năng lượng trên các thiết bị diđộng sẽ được phân tích dựa vào các nghiên cứu đã công bố, từ đó đưa ra bức
tranh tổng quát nhất về các mô hình năng lượng trên các thiết bị di động dựa
vào việc phân tích mã nguồn.
19
Trang 332.3.1 Thiết bi di động và cấu tao phần cứng
Thiết bị di động được hiểu là một thiết bị máy tính đủ nhỏ để cầm và vận
hành trong tay Các thiết bị di động cung cấp giao diện màn hình cẩm ứng va
ban phim cảm ứng hoặc vật lý để con người có thể tương tác Các thiết bị di
động phổ biến hiện nay có thể kể đến đó là điện thoại thông minh, máy tinh
bảng và thiết bị đeo.
Hầu hết các thiết bị di động có thể kết nối Internet và kết nối với các thiết bị
khác như hệ thống giải trí trên xe hơi hoặc tai nghe thong qua Wi-Fi, Bluetooth,mạng di động hoặc giao tiếp trường gần Các thiết bị di động ngày nay còn tíchhợp máy ảnh, máy nghe nhạc kỹ thuật số, khả năng thực hiện và nhận các cuộcgọi điện thoại, trò chơi và sử dụng Hệ thống định vị toàn cầu.
Thiết bị di động thường được cấu thành từ nhiều phần cứng khác nhau tạo
ra một mô hình thống nhất Dưới đây là một số phần cứng phổ biến trên các
thiết bị di động:
- Màn hình: Bộ phận cấu tạo trên các thiết bị di động mà người dùng nhìn
thấy đầu tiên và nhiều nhất chính là màn hình Màn hình là nơi hiển thị
toàn bộ thông tin và tương tác với người dùng thông qua lớp cảm ứng Có
hai loại màn hình chính, đó là màn hình LED hoặc LCD, chúng có đặc điểm
và tính chất khác nhau, tuy nhiên ở góc độ năng lượng, màn hình sử dụngcông nghệ LED được đánh giá là tiết kiệm năng lượng hơn.
- Bộ cung cấp năng lượng - Pin: Trong cấu tạo của các thiết bị di động,
pin được xem là trái tim của thiết bị, chúng cung cấp toàn bộ năng lượng
để duy trì hoạt động cho thiết bị.
- Bộ xử lý trung tâm - CPU: Bộ xử lý trung tâm được ví như bộ não
của điện thoại giúp xử lý các dữ liệu, chương trình đang chạy Da phần cácthiết bị đi động dùng hệ điều hành Android hoặc iOS đều phù hợp với cấutrúc CPU do ARM thiết kế Các dòng CPU này được thiết kế cho laptop,máy tính bàn trước đây, tuy nhiên, khi được ứng dụng vào thiết bi di độngthì CPU được thiết kế tối ưu điện năng cho phù hợp với dung lượng có hạn
của Pin.
- Modem kết nối: Thiết bị đi động không thể thiếu tính năng kết nối Mỗi
thiết bị đi động đều được tích hợp các kết nối tùy chọn như 3G, 4G, NEC,
20
Trang 34Bluetooth, LTE Để các hình thức kết nối này hoạt động được, thiết bị cần
cung cấp một mức năng lượng nhất định.
- Camera: Trong cấu tạo điện thoại thiết bị di động, camera được xem làcon mắt của thiết bị công nghệ này Da phần các thiết bị di động hiện nayđều được trang bị hai camera trước và sau Camera trên các thiết bị di động
ngày càng phát triển với khả năng chụp ảnh xa, sắc nét, xóa phông Cameradần trở thành thành phần không thể thiếu trên các thiết bị di động.
Bên cạnh những bộ phận kể trên, cấu tạo điện thoại thiết bị di động còn cónhiều bộ phận khác: Loa, mic, cổng cắm tai nghe, cổng sac, v.v Mỗi thành
phần đều có cơ chế hoạt động riêng, chúng thực hiện các chức năng đặc trưngsong về cơ bản đều tiêu thụ một mức năng lượng nhất định trên thiết bị.
2.3.2 Phần mềm trên thiết bị di động
Các nghiên cứu của luận án tập trung vào nghiên cứu mã nguồn của các phầnmềm trên điện thoại di động, trong phần này luận án giới thiệu một số hệ điềuhành dành cho thiết bị di động, các ngôn ngữ, thư viện và công cụ lập trình làmcơ sở cho các nghiên cứu về mã nguồn và đề xuất xây dựng một số công cụ hỗ
trợ lập trình.
2.3.2.1 Hệ điều hành trên thiết bị di động
Thiết bị di động có thể chạy các hệ điều hành di động cho phép các ứng dụng
của bên thứ ba được cài đặt và chạy, hai hệ điều hành pho biến hiện nay là iOS
của hãng Apple và Android của Google.
Android là hệ điều hành dựa trên Linux và phần mềm mã nguồn mở khác,được thiết kế chủ yếu cho các thiết bị di động có màn hình cảm ứng như điệnthoại thông minh và máy tính bảng Trong những năm qua, hệ điều hành An-
droid đã có những bước phát triển vượt bậc và nhanh chóng trở thành nền tảng
di động “thống trị” trên cả thế giới Tính đến tháng 3 năm 2021, Android nắmgiữ hơn 71% thị phần hệ điều hành di động trên thế giới.
Hệ điều hành iOS là hệ điều hành được Apple tạo ra và phát triển, dành cho
iPhone, iPad và các thiết bị di động khác của Apple Cùng với hệ điều hành
macOS trên MacBook, iOS được thiết kế để có thể kết nối dễ dàng giữa cácsản phẩm của Apple Phiên bản đầu tiên của iOS được phát hành vào tháng 6
21
Trang 35năm 2007, khi iPhone ra mắt trên thị trường Hệ điều hành iOS là hệ điều hành
dành cho điện thoại di động phổ biến thứ hai trên thế giới, chỉ sau hệ điều hành
Trên các hệ điều hành này tích hợp sẵn các kho ứng dụng cho phép các nhà
phát triển đưa ứng dụng của mình lên và người sử dụng tải xuống để cài đặt vàsử dụng Hai kho ứng dụng phổ biến lần lượt là AppStore dành cho các thiết
bị chạy hệ điều hành iOS và GooglePlay dành cho các thiết bị di động chạy hệđiều hành Android.
2.3.2.2 Lập trình cho thiết bị di động
Lập trình ứng dụng di động là việc sử dụng những ngôn ngữ lập trình để viết
mã nguồn nhằm tạo ra các ứng dụng cho người sử dụng thiết bị di động Hiệnnay, các lập trình viên chủ yếu lập trình ứng dụng chạy trên nền tảng hai hệ
điều hành phổ biến là iOS và Android Trong hai hệ điều hành trên, Android là
hệ điều hành có tính mở hơn, vì vậy các nghiên cứu về mã nguồn trong luận ánnày sẽ tập trung vào các nghiên cứu trên nền tảng của Android.
Ngôn ngữ lập trình: Ngôn ngữ lập trình phổ biến cho các ứng dụng Androidlà Java và Kotlin Trong khi đó, Swift và Object-C là hai ngôn ngữ phổ biến chocác lập trình viên sử dụng để tạo ra ứng dụng chạy trên hệ điều hành iOS.
Thư viện lập trình: Các lập trình viên có thể sử dụng các bộ thư viện được
hỗ trợ bởi các ngôn ngữ lập trình để phát triển ứng dụng Đối với Android,
Google xây dung một hệ thống thư viện lập trình [18] trên nền tang ngôn ngữJava, hệ thống thư viện này cung cấp dưới dang API giúp cho người lập trình
dễ dàng sử dụng trong khi phát triển phần mềm Ngoài ra, các lập trình viêncũng có thể sử dung các SDK để phát triển ứng dụng di động đa nền tang (cho
phép chạy trên nhiều hệ điều hành) như React Native của Facebook, Flutter
của Google hoặc Xamarin của Microsof.
Công cụ lập trình: Các công cụ hỗ trợ lập trình viên phát triển ứng dụngcho Android bằng ngôn ngữ Java có thể kể đến là Android Studio, IntelliJ và
Eclipse Các công cụ này được các hãng phát triển trong nhiều năm, chúng hỗ
trợ cho người lập trình từ việc viết mã, sinh mã, thiết kế giao diện, kiểm thử
một số tính chất của phần mềm Tuy nhiên, các công cụ này cũng còn có nhữnghạn chế, đặc biệt trong bài toán năng lượng.
22
Trang 362.3.3 Vẫn đề năng lượng trên thiết bị di động
2.3.3.1 Phân tích các đặc tính năng lượng trên thiết bị đi động
Các thiết bị di động thường được trang bị một bộ cung cấp năng lượng (còngọi là Pin) với dung lượng có giới hạn trong khi các phần cứng như màn hình,
máy ảnh, bộ thu phát tín hiệu mạng, bộ vi xử lý, v.v tiêu thụ một mức năng
lượng đáng kể Rõ ràng, ngoài các phương pháp tối ưu mức tiêu thụ năng lượngcủa phần cứng, cách các ứng dụng điều khiển các phần cứng ảnh hưởng rất lớn
đến mức tiêu thụ năng lượng trên thiết bị [46, 47].
Nhiều cơ chế quản lý năng lượng đã được phát triển nhằm giảm thiểu sự tiêu
thụ năng lượng [104] Các cơ chế này được triển khai ở cấp độ hệ điều hành và
được thiết kế để không làm suy giảm hiệu năng của ứng dụng hoặc trải nghiệmngười dùng, do đó, các nhà phát triển ứng dụng không nhận ra điều này trongsuốt quá trình triển khai các ứng dụng Tuy nhiên, các nghiên cứu trước đây đã
chỉ ra rằng trong nhiều trường hợp, mức độ tiêu thụ năng lượng của một ứng
dụng có thể được cải thiện đáng kể thông qua những thay đổi trong mã nguồn
chương trình ngay cả khi có các cơ chế quản lý như vậy Một trong các lý dokhiến cho các cơ chế tiết kiệm năng lượng của hệ điều hành không hoạt động đólà khả năng tối ưu cách thức hoạt động trong từng tác vụ của ứng dụng, do đó
các nhà phát triển ứng dụng vẫn cần tối ưu mã nguồn thay vì phụ thuộc hoàn
toàn vào các cơ chế của hệ điều hành.
Các nhà phát triển phần mềm cần phải nhận diện được các hành vi tiêu thụnăng lượng trên thiết bị di động khi tiến hành các hoạt động cụ thể và tối ưumã nguồn chương trình để tiết kiệm năng lượng Để nhận biết được các hành vi
làm tiêu hao năng lượng, các nhà nghiên cứu về phần mềm tập trung vào các
giải pháp để phân tích các đặc tính và ước lượng mức độ tiêu thụ năng lượng
trên thiết bị đi động Việc phân tích nầy được tiến hành với từng phần cứng,từng đoạn mã nguồn chương trình nhằm tìm ra các đặc tính năng lượng củathiết bị dưới tác động của phần mềm.
Quá trình phân tích các đặc tính năng lượng của thiết bị di động gặp phải
Trang 37như Monsoon Power Monitor [8], BattOr [99], va NEAT [24] Tuy nhiên,
phương pháp nay yêu cầu phải tháo mở thiết bị di động, đây là van đề hếtsức khó khăn với các thiết bị dang nguyên khối như điện thoại thong minh
hay máy tính bảng ngày nay Để giải quyết vấn đề này, các nhà nghiên cứu
thường sử dụng phương pháp tính toán mức độ tiêu thu năng lượng tức
thời thông qua việc gọi các API về Pin của hệ điều hành, từ đó có đượcthông số về năng lượng trong khoảng thời gian nhất định.
(ii) Thứ hai là khả năng đánh giá mức độ tiêu thụ năng lượng cho mỗi thành
phần đơn lẻ trong thiết bị Các phương pháp đo lường được đề cập ở trên
có thể cho biết tổng mức năng lượng tiêu thụ của thiết bị, song không thể
phan tách được mức tiêu thụ của từng thành phan Dé giải quyết van đề
này, các nhà nghiên cứu phải đưa ra được các mô hình biểu diễn mức độ
tiêu thụ năng lượng cho từng phần cứng đơn lẻ [88, 27] bằng cách sử dung
các công thức toán học, ứng dụng các mô hình này và thử nghiệm với một
tập mẫu đủ lớn để xác định mức tiêu thụ cho từng phần cứng.
(iii) Cuối cùng là khả năng phân tích mức độ tiêu thụ năng lượng của từng
chương trình, đoạn chương trình, dòng lệnh đối trong tổng mức độ tiêu thụ
năng lượng trên thiết bị Việc phân tích tác động của từng dòng lệnh, khốilệnh (66, 113] đối với mức độ tiêu thụ năng lượng rõ ràng là rất hữu ích
đối với các nhà phát triển phần mềm, cho phép các nhà phát triển phầnmềm phân tích, đánh giá, điều chỉnh mã nguồn trong quá trình phát triển
hệ thống nhằm tiết kiệm năng lượng.
2.3.3.2 Một số thuật ngữ trong các nghiên cứu năng lượng
Hiện nay, có rất nhiều các nghiên cứu về tính chất năng lượng cho các thiết bị
di động Các nghiên cứu này giới thiệu các bài toán, các mô hình, công thức, kỹ
thuật để giải quyết các bài toán về năng lượng cho thiết bị di động Tuy nhiên,
trong mỗi giải pháp các nhà nghiên cứu có thể định nghĩa một vấn đề với cáctên gọi khác nhau Sau quá trình nghiên cứu và tổng hợp các thuật ngữ cơ bản,
luận án trình bày các thuật ngữ, giải thích ý nghĩa và thống nhất sử dụng thuậtngữ trong suốt luận án này.
- Do lường mức độ tiêu thụ năng lượng: Day là phương pháp phụ thuộc
vào phần cứng, sử dụng các thiết bị chuyên dụng để đo công suất của thiết
bị từ đó tính toán ra mức độ tiêu thụ năng lượng Phương pháp này ít phụ
24
Trang 38thuộc vào mô hình triển khai trong phần mềm Ví dụ phổ biến nhất cho
phương pháp này là đo lường bằng thiết bị ngoài như Moon Soon [8] hoặcđo lường kết hợp với việc gọi các API về Pin [31].
- Mô hình năng lượng: Đây là phương pháp biểu diễn mức độ tiêu thụnăng lượng bằng các mô hình toán học với các toán tử biểu diễn cho mức
tiêu thụ năng lượng của thành phần hoặc thiết bị Mô hình năng lượng có
thể biểu diễn cho một phần cứng đơn lẻ hoặc cho toàn bộ thiết bị, chúng
được xây dựng dựa trên những phân tích về đặc tính năng lượng của thiết
- Ước lượng mức độ tiêu thụ năng lượng: Dây là phương pháp ước lượng
mức độ tiêu thụ năng lượng cho thiết bị hoặc các thành phần đơn lẻ bằng
cách sử dụng các mô hình năng lượng, áp dụng các công thức toán học để
tính toán mà không cần phải đo lường trong thực tế Độ chính xác của việcước lượng phụ thuộc vào sự phù hợp của mô hình đối với mỗi bài toán cụ
- Lỗi năng lượng: Là một tình huống trong chương trình khiến cho điệnthoại tiêu hao năng lượng một cách vô ích Điều đó có nghĩa là nếu cải tiến
đoạn mã nguồn trong chương trình thì vẫn có thể hoàn thành cùng một
công việc nhưng mức tiêu thụ năng lượng ít hơn.
- Điểm nóng về năng lượng: Khác với lỗi về năng lượng, các điểm nóng
về năng lượng biểu diễn các tình huống mà thiết bị tiêu hao một lượng lớn
năng lượng nhưng không phải hoặc chưa xác định được đó có phải là lỗi
năng lượng hay không.
- Mức tiêu thụ năng lượng: Là chỉ số tiêu thụ năng lượng trong mộtkhoảng thời gian nhất định Đây là chỉ số quan trọng nhất trong các tínhchất về năng lượng của thiết bị di động.
2.3.3.3 Một số mô hình biểu diễn mức độ tiêu thụ năng lượng
Trong các nghiên cứu về sự ảnh hưởng của phần mềm đối với mức độ tiêuthụ năng lượng của thiết bị di động, các nhà nghiên cứu thường đề xuất các mô
hình tính toán biểu diễn sự phụ thuộc giữa mức độ tiêu thụ năng lượng với tác
động của chương trình Các mô hình này được sử dụng trong việc phân tích,
25
Trang 39ước lượng, kiểm tra, giảm thiểu mức độ tiêu thụ năng lượng, tối ưu hiệu suất
làm việc của phần mềm.
Có nhiều loại mô hình được đề xuất, dưới đây là một số loại mô hình phổ
- Mô hình 6t6émat hữu han trang thái: Các nha nghiên cứu nhận định
rằng thiết bị hoặc từng phần cứng tiêu thụ năng lượng ở các mức cố định,
mỗi mức này được ghi nhận là một trạng thái Từ đó các nhà nghiên cứu
xác định các trạng thái và xây dựng các ôtômát hữu hạn trạng thái để biểudiễn cho sự thay đổi mức độ tiêu thụ năng lượng trên thiết bị di động.
Chang hạn, nghiên cứu [94, 88] mô hình thiết bị di động như một ôtômáthữu hạn các trạng thái, mỗi lời gọi hàm từ hệ thống có thể làm thay đổi
trạng thái của thiết bị.
- Mô hình dạng công thức toán học: Mô hình dạng này lấy các toán tửlà các nhân tố tác động tới mức độ tiêu thu năng lượng Sau khi xác địnhđầy đủ các toán tử, các nhà nghiên cứu sẽ đưa ra công thức tính toán mứcđộ tiêu thụ năng lượng dưới dạng hàm số với các biến là các toán tử đã xác
định trước Chẳng hạn như nghiên cứu [S4, 27] đã phân tích đặc tinh năng
lượng của một số phần cứng trên thiết bị di động, từ đó đưa ra các hàm
toán học để tính toán mức độ tiêu thụ năng lượng của một số phần cứng
như CPU, bộ thu phát 3G, màn hình, bộ thu phat Wifi.
- Mô hình ánh xạ mã nguồn: Các nhà nghiên cứu đánh giá các tác động
trực tiếp từ dòng lệnh, khối lệnh đối với mức độ tiêu thụ năng lượng, từ đó
đưa ra các mô hình biểu diễn mức tiêu hao năng lượng đối với từng dònglệnh, khối lệnh Một ví dụ điển hình có mô hình này là công cụ Elens củanhóm nghiên cứu [66], công cụ này dựa trên kết quả tính toán để biểu diễn
trực quan mức độ tiêu thụ năng lượng với các mau sắc khác nhau cho từng
câu lệnh.
2.4 Kết chương
Trong chương này, luận án đã trình bày một cách chi tiết về các kiến thức
nền tảng sẽ được sử dụng ở các chương tiếp theo Cụ thể, ở đầu chương luận ántrình về các phương pháp phân tích và biểu diễn chương trình, chi tiết về một
số phương pháp sẽ được sử dụng trong các Chương 3 và 4 Tiếp đến, luận án
26
Trang 40nhắc lại một số vấn đề trong kiểm thử phần mềm bao gồm: Khái niệm về kiểmthử, các kỹ thuật kiểm thử và đặc biệt trình bày chi tiết về kỹ thuật kiểm thử
cấu trúc, đây là nền tảng được sử dụng trong Chương 4 Sau đó, luận án trìnhbày các kiến thức liên quan tới thiết bi động va van đề năng lượng trên thiếtbị di động, trong đó tập trung vào việc phân tích cấu trúc phần cứng và nănglượng trên các phần cứng, hệ thống phần mềm trên thiết bị di động, các hệ điều
hành và quá trình phát triển phần mềm cho thiết bị di động, vấn đề năng lượng
trên thiết bị di động và các nghiên cứu mô hình năng lượng, các kiến thức nền
tảng này được sử dụng trong các Chương 3 và 5.
Trong ba chương tiếp theo, luận án sẽ ứng dụng các nền tảng kiến thức cơ sở
để trong chương này đề xuất mô hình năng lượng cho thiết bị di động, phươngpháp ước lượng mức độ tiêu thụ năng lượng, phương pháp tối ưu bộ kiểm thử
tính chất năng lượng và phương pháp giảm tải sự tiêu thụ năng lượng cho thiết
bị di động.
27