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
Trang 1Chương 1
GIỚI THIỆU
1.1 Đặt vấn đề
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 Các nhà nghiên cứu phát triển phầnmề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úp quá trìnhthực hiện các tác vụ ít tiêu tốn năng lượng của thiết bị hơn
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ượngdự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
(iii) Đề xuất phương pháp giảm tải sự tiêu thụ năng lượng cho thiết bị di động
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ôhì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ượngtrên thiết bị di động
Trang 21.3 Cấu trúc luận án
Luận án bao gồm sáu chương Trong đó, Chương 1 Giới 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 Chương 2 trình bày về các kiến thức nềntảng được sử dụng trong các chương tiếp theo Chương 3 Trình bày về phươngphá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ươngtrình, phương pháp ước lượng mức tiêu thụ năng lượng và triển khai xây dựngmộ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 Chương 4 giới thiệu một hướng tiếp cập trong 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 Chương 5 đề xuất một phươngpháp giảm tải mứ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ện toán đám mây di động Chương 6phân tích về các ưu, nhược điểmcủa từng phương pháp đã đề xuất và thảo luận về các hướng nghiên cứu tiếptheo trong tương lai
Trang 3Chương 2
KIẾN THỨC CƠ SỞ
2.1 Phân tích và biểu diễn 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ácngô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ântí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 ápdụ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ị
Những kỹ thuật phân tích chương trình tĩnh có thể phân theo 4 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ừu tượ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ĩnhdựa trên phân tích dòng điều khiển và dòng dữ liệu
Các nghiên cứu trong luận án có sử dụng tới hai kỹ thuật biểu diễn chươngtrì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.Đồng thời, ôtômát hữu hạn đơn định được sử dụng để mô hình hóa các trạngthái năng lượng của thiết bị di động
2.2 Một số vấn đề trong kiểm thử tính chất năng lượng của phần mềm
Đồ 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ểmthử tương ứng với các ca kiểm thử cho các đối tượng cần kiểm thử Đồ 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 Đồ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
Trang 4(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.
Một trong những vấn đề 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ị CF G đượ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ên tổ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:
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 đồ thị CF G, từ đó tạo ra các ca kiểm thử tương ứng
2.3 Thiết bị di động và vấn đề năng lượng
Thiết bị di động được hiểu là một thiết bị máy tính đủ nhỏ để cầm và vậnhành trong tay Các thiết bị di động cung cấp giao diện màn hình cảm ứng vàbàn phím 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 tínhbảng và thiết bị đeo
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ănglượng đáng kể 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 ưu mã nguồn chương trình để tiết kiệm năng lượng Để nhận biết được cáchà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 trungvà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ănglượ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ầncứ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ượngcủa thiết bị dưới tác động của phần mềm
Trang 5hì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,ướ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ấtlà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ổbiến:
- Mô hình ôtômát hữu hạn trạng thái: Các nhà nghiên cứu nhận địnhrằ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ứuxá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
- 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 thụ 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
- Mô hình ánh xạ mã nguồn: Các nhà nghiên cứu đánh giá các tác độngtrự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
Trang 6Chương 3
ƯỚC LƯỢNG MỨC TIÊU THỤ NĂNG
LƯỢNG CỦA CÁC THIẾT BỊ DI ĐỘNG
DỰA TRÊN PHÂN TÍCH MÃ NGUỒN
3.1 Giới thiệu
Các nghiên cứu về tính toán mức độ tiêu thụ năng lượng cho thiết bị di động
có đóng góp quan trọng trong việc phân tích các đặc tính và làm tiền đề choviệc cải tiến chất lượng phần mềm Có nhiều nghiên cứu về phương pháp tínhtoán mức độ tiêu thụ năng lượng, tuy nhiên có thể chia thành hai nhóm cơ bản:Phương pháp đo lương và phương pháp ước lượng Phương pháp đo lường làphương pháp sử dụng nhiều các giải pháp về mặt vật lý và thường chỉ áp dụngtrong các trường hợp tính toán cụ thể cho một thiết bị hoặc một UC nào đó.Trong khi đó phương pháp ước lương dựa trên mô hình, sử dụng các phươngpháp mô hình hóa, các công cụ toán học để xây dựng mô hình và ước lượng dựatrên mô hình đó
Luận án này đề xuất giải pháp kết hợp giữa hai phương pháp tính toán trên
để giải quyết một số vấn đề trong việc tính toán mức độ tiêu thụ năng lượngcủa thiết bị di động
3.2 Mô hình hóa mức tiêu thụ năng lượng của thiết bị di động
3.2.1 Mô hình hóa trạng thái năng lượng cho các phần cứng
Mỗi thiết bị di động đều được hợp thành từ nhiều phần cứng khác nhau, mỗiphần cứng đều hoạt động ở một số trạng thái khác nhau, với ở mỗi trạng tháinày, chúng tiêu hao một mức độ năng lượng cố định Để mô hình hóa các trạngthái năng lượng cho mỗi phần cứng, luận án sử dụng các ôtômát hữu hạn Vídụ:
Trang 7AAudio = (QAudio, ΣAudio, δAudio, q0Audio, FAudio) (3.1)
3.2.2 Mô hình hóa trạng thái năng lượng cho thiết bị di động
Để đặc tả trạng thái năng lượng của thiết bị di động, luận án đề xuất phươngpháp kết hợp các trạng thái năng lượng của các phần cứng đơn lẻ thành mộttrạng thái hợp nhất cho thiết bị di động Như vậy, đối với mô hình thiết bị diđộng chứa 5 phần cứng có trạng thái thay đổi (bao gồm màn hình, bộ phát âmthanh, bộ định vị, bộ thu phát 3G và bộ thu phát wi-fi), mô hình trạng tháinăng lượng của thiết bị di động sẽ bao gồm 108 trạng thái là tổ hợp của tất
cả các trạng thái năng lượng phần cứng Để biểu diễn mô hình năng lượng này,chúng ta sử dụng một ôtômát năng lượng cho thiết bị di động ADevice:
Thuật toán 3.1 mô tả quy trình sinh ôtômát năng lượng cho thiết bị di độngbằng các hợp nhất các ôtômát thành phần
3.2.3 Ôtômát năng lượng cho ứng dụng di động
Để tối ưu được ôtômát năng lượng của thiết bị di động đối với mỗi mã nguồnứng dụng cụ thể, luận án tiến hành phân tích mã nguồn ứng dụng cụ thể để tối
ưu từng ôtômát thành phần (bằng cách giữa lại các trạng thái hữu ích) trướckhi hợp nhất chúng thành ôtômát năng lượng của thiết bị di động
Để giữ lại các trạng thái hữu ích và loại bỏ đi các trạng thái vô ích, luận án
đề xuất Thuật toán 3.2
3.3 Ước lượng mức tiêu thụ năng lượng của thiết bị di động
Để hỗ trợ cho những người phát triển phần mềm có thể đặc tả và thực thi
UC một cách hình thức, luận án tiến hành phân nhóm các câu lệnh trong mãnguồn đồng thời đăc tả thình thức các kí kiệu nhằm đơn giản hóa việc thiết kếcác UC Tiếp đến, luận án đề xuất cải tiến ôtômát năng lượng của ứng dụng
AApp bằng cách bổ sung thêm bộ đếm thời gian T và hệ số tiêu thụ năng lượngC
Trang 8Thuật toán 3.1 Sinh ôtômát năng lượng cho thiết bị di động
Input:
Aaudio = (Qaudio, Σaudio, δaudio, q0_audio, Faudio)
AGP S = (QGP S, ΣGP S, δGP S, q0_GP S, FGP S)
ALCD = (QLCD, ΣLCD, δLCD, q0_LCD, FLCD)
Acellular = (Qcellular, Σcellular, δcellular, q0_cellular, Fcellular)
Awif i = (Qwif i, Σwif i, δwif i, q0_wif i, Fwif i)
Output:
ADevice= (Q, Σ, δ, q0, F )
1 Q = {q|q = (qaudio, qGP S, qLCD, qcellular, qwif i)}
2 Σ = ΣaudioSΣGP SSΣLCDSΣCelluarSΣwif i
3 q0= (q0_audio, q0_GP S, q0_LCD, q0_cellular, q0_wif i)
4 F = Q
Trong đó δ được tính theo thuật toán dưới đây:
5 foreach {qaudio → aq1_audio} ∈ δaudio do
6 foreach (qaudio, qGP S, qLCD, qcellular, qwif i) ∈ Q do
7 foreach (q1_audio, qGP S, qLCD, qcellular, qwif i) ∈ Q do
8 δ = δS{(qaudio, qGP S, qLCD, qcellular, qwif i) →
a(q1_audio, qGP S, qLCD, qcellular, qwif i)}
Trang 9Thuật toán 3.2 Tối ưu ôtômát năng lượng thành phần cho ứng dụng cụ thểInput:
Bảng 3.1: Hệ số tiêu thụ năng lượng của các phần cứng
Phần
cứng
Trạngthái
Hệ số(mW)
Phầncứng
Trạngthái
Hệ số(mW)
Trang 10Công thức 3.4.
P =
kX
Để hỗ trợ cho người lập trình trực quan hóa các trạng thái năng lượng củaứng dụng và ước lượng mức tiêu thụ năng lượng cho các UC Luận án triển khaihai công cụ có tên PSA và PSE PSA cho phép người lập trình theo dõi cáctrạng thái năng lượng của ứng dụng với mã nguồn hiện tại Trong khi đó, PCEcho phép ước lượng mức độ tiêu thụ năng lượng của UC
3.5 Thực nghiệm
Nhằm đánh giá tính hiệu quả của phương pháp ước lượng, luận án tiến hànhthực nghiệm ước lượng mức tiêu thụ năng lượng cho một số UC trong thực tiễn.Kết quả thực nghiệm cho thấy phương pháp ước lượng dựa trên ôtômát nănglượng cho kết quả ước lượng có độ lệnh nhỏ so với kết qua đo lường bằng thiết
bị vật lý và đo lường bằng phần mềm
Kết quả nghiên cứu của chương này đã được công bố trên Tạp chí bile Networks and Applications (2019) và Hội nghị International Conference onContext-Aware Systems and Applications (ICCASA 2017)
Trang 11Mo-Chương 4
TỐI ƯU 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
4.1 Giới thiệu
Hiện nay các nghiên cứu về kiểm thử tính chất năng lượng của ứng dụng diđộng đã xuất hiện phổ biến hơn, tuy nhiên nếu so sánh về số lượng các côngtrình nghiên cứu về vấn đề này so với các loại kiểm thử khác thì số lượng cònrất khiêm tốn Các công ty phần mềm hiện nay có thực hiện kiểm thử tính chấtnăng lượng của ứng dụng di dộng trong giai đoạn kiểm thử β (kiểm thử chấpnhận), tuy nhiên số lượng các ca kiểm thử được thực thi còn rất hạn chế do chiphí thời gian, nhân lực để kiểm thử tính chất năng lượng cho ứng dụng di động
là rất lớn
Đóng góp chính của chương này là phương pháp tối ưu bộ kiểm thử tính chấtnăng lượng cho phần mềm di động bằng cách đánh giá, phân loại từng ca kiểmthử trong bộ kiểm thử, từ đó lựa chọn các ca kiểm thử tốt nhất để tạo ra một
bộ kiểm thử tối ưu nhất Bằng cách ứng dụng phương pháp ước lượng mức tiêuthụ năng lượng ở Chương 3, kết hợp với phương pháp phân tích chương trìnhtĩnh, luận án đề xuất cải tiến đồ thị CFG, làm cơ sở cho việc đánh giá, phânloại từ đó tối ưu các bộ kiểm thử tính chất năng lượng của ứng dụng di động
4.2 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 di động
Để làm rõ ý tưởng và phương pháp tối ưu bộ kiểm thử tính chất năng lượngcho các phần mềm di động, luận án giải quyết bài toán sau:
Bài toán: Cho trước một ứng dụng di động App và một bộ kiểm thử T = {t1, t2, , tn} Trong đó App đã bao gồm mã nguồn và t1, t2, , tn là các ca kiểmthử tính chất năng lượng trong bộ kiểm thử T của ứng dụng App
Trang 12Yêu cầu: Tìm ra một bộ kiểm thử T′ ⊆ T thỏa mãn T′ có số lượng ca kiểmthử tối ưu nhất nhưng vẫn đảm bảo độ phủ các câu lệnh có mức tiêu thụ nănglượng đủ lớn như T và khả năng phát hiện lỗi của T′ là tốt nhất trong tất cảcác tập hợp con của T có cùng kích thước với T′.
Như vậy, luận án cần giải quyết hai vấn đề chính trong bài toán này:
- Vấn đề 1: T′ có số ca kiểm thử là tối ưu nhưng vẫn đảm bảo độ bao phủ cáccâu lệnh có mức tiêu thụ năng lượng đủ lớn tương đương như T Để giải quyếtvấn đề này, luận án sẽ xác định các câu lệnh có mức tiêu thụ năng lượng đủ lớn,lựa chọn các ca kiểm thử đưa vào T′ thỏa mãn bao phủ các câu lệnh có mức độtiêu thụ năng lượng đủ lớn
- Vấn đề 2: Khả năng phát hiện lỗi của T′ là tốt nhất trong các tập con của T
có cùng kích thước với T′ Luận án tiếp tục đưa ra công thức để tính toán hệ sốphủ năng lượng của mỗi ca kiểm thử ti trong bộ kiểm thử T làm thước đo tínhhiệu quả trong việc phát hiện lỗi của ti Từ đó xây dựng thuật toán để lựa chọncác ca kiểm thử tốt nhất (có hệ số phủ năng lượng lớn nhất) để đưa vào T′
4.2.1 Cải tiến đồ thị CFG cho bài toán tối ưu bộ kiểm thử tính chất
năng lượng
Luận án tiến hành cải tiến đồ thị CFG bằng cách bổ sung trọng số năng lượngcực đại và phân loại nút có trọng số năng lượng đủ lớn Phương pháp tiến hànhqua ba bước:
Bước 1: Xác định trọng số năng lượng của mỗi nút trong trong đồthị CF G đối với một ca kiểm thử
Đối với mỗi ca kiểm thử ti, ta xác định được tổng trọng số năng lượng củacác nút v của đồ thị CF G có trong pathi Thuật toán 4.1 cho phép tính toántổng trọng số năng lượng cho các nút v trong pathi
Bước 2: Xác định trọng số năng lượng cực đại cho các nút trong đồthị CF G Để xây dựng đồ thị CF G có trong số năng lượng cực đại (đặt tên là
CF Gc), ta sử dụng Thuật toán 4.2
Bước 3: Xác định các nút tiêu thụ năng lượng đủ lớn trên CF Gc
Thuật toán 4.3 cho phép xác định các nút có trọng số năng lượng đủ lớn