Kỷ yếu Hội nghị Khoa học Quốc gia lần thứ IX “Nghiên cứu ứng dụng Công nghệ thông tin (FAIR'9)”; Cần Thơ, ngày 4-5/8/2016 DOI: 10.15625/vap.2016.00076 PHƯƠNG PHÁP SINH MƠ HÌNH TỰ ĐỘNG CHO CÁC BIỂU ĐỒ UML 2.0 Lê Chí Luận 1,2, Phạm Ngọc Hùng2 Khoa Công nghệ Thông tin, Đại học Công nghệ Giao thông Vận tải Khoa Công nghệ Thông tin, Đại học Công nghệ - Đại học Quốc gia Hà Nội luanlc@utt.edu.vn, hungpn@vnu.edu.vn TÓM TẮT— Báo cáo giới thiệu số cải tiến cho phương pháp sinh mơ hình cho đối tượng biểu đồ UML 2.0 Ý tưởng số cải tiến phân tích biểu đồ đầu vào có cấu trúc phức tạp chứa hầu hết phân đoạn lồng ghép với để xác định thông điệp vào đối tượng thứ tự thực chúng nhằm xây dựng mơ hình cho đối tượng Các mơ hình đặc tả ơtơmát vào/ra (IO automata) Các mơ hình sinh phương pháp đề xuất sử dụng để kiểm chứng tính đắn thiết kế cho sử dụng để sinh ca kiểm thử cho phương pháp kiểm thử dựa mơ hình Từ khóa— Sinh mơ hình tự động, biểu đồ tuần tự, ơtơmát vào/ra I GIỚI THIỆU Đảm bảo chất lƣợng vấn đề quan trọng tốn chi phí cao q trình phát triển phần mềm Tự động hóa số bƣớc trình đảm bảo chất lƣợng mục tiêu hƣớng tới doanh nghiệp nhằm giảm chi phí phát triển Ngồi ra, 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., phƣơng pháp hình thức đƣợc yêu cầu áp dụng nhằm đảm bảo tính đắn thiết kế trƣớc triển khai pha thiết kế chứng minh tính đắn cài đặt so với thiết kế Giải pháp phố biến để chứng minh tính đắn thiết kế phƣơng pháp kiểm chứng mơ hình [1], [6], [5] Để áp dụng phƣơng pháp này, ta cần phải xây dựng mơ hình đặc tả xác hành vi hệ thống cần kiểm chứng [3], [2], [7] Hơn nữa, mơ hình cịn đƣợc sử dụng để áp dụng kỹ thuật kiểm thử dựa mơ hình nhằm tự động phát lỗi lập trình so với thiết kế Tuy nhiên, việc xây dựng mơ hình cơng việc khó khăn tiềm ẩn nhiều lỗi Các nghiên cứu hầu hết giả sử mơ hình có đắn Trong thực tế, giả định khó để thực, từ phía cơng ty phát triển phần mềm Hạn chế nguyên nhân dẫn đến phƣơng pháp kiểm chứng mơ hình kiểm thử dựa mơ hình khó áp dụng thực tế Để giải vấn đề nêu trên, hƣớng tiếp cận quan trọng sinh mơ hình đặc tả xác hành vi hệ thống từ biểu đồ UML có sẵn cơng ty Để giải vấn đề này, nghiên cứu đƣợc đề cập [4] hầu hết nghiên cứu liên quan xây dựng mơ hình, thƣờng đƣợc đặc tả ơtơmát đơn định hữu hạn trạng thái cho toàn biểu đồ Các mơ hình mơ tả đƣợc thông điệp theo thời gian nhƣ thứ tự vốn có chúng Cách tiếp cận khơng thể đƣợc tính hƣớng đối tƣợng vốn có biểu đồ tƣơng tác đối tƣợng với nhau, gửi nhận loại thông điệp, điểm xuất phát điểm đến chúng, đặc biệt hệ thống tƣơng tranh Vì vậy, phƣơng pháp phù hợp với biểu đồ đơn giản UML 1.x mơ hình đƣợc sinh khơng mơ tả đƣợc cấu trúc điển hình UML 2.0 nhƣ Parallel, Loop kết hợp với Break, v.v Hơn nữa, áp dụng phƣơng pháp kiểm chứng mơ hình này, kiểm chứng đƣợc thuộc tính an toàn (safety properties) Một cách tiếp cận để giải vấn đề đƣợc đề xuất [8] Ý tƣởng phƣơng pháp xây dựng ôtômát vào/ra (I/O Automata) [6] cho đối tƣợng biểu đồ Tuy nhiên, phƣơng pháp áp dụng cho biểu đồ UML 2.0 đơn giản Cụ thể, phƣơng pháp áp dụng cho biểu đồ chứa khối đơn, khối chứa phân đoạn áp dụng đƣợc cho bảy khối là: Option, Alternative, Parallel, Loop, Strict, Critical, Break Vì vậy, phƣơng pháp chƣa áp dụng đƣợc trƣờng hợp biểu đồ có cấu trúc phức tạp, khối lồng ghép, đan xen vào Báo cáo hoàn thiện phƣơng pháp xây dựng ôtômát vào/ra cho đối tƣợng biểu đồ phức tạp, có đầy đủ khối hay dùng UML 2.0 nhằm giải vấn đề nêu Phƣơng pháp đề xuất tiến hành phân tích đối tƣợng biểu đồ có cấu trúc phức tạp chứa phân đoạn lồng ghép với thành khối đơn Tiếp đến, phƣơng pháp xây dựng mơ hình tƣơng ứng từ khối đơn đƣợc phân tích Cuối cùng, mơ hình đƣợc sinh từ khối đơn đối tƣợng đƣợc ghép nối với theo thứ tự từ từ xuống dƣới để đƣợc mơ hình cho đối tƣợng tƣơng ứng biểu đồ Phần lại báo cáo đƣợc trình bày theo cấu trúc sau Phƣơng pháp phân tích biểu đồ thành khối đơn đƣợc trình bày phần II Phƣơng pháp sinh mơ hình từ khối đơn tƣơng ứng đối tƣợng biểu đồ trình bày phần III Tiếp đến phần IV, trình bày phƣơng pháp xây dựng ôtômát vào/ra cho đối tƣợng từ biểu đồ Phần V trình bày kết thực nghiệm so sánh với nghiên cứu [8] Cuối cùng, báo cáo đƣợc tổng kết Phần VI 620 PHƢƠNG PHÁP SINH MƠ HÌNH TỰ ĐỘNG CHO CÁC BIỂU ĐỒ UML 2.0 II PHƢƠNG PHÁP PHÂN TÍCH BIỂU ĐỒ TUẦN TỰ THÀNH CÁC KHỐI ĐƠN Một biểu đồ bao gồm nhiều đối tƣợng đối tƣợng có nhiều khối đơn lồng ghép với Việc bóc tách đối tƣợng biểu đồ thành khối đơn cần thiết Các khối đơn sau đƣợc bóc tách đầu vào cho việc chuyển đổi sang ơtơmát vào/ra đƣợc trình bày phần III Phần báo cáo đề xuất thiết kế đƣợc biểu diễn biểu đồ đối tƣợng dƣới dạng tệp xmi Một cơng cụ đƣợc báo cáo phát triển để phân tích tệp xmi tách thành khối đơn biểu đồ Thuật tốn Phân tích biểu đồ thành khối đơn Input: Biểu đồ biểu diễn dƣới dạng tệp xmi Output: Danh sách đối tƣợng biểu đồ đƣợc biểu diễn dƣới dạng danh sách khối đơn : create stack, singleFragmentStack : create array sdObjectList, operandList, eventList and singleFragmentList : For all element in xmi file 4: If meet open tag then Switch element 5: case Object: 6: create object; create singleFragment, push to singleFragmentStack; break 7: case Fragment: 8: if stack is not null then 9: create new event with fragment id and add to eventList; belong to the Operand on the top of stack if stack is not null 10: create new singleFragment and push to singleFragmentStack 11: end if 12: create new fragment with singleFragment on top of singleFragmentStack and push to stack; break 13: case Operand: 14: create new operand and push to stack; break 15: case Event: 16: create new event and add to eventList; belong to the Operand on the top of stack if stack is not null; break 17: case Constraint: 18: create new constraint and add to the fragment on the top of stack; break 19: end switch 20: else if meet close tag then 21: if element is Operand then 22: op = stack.pop();set op ∈ the Fragment on the top of stack; insert op to operandList 23: else if element is Fragment then 24: fragment = stack.pop() 25: add fragment to singleFragment on top of singleFragmentStack 26: if singleFragmentStack has more than item then 27: singleFragment = singleFragmentStack.pop; 28: add singleFragment to singleFragmentList 29: end if 30: else if element is Object then 31: singleFragment = singleFragmentStack.pop; 32: add singleFragment to singleFragmentList 33: add singleFragmentList to object 34: add object to sdObjectList 35: end if 36: end if 37: end for Thuật toán mơ tả q trình phân tích tệp xmi đầu vào, phân tích biểu đồ thành đối tƣợng bao gồm khối đơn Trƣớc tiên, thuật toán khởi tạo đối tƣợng stack, singleFragmentStack (dòng 1) danh sách sdObjectList, operandList, eventList singleFragmentList (dòng 2) Sau lần lƣợt đọc element từ tệp xmi đầu vào Nếu gặp element thẻ mở, thuật toán kiểm tra xem thẻ tạo liệu cho phù hợp Có loại thẻ gặp Object (dòng 5), Fragment (dòng 7), Operand (dòng 13), Event (dòng 15) Constraint (dòng 23) Ứng với thẻ Object, thuật toán tạo đối tƣợng singleFragment đẩy vào singleFragmentStack đồng thời tạo đối tƣợng object (dòng 6) Nếu gặp thẻ mở Fragment, stack đƣợc kiểm tra xem có phần tử hay khơng (dịng 8) Nếu có, thuật toán tạo event giả với id giống nhƣ fragment, thuộc Operand đỉnh stack đƣa vào eventList (dòng 9), đồng thời tạo đối tƣợng singleFragment đẩy vào singleFragmentStack (dịng 10) Sau đó, thuật tốn khởi tạo fragment thuộc singleFragment đỉnh singleFragmentStack đƣa vào stack (dịng 12) Nếu gặp thẻ mở Operand, thuật tốn khởi tạo đối tƣợng Operand đƣa vào stack (dòng 14) Nếu gặp thẻ mở Event, thuật toán tạo đối tƣợng event đƣa vào Lê Chí Luận, Phạm Ngọc Hùng 621 eventList, event thuộc Operand đỉnh stack stack không rỗng, không thuộc Operand ngƣợc lại (dòng 16) Nếu gặp thẻ mở Constraint, thuật toán tạo Constraint cho fragment đỉnh stack (dịng 17) Trong trƣờng hợp gặp thẻ đóng, thuật tốn kiểm tra thẻ đóng để xử lý Có trƣờng hợp thẻ đóng gặp Operand, Fragment Object Trƣờng hợp gặp thẻ đóng Operand, Opeand đƣợc đƣa khỏi đỉnh stack, đánh dấu thuộc fragment đỉnh stack lúc đƣa vào opeandList (dịng 22) Trƣờng hợp gặp thẻ đóng Fragment, Fragment đƣợc lấy khỏi đỉnh stack đƣợc đƣa vào singleFragment đỉnh singleFragmentStack (dịng 24, 25) Sau đó, singleFragmentStack đƣợc kiểm tra xem có nhiều phần tử hay khơng (dịng 26) Nếu đúng, singleFragment đƣợc lấy khỏi singleFragmentStack đƣa vào singleFragmentList (dòng 27, 28) Trƣờng hợp gặp thẻ đóng Object, singleFragment đƣợc lấy khỏi singleFragmentStack đƣa vào singleFragmentList (dòng 31, 32), sau singleFragmentList đƣợc đƣa vào Object Object đƣợc đƣa vào objectList (dòng 33, 34) Sau kết thúc đọc tệp xmi, ta đƣợc objectList tƣơng ứng với đối tƣợng biểu đồ ban đầu Mỗi phần tử objectList danh sách singleFragment tƣơng ứng đƣợc bóc tách từ đối tƣợng III PHƢƠNG PHÁP SINH MƠ HÌNH TỪ CÁC KHỐI ĐƠN CỦA BIỂU ĐỒ TUẦN TỰ Sau bóc tách đối tƣợng biểu đồ thành khối đơn tƣơng ứng, phần trình bày phƣơng pháp sinh ơtơmát vào/ra từ khối đơn, khối chứa nhiều phân đoạn biểu đồ [8] Báo cáo nghiên cứu xây dựng thuật toán chuyển đổi sang ôtômát vào/ra từ khối đơn chứa phân đoạn Consider Ignore Thuật toán chuyển đổi bảy loại phân đoạn: Option, Alternative, Loop, Break, Parallel, Strict, Critical trƣờng hợp khối khơng chứa phân đoạn đƣợc trình bày [8] Đầu vào thuật toán khối đơn biểu đồ đƣợc mô tả sáu SD = (E, FG, OP, C, num, frag), đó: E tập kiện E = EI EO , EI tập kiện nhận, EO tập kiện gửi, FG tập phân đoạn, trƣờng hợp khối đơn, FG chứa nhiều phần tử, OP tập Operand, C tập điều kiện C = {c1, c2, c3 ck}, num danh sách số thứ tự event từ đến n, frag hàm chuyển từ E đến F Đầu thuật tốn ơtơmát vào/ra tƣơng ứng đƣợc mô tả sáu O = (Q, đó: , , , q0, F), Q = {q0, q1, q2, , qn} tập trạng thái, = {(c, e)| ∈ ∈ EI } tập kí tự vào, = {(c, e)| ∈ ∈ EO } tập kí tự ra, tập luật chuyển (qi, < c,e >) = qj, q0 trạng thái khởi đầu, F = {f1, f2, , fm} tập trạng thái kết thúc Ơtơmát vào/ra đầu đƣợc xây dựng quy tắc nhƣ sau [8]: Số lƣợng trạng thái ôtômát số lƣợng kiện SD: |Q| = |E| Q = {q0, q1, …, qn} Tập điều kiện ôtômát tƣơng ứng tập điều kiện SD: C = {c| c ∈ C} Tập kiện ôtômát tƣơng ứng tập kiện SD: E = {e| e ∈ E} Tập kí tự vào ơtơmát đƣợc xác định: = {(c, e)| c ∈ C, e ∈ EI} Tập kí tự ôtômát đƣợc xác định: = {(c, e)| c ∈ C, e ∈ EO} Tập luật chuyển F đƣợc xác định trƣờng hợp sau Thuật toán 2: Thuật toán xác định tập luật chuyển cho ôtômát vào/ra từ khối đơn chứa phân đoạn Consider Trƣờng hợp thứ hai đƣợc xét đến khối đơn biểu đồ chứa phân đoạn Consider Khi đó, FG khối đơn có thêm tập ràng buộc (constraint – CT) Sau có E = {e| e ∈ E} C = {c| c ∈ C}, tập trạng thái kết thúc F đƣợc xác định F = {qn} {qi | ei ∈ FG and en ∈ FG and ei ∈ CT and ei+1 n CT} Tập luật chuyển đƣợc xác định thuật toán : set k = : For i from to |E| 3: If ei ∈ FG 4: If ei in constraint CT set ; set k = k+1 end if 5: end if PHƢƠNG PHÁP SINH MƠ HÌNH TỰ ĐỘNG CHO CÁC BIỂU ĐỒ UML 2.0 622 6: else set ; set k = k+1 end else : end for Thuật toán xác định tập luật chuyển cho ôtômát vào/ra từ khối đơn chứa phân đoạn Consider Tập quy tắc chuyển trạng thái ôtômát vào/ra đƣợc xác định theo quy tắc: Trƣớc tiên khởi tạo biến số trạng thái k = (dòng 1) Với i từ đến n (dòng 2), ta xét trƣờng hợp, trƣờng hợp 1, ei thuộc FG (dịng 3), thuật tốn kiểm tra xem ei có thuộc constraint CT FG khơng Nếu đúng, trạng thái q k qk+1 có quy tắc chuyển trạng thái ei hay = k đƣợc tăng lên (dịng 4) Trƣờng hợp 2, ei khơng thuộc FG, ta ln có có quy tắc chuyển trạng thái qk qk+1 hay = (dòng 6) Sau vòng lặp với i, ta đƣợc biểu diễn tập quy tắc chuyển trạng thái ôtômát vào/ra khối đơn chứa phân đoạn Consider Thuật toán 3: Thuật toán xác định tập luật chuyển cho ôtômát vào/ra từ khối đơn chứa phân đoạn Ignore Trƣờng hợp thứ ba đƣợc xét đến khối đơn biểu đồ chứa phân đoạn Ignore Khi đó, FG khối đơn có thêm tập ràng buộc constraint CT Sau có E = {e| e ∈ E} C = {c| c ∈ C}, tập trạng thái kết thúc F đƣợc xác định F = {qn} {qi | ei ∈ FG and en ∈ FG and ei CT and ei+1 n ∈ CT} Tập luật chuyển đƣợc xác định thuật toán : set k= : For i from to |E| 3: If ei ∈ FG 4: If ei not in constraint CT set 5: end if 6: else set ; set k=k+1 end else ; set k=k+1 end if 7: end for Thuật toán xác định tập luật chuyển cho ôtômát vào/ra từ khối đơn chứa phân đoạn Ignore Tập quy tắc chuyển trạng thái ôtômát vào/ra đƣợc xác định theo quy tắc: Trƣớc tiên khởi tạo biến số trạng thái k = (dòng 1) Với i từ đến n (dòng 2), ta xét trƣờng hợp Trƣờng hợp 1, e i thuộc FG (dịng 3), thuật tốn kiểm tra xem ei có thuộc constraint CT FG khơng (dịng 4) Nếu khơng, trạng thái q k qk+1 có quy tắc chuyển trạng thái ei hay = k đƣợc tăng lên (dòng 4) Trƣờng hợp 2, ei khơng thuộc FG, ta ln có có quy tắc chuyển trạng thái qk qk+1 hay = (dòng 6) Sau vòng lặp với i, ta đƣợc biểu diễn tập quy tắc chuyển trạng thái ôtômát vào/ra khối đơn chứa phân đoạn Ignore IV PHƢƠNG PHÁP XÂY DỰNG ÔTÔMÁT VÀO/RA CHO ĐỐI TƢỢNG TỪ BIỂU ĐỒ TUẦN TỰ Sau có đƣợc ôtômát vào/ra từ khối đơn đối tƣợng biểu đồ tuần tự, vấn đề đƣợc xét tới phƣơng pháp ghép nối ôtômát vào/ra thành ơtơmát vào/ra tƣơng ứng với đối tƣợng Dựa thuật tốn bóc tách có đầu danh sách khối đơn theo thứ tự từ ngồi ta ghép đƣợc ơtơmát vào/ra cho đối tƣợng dựa việc ghép lần lƣợt hai ôtômát vào/ra theo thứ tự ƣu tiên từ từ xuống dƣới Phƣơng pháp ghép nối ôtômát vào/ra đƣợc mô tả thuật tốn Đầu vào thuật tốn hai ơtơmát O1(Q1, , 1, q01, F1), O2(Q2, O1 ôtômát vào/ra gốc bao hàm ôtômát O2 vị trí index O2 ôtômát vào/ra đƣợc ghép vào O1 Đầu thuật tốn ơtơmát O (Q, , , , , q0, F), đó: Q = {q0, q1, q2, ,qn} tập trạng thái, = {(c, e)| ∈ ∈ EI } tập kí tự vào, = {(c, e)| ∈ ∈ EO } tập kí tự ra, tập luật chuyển, C tập điều kiện C = {c1, c2, c3 ck}, E tập kiện E = EI EO, EI tập kiện nhận, EO tập kiện gửi, q0 trạng thái khởi đầu, F = {f1, f2, , fp} tập trạng thái kết thúc Thuật toán 4: Ghép nối hai ôtômát vào/ra : |Q| = |Q1| + |Q2| - 1; = 2; = , , 2, q02, F2) vị trí index, đó: Lê Chí Luận, Phạm Ngọc Hùng 623 //Thay đổi số trạng thái O mảng Q : For i from |Q1| to index 3: For j from |Q1| to set = ; = null end for : end for : For j from |Q1| to index 9: For i from |Q1| to set ; = null end for 10: end for //Ghép trạng thái khởi tạo 11: For i from to |Q| 12: if isset // xét với qi có luật chuyển tới qindex 13: null; 14: For j from to |Q2| 15: if is set = endif // xét với luật chuyển từ q0 O2 16: if is Break = endif //nếu gặp khối Break thêm luật chuyển khơng chạy vào Break 17: endfor 18: endif 19:endfor //Ghép luật trạng thái kết thúc O2 tới trạng thái O1 20: For j from to |Q| 21: If isset // xét với luật chuyển từ qindex O 22: For all F2 as f // xét tất trạng thái kết thúc O2 trừ kết thúc Break end If 23: If f is not Break finite set 24: endFor 25: if all F2 as f and f ≠ set = null endIf //xóa luật cũ sau chuyển 26: endIf 27:endFor // đưa tất luật chuyển lại O2 vào O 28:For i from to |Q2| 29: For j from to |Q2| 30: If qi F2 and ≠ null = endIf 31: endFor 32:endFor //ghép trạng thái kết thúc 33: For all F1 as f1 34: if f1 ≥ index set f1= f1 + |Q2| -1 endIf //gán lại số trạng thái cho F1 35: endFor //nếu index trạng thái kết thúc O1, đưa toàn trạng thái kết thúc O2 vào O1 36:If index is ∈ F1 37: For all F2 as f2 set f2 = f2 + index - 1; insert f2 to F1 endFor 38:endIf //nếu O2 Break, đưa trạng thái kết thúc khối Break vào O1 39:For all F2 as f2 40: If f2 is Break finite insert f2 = f2 + index -1 to F1 endIf 41:endFor //kết thúc, trạng thái kết thúc O trạng thái kết thúc O1 42: F= F1 Thuật tốn mơ tả phƣơng pháp ghép nối ơtơmát O2 vào ơtơmát O1 vị trí index Ơtơmát O kết thuật toán đƣợc xác định bởi: Tập trạng thái Q có độ lớn độ lớn Q hợp với Q2 loại trừ trạng thái q02 (dịng 1) Tập kí tự (vào ra) hợp tập kí tự tƣơng ứng (dịng 1) Đồng thời, thuật tốn khởi tạo tập luật chuyển = Tiếp đó, thuật tốn thay đổi số trạng thái có số lớn index thêm khoảng |Q2| -1 (dòng → dòng 10) Để ghép nối luật chuyển vào , thuật toán triển khai bƣớc Bƣớc 1, với trạng thái qi Q (dòng 11), thuật tốn kiểm tra xem có luật chuyển từ qi tới qindex hay khơng (dịng 12) Nếu có, đƣợc thay luật chuyển từ q02 tới trạng thái O2 (dòng 13, 14, 15) Trƣờng hợp O2 khối Break, luật chuyển không chạy vào Break đƣợc thêm vào trực tiếp = (dòng 16) Bƣớc 2, với trạng thái qj Q (dòng 20), thuật tốn kiểm tra xem có luật chuyển từ qindex tới qj hay khơng (dịng 21) Nếu có, với trạng thái kết thúc không thuộc khối Break O2, ta có luật chuyển tới qj (dịng 22, 23) Luật chuyển từ qindex tới qj đƣợc bỏ sau thay (dịng 25) trƣờng hợp khơng có trạng thái kết thúc O2 vị trí PHƢƠNG PHÁP SINH MƠ HÌNH TỰ ĐỘNG CHO CÁC BIỂU ĐỒ UML 2.0 624 Bƣớc 3, đƣa tất luật chuyển lại vào (dòng 28 → dịng 32) Tiếp theo, thuật tốn ghép nối trạng thái kết thúc O từ trạng thái kết thúc O1 O2 Trƣớc tiên, thuật toán tăng số cho trạng thái kết thúc O1 có số lớn index khoảng |Q2| - (dịng 34) Sau đó, thuật tốn xét xem index có trùng với trạng thái kết thúc O1 hay khơng (dịng 36) Nếu có, đƣa tồn trạng thái kết thúc O2 vào O1 sau tăng số thêm khoảng index – (dòng 37) Sau đó, O2 khối Break, trạng thái kết thúc khối Break đƣợc thêm trực tiếp vào O1 (dòng 40) Cuối cùng, trạng thái kết thúc O trạng thái kết thúc O1 lúc (dòng 42) V THỰC NGHIỆM Để minh chứng cho tính đắn tính hiệu phƣơng pháp đề xuất cài đặt công cụ hỗ trợ phƣơng pháp đề xuất ngôn ngữ Java Công cụ có tên SD2IOATool1 Kiến trúc phƣơng pháp sinh mơ hình cho biểu đồ UML 2.0 đƣợc mơ tả nhƣ Hình Áp dụng cơng cụ cho biểu đồ trƣờng hợp chứa phân đoạn chứa nhiều phân đoạn lồng ghép đan xen nhau, từ so sánh kết thu đƣợc với kết phƣơng pháp đề xuất [8] nhƣ Bảng Với biểu đồ đầu vào có khối đơn chứa Consider, Ignore trƣờng hợp khối lồng phƣơng pháp đề xuất [8] chƣa giải đƣợc Phƣơng pháp đề xuất giải đƣợc trƣờng hợp biểu đồ có khối lồng ghép, đan xen giải thêm đƣợc hai khối Consider Ignore Hình Kiến trúc phƣơng pháp sinh mơ hình cho đối tƣợng biểu đồ UML 2.0 Bảng So sánh kết đề xuất kết nghiên cứu [8] Thứ tự 10 11 12 13 14 Khối đơn Khơng có khối Alternative Loop Option Break Parallel Critical Strict Consider Ignore Sequencing Nagative Assertion Các khối lồng Phƣơng pháp đề xuất [8] Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Phƣơng pháp đề xuất Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Yes VI KẾT LUẬN Báo cáo đề xuất phƣơng pháp sinh mơ hình tự động cho biểu đồ UML 2.0 nhằm cung cấp giải pháp đầy đủ cho việc sinh mơ hình tƣơng ứng cho đối tƣợng biểu đồ có cấu trúc phức tạp Phƣơng pháp phân tích biểu đồ đầu vào, bóc tách đối tƣợng biểu đồ thành khối đơn Ứng với khối đơn sinh mơ hình tƣơng ứng, sau ghép nối mơ hình khối đơn theo thứ tự từ từ xuống dƣới để thu đƣợc mơ hình cho đối tƣợng biểu đồ Báo cáo xây dựng cài đặt công cụ SD2IOATool để minh chứng cho phƣơng pháp Các mơ hình sinh quan trọng đƣợc sử dụng để kiểm chứng tính đắn thiết kế sinh test case để áp dụng cho kiểm thử dựa mơ hình Việc sinh mơ hình khắc phục đƣợc nhƣợc điểm lớn việc áp dụng phƣơng pháp hình thức xây dựng mơ hình Cơng cụ đƣợc xây dựng cài đặt SD2IOATool đƣợc áp dụng cho đầu vào hai biểu đồ có cấu trúc phức tạp cho kết mơ hình tƣơng ứng đối tƣợng ứng với biểu đồ đầu vào http://www.coltech.vnu.edu.vn/~hungpn/SD2IOATool/ Lê Chí Luận, Phạm Ngọc Hùng 625 Tuy nhiên, việc sử dụng mơ hình sau sinh để làm để việc kiểm chứng kiểm thử hiệu nhƣ chƣa đƣợc đề cập Hơn nữa, chúng tơi tích hợp mơ hình đƣợc sinh cho công cụ kiểm chứng kiểm thử dựa mơ hình tƣơng ứng để minh chứng cho tính hiệu ý nghĩa mơ hình đƣợc sinh Lời cảm ơn Nghiên cứu báo cáo đƣợc thực dƣới tài trợ đề tài mã số QG.16.31 Đại học Quốc gia Hà Nội tài trợ TÀI LIỆU THAM KHẢO [1] E M Clarke, O Grumberg, and D Peled, “Model Checking”, MIT Press Cambridge, Mass., 1999 [2] J C Corbett, M B Dwyer, J Hatcliff, S Laubach, C S Pasareanu, Robby and Hongjun Zheng, ”Bandera: extracting finitestate models from Java source code”, In Proceedings of the 22nd International Conference on Software Engineering, ICSE 2000, limerick Ireland, june 4-11, 2000, pages 439-448, 2000 [3] L B Cuong and P N Hung, “A Method for Generating Models of Black-box Components”, 4th International Conference on Knowledge and Systems Engineering, KSE 2012, Da Nang, Viet Nam, August 17-19, 2012, pages 177-222, 2012 [4] H M Duong, L K Trinh, and P N Hung, “An Assume-Guarantee Model Checker for Component-Based Systems”, In 2013 IEEE RIVF International Conference on Computing and Communication Technologies, Research, Innovation and Vision for the Future, RIVF 2013, Ha Noi, Viet Nam, November 10-13, 2013, pages 22-26, 2013 [5] D Lorenzoli, L Mariani and M Pezzè, “Automatic generation of software behavioral models” In 30th International conference on Software engineering(ICSE 2008), Leipzing, Germany, may 10-18, 2008, pages 501-510, 2008 [6] Lynch, N A & Tuttle, M R., “An introduction to input/output automata”, CWI Quarterly 2, 219-246, 1989 [7] O Tkachuk, M B Dwyer and C.S Pasareanu, “Automated environment generation for software model checking”, In 18th IEEE International Conference on Automated Software Engineering (ASE 2003), 6-10 October 2003, Montreal, Canada, pages 116-129, 2003 [8] Zhang, C & Duan, Z., Specification and Verification of UML 2.0 Sequence Diagrams Using Event Deterministic Finite Automata., in 'SSIRI (Companion)', IEEE Computer Society, pp 41-46, 2011 ON IMPROVEMENTS OF THE MODEL GENERATION METHOD FROM UML 2.0 SEQUENCE DIAGRAMS Le Chi Luan, Pham Ngoc Hung ABSTRACT—This paper presents improvements for the model generation method from UML 2.0 sequence diagrams The key idea of the improvements is to analyzing the given UML 2.0 sequence diagram with combined fragments in order to identify the incoming and outgoing messages for each object in the diagram In this research, the generated models are represented by IO automata The models generated by this method will be used for model checking of the corresponding system design They are also useful for applying the model-based testing techniques ... 6 20 PHƢƠNG PHÁP SINH MƠ HÌNH TỰ ĐỘNG CHO CÁC BIỂU ĐỒ UML 2. 0 II PHƢƠNG PHÁP PHÂN TÍCH BIỂU ĐỒ TUẦN TỰ THÀNH CÁC KHỐI ĐƠN Một biểu đồ bao gồm nhiều đối tƣợng đối... phƣơng pháp sinh mơ hình tự động cho biểu đồ UML 2. 0 nhằm cung cấp giải pháp đầy đủ cho việc sinh mơ hình tƣơng ứng cho đối tƣợng biểu đồ có cấu trúc phức tạp Phƣơng pháp phân tích biểu đồ đầu... hợp khơng có trạng thái kết thúc O2 vị trí PHƢƠNG PHÁP SINH MƠ HÌNH TỰ ĐỘNG CHO CÁC BIỂU ĐỒ UML 2. 0 624 Bƣớc 3, đƣa tất luật chuyển lại vào (dòng 28 → dịng 32) Tiếp theo, thuật tốn ghép nối trạng