Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
1,33 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN XUÂN TRƢỜNG KIỂM CHỨNG GIAO DIỆN PHẦN MỀM BẰNG PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT – B LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI, 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN XUÂN TRƢỜNG KIỂM CHỨNG GIAO DIỆN PHẦN MỀM BẰNG PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT – B Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60.48.01.03 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS TRƢƠNG NINH THUẬN HÀ NỘI, 2016 LỜI CAM ĐOAN Tôi xin cam đoan tồn nội dung luận văn tơi tìm hiểu, nghiên cứu, tham khảo tổng hợp từ nguồn tài liệu khác làm theo hướng dẫn người hướng dẫn khoa học Các nguồn tài liệu tham khảo, tổng hợp có nguồn gốc rõ ràng trích dẫn theo quy định Tơi xin chịu hoàn toàn trách nhiệm lời cam đoan Nếu có điều sai trái, tơi xin chịu hình thức kỷ luật theo quy định Hà Nội, tháng 06 năm 2016 Ngƣời cam đoan Nguyễn Xuân Trường LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành đến thầy, cô khoa Công nghệ Thông Tin – Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội tận tình dạy dỗ, truyền đạt cho chúng em nhiều kiến thức, kinh nghiệm quý báu suốt thời gian học tập trường Em xin gửi lời cảm ơn sâu sắc tới thầy PGS.TS Trương Ninh Thuận – Phó chủ nhiệm khoa cơng nghệ thông tin – Trường Đại học Công nghệ – ĐHQGHN tận tình bảo, hướng dẫn, định hướng cho em để em hoàn thành luận văn tốt nghiệp Cuối em xin cảm ơn gia đình, bạn bè, đồng nghiệp động viên ủng hộ tạo điều kiện tốt suốt trình học tập hoàn thành luận văn Với việc tìm hiểu nghiên cứu lĩnh vực, cơng cụ tương đối mẻ với kiến thức nhiều hạn chế, nên khơng tránh khỏi thiếu sót Em mong nhận ý kiến đóng góp quý báu thầy cô bạn để luận văn hoàn thiện Hà Nội, tháng 06 năm 2016 Học viên Nguyễn Xuân Trường MỤC LỤC DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ Chƣơng GIỚI THIỆU 1.1 Sự cần thiết đề tài 1.2 Nội dung nghiên cứu 1.3 Đóng góp đề tài 1.4 Cấu trúc luận văn Chƣơng TỔNG QUAN VỀ KIỂM CHỨNG GIAO DIỆN PHẦN MỀM VÀ PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT-B 2.1 Giao diện người dùng 2.2 Các phương pháp kiểm chứng giao d 2.2.1 Phương pháp 2.2.2 Phương pháp 2.3 Tổng quan Event-B 2.3.1 Context 2.3.2 Machine 2.3.3 Ký hiệu toán học Event-B 2.3.4 Tinh chỉnh 2.3.5 Mệnh đề chứng minh 2.3.6 Công cụ Rodin Chƣơng KIỂM CHỨNG GIAO DIỆN PHẦN MỀM BẰNG PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT-B 3.1 Phương pháp chung 3.2 Phương pháp chi tiết 3.3 Mơ hình hóa giao diện phần mềm 3.4 Mệnh đề chứng minh Chƣơng ÁP DỤNG PHƢƠNG PHÁP KIỂM CHỨNG GIAO DIỆN ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG VỚI EVENT-B 4.1 Tổng quan ứng dụng điện thoạ 4.1.1 Các thành phần ứng dụng Android 4.1.2 Cơ chế quản lý Activity 4.2 Ứng dụng Note 4.2.1 Giới th 4.2.2 Ứng d 4.3 Mơ hình hóa kiểm chứng giao diện ứng KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Kết luận Hướng phát triển PHỤ LỤC A Đặc tả context Note_C ứng dụng Note B Đặc tả machine Note_M ứng dụng No TÀI LIỆU THAM KHẢO DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT IDE Integrated Development Environment GUI Graphical User Interface POS Proof Obligations INV Invariant DLF Deadlock Freeness VAR Variant WD well-definedness DANH MỤC CÁC BẢNG Bảng 2.1 Các phép toán logic 21 Bảng 2.2 Luật chứng minh INV với kiện evt 24 Bảng 3.1 Chuyển đổi từ GUI tới Event-B 32 Bảng 4.1 Bảng CSDL ghi Note 38 Bảng 4.2 Mô tả cửa sổ giao diện MainActivity 39 Bảng 4.3 Mô tả sơ đối tượng cửa sổ giao diện CreateActivity .40 Bảng 4.4 Mô tả sơ đối tượng cửa sổ giao diện EditActivity 41 Bảng 4.5 Mô tả sơ đối tượng cửa sổ giao diện ViewActivity 43 DANH MỤC CÁC HÌNH VẼ Hình 2.1 Giao diện đồ họa người dùng 11 Hình 2.2 Giao diện dịng lệnh 12 Hình 2.3 Cấu trúc mối quan hệ thành phần mơ hình EventB 17 Hình 2.4 Cấu trúc context 18 Hình 2.5 Ví dụ context Event-B 18 Hình 2.6 Cấu trúc machine Event-B 20 Hình 2.7 Cấu trúc Event Event-B 20 Hình 2.8 Ví dụ machine Event-B 20 Hình 2.9 Ví dụ Event Event-B 21 Hình 2.10 Ví dụ mối quan hệ Refinement Event-B 22 Hình 2.11 Sơ đồ định nghĩa kiện 23 Hình 2.12 Định nghĩa kiện evt 24 Hình 2.13 Giao diện đồ họa cơng cụ Rodin 25 Hình 2.14 Symbols View 36 Hình 2.15 Event-B Explorer 36 Hình 2.16 Menu bar 36 Hình 3.1 Quy trình kiểm chứng tổng quát 27 Hình 3.2 Quy trình kiểm chứng chi tiết 30 Hình 4.1 Cơ chế Back Stack 36 Hình 4.2 Activity State 37 Hình 4.3 MainActivity.XML 40 Hình 4.4 CreateActivit.XML 41 Hình 4.5 EditActivit.XML 42 Hình 4.6 ViewActivity.XML 43 Hình 4.7 Quy trình xây dựng Activity Diagram 44 Hình 4.8 Sơ đồ Activity Diagram 45 Hình 4.9 Hình 4.10 Hình 4.11 Hình 4.12 Hình 4.13 Hình 4.14 Hình 4.15 Hình 4.16 Hình 4.17 Hình 4.18 Hình 4.19 Hình 4.20 Hình 4.21 Hình 4.22 Hình 4.23 48 (main_activity=active) ∧ (Create_activity=stop) ∧ (Edit_activity=stop) ∧ ( View_activity=stop) (main_activity=killed) ⇒(Create_activity= killed) ∧ (Edit_activity= killed) ∧ ( View_activity= killed) (Create_activity=active) ⇒ (main_activity=stop) ∧ (Edit_activity=stop) ∧ ( View_activity=stop) (Edit_activity=active) ⇒ (main_activity=stop) ∧ (Create_activity=stop) ∧ ( View_activity=stop) (View_activity=active) ⇒ (main_activity=stop) ∧ (Create_activity=stop) ∧ ( Edit_activity=stop) … 49 MACHINE Note_M SEES Note_C VARIABLES Main_activity Edit_activity View_activity Create_activity Select INVARIANTS inv1 inv2 inv3 inv4 inv5 inv6 inv7 inv8 inv9 : : : : Main_activity ∈ S Edit_activity ∈ S View_activity ∈S Create_activity ∈ S : Main_activity=active ∧ Create_activity=stop ∧ Edit_activity=stop ∧ View_activity=stop : Main_activity=stop ∧ Create_activity=active ∧ Edit_activity=stop ∧ View_activity=stop : Main_activity=stop ∧ Create_activity=stop ∧ Edit_activity=active ∧ View_activity=stop : Main_activity=stop ∧ Create_activity=stop ∧ Edit_activity=stop ∧ View_activity=active : Main_activity=start ⇒ (Create_activity=start) ∧ (Edit_activity=start) ∧ (View_activity=start) inv10 : inv11 : ¬(Main_activity=start) ⇒¬(Create_activity=start) ∧ ¬(Edit_activity=start) ∧ ¬(View_activity=start) Select ∈ Menu EVENTS INITIALISATION STATUS ordinary BEGIN act1 : act2 : act3 : act4 : act5 : END ≙ Main_activity ≔ start Edit_activity ≔ start View_activity ≔ start Create_activity ≔ start Select ≔ Null Hình 4.11 Một phần machine Note_M 50 EVENT, ACTION Event thoát ứng dụng thể Hình 4.12 BtnExit_Click ≙ STATUS ordinary WHEN grd1 THEN act1 act2 act3 act4 act5 END :(BtnExit=TRUE)∧(Main_activity=active) :Main_activity≔killed :Operator≔Exit :Edit_activity≔killed :Create_activity≔killed :View_activity≔killed Hình 4.12 Event ứng dụng Event chọn chức gọi cửa sổ Create thể Hình 4.13 Select_Create ≙ STATUS ordinary WHEN grd1 : (Main_activity=active) THEN act1 : act2 : act3 : END Create_activity≔active Main_activity≔stop Select≔Create Hình 4.13 Event chọn chức Create Event chọn chức gọi cửa sổ Edit thể Hình 4.14 Select_Edit ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : act2 : act3 : END Edit_activity≔active Main_activity≔stop Select≔Edit Hình 4.14 Event chọn chức Edit 51 Event chọn chức gọi cửa sổ View thể Hình 4.15 Select_View ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : act2 : act3 : END View_activity≔active Main_activity≔stop Select≔View Hình 4.15 Event chọn chức View Event chọn chức xóa chuyển cửa sổ Main thể Hình 4.16 Select_Delete ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : act2 : END Operator≔Del Main_activity≔active Hình 4.16 Event chọn chức Delete Các kiện trên đối tượng cửa sổ thể Hình 4.17 Edit_Saveclick STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : act5 : END ≙ Edit_activity=active ∧ Select=Edit ∧ BtnSave=TRUE Operator≔Save Main_activity≔active Select≔Null Edit_activity≔stop BtnSave≔FALSE 52 Edit_Canelclick ≙ STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : act5 : END Create_Saveclick ≙ STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : act5 : END Create_Cancelclick STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : act5 : END View_backclick ≙ STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : END Edit_activity=active ∧ Select=Edit∧BtnCancel=TRUE Operator≔Cancel Main_activity≔active Select≔Null Edit_activity≔stop BtnCancel≔FALSE Create_activity=active ∧ Select=Create ∧BtnSave=TRUE Operator≔Save Main_activity≔active Select≔Null Create_activity≔stop BtnSave≔FALSE ≙ Create_activity=active ∧ Select=Create∧BtnCancel=TRUE Operator≔Save Main_activity≔active Create_activity≔stop Select≔Null BtnCancel≔FALSE View_activity=active ∧ Select=View∧BtnBack=TRUE Main_activity≔active View_activity≔stop Select≔Null BtnBack≔FALSE Hình 4.17 Các Event đối tượng cửa sổ 53 Thực soạn thảo công cụ Rodin, sinh kiểm chứng tự động mệnh đề cần chứng minh Hình 4.18 minh họa việc sinh tự động Tồn mã lệnh trình bày chi tiết phần Phụ lục luận văn Hình 4.18 Cửa sổ sinh kiểm chứng tự động Kết trình sinh kiểm chứng tự động thể qua bảng Statistics, Hình 4.19 cho thấy toàn ràng buộc chứng minh đảm bảo mục tiêu thiết kế thứ tự giao diện đặt Hình 4.19 Bảng kết Statistics 54 Không phải lúc đặc tả thiết kế điều đắn không lỗi, giả sử trường hợp ứng dụng Note đặc tả thiết kế chức chọn lệnh chỉnh sửa thực đơn kiện đặc tả tương ứng lại chuyển tới cửa sổ khác View mà lại Edit mong muốn thiết kế Hình 4.20 Trong trường hợp cơng cụ Rodin xuất biểu tượng dấu “?” trước vị trí khơng chứng minh thể Hình 4.21 Hình 4.22, điều tương đương với vị trí đặc tả chưa thỏa đáng có lỗi dựa vào để người phát triển tìm xem xét để có cập nhật phù hợp Select_Edit ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : act2 : act3 : END View_activity≔active Main_activity≔stop Select≔Edit Hình 4.20 Sự kiện chọn chức chỉnh sửa Hình 4.21 Thông báo mệnh đề chưa chứng minh tự động 55 Hình 4.22 Cửa sổ Goal Hình 4.23 Cửa sổ Statistics trường hợp lỗi 56 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Kết luận Khi hệ thống tin học hố ngày vào đời sống người vấn đề kiểm chứng xây dựng phần mềm nói chung giao diện người dùng phần mềm nói riêng đảm bảo yếu tố chất lượng ngày trở nên quan trọng việc phát triển phần mềm Trên sở luận văn tập trung vào nghiên cứu phương pháp kiểm chứng giao diện ứng dụng phương pháp mơ hình hóa Event-B Giao diện đồ họa người dùng GUI giao diện phổ biến mà từ người dùng tương tác với hệ thống phần mềm Kiểm chứng giao diện người dùng thường công việc phức tạp không dễ dàng chất giao diện đồ họa không chứa đối tượng đồ họa mà cịn có nhiều kiện điều khiển có kiện khơng mong muốn mà người kiểm chứng lường trước Thông qua việc kiểm chứng người phát triển phát sai sót để có khắc phục kịp thời đảm bảo có phần mềm chất lượng có giao diện dễ dùng Hiện nhiều phương pháp kiểm chứng giao diện người phát triển, phương pháp có ưu nhược điểm riêng Với khả mơ hình hóa mạnh mẽ phương pháp mơ hình hóa Event-B dựa ký pháp tốn học kết hợp với cơng cụ mã nguồn mở Rodin hỗ trợ cho việc biên tập, tự động sinh kiểm chứng cách xác việc nghiên cứu, xây dựng phương pháp kiểm chứng mơ hình hóa giao diện ứng dụng phần mềm với Event-B hướng thiết thực Luận văn tập trung vào tìm hiểu đặc điểm giao diện phần mềm, chế, đặc trưng, phương pháp kiểm chứng có Tập trung nghiên cứu phương pháp mơ hình hóa Event-B cơng cụ kiểm chứng tự động Rodin, từ xây dựng quy trình tổng quát, xây dựng quy trình chi tiết, đưa mơ hình giao diện người dùng trừu tượng, xây dựng tập luật chuyển đổi từ mơ hình GUI trừu tượng sang 57 mơ hình Event-B tổng qt, thực mơ hình hóa kiểm chứng thứ tự xuất giao diện ứng dụng phần mềm Áp dụng vào kiểm chứng thứ tự xuất cửa sổ giao diện ứng dụng thiết bị di động Nghiên cứu bước đầu đưa phương pháp, mơ hình tổng qt chung cho việc kiểm chứng giao diện phần mềm dừng lại việc kiểm chứng, phát lỗi thứ tự xuất cửa sổ giao diện giúp người phát triển có điều chỉnh phù hợp, chưa thể kiểm chứng ràng buộc thành phần khác giao diện, công việc chuyển đổi từ đặc tả vào mô hình từ mơ hình vào cơng cụ rodin cịn thủ cơng chưa thực cách tự động Hƣớng phát triển Từ quy trình, mơ hình, phương pháp tổng quát xây dựng áp dụng kiểm chứng tự động ứng dụng cụ thể với công cụ Rodin Với nghiên cứu đạt luận văn nghiên cứu phát triển để xây dựng thêm, bổ sung thêm vào mơ hình quy trình để áp dụng kiểm chứng khơng thứ tự xuất cửa sổ giao diện mà cịn nhiều tiêu chí khác nhiều thành phần khác giao diện ứng dụng, áp dụng với nhiều loại giao diện ứng dụng không ứng dụng thiết bị di động mà giao diện Window Form giao diện Web 58 PHỤ LỤC A Đặc tả context Note_C ứng dụng Note CONTEXT Note_C SETS S Menu P CONSTANTS active stop pause killed Null start Create Edit View Delete None Exit Save Cancel Del AXIOMS axm1 axm2 axm3 END B Đặc tả machine Note_M ứng dụng Note MACHINE Note_M SEES Note_C VARIABLES Main_activity Edit_activity View_activity Create_activity Select BtnExit BtnSave 59 BtnCancel Operator BtnBack INVARIANTS inv1 inv2 inv3 inv4 inv5 inv6 inv7 inv8 inv9 inv10 : : : : Main_activity ∈ S Edit_activity ∈ S View_activity ∈S Create_activity ∈ S : Main_activity=active⇒ Create_activity=stop ∧ Edit_activity=stop ∧ View_activity=stop : Create_activity=active⇒ Main_activity=stop ∧ Edit_activity=stop ∧ View_activity=stop : Edit_activity=active⇒ Main_activity=stop ∧ Create_activity=stop ∧ View_activity=stop : View_activity=active ⇒ Main_activity=stop ∧ Edit_activity=stop ∧ Create_activity=stop : Main_activity=start ⇒ (Create_activity=start) ∧ (Edit_activity=start) ∧ (View_activity=start) : inv11 inv12 inv13 inv14 inv15 : : : : : inv16 inv17 inv18 : inv19 : inv20 : EVENTS INITIALISATION STATUS ordinary BEGIN act1 act2 act3 act4 act5 act6 act7 act8 act9 act10 END BtnExit_Click ≙ STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : act5 : END : : Select=Edit⇒Edit_activity=active Select=View⇒View_activity=active Select=Create⇒Create_activity=active ≙ (BtnExit=TRUE)∧(Main_activity=active) Main_activity≔killed Operator≔Exit Edit_activity≔killed Create_activity≔killed View_activity≔killed ¬(Main_activity=start) ⇒¬(Create_activity=start) ∧ ¬(Edit_activity=start) ∧ ¬(View_activity=start) Select ∈ Menu BtnExit ∈ BOOL BtnSave ∈ BOOL BtnCancel ∈ BOOL Main_activity=killed ⇒ (Create_activity=killed) ∧ (Edit_activity=killed) ∧ (View_activity=killed) Operator ∈ P BtnBack ∈ BOOL 60 Select_Create ≙ STATUS ordinary WHEN grd1 : (Main_activity=active) THEN act1 : act2 : act3 : END Select_Edit STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : act2 : act3 : END Select_View ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : act2 : act3 : END Select_Delete ≙ STATUS ordinary WHEN grd1 : Main_activity=active THEN act1 : act2 : END Edit_Saveclick STATUS ordinary WHEN grd1 THEN act1 : act2 : act3 : act4 : act5 : END Create_activity≔active Main_activity≔stop Select≔Create ≙ Edit_activity≔active Main_activity≔stop Select≔Edit View_activity≔active Main_activity≔stop Select≔View Operator≔Del Main_activity≔active ≙ Operator≔Save Main_activity≔active Select≔Null Edit_activity≔stop BtnSave≔FALSE : Edit_activity=active ∧ Select=Edit ∧ BtnSave=TRUE 61 Edit_Canelclick ≙ STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : act5 : END Create_Cancelclick ≙ STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : act5 : END View_backclick ≙ STATUS ordinary WHEN grd1 : THEN act1 : act2 : act3 : act4 : END Edit_activity=active ∧ Select=Edit∧BtnCancel=TRUE Operator≔Cancel Main_activity≔active Select≔Null Edit_activity≔stop BtnCancel≔FALSE Create_activity=active ∧ Select=Create∧BtnCancel=TRUE Operator≔Save Main_activity≔active Create_activity≔stop Select≔Null BtnCancel≔FALSE View_activity=active ∧ Select=View∧BtnBack=TRUE Main_activity≔active View_activity≔stop Select≔Null BtnBack≔FALSE END 62 TÀI LIỆU THAM KHẢO [1] GUI Testing Techniques: A Survey Imran Ali Qureshi an AamerNadeem, International Journal of Future Computer and Communication, Vol 2, No 2, April 2013 [2] Cem Kaner, James Bach, Bret Pettichord, Lessons Learned in Software Testing A Context-Driven Approach, John Wiley & Sons, 2001 [3] [BEI90] Beizer, B., Software Testing Techniques, 2d ed., Van Nostrand Reinhold, 1990 [4] J.-R Abrial, Modeling in Event-B: System and Software Engi-neering Cambridge University Press, 2010 [5] A.F Memon, GUI testing pitfalls and process, Computer, University of Maryland, 2002 [6] D Jackson Software Abstractions: Logic, Language, and Analysis MIT Press, 2006 [7] Christophe M´etayer, Laurent Voisin, the Event-B Mathematical Language, 2007 [8] http://code.google.com/events/io/ [9] http://www.Event-B.org/ [10] http://www.android.com/ [11] http://o7planning.org/web/fe/default/vi/document/1283892/huong-dan- lap-trinh-android-voi-database-sqlite [12] http://android.vn/forums/ ... Tổng quan kiểm chứng giao diện phần mềm Phƣơng pháp mơ hình hóa Event- B Giới thiệu cách chi tiết giao diện phần mềm vấn đề kiểm chứng giao diện phần mềm, phương pháp kiểm chứng giao diện Bao gồm... Giao diện EventB Explorer mơ tả Hình 2.15 [9] Hình 2.14 Symbols View Hình 2.15 Event- B Explorer Hình 2.16 Menu bar 27 Chƣơng KIỂM CHỨNG GIAO DIỆN PHẦN MỀM B? ??NG PHƢƠNG PHÁP MƠ HÌNH HĨA EVENT- B. .. giao diện phần mềm phƣơng pháp mơ hình hóa Event – B? ?? nhằm nghiên cứu phương pháp kiểm chứng giao diện chung tập trung vào xây dựng phương pháp kiểm chứng thứ tự xuất cửa sổ giao diện phần mềm