ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TRẦN QUỐC NAM PHƯƠNG PHÁP KIỂM CHỨNG TÍNH ĐÚNG ĐẮN CỦA CÁC BIỂU ĐỒ TUẦN TỰ UML 2.0 Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật p
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN QUỐC NAM
PHƯƠNG PHÁP KIỂM CHỨNG TÍNH ĐÚNG ĐẮN CỦA CÁC BIỂU ĐỒ TUẦN TỰ UML 2.0
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Ĩ
Ngành: Công nghệ Thông tin
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS TRỊNH THANH BÌNH ĐỒNG HƯỚNG DẪN: TS PHẠM NGỌC HÙNG
Hà nội – 2015
Trang 2MỤC LỤC
MỤC LỤC i
LỜI CẢM ƠN iii
LỜI CAM ĐOAN iv
DANH MỤC THUẬT NGỮ VIẾT TẮT v
DANH MỤC HÌNH VẼ vi
DANH MỤC BẢNG viii
Chương 1: Giới thiệu 1
Chương 2: Phương pháp phân tích biểu đồ tuần tự nhằm xây dựng các mô hình đặc tảError! Bookmark not defined 2.1 Biểu đồ tuần tự UML2.0 Error! Bookmark not defined.
2.2 Phương pháp phân tích đối tượng của biểu đồ tuần tự thành các khối đơnError! Bookmark not defined 2.3 Phương pháp sinh ôtômat vào/ra từ các khối đơn của biểu đồ tuần tựError! Bookmark not defined.
2.3.1 Trường hợp khối đơn không chứa phân đoạn nàoError! Bookmark not defined.
2.3.2 Trường hợp khối đơn chứa một phân đoạn OptionError! Bookmark not defined.
2.3.3 Trường hợp khối đơn chứa một phân đoạn AlternativeError! Bookmark not defined.
2.3.4 Trường hợp khối đơn chứa một phân đoạn LoopError! Bookmark not defined.
2.3.5 Trường hợp khối đơn chứa một phân đoạn BreakError! Bookmark not defined.
2.3.6 Trường hợp khối đơn chứa một phân đoạn ParallelError! Bookmark not defined.
2.3.7 Trường hợp khối đơn chứa một phân đoạn StrictError! Bookmark not defined.
2.3.8 Trường hợp khối đơn chứa một phân đoạn CriticalError! Bookmark not defined.
2.3.9 Trường hợp khối đơn chứa một phân đoạn ConsiderError! Bookmark not defined.
2.3.10 Trường hợp khối đơn chứa một phân đoạn IgnoreError! Bookmark not defined.
2.4 Phương pháp xây dựng ôtômat vào/ra cho đối tượng của biểu đồ tuần tựError! Bookmark not defined.
Chương 3: Công cụ sinh ôtômat vào/ra từ biểu đồ tuần tự Error! Bookmark not defined.
Trang 33.1 Giới thiệu về công cụ Error! Bookmark not defined.
3.2 Thực nghiệm Error! Bookmark not defined.
3.2.1 Bài toán đặt chỗ Error! Bookmark not defined.
3.2.2 Bài toán máy thanh toán ở siêu thị Error! Bookmark not defined.
3.3 Đánh giá Error! Bookmark not defined.
Chương 4: Phương pháp kiểm chứng tính đúng đắn của biểu đồ tuần tự qua ôtômat
vào/ra Error! Bookmark not defined.
4.1 Kiểm chứng tính đúng đắn của biểu đồ tuần tự qua ôtômat vào/raError! Bookmark not defined 4.2 Áp dụng phương pháp kiểm chứng với trường hợp bài toán đặt chỗError! Bookmark not defined Chương 5: KẾT LUẬN Error! Bookmark not defined.
TÀI LIỆU THAM KHẢO 2
Trang 4LỜI CẢM ƠN
Trước tiên tôi xin dành lời cảm ơn chân thành và sâu sắc đến hai thầy giáo, TS Trịnh Thanh Bình và TS Phạm Ngọc Hùng – những người đã hướng dẫn, khuyến khích, chỉ bảo và tạo cho tôi những điều kiện tốt nhất từ khi bắt đầu cho tới khi hoàn thành công việc của mình
Tôi xin dành lời cảm ơn chân thành tới các thầy cô giáo khoa Công nghệ thông tin, trường Đại học Công nghệ, ĐH QGHN đã tận tình đào tạo, cung cấp cho tôi những kiến thức vô cùng quý giá và đã tạo điều kiện tốt nhất cho tôi trong suốt quá trình học tập, nghiên cứu tại trường
Đồng thời tôi xin chân thành cảm ơn những người thân trong gia đình cùng toàn thể bạn bè đã luôn giúp đỡ, động viên tôi trong những lúc gặp phải khó khăn trong việc học tập và nghiên cứu chương trình thạc sĩ tại Đại học Công nghệ, ĐH QGHN
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan rằng luận văn thạc sĩ công nghệ thông tin “Phương pháp kiểm
chứng tính đúng đắn của các biểu đồ tuần tự UML 2.0” là công trình nghiên cứu của
riêng tôi, không sao chép lại của người khác Trong toàn bộ nội dung của luận văn,
những điều đã được trình bày hoặc là của chính cá nhân tôi hoặc là được tổng hợp từ
nhiều nguồn tài liệu Tất cả các nguồn tài liệu tham khảo đều có xuất xứ rõ ràng và
hợp pháp
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định
cho lời cam đoan này
Hà Nội, ngày … tháng … năm 2015
Trần Quốc Nam
Trang 6DANH MỤC THUẬT NGỮ VIẾT TẮT
1 DFA Deterministic Finite Automata Ôtômat hữu hạn trạng thái
2 I/O Automata Input/Output Automata Ôtômat vào/ra
Trang 7DANH MỤC HÌNH VẼ
Hình 2.1 Phân đoạn Loop Error! Bookmark not defined Hình 2.2 Phân đoạn Alt Error! Bookmark not defined Hình 2.3 Phân đoạn Par và ví dụ thứ tự thực hiện Error! Bookmark not defined Hình 2.4 Phân đoạn Opt Error! Bookmark not defined Hình 2.5 Phân đoạn Break Error! Bookmark not defined Hình 2.6 Phân đoạn Seq Error! Bookmark not defined Hình 2.7 Phân đoạn Strict Error! Bookmark not defined Hình 2.8 Phân đoạn Ignore Error! Bookmark not defined Hình 2.9 Phân đoạn Consider Error! Bookmark not defined Hình 2.10 Phân đoạn Critical Error! Bookmark not defined Hình 2.11 Phân đoạn Neg Error! Bookmark not defined Hình 2.12 Phân đoạn Assert Error! Bookmark not defined Hình 2.13 Khối đơn gồm một phân đoạn opt Error! Bookmark not defined Hình 2.14 Khối đơn không chứa phân đoạn và ôtômát cho đối tượng User Error!
Bookmark not defined.
Hình 2.15 Khối đơn chỉ chứa một phân đoạn Option và ôtômat cho đối tượng User
Error! Bookmark not defined.
Hình 2.16 Khối đơn chỉ chứa một phân đoạn Alternative và ôtômat cho đối tượng
User Error! Bookmark not defined.
Hình 2.17 Khối đơn chỉ chứa một phân đoạn Loop và ôtômat cho đối tượng User
Error! Bookmark not defined.
Hình 2.18 Khối đơn chỉ chứa một phân đoạn Break và ôtômat cho đối tượng User
Error! Bookmark not defined.
Trang 8Hình 2.19 Khối đơn chỉ chứa một phân đoạn Paraller và ôtômat cho đối tượng Admin
Error! Bookmark not defined.
Hình 2.20 Khối đơn chỉ chứa một phân đoạn Strict và ôtômat cho đối tượng User
Error! Bookmark not defined.
Hình 2.21 Khối đơn chỉ chứa một phân đoạn Critical và ôtômat cho đối tượng User
Error! Bookmark not defined.
Hình 2.21 Khối đơn chỉ chứa một phân đoạn Consider và ôtômat cho đối tượng User
Error! Bookmark not defined.
Hình 2.22 Khối đơn chỉ chứa một phân đoạn Ignore và ôtômat cho đối tượng User
Error! Bookmark not defined Hình 4.1.1 Kiến trúc của công cụ Error! Bookmark not defined Hình 4.1.2 Biểu đồ lớp của công cụ Error! Bookmark not defined Hình 4.1.3 Khối Loop đơn giản Error! Bookmark not defined Hình 4.1.4 Đầu ra của công cụ với khối Loop đơn giảnError! Bookmark not defined Hình 4.2.1 Biểu đồ tuần tự xử lý đặt chỗ Error! Bookmark not defined Hình 4.2.2 Đầu ra mong muốn cho đối tượng Oder Error! Bookmark not defined Hình 4.2.3 Đầu ra mong muốn cho đối tượng Ticket Error! Bookmark not defined Hình 4.2.4 Đầu ra mong muốn cho đối tượng AccountError! Bookmark not defined Hình 4.2.5 Biểu đồ tuần tự máy thanh toán ở siêu thị Error! Bookmark not defined Hình 4.2.6 Đầu ra mong muốn cho đối tượng CustomerError! Bookmark not defined.
Hình 4.2.7 Đầu ra mong muốn cho đối tượng Cashier Error! Bookmark not defined Hình 4.2.8 Đầu ra mong muốn cho đối tượng Card ProcessorError! Bookmark not
defined.
Hình 4.2.9 Đầu ra mong muốn cho đối tượng Cash RegisterError! Bookmark not
defined.
Trang 10DANH MỤC BẢNG
Bảng 5.1 Mô phỏng kiểm chứng thuộc tính P với bài toán đặt chỗ.Error! Bookmark
not defined.
Trang 11Chương 1: Giới thiệu
Đảm bảo chất lượng là một vấn đề quan trọng và tiêu tốn chi phí cao trong quá trình phát triển phần mềm Tự động hóa quá trình đảm bảo chất lượng là tiêu chí hướng tới của các doanh nghiệp nhằm giảm đi chi phí phát triển ngay từ khâu thiết kế Ngoài ra, đối với những sản phẩm có yêu cầu chất lượng cao như hệ thống điều khiển máy bay, tàu ga, kỹ thuật quân sự, y tế v.v nhà đầu tư sẽ yêu cầu áp dụng các phương pháp hình thức nhằm đảm bảo tính đúng đắn của thiết kế trước khi triển khai Giải pháp phố biến nhất hiện nay để giải quyết vấn đề trên là áp dụng các phương pháp kiểm chứng mô hình để tự động hóa quá trình kiểm chứng tính đúng đắn của thiết kế [2], [6], [9] Để
áp dụng những phương pháp này, ta cần phải xây dựng các mô hình đặc tả chính xác hành vi của hệ thống cần kiểm chứng [4], [10], [11] Tuy nhiên, xây dựng mô hình cho các hệ thống phần mềm là một công việc khó khăn và tiềm ẩn nhiều lỗi Các nghiên cứu hiện tại hầu hết giả sử các mô hình này đã có và đúng đắn Trong thực tế, giả định này rất khó để hiện thực, nhất là từ phía các công ty phát triển phần mềm Hạn chế trên
là một trong những nguyên nhân chính dẫn đến các phương pháp này khó áp dụng trong thực tế
Để giải quyết vấn đề nêu trên, một trong những hướng tiếp cận là sử dụng đầu vào cho các phương pháp kiểm chứng từ biểu đồ thiết kế UML Việc đưa ra phương pháp
mô hình hóa biểu đồ UML, ở đây là biểu đồ tuần tự UML 2.0, giúp cho việc áp dụng các phương pháp kiểm chứng mô hình hoàn toàn có thể thực hiện được trong thực tế
Nghiên cứu hiện tại được đề cập trong [3] tập trung xây dựng một ôtômat cho cả biểu
đồ tuần tự Phương pháp này chỉ đảm bảo được các thuộc tính an toàn (safety properties) [7], kiểm tra các hành vi một cách tuần tự theo thời gian Cách tiếp cận này không thể hiện được tính hướng đối tượng vốn có biểu đồ tuần tự là sự tương tác giữa các đối tượng với nhau, gửi và nhận các loại thông điệp, các điểm xuất phát và điểm đến của chúng, đặc biệt đối với các hệ thống tương tranh Vì vậy một cách khác ta cần bóc tách xây dựng ôtômat thể hiện hành vi của từng đối tượng trong mối quan hệ với các đối tượng khác từ đó ta có hành vi của hệ thống
Một cách tiếp cận để giải quyết vấn đề trên được đề xuất trong [5] Ý tưởng chính của phương pháp này là xây dựng một ôtômat vào/ra (Input/Output Automata – I/O
Trang 12TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Đỗ Đức Giáo (2011), Toán rời rạc ứng dụng trong tin học, Nhà xuất bản giáo
dục Việt Nam
Tiếng Anh
[2] Clarke, E M.; Grumberg, O & Peled, D A (2000), Model checking, MIT,
Cambridge, Mass
[3] H M Duong, L K Trinh, and P N Hung (2013), “An Assume-Guarantee
Model Checker for Component-Based Systems”, The 10 th IEEE-RIVF International Conference on Computing and Communication Technologies
[4] L B Cuong and P N Hung (2012), “A Method for Generating Models of
Black-box Components”, 4 th
International Conference on Knowledge and Systems Engineering (KSE 2012), IEEE Computer Society Press, pp 177-222
[5] Zhang, C & Duan, Z (2011), Specification and Verification of UML2.0
Sequence Diagrams Using Event Deterministic Finite Automata., in 'SSIRI
(Companion)', IEEE Computer Society, , pp 41-46
[6] J Magee and J Kramer (1990), „Concurrency: State Models and Java Programs‟, John Wiley and Sons.
[7] P N Hung, N V Ha, T Aoki and T Katayama (2012), “On Optimization of Minimized Assumption Generation Method for Component-based Software
Verification”, IEICE Trans on Fundamentals, Special Issue on Software
Reliability Engineering, Vol E95-A, No.9, pp 1451-1460
[8] Lynch, N A & Tuttle, M R (1989), 'An introduction to input/output automata',
CWI Quarterly 2, 219 246
[9] D Lorenzoli, L Mariani and M Pezz` e (2008), “Automatic generation of
software behavioral models”, ACM, Proceedings of the 30th international
conference on Software engineering, pp 501-510
[10] J.C Corbett, M.B Dwyer, J Hatcliff, S Laubach, C.S Pasareanu, Robby and Hongjun Zheng (2000), ”Bandera: extracting finite-state models from Java
Trang 13Conference on, pp 439-448d
[11] O Tkachuk, M.B Dwyer and C.S Pasareanu (2003), “Automated environment
generation for software model checking”, Automated Software Engineering,
Proceedings 18th IEEE International Conference on, pp 116-127
[12] cand inform Claus-André Ohlhoff (2006) Consistent Refinement of Sequence
Diagrams in the UML 2.0 Hamburg: Christian-Albrechts-Universität zu Kiel