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áo đối lượ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
Trang 1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRAN QUOC NAM
PHU ONG PHAP KIEM CHUNG TINH DUNG DAN
CUA CAC BIEU BO TUAN TU UML 2.0
Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm
Mã Số: 6048 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
DONG HUGNG DAN: TS PHAM NGOC HUNG
Hà nội 2015
Trang 2
MỤC LỤC
MỤC LỤC LH HH HH HH teerereerdieraeE LỜI CẢM ƠN iii
LOI CAM BOAN osescsceccssseccsssissesssnssianssttansseessetiassetiseestnsseiiaesimsstiasoneareesseeinad¥ DANH MỤC THUẬT NGỮ VIẾT TÁT -cce, HH HHehreokuoŸ, DANH MỤC HÌNH VỀ v1
I910 i0 cm .ÁẶIAa Chương 1: Giới thiệu - - - i
Chương 3: Phương pháp phân tích biểu dé tan tu nhằm xây dựng các mô hình đặc tả 3
2.1 Biểu đỗ tuần tụ UMI.2.0 - 3
2.2 Phương pháp phân lích đối lượng của biểu đồ tuần tự thành các khói đơn 11 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ự 14 2.3.1 Trường hợp khói đơn không chia phân đoạn nao - - 16
2.3.2 Trường hợp khối đơn chứa một phân đoạn Option 16 2.3.3 Trường hợp khỏi don clita mét phan doan Allernalive 18 2.3.4 Trường hợp khỏi đơn chứa một phân đoạn T.oop - 19 2.3.5 Trường hợp khải đơn chứa một phân đoạn Irealc - - 2L 2.3.6 Trường hợp khểi đơn chứa một phân đoạn Parallel 2 2.3.7 Trường hợp khểi đơn chúa một phân đoạn Strict - - 23
2.3.8 Trường hợp khỏi đơn chứa một phân đoạn Critical 21 2.3.9 Trường hợp khỏi đơn chứa một phân đoạn Cansider 25
2.3.10 Trường hợp khối don chứa một phân đoạn Ignofe 27
2.1 Phương pháp xây dựng ôtômat vào/ra cho đối tượng của biểu đồ tuân tự 28
Chương 3: Công cụ sinh ôtômat vàora từ biểu đồ tuần tự ¬
Trang 3
3.2 Thực nghiệm " ¬— `ˆ
3.3.3 Bài toán máy thanh toán ở siêu thị ¬
4.2 Áp dựng phương pháp kiểm chứng với trường hợp bái toàn dặt chỗ 48
Trang 4in
LOI CAM ON
Trước tiên tôi xin đành lời cảm on chân thành và sâu sắc đến hai thây giáo, TS Trịnh Thanh Bình va TS Pham Ngoc Hing — những người đã hướng đâ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 đà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 dã tận tình dà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
iậ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ẻ dã luôn giúp dỡ, dộ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 Dại học Công nghệ, DII QGITN.
Trang 5Tôi xin cam đoan rằng luận văn thạc sĩ công nghệ thông tín “Thương pháp kiếm chứng lính đúng din của gá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 dưng của luận văn,
những điển đã đượ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 déu có xuất xứ rõ rang va hop phap
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 đoạn 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Ả
1 DEA Deterministic Finite Automata | Ôtômat hữu hạn trạng thái
2 1O AAutemata Input/Output Autamata Ôtômat vào/ra
Trang 7Hinh 2.1 Phan đoạn Leop - - 4
Hình 2.2 Phan doan Alt 4 THình 2.3 Phân đoạn Par và ví dự thử tự thực hiện ~ - 5
THinh 2.5 Phan doan Break 6 Tinh 2.6 Phan doan 5eq 7 Tink 3.7 Phân đoạn Striet ~ - §
Hình 2.9 Phân đoạn onsider so c2 sec cv crreerree "
1lình 2.10 Phân đoạn CTitlcal cành hHeereeeririeee.Ð Linh 2.11 Phân đoạn Neg on eeererrrrerrrdrrrrriererrareo TÚ Tink 2.12 Phân đoạn /ÀsseTf eset LO
Linh 2.13, Khéi don gém một phân đoạn opt so sessrssssseo, TT Hình 2.14 Khối don không chứa phân đoạn và ôtômát cho đối tượng, User LÓ Hình 2.15, Khéi don chỉ chứa một phân doan Option va dtémat cho déi tugng User 17 Hình 2.16 Khối dơn chỉ chứa một phân doan Aliemative va Stémat cho déi tugng
Trang 8Hình 4.1.4 Đầu ra của công cụ với khối Loop dơn giản sreeesesi 35 Hình 4.2.1 Biểu đỗ tuân tự xứ lý đặt chở oooc5ccccccrrrercee sects SG Hinh 4.2.2, Đầu ra mơng muốn cho dối tượng Oder ¬ Hình 4.2.3, Đầu ra mong muốn cho dối tượng Tieket -ˆ Hình 4.2.4 Đầu ra mong muốn cho dối tượng /Aeootit Xe.) THình 4.2.5 Biểu đồ tuần tự máy thanh toán ở siêu thị 40 Tình 4.2.6, Đầu ra mong rốn cho đối tượng Cuatomer - 42 Tình 4.2.7 Đầu ra mong muốn cho đối tong Cashier 43 Tình 4.2.8, Đầu ra mong muốn cho dối lượng Card Proccssor — Hình 4.2.9, Đầu ra mong muốn cho dối tong Cash Register Xaessreesu.41
Trang 9DANH MUC BANG Bang 5 1 Mô phỏng kiếm chứng thuộc tỉnh P với bài toán đặt chỗ 49
Trang 10Chương 1: Giới thiệu
Dam bao chất lượng là một van đề quan trọng và tiêu tổn chỉ phí cao trong quả trinh 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 di chú 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,
tau ga, kỹ thuật quan su, y té v-v nha đầ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 din của thiết kế trước khi triển khai Giải pháp phố biến nhật hiện nay dé 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, tá cần phải xây dụng các mô hình đặc tả chính xác thành vị của hệ thông cần kiểm chứng [4], [10], [11] Tuy nhiên, xây đự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ã Hiể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 da c va ding đắn Trong thực tế, giả dị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 Liạn chế trên
lả một trong những nguyên rhên chính đâ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 dẫu vào
cho các phương pháp kiếm chứng từ biêu đỗ thiết kế LML Việc đưa ra phương pháp
mô hình hóa biéu dé UML, & đây là biếu đồ trần tự ƯML 2.0, giúp cho việc áp dung các phương pháp kiểm chứng mô hình hoàn toàn có thể trự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ự Thương phúp này chỉ đầm bảo được các thuộc lính an toàn (safely properties) [7], kiém tra cac hanh vi mét cach 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áo đối lượ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 dối với các hệ thông tương tranh Vi vậy một cách khảc ta cân bóc tách xây đự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 dỗi tượng khác từ đó ta có lành vĩ 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 [S] Y tưởng chính
của phương pháp nảy là xây dụng một ôtômat vào/ra (InpuVOutput Automata YO
Trang 11Automata) [8] cho mỗi dối tượng của biểu dỏ tuân tự Ôtômat vàofra là sự mở rộng cửa ôtômat hữu hạn trạng thái (Deterministic Finite Automata - DFA) [1] Các trạng thai trong ôtômat vàora biểu dién các ánh xạ tỉ hành vi tới các đổi tượng trong biểu
đồ tuân tự Hảm chuyển trạng thái được biểu diễn bởi ảnh xạ hai ngôi (điều kiện, hành
vi) thé hiện sự tương tác giữa các đối tượng [5] Luận văn tập trung vào xây đựng thuật loắn và công cụ hiện thục hỏa việc xây dựng ôiômat vào#a cho các đối lượng
trong biểu đỗ tuần tự Các mô hinh ôtômat vào/ra này củng với việc dưa vào các thuộc tính sẽ là đâu vảo cho các công cụ kiểm chứng hỗ trợ ôtômat vảo/ra nhắm kiếm chứng
tinh đúng đân của thiết kế
Phần còn lại của luận văn được cầu trúc như sau Phương pháp sinh mô hình cha các dối tượng của biểu dỗ tuản tự UML2.0 dược giới thiệu trong chương 2 Chương, này trình bảy phương pháp bóc tách đối tượng của biên đồ tuân tự thành các khối đơn, tiếp đó là phương pháp sinh ôlörsaL vào#a từ các khói đơn của biểu để tuàn tự và cuối cùng là phương pháp ghép nổi các ôtômat vào/ra được sinh ra từ cáo khối đơn để được một ôiômat cho cả đổi tượng, Chương 3 giới thiệu về công cụ thực nghiệm và kết quả thực nghiệm của phương pháp sinh ôtômat vào/ra cho các dối tượng của biểu dễ tuân
nghiên củu phương pháp mô phỏng sự tương tác giữa các ôtômat vào/ra từ các đổi
tượng, qua đó kiếm chứng tính đúng đắn của biếu đồ tuần tự đối với thuộc tính yêu câu Kết luận và định hướng phát triển cho luận văn được trinh bày Irong chương 5
Trang 123
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ả
Dể áp dụng các phương pháp kiểm chứng tự động dựa trên mô hình, việc đầu
tiên cần làm là xây đựng các mô hình đặc tả thiết kẻ của phần mẻm, ở đây là biểu đồ
tuân tự ỨMI,2.0 Đầu vào của bài toán là biểu đỗ luận tự UUMI.3.0, tà cần xây dựng, thuật toán để chuyển đổi các đối tượng của biểu đồ tuần tự thành các ôtômat vàoZra [8]
Y tưởng dễ giải quyết vân dễ trên là bóc từng dối tượng của biểu dò tuần tự thành: một tập các khổi đơn (biểu đổ tuân tự và khối đơn được để cập ở mục 2.1) Sau đó, thuật Loán chuyển đổi được xây dựng để chuyển từng khối đơn đó thành các ôiômal vào/ra, Cuỗi củng, luận văn xây dựng thuật toán để phép nối các ôtômat có được thành một ôlômaL tương ứng với đối Lượng của biêu đồ tuân tự Chỉ tiết các thuật toán được
mô tả trong 3 mục từ 2.2 đến 2.4
2.1 Biển đô tuẦn tự UML2.0
Biéu dé tuan tu (Sequence Diagram — SD) thể hiện tương lắc giữa các thực thể của hệ thống theo thứ tự trình tự mà các tương tác này xây ra 8D nhân mạnh sự tương, táo giữa các đổi tượng và chỉ ra sự tương tác là khía cạnh quan trọng nhất Biểu đồ tuần Iự UMI2.0 đưa vào sự kết hợp giữa oác phân đoạn (combined fragment), cho phép thực hiện các tương tác phức tạp Thành phần chính của biểu dễ tuân tự gồm: Đải tượng, Thông điệp và Phân đoạn
Ti tượng được biểu điễn bằng hai phản: phần tiêu để khai báo đối tượng va chu
kỳ sắng, các đối lượng tương tác với nhau thông qua các thông điệp Thời gian các đối tượng tên tại được biểu diễn bằng đường đứt nét, chủ kỷ sống biểu diễn bằng đường nét đổi
'Thông điệp được biêu điển ở đạng đường mũi tên từ chư kỳ sống của đổi tượng,
gửi đến đối lượng nhận Cac mili lên này được sắp xếp theo trình tự thời gian từ trên xuống Có ba loại thông điệp: Thông điệp đồng bộ (nét hẻn), thông điệp phân hỏi (nét dit), thang điệp đệ quy (gọi tới chính đối tương)
Trang 13Phân doạn dùng dễ biểu diễn các luồng diễu khiển phức tạp Mỗi phản doan co một từ khĩa và cĩ một hoặc nhiêu đoạn con (gọi là các tốn hạng tương tác — interaction operands) Tương ứng với câu trúc điều khiến trong các ngơn ngữ lập trinh như lặp, rẽ nhánh, song song chủng ta cĩ 12 phân đoạn khác nhau với các nhân tương, ung loop, alt, par, v.v [12]
Phân đoạn lap (Loop): chi ra rang phan doan kết hợp biếu điễn một vịng lặp
Tốn hạng lắp sẽ được lặp đi lặp lại một số lần Điều kiện cĩ thể gồm một cân dưới (minint), một cận trên (maxint) va mot biéu thie Boolean Sau minint lin lap, biéu thức được kiểm tra, chừng nào biếu thức cịn đúng và số lần lặp cịn nhỏ hơn hoặc tbằng maxint thì vịng lấp vẫn tiếp tục Hình 3.1 ruiêu tâ phân đoạn lòp sau khi lặp hếL
Š lần, nêu diễu kiện size < 0 dúng thi dừng lặp, việc kiểm tra này cịn thực hiện chững, nào số lẫn lặp cịn <= 10
[balance >0]
Hình 2.2 Phân đoạn Alt
Phân đoạn lea chon day di (Alternative): Phan đoạn aÌt được biếu điễn với
khung cĩ Liêu để “alU”, sử dụng dé chỉ ra sự lựa chơn loại trừ làn nữtau giữa bai hai nhiều chuối thơng điệp Phân đoạn cĩ thê cho lai hoặc nhiều điều kiện gắn liên với
Trang 145 toán hạng khác nhau củng một lúc, nhưng chỉ cỏ một toán hang sẽ thực hiện tai thoi
gian chạy Minh họa của phân đoạn alt trong hình 2.2, neu điêu kiện balance > 0 thỏa
mãn thì thông điệp aecept() được gửi, ngược lại th thông điệp rejectQ) được gửi
Hình 2.3 Phân đoạn Par vả ví dụ thứ tự thực hiện
Trang 15
Phân đoạn song song (Parallel): Phần đoạn par được biểu điễn với khung cỏ tiêu
dé “par”, phân đoạn par chỉ ra rằng các toản hạng trong phân đoạn kết hợp có thể
được thực thi song song với nhau Các sự kiên trong các toán hạng khác nhau có thẻ đan xen vào nhau theo bắt cứ cách nào, miễn là thứ tự của các sự kiện trong mỗi toán hang được bảo toản Minh hoạ của phân đoạn par trong hình 2.3, thứ tự thực hiện việc gửi thông điệp searchGoogle() (14) phải trước readResult() (2), searchBing() (1b) phai
trước readResultQ (3), searehYahoo() (1e) phải trước readResult() (4) còn thứ tự thực
hiện giữa các toán hạng khác nhau có thể đan xen (1a— 1b — 2 hoặc 1b ~ 1a ~ 3)
Hình 2.4 Phan doan Opt
#hân đoạn lụa chọn liếng đấy; 8 (Option): Bhin doamopt oliirering phân đoạn
kết hợp biểu điển một sự lựa chọn hảnh vi Trong phân đoạn chỉ cô một toán hạng,
toán hạng nây có thể được thực thì hoạ Không được thực thí tủy vao điều kiện Toán
tir opt gan giồng với toán tử alt, chỉ có điều trong opt chỉ cỏ một toán hạng duy nhất
Minh họa của phân đoạn opt trong hinh 2.4 nếu điều kiện No error thỏa mãn thi thông
digp post_comment() được gửi đi
Trang 164
Phân doạn ngắt (Break): Phan dean break chí ra rằng khi diều kiện của toản tử tương tác break đúng thì toán hạng trong phân đoạn kết hop break sẽ được thực thi thay cho phân còn lại của phan doan trong tac (Interaction Fragment) bao gói bên ngoài Phân đoạn break thường được dùng kết hợp với phân đoạn loop Minh họa của phân đoạn break trong hình 2.5 Vòng lặp loop gũi thông điệp addQ 10 lân nêu gặp
điều kiện y > 0 thôa mã sẽ gửi thông điệp save() và chấm dit
Phân đoạn tuần tự yêu (Weak Sequencing): Phan doan Weak Sequencing
va rằng phân đoạn kết hợp biểu diễn một trình tự yếu giữa các hành v¡ của các toán hang Trình tụ yếu được định nghĩa bởi tập các vết với các đặc tính như sau
Hình 2.6 Phân doạn Seq
-_ Thứ tự của các sự kiện (EventOecurenees) trong mỗi một toán hạng được đuy
Hình 2.6 mồ tả phân đoạn 3eq tìm kiểm bằng Google song song với Bing va TYshoo, tuy thiên phái tim bing Bing trude khi tim bằng Yahoe
Phan doan tuan te ngdt (Strict Sequencing): Phân đoạn Strict Sequencing chỉ ra
xầng phân đoạn kết hợp biểu diễn một trình tự ngặt giữa các hành vi của các toán bụng,
Trang 17Minh họa của phân đoạn strict trong hình 2.7 phải tìm kiểm bằng Google rồi toi Bing
va sau do la Yahoo,
Hinh 2.7 Phan doan Strict
Hinh 2.8 Phan doan Ignore
Phân đoạn từ chối (Ienore): Phân đoạn Tgnore chỉ ra rằng cỏ một số kiêu thông
điệp không được hiển thị trong phân đoạn kết hợp nảy Các kiêu thông điệp nảy cỏ thể
bị coi là vô nghĩa và bị mặc nhiên bỏ qua Minh họa của phan doan ignore trong hình
28 Thông điệp get và set sẽ không được hiển thị trong phân đoạn nay
Phân đoạn lưu ý (Consider): Phan doan consider chi ra rang nhimg thong điệp
nên được lưu ý trong phân đoạn kết hợp này Diéu này tương đương với việc định nghĩa mọi thông điệp khác là bị bỏ qua Minh họa của phân đoạn consider trong hình
29 Chỉ có thông điệp add và remove được xét tới trong phân đoạn, các thông điệp
khác được định nghĩa sẽ bị bỏ qua.
Trang 18Hinh 2.10 Phin doan Critical
Phân đoạn vùng then chất (Critical Region): Thin doan Critical Region là phân đoạn kết hợp biểu chiến một vúng then chốt (critical region) Một vùng thơn chốt nghữa 1à các vết trang vùng này không thé bj dan xen béi các sự kiện (TiventOccurenoe) khác (tên các đối tượng bị phủ bởi vùng nảy) Minh họa của phân đoạn critical trong tình 2.10 Thông điệp gọi 911 từ khi Operator nhan được và chuyển tiếp tới Emergency là không thể bị đan xen
Phân đoạn phú định (Negafive): Phần doan Negative chi ra ring phan đoạn kết hợp biểu điễn các vết (traces) duoc dink nghĩa là không hợp lê Minh họa của phân
Trang 19đoạn negative trong hình 2.11 Khi cửa (Door) đang khóa (Lock) thi thông điệp mở
cửa (Open) sẽ không hợp lệ cho tới khi 16 nau xong (phan doan loop Cooking)
Hinh 2.12 Phan doan Assert
Phân đoạn khẳng định (Assertion): Phân đoạn assert chỉ ra rằng phan đoạn kết
hợp biểu điễn các vết hợp lẽ Toán tử assert thường được sử dụng củng với ignore hoặc consider Minh hoa của phân đoạn assert trong hình 2.12: Khoi assert chi chap
Trang 20thanh cac khoi don
Van dé đầu tiên được xét đến để giải quyết bải toàn phương pháp bóc tách các đổi tượng của biếu đỗ hiản tự thánh các khối đen Các khối đơn được sinh ra sẽ là đầu vào cho việc chuyên đối sang ôlômat vàoárn được trình bay ở mục 2.3 Phương pháp
đề xuất yêu cầu thiết kế được biểu diễn bới biểu đỏ tuần tự của các thành phần đưới dang xan Một công cụ đã được luận văn phát triển để phân tích xrui đầu vào và tách thành các khói dơn của biểu đỗ tuần tự Cầu trúc xmi đầu vào của thuật toán dược quy định như sau
- _ Cặp thé bao ngoài cùng lá <Sequencs> vá </Sequence>
Trang 21“Objeet”
- _ Tiếp theo là Event hoặc Erapment
- Hwen: ổm trường ¡d, type= event, narne=“tên message” vả eventLype=
“send” hay “receive”
- Fragment: Gm trudng id, type — ‘combined frament’, operator (operator 66
giả trị là alt, loop, par, v.v.)
- Operand: Bat buée phải nằm trong Fragment va ngay sau khai bao thé fragment, bao gồm id, type “operator” (nếu là phân đoạn Cơnsider hoặc Ignore thi operand nim ngay sau khai bao <constraint valu
- Constraint: Gém mong value, tnvong nay clita tén cdc message cach nhau béi diấu cách, ví du: <coustraint valuc “gel set”> Thế này đặt giữa 2 thé fragment
va operand, được dùng để khai bao cdc message bi loai bé trong fragment Tgnore hoặc các message cân giữ lại trong fragment Consider
- Event nim trong sequence hoặc tong operand, không nằm trực tiếp trong
fragment
Thuật toán 2.1 Phân tích biểu đồ tuần tự thành các khối đơn
Đầu vào: Biểu đồ tuần tự biểu diễn dưới dạng tệp xmi
Đầu ra: Danh sách các đổi tượng của biểu đồ tuần tự được biểu diễn dưới dang danh sách các khối đơn
1 : create síack, singleFragmentSiack
2 : create array sđObjectList, operandList, eventList and singleFragmentList
$ : For all element in xmi file do
4: ifmeet open tag then
11: if stack is not nuff then
12: create new event with fragment id and add ta eventtist; belong to the
Operand on the top of stack if stack is not null
13: create new singieFragment and push to singleFragmentStack
14: endif
15: create new fragment with singlefragment on top of singleFragmentStack and
push to stack
Trang 22
27: else if meet close tag then
28: if element is Operand then
34: add fragment to singleFragment on top of singleFragmentStack
35: if singleFragmentStack has more than 4 item then
36: SingleFragment = singleFrogmentStack.pop;
37: add singleFragment to singleFragmentlist
38: end if
39: else if element is Object then
40: singleFragment = singleFragmentStack pop;
41: add singleFragment to singleFragmentlist
42: add singleFragmenttist to object
43: add abject to sdObjectlist
element tir tép xmi dẫu vào Nếu gặp element là thẻ mớ, thuật toán kiểm tra xem đó là thé ndo và tạo đữ liệu cho phù hợp Có 5 loại thẻ có thể gặp la Object (dong 6), Fragment (đông 10), Operand (dang 17), Evenr (đồng 20) và Camstraimr (dòng, 23) Ủng voi thé ð/ect, thuật toán tạo đổi tượng sửngleFragment và dây vào singleFragmentStack (dang, 8) déng thời tạo đôi tượng abject (dong 7) Néu gặp thé
mé Fragment, stack sẽ được kiềm Ira xem có phan Lử hay không (đồng 11) Nếu có,
Trang 23thuật toàn tạo một event giá với ¡d giống nlur cua fragment, thuéc operand ở dinh stack
và đưa vào evenfList (dòng 12), đồng thời tạo đối tượng sữigÏelragment và đây vào
singleFragmentStack (dong 13) Sau đỏ, thuật toan khéi tac médt fragment thudc
xingleFragrment ö đính singleFragmemtStack và đưa vào stack (dòng 15) Nếu gặp thế
mở (2perand, thuật toàn khởi tạo đối tượng operand và đưa vào sfack (dòng 18) Nếu
gap thé md Aveni, thual toan tao dit tong event va dua vao evenilist, event udy st thude operand trén dinh stack néu stack khéng réng, ho&e khéng thude operand nao nêu ngược lại (dong 21) Nếu gặp thé mé Consiramt, thuat toan tac constraint cho fragment @iu tiên tên duh slack (ding 23) Trong trudng hợp gặp thể đồng, thuật toán sẽ kiểm ta the dong do 14 gi dé xi ly Co 3 trong hop thé dong có thể gặp la Operand, Fragment va Objeer Trường hợp gặp thê đông Operand, opezmd được đua khối định stack, dank diu thude fragment & trén dink síadk lúc này và đưa vào opeandl.ist (dong 29, 30, 31) Tradug hop gap thé dong Fragment, fragment duge lay
ra khéi dinh siack va duge dua vio singlelragment 6 dinh singlelragmentStack (dòng 33, 34) Sau do, singleFragmentStack duoc kiểm tra xem có nhiều hơn 1 phan
tử hay không (dòng 35) Nếu đúng, singelzagmem được lấy ra khối xinglaFragmeniStack và đưa vào singlaFragmeniList (đòng 36, 37) Trường hợp gặp thé déng Object, singleMragment duge lay ra khối singleFragmeniStack và dựa vào singleFragmentList (dong 40, 41), sau 46 singleFragmentlist duge dua vao object va
object diac dura vao objectList (déng 42, 43) Sau khi kết thúc doc tệp xmi, ta được
object] ist uong img với các đôi tượng của Biểu đỗ tuân lự ban dẫu Mỗi phân tử trong, objectList 14 mét danh séch cdc singleFragment tuong ứng được bóc tách từ đổi tượng
Trang 2415
Đầu vào của thuật toán là các khối dơn của biểu dỗ tuần tự dược mô tả bằng một
6 sau SD = CL, FG, OP, C, num, frag), trong đó:
- Bld tap cdc sykién B =#”U #°,
- F'la tap cac sw kign nhan,
F° là tập các sự kiên gửi,
#G là tập các phân đoạn, trường hợp khối đơn, FG chứa nhiều nhất 1 phần tứ,
OP là tập các Operand,
€ lá tập các điều kiên C fey, 62, ¢3 on},
num là danh sách cáo số thứ tự của event từ Ú đến n, và
frag la mét hàm chuyến từ E đến E
Dau ra của thuật toán là một ôtômat vào/ra tương ứng được mô tâ bằng một bộ
sâu Ó = (Q, XI” , 3”, ổ, dụ, F), trong do
ic luật chuyển Ô(q, < cu£ >>) — th,
qo la trang thai khởi dẫu, và
U= {fụ, f, , fn} 1A tap cdc trang thai két thie
Otémat vao/ra diu ra được xây dựng béi cac quy tie nhw sau[5]
Sd lượng các trạng thái trong Stémat chinh bing só lượng sự kiện rong SD
1Q) = [El va Q= fo, de quÌ
- Tp các điều kiện cúa ötômat tương ứng, là tập diễu kiện của SD: C = {c| e 6 C}
- 'Tập các sự kiện của ôtômaat tương ứng, là tập sự kiện của SD: H = [e e€ H} Tập các kí tự vào của ôtômat được xảo định bởi công thức
Trang 252.3.1 Trường hợp khối đơn không chúa phân đoạn nào
'Trường hợp đầu tiền được xét đến là khối đơn của biểu đồ tuần tự không chứa một phân đoạn nào [S] Sau khi có E = {e| e € B} và C = {o| e € C}, tập cáo trạng thái kết thúc F được xác định F = {q„} Tập các luật chuyên 6 được xáo định bởi thuật toán
quy tắc chuyển trạng thái Ï = <ep>- với j= LH (dòng 2, 3)
1Hình 2.14 đưa ra ví dụ cho khối đơn không chứa phân đoạn nảo và ötômat được chuyến đổi cho đối tượng USer
=] [ee
T
input name
(input nara - `Nmpunhena/” _ “Neavaecnmar
2.3.2 Trưởng hợp khối đơn chứa một phân đoạn Option
Trường hợp thứ bai là khối đơn cũa biểu đồ tuần tự chứa duy nhất một phân đoạn
Option [5], Sau khi co E - {c| ¢ €B} va C — fof c EC}, tập các trạng thái kết thúc F
Trang 2617
được xác định bởi quy tắc E— ‡qu} U {q | c¡ € FG mổ c¡¡ € FG and cạ E FG} Tập
các luật chuyển 6 dược xác dịnh bởi thuật toàn 2.3
Thuật toán 2.3: Thuật toán xác định tập các luật chuyển ổ cho ôtômat vào/ra từ khối đơn chỉ
chứa phân đoạn Option
1 :For ¡ from (to /Eƒ-† do
event du tiên của phân đoạn, cụ thể j +1 và event œ¡ Iuộc FG déng thei event ey
không thuộc FŒ (dòng 7) †a có Š, = <e,ø> Trường hợp 3, nên điều kiện của FŒ không thóa mãn dẫn tới FG không được thực thi hay j = ¿+|/*Œ'+! và event e; không, thuộc FG dồng thời event e¡ thuộc FG (dòng 10) ta có ð} >, Sau vong, lap với i,
Trang 27Hình 2.15 dưa ra vị dụ cho khỏi dơn chỉ chứa một phân doạn Option va dtémat được chuyển đổi của đối tượng User
2.3.3 Trường hợp khối đơn chứa một phân đoạn Alternative
Trường hợp thứ ba là khói đơn của biểu đỏ tuần tự chứa duy nhất một phân đoạn Alternative [5] Sau khi 06 = fe| e 6 E} và C= {o| c € C}, tập cáo trạng thái kết thúc
# được xác định bởi công thức E = {qu} U {q: e¡ € opxu and eụ¡ € op¿ and e„ E FG} Tập các luật chuyển ổ được xác định bởi thuật toán 2.4
Trang 2815) Sau vong lập với i, ta dược ö là biểu diễn của tập các quy tắc chuyển trạng thải
trong ôtômat vào/ra,
2.3.4 Trường hợp khi dơn chứa một phân doạn I.sop
Trường hợp thứ tư là khôi đơn của biển đề tuần tự chứa đuy nhất một phân đoạn
Loop [5] Sau khi có B — {ej eE E) và Ở — {c| c€ C}, tập các rạng thái kết thúc F
được xác định bởi công thức F — {qn} U {qg | eị @ FG and 64) € FG and e, € FG} Tap
các luật chuyển ở được xác định bởi thuật toản 2.5
Trang 29tiên thuộc EŒ hay j — 11T và evenL eị thuộc FŒ đồng thời event gị¡ không thuộc FŒ
(đồng 6) ta có quy tắc chuyển BỆ = <e, e/> Trường hợp 3, vòng loop được thỏa mãn diều kiện lập sau ít nhất 1 lần chạy hay j = i-|#Œ|+7và event e; thuộc FƠ dòng thời
event gj không thuộc FG (dòng 18) la có quy lắc chuyên 6 <ec ø> Trường hợp 4,
vòng lặp không được chạy hay j= ¿1 EỚ| | 7 vở event ø¡ không thuộc FG đồng thời event sy¡ thuộc TƠ (đồng 14) ta có quy tắc chuyển BÍ = <ø,> Sau vòng lặp với i, ta
được B là biểu điển của tập các quy tắc chuyển trạng thái trong ôtômaL vào#a của khối
đơn chỉ chứa một phản doạn Loop
Trang 3031
Hình 2.17 dưa ra vi dụ cho khối don chỉ chứa một phan doan Loop va étémat được chuyển đổi của đối tượng User
2.3.5 Trường hợp khối đơn chứa một phân đoạn Break
Trường hợp thứ năm là khỏi dơn của biểu đỏ tuần tự chứa duy nhất một phân đoạn Break [5], Sau khi co Li = {e| e € L} và C= {el c € C}, tập các trạng thái kết thúc
# được xác định bởi công thức
È= 1qa} U {q | ( ENG and en, €1'G and e, € G) or (ø;¡ € LƠ and s¡¡ € FG)}
Tập các luật chuyển 8 được xác định bởi thuật toán 2.6
hợp 1, nếu j - i+1 và event œị và event e,+ cùng thuộc EŒ hoặc cùng không thuộc FŒ
(dòng 3), ta có quy tắc chuyển BỆ= <ø> Trường hợp 2, nên e¡ là event đầu tiên thuộc
Tổ hay j — 111 và event e¡ thuộc FŒ đồng thời evenl eịị không thuộc FG (dong 6) ta
có quy tắc chuyến ðj—<eø/> (đòng 7) Trường hợp 3, phân đoạn Break không được
chay hay js #+|FG|+1; ÿ <n và cvenL ei không thuộc FŒ đồng thời svent cị¡; thuộc
FG (déng 10) ta có quy tắc chuyến 8ƒ = <e;> (đồng 11) San vòng lắp với ¡, ta được Š