Khóa luận Đặc tả và kiểm chứng các phần mềm tương tranh

ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Lê Hồng Phong  
ĐẶC TVÀ KIM CHNG CÁC PHN MM  
TƯƠNG TRANH  
KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
HÀ NI - 2010  
ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Lê Hồng Phong  
ĐẶC TVÀ KIM CHNG CÁC PHN MM  
TƯƠNG TRANH  
KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY  
Ngành:Côngnghthôngtin
Cán bộ hướng dn: Ts. Phm Ngc Hùng  
Cán bộ đồng hướng dẫn: Ths. Đặng Vit Dũng  
HÀ NI - 2010  
n  
Đặc tvà kim chng các phn mềm tương tranh  
LI CẢM ƠN  
Lời đầu tiên em xin bày tlòng biết ơn sâu sắc đến thy Phm Ngc Hùng và  
thầy Đặng Vit Dũng đã tn tình hướng dn, chbo em trong quá trình thc hiện đề  
tài.  
Em xin chân thành cm ơn các thy cô giáo trong Khoa Công nghThông tin,  
trường Đại hc Công Nghệ, Đại hc Quc Gia Hà Ni đã tn tình ging dy, trang bị  
cho em nhng kiến thc quý báu trong sut thi gian qua.  
Con xin chân thành cảm ơn ông bà, cha mẹ đã luôn động viên, ng hcon trong  
sut thi gian hc tp và thc hin khóa lun tt nghip.  
Tôi xin cảm ơn sự quan tâm, giúp đỡ ng hca anh chem, bn bè trong quá  
trình thc hin khóa lun.  
Mặc dù đã cgng hoàn thành khóa lun trong phm vi và khả năng cho phép  
nhưng chắc chn skhông tránh khi nhng thiếu sót. Em rt mong nhận được sự  
thông cm, góp ý và tn tình chbo ca quý thy cô và các bn.  
Ni, ngày 15 tháng 5 năm 2010  
Sinh viên thc hin  
Lê Hng Phong  
i
Đặc tvà kim chng các phn mềm tương tranh  
TÓM TT  
Phn mềm tương tranh, một phn mềm được ng dng rng rãi trong các hệ  
thng nhúng và các hthống điều khin. Chúng có vai trò vô cùng quan trng trong  
việc điều khin các hthống đó. Chỉ cn mt li nhca phn mm có thgây ra hu  
quvô cùng nghiêm trng vì nhng hthng này có thtrc tiếp và gián tiếp nh  
hưởng đến cuc sng của con người. Chính vì vy phn mềm tương tranh phải được  
kim chứng để gim thiu tối đa lỗi của chương trình. Vì những lý do đó, đề tài “Đặc  
tvà kim chng các phn mềm tương tranh” đề cp ti phương pháp hình thc, các lý  
thuyết vmáy hu hn trng thái (Finite State Process, FSP) và sdng máy hu hn  
trng thái để đặc tthiết kế và mã ngun ca phn mềm tương tranh. Từ đó sử dng  
công cphân tích máy hu hn trạng thái để kim chng xem thiết kế và mã ngun  
ca phn mm có li và chạy đúng theo yêu cu không.  
Do thi gian có hn nên phn thc nghim trong khóa lun này em chthc hin  
kim chng một applet được viết bng Java. Thiết kế của bài toàn đã được đặc tsn  
bng FSP. Nhim vca em là kim chng xem thiết kế đó có lỗi xác hay không và  
chuyn mã ngun Java của applet thành FSP để kim chng xem mã ngun có chy  
đúng theo thiết kế hay không.  
ii  
Đặc tvà kim chng các phn mềm tương tranh  
MC LC  
Chương 1: Giới thiu...................................................................................................1  
1.1 Nhu cu thc tế và lý do thc hiện đề tài ............................................................1  
1.2 Mc tiêu của đề tài..............................................................................................2  
1.3 Ni dung ca khóa lun ......................................................................................3  
Chương 2: Các khái niệm cơ bản .................................................................................4  
2.1 Phương pháp mô hình hóa ..................................................................................4  
2.2 FSP.....................................................................................................................5  
2.2.1 Khái nim FSP .............................................................................................5  
2.2.2 Các thành phần cơ bản trong FSP .................................................................6  
2.2.3 Quy trình tun t..........................................................................................9  
2.3 LTS ..................................................................................................................11  
2.3.1 LTS............................................................................................................11  
2.3.2 Deadlock....................................................................................................13  
2.3.2.1 Khái nim.............................................................................................13  
2.3.2.2 Phân tích Deadlock ..............................................................................14  
2.3.3 Thuc tính An toàn.....................................................................................14  
2.3.4 Thuc tính Liveness ...................................................................................15  
2.4 Công cLTSA..................................................................................................15  
2.5 Kết lun............................................................................................................16  
Chương 3: Kiểm chng thiết kế .................................................................................17  
3.1 Đặc tthiết kế bng FSP...................................................................................17  
3.3. Kim chng thiết kế bng LTSA .....................................................................23  
3.3.1 Giao din ca công cLTSA......................................................................23  
3.3.2 Check safety...............................................................................................24  
3.3.3 Check Progress...........................................................................................25  
3.3.4 Compile......................................................................................................25  
3.3.5 LTS Analiser ..............................................................................................27  
3.3.6 LTSA Animator..........................................................................................28  
3.4 Kết lun............................................................................................................30  
Chương 4: Kiểm chứng cài đặt ..................................................................................31  
vi  
Đặc tvà kim chng các phn mềm tương tranh  
4.1 Phương pháp để kim chứng cài đặt..................................................................31  
4.2 Cách chuyn tmã ngun Java sang FSP .........................................................31  
4.3 ng dụng để chuyn mã ngun bài toán “SingleLandBridge” ..........................34  
4.5 Kim chứng cài đặt...........................................................................................36  
4.6 Kết lun............................................................................................................41  
Chương 5: Kết lun....................................................................................................42  
Tài liu tham kho .....................................................................................................43  
vii  
Đặc tvà kim chng các phn mềm tương tranh  
Danh mc các hình vẽ  
Hình 2.1: Nghiên cứu khí động hc trên mô hình ô tô..................................................4  
Hình 2.2.1a: Mô hình hóa hành trình bay ca máy bay................................................6  
Hình 2.2.2a: Máy trng thái DRINKS..........................................................................7  
Hình 2.2.2b: Máy trng thái Gate................................................................................8  
Hình 2.3.1c: Tiến trình tun tBOMP.......................................................................10  
Hình 2.3.1d: Stng hp tun tLOOP....................................................................10  
Hình 2.3.1e : Stng hp song song hai tiến trình tun t. .......................................11  
Hình 2.3.1a: Máy trng thái PHIN ............................................................................12  
Hình 2.3.1b: Máy trng thái FORK ...........................................................................13  
Hình 2.3.2.1a: Ba ti ca triết gia ...........................................................................13  
Hình 2.3.2.1b: Deadlock............................................................................................14  
Hình 2.4a: Mô hình hành động ca chiếc ô tô............................................................16  
Hình 2.4b: LTSA animator điều khiển các hành động trong mô hình 2.4a .................16  
Hình 3.1: Mô tả các ô tô đi qua một chiếc cu hp ....................................................18  
Hình 3.3.1: Giao din công cLTSA..........................................................................23  
Hình 3.3.2: Kết quhin thsau khi check safety.......................................................24  
Hình 3.3.3: Kết quhin thkhi check progress.........................................................25  
Hình 3.3.4: Kết quhin thkhi biên dịch đoạn mã LTS ............................................26  
Hình 3.3.5: LTS Analiser SingleLaneBridge ..............................................................27  
Hình 3.3.6: Animator SingleLandBridge....................................................................29  
Hình 4.5a: Mtp SafeBridge bng công cLTSA....................................................37  
viii  
Đặc tvà kim chng các phn mềm tương tranh  
Hình 4.5b: Check safety phương thức redExit............................................................38  
Hình 4.5c: Check prgress phương thức redExit .........................................................39  
Hình 4.5d: Máy trng thái REDEXIT.........................................................................40  
Hình 4.5e: Máy trng thái REDEXIT trong thiết kế. ..................................................41  
ix  
Đặc tvà kim chng các phn mềm tương tranh  
Danh mc các bng biu  
Bng 4.3.2a Nhng toán tử tương đương giữa FSP và Java ......................................32  
Bng 4.3.2b: Các thành phần cơ bản khi chuyn tJava sang FSP:..........................32  
x
Đặc tvà kim chng các phn mềm tương tranh  
BNG KÝ TVIT TT  
tviết tt  
Ý nghĩa  
Máy hu hn trng thái  
FSP (Finite State Process)  
LTS (Labelled Transition System) Máy dch chuyn trng thái có gán nhãn  
LTSA (LTS Analyzer)  
Công chtrkim chng với đặc tlà  
LTS  
vii  
Đặc tvà kim chng các phn mềm tương tranh  
Chương 1: Giới thiệu  
1.1 Nhu cầu thực tế và lý do thực hiện đề tài  
Ngày nay, cùng vi sphát trin mnh mca máy móc phc vụ đời sng con  
ngưi là sphát trin âm thm ca các hthống tương tranh. Chúng được tạo ra để  
điều khin hoạt động ca những máy móc đó. Một hthống tương tranh có thể bao  
gm cphn mm và phn cứng nhưng cũng có thể chcó phn mm. Phn mm  
tương tranh chính là linh hồn ca hthng, giúp chúng hoạt động chính xác theo  
nhng gì mà con người yêu cu. Hin nay, phn mềm tương tranh được ng dng rt  
nhiu trong các hthống nhúng và điều khin. Tnhng vt dng rất đơn giản trong  
đời sống hàng ngày như nồi cơm điện, ti vi, đến nhng hthống điều khin phc tp  
như hệ thống điều khin tên lửa đều có mt hoc nhiu phn mềm tương tranh điều  
khin.  
Nhng vt dng, hthống điều khin này gn bó cht chvi chúng ta, chcn  
mt li nhca phn mềm tương tranh cũng có thể gây ra hu qunghiêm trọng. Đã  
có nhng con tàu vũ trụ va mi ri khi mặt đất thì đã rơi, tiêu tốn hàng tỷ đô la để  
nghiên cu, chế to nó. Nguyên nhân gây ra tai nạn đó chính là do lỗi ca hthng  
điều khin con tàu.  
Chính vì vy, yêu cu kim chng an toàn cho các hthống tương tranh là hoàn  
toàn tt yếu. Hin nay, song song vi quá trình sn xut phn mm luôn có mt quá  
trình kim th(testing) phn mm. Tuy nhiên, kim thử là chưa đủ các phương  
pháp kim thhin ti chlà kim tra dliệu đầu ra ca phn mm ri so sánh vi dữ  
liệu đầu vào để kiểm tra xem chương trình chy có li hay không. Chúng không hề  
kiểm tra được chi tiết hoạt động của chương trình và không kiểm soát được nhng li  
tim n ngay cả khi chương trình vn chạy đúng. Nếu phn mm phát hành ra mà vn  
còn cha li thì nhà sn xut phi thu hi sn phẩm để sa chữa. Điều này làm gim  
uy tín và tiêu tn nhiu tin ca nhà sn xut.  
Chúng ta hoàn toàn có thkhc phục được nhng vấn đề trên bng cách sdng  
phương pháp hình thức để đặc tvà kim chng nhng phn mềm đòi hi tính an toàn  
cao, nht là các phn mềm tương tranh.  
Cách tiếp cn ca khóa lun là:  
1
Đặc tvà kim chng các phn mềm tương tranh  
Trưc hết, phải đảm bo có mt thiết kế đúng, chính xác bằng cách đặc tthiết  
kế bng FSP[1] và sdng công cLTSA[1][4] để kim chng thiết kế đó. Sau khi  
thiết kế đã được kim tra và thm định tính đúng đắn, chúng ta tiến hành cài đặt  
chương trình.  
Sau khi đã xây dng xong phn mm, có mt câu hỏi đặt ra là liệu cài đặt có  
đúng với thiết kế không? Chúng ta đã có công cụ để kiểm tra tính đúng đắn ca thiết  
kế vì vy gii pháp cho bài toán này chính là chuyn mã ngun của cài đặt thành chính  
mô hình được đặc tbng FSP và sdng công cLTSA để kim chng.  
Vi cách tiếp cận này, ta có được mt quy trình kim chứng đầy đủ hai chiu, có  
tính hthng tpha kim thử đến pha cài đặt.  
1.2 Mục tiêu của đề tài  
Phương pháp hình thc là các kthut toán học được sdụng để đặc t, phát  
trin và kim chng các hthng phn mm và phn cứng. Phương pháp tiếp cn này  
đặc bit quan trọng đối vi các hthng cn có tính toàn vẹn cao như hệ thống điều  
khin lò phn ng hạt nhân, điều khin tên la, khi vấn để an toàn hay an ninh có vai  
trò quan trọng, để góp phần đảm bo rng quá trình phát trin ca hthng skhông  
có li. Khi kim chng bằng phương pháp hình thức, điều đặc bit là chúng ta không  
cn dliệu đầu vào mà chcn kim tra các mô hình mô tả các hành động, trng thái  
ca hthng khi hoạt đng.  
Như vậy, đề tài cn gii quyết các công vic chính sau:  
. Tìm hiu về phương pháp mô hình hóa, máy hu hn trng thái, máy  
dch chuyn trng thái có gán nhãn (Labelled Transition System, LTS)  
và công chtrkim chng LTSA (Labelled Transition System  
Analyzer).  
. Sdng công chtrkim chứng LTSA để kim chng thiết kế ca  
mt hthống điều khin được đặc tbng FSP.  
. Đặc tmã ngun Java ca hthống điều khin trên bng FSP, sdng  
công chtrkim chng LTSA để kiểm tra xem chương trình có li và  
đúng với thiết kế không.  
2
Đặc tvà kim chng các phn mềm tương tranh  
1.3 Nội dung của khóa luận  
Ni dung ca khóa lun gồm 5 chương:  
Chương 1 trình bày nhu cu thc tế, lý do thc hiện đề tài và mc tiêu cần đạt  
được.  
Chương 2 gii thiu nhng lý thuyết cơ bản về phương pháp mô hình hóa, máy  
hu hn trng thái, máy dch chuyn trng thái có gán nhãn và công cphân tích  
LTSA ca nó để ứng dng trong kim chng.  
Chương 3 trình bày ng dng FSP và LTSA để kim chng mt thiết kế xem có  
chính xác vi yêu cầu bài toán đặt ra không?  
Chương 4 trình bày cách chuyn tJava sang FSP để ứng dng kim chng mt  
chương trình có tha mãn thiết kế hay không?  
Chương 5 khái quát nhng kết quả đạt được và hướng phát triển trong tương lai.  
3
Đặc tvà kim chng các phn mềm tương tranh  
Chương 2: Các khái niệm cơ bản  
Trong chương này chúng ta sẽ tìm hiểu một số khái niệm về phương pháp mô  
hình hóa, máy hữu hạn trạng thái, máy dịch chuyển trạng thái có gán nhãn và công cụ  
hỗ trợ kiểm chứng LTSA.  
2.1 Phương pháp mô hình hóa  
Mô hình là một đại diện đơn giản hóa ca thế gii thc. Mô hình được sdng  
rng rãi trong kthut, để tp trung vào mt khía cnh cthca mt hthng thế  
gii thc [1].  
Ví d, các nhà khoa hc mun nghiên cu tính động hc ca mt chiếc ô tô.  
Thay vì sdng mt chiếc ô tô tht, nhà khoa hc chcn sdng mô hình ca chiếc ô  
tô đó với điều kin mô hình phi có hình dáng bên ngoài ging ht chiếc ô tô tht. Khí  
động hc ca ô tô chbị ảnh hưởng do hình dáng bên ngoài ca nó nên nghiên cu trên  
mô hình hoàn toàn cho kết quchính xác giống như nghiên cứu trên chiếc ô tô tht.  
Hình 2.1: Nghiên cu khí động học trên mô hình ô tô  
Như vậy phương pháp mô hình hóa ưu điểm là tạo được môi trường gn ging  
vi thc tế từ đó cho kết qukiểm tra tương đi chính xác.  
Thiết kế có vai trò vô cùng quan trng trong sn xut phn mm nói chung và  
phn mm tương tranh nói riêng. Phần mm được lp trình ra có đạt yêu cu hay  
4
Đặc tvà kim chng các phn mềm tương tranh  
không là phthuc vào thiết kế có chính xác hay không? Chính vì vy, la chn  
phương pháp thiết kế phù hp với đặc tính ca phn mm là hết sc quan trng.  
Khi thiết kế mt phn mm tương tranh, chúng ta phi mô tchi tiết được các  
hoạt động ca phn mm. Thiết kế càng chi tiết thì phn mm hoạt động càng chính  
xác. Tuy nhiên, để có được mt thiết kế chính xác như vậy rt khó. Các phương pháp  
thiết kế hin ti chỉ đáp ứng được yêu cu to ra thiết kế theo yêu cu ca sn phm.  
Tuy nhiên chúng li không gii quyết được vấn đề kim chng các thiết kế đó. Như  
vy, chúng ta skhông thtìm ra nhng hn chế ca thiết kế. Bài toán đó sẽ được gii  
quyết bng việc khai thác ưu điểm ni bt ca phương pháp mô hình hóa:  
- Phương pháp mô hình hóa có thto ra mt thiết kế mô tả được chi tiết hot  
động ca hthng. Ở đây chúng ta sẽ sdng mẫu FSP để đặc tthiết kế đó.  
- Phân tích mu thiết kế thông qua vic sdng công cLTSA, chúng ta có thể  
kiểm tra được mu thiết kế được đặc tbng FSP có chạy đúng, chính xác hay không.  
Khi phn mềm đã được viết xong, với phương pháp hình thc, chúng ta có thể  
mô hình hóa mã ngun ca phn mềm để kim chng xem phn mm có chạy đúng  
theo thiết kế hay không. Đây chính là ứng dụng ngược rt hay của phương pháp hình  
thc.  
2.2 FSP (Finite State Process)  
2.2.1 Khái niệm FSP  
Máy hu hn trạng thái (FSP) được tạo ra để mô tcác mô hình tiến trình. FSP  
có thmô tả được những hành động, trng thái ca tiến trình. Ta ly mt ví dụ đơn  
gin mô tcác hành động ct cánh, bay, hcánh ca mt chiếc máy bay:  
ct cánh -> bay -> hcánh -> ct cánh -> bay -> hcánh -> ……  
Ta có ththy nếu máy bay còn hoạt động được thì các hành động này sliên  
tc xảy ra đến khi nào mà máy bay không được sdng na. Chính vì vy mô ttrên  
skhông thể nào đầy đủ được. Tuy nhiên ta hoàn toàn có thgii quyết vấn đề đó nếu  
mô tcác hành động đó bng FSP:  
5
Đặc tvà kim chng các phn mềm tương tranh  
Maybay = (catcanh -> bay -> hacanh -> Maybay).  
FSP có tính đệ quy nên ta có thddàng gii quyết bài toán trên. Ta có mô hình  
được phân tích tmu FSP này:  
Hình 2.2.1a: Mô hình hóa hành trình bay của máy bay.  
Mt phn mm tương tranh bao gm rt nhiu tiến trình, mi tiến trình là sự  
thc thi ca mt tiến trình tun t. Mt tiến trình được chia làm mt hoc nhiu hành  
động nguyên tử ( hành động nguyên tkhông thể chia được thành các hành động nhỏ  
hơn), các hành động này đưc thc thi mt cách tun t. Mỗi hành động gây ra mt sự  
chuyn tiếp ttrng thái hin ti sang trng thái tiếp theo. Trình tự các hành động xy  
ra có thể được xác định bng một đồ thchuyn tiếp. Nói cách khác, chúng ta có thể  
mô hình hóa các tiến trình thành các máy hu hn trng thái [1].  
Như vậy, chúng ta hoàn toàn có thmô hình hóa chi tiết mt phn mm tương  
tranh với đặc tlà FSP.  
2.2.2 Các thành phần cơ bản trong FSP  
Action prefix ((x -> P)): Nếu x là một hành động và P là mt tiến trình thì mt  
action frefix (x -> P) mô tmt tiến trình trong đó các hành động x hoạt động đúng  
theo mô tca tiến trình P [1]. Tiến trình P phi viết hoa chữ cái đầu, hành động x viêt  
bng chữ cái thường.  
Ta ly li ví dtrên phn 2.2.1 :  
Maybay = (catcanh -> bay -> hacanh -> Maybay).  
6
Đặc tvà kim chng các phn mềm tương tranh  
Trong đó: Maybay là một tiến trình  
catcanh, bay, hacanh là các hành động.  
La chn (| Choice): Nếu x, y là các hành động thì (x -> Q | y -> P) mô tmt  
tiến trình trong đó các hành động đầu tiên tham gia là x hoặc y. Các hành động tiếp  
theo hoạt động theo mô tca Q nếu hành động đầu tiên xy ra là x, các hành động  
tiếp theo hoạt đng theo mô tca P nếu hành động đầu tiên xy ra là y.  
Ví dmô tvic lấy nước ung ở máy đun nước [1], nếu ấn nút đỏ thì được cà  
phê, nếu n nút xanh thì được trà:  
DRINKS = (red -> coffee -> DRINKS  
| blue -> tea -> DRINKS).  
Khi phân tích mẫu FSP trên ta đuợc mô hình:  
Hình 2.2.2a: Máy trạng thái DRINKS  
Lp chmc cho các quy trình và hành động (indexed process and actions)  
Khi mô hình các tiến trình và hành động có có những trường hp nhng tiến trình và  
hành động đó có rất nhiu giá tr. Ta có thgán nhãn cho các quy trình và hành động  
đó và lập chmc cho chúng. Ví dFSP mô tả hành động vào, ra ca 3 chiếc ô tô khi  
qua 3 cng ca mt trm soát vé:  
7
Đặc tvà kim chng các phn mềm tương tranh  
Gate = (in[1] -> out[1] -> Gate  
| in[2] -> out[2] -> Gate  
| in[3] -> out[3] -> Gate).  
Trong đó [1], [2], [3] là chỉ mc của các hành động in và out.  
Kết qukhi phân tích bng công cLTSA:  
Hình 2.2.2b: Máy trạng thái Gate  
Tham stiến trình (Process parameters): khi tiến trình và hành động có nhiu  
giá trthì thay vì đánh chỉ mc thì chúng ta có thto tham số để mô ttiến trình bng  
FSP được gọn hơn. Ta lấy ví dGate trên:  
const N = 3  
Gate = ( in[i:1..N] -> out[i] -> Gate).  
Trong đó i:1..N có nghĩa i có giá trlần lưt từ 1 đến N.  
Hành động được đảm bo (Guarded Action): thường rt hu dụng để định  
nghĩa các hành động cthể nhưng muốn xy ra phi tha mãn một điều kiện nào đó.  
Ví dmô tả đám đông vào thang máy, thang máy cho phép chở 10 người, nếu số  
8
Đặc tvà kim chng các phn mềm tương tranh  
người quá quy định thì phi ra bớt, ngược li có thể thêm người vào vì còn nhiu  
người đang chờ được vào:  
Count(N=10) = Count[1],  
Count[i:1..N] = (when(i<N) enter -> Count[i+1]  
| when(i>N) out -> Count[i-1]).  
Hành động được đảm bo bởi “when” đảm bo cho thang máy hoạt động đúng  
công sut. Khi số người quá quy định thì phi ra ngoài bt, khi số người trong thang  
chưa tới gii hn thì có thtiếp tc vào.  
Alphabet ca tiến trình (Process Alphabet): Alphabet ca mt tiến trình là mt  
tp hp tt cả cách hành động mà nó có ththam gia. Ta ly mt ví dụ định nghĩa  
WRITE sdng write[1] và write[3]:  
WRITER = (write[1]->write[3]->WRITER)  
+{write[0..3]}.  
Trong ví dnày thì Alphabet ca WRITE là write[0..3].  
2.2.3 Quy trình tuần tự  
Các tiến trình trong FSP được chia làm 3 loi:  
- Các tiến trình cc bộ (local process) được định nghĩa là mt trng thái trong  
mt tiến trình cơ bản [1].  
- Tiến trình cơ bản (primitive process) được xác định bi tp hp các tiến trình  
cc b. Mt tiến trình cc bộ được xác định bng cách sdng STOP, ERROR, tin  
hành động (Action prefix) và la chn (|, choice) [1].  
- Tiến trình tun t( sequential process) là mt tiến trình có thkết thúc. Mt  
tiến trình có thkết thúc nếu mt tiến trình cc bEND có thể được vi ti ttrng  
thái bắt đu ca nó [1].  
9
Đặc tvà kim chng các phn mềm tương tranh  
Tiến trình cc bEND: Tiến trình cc bEND biu thtrng thái mà tiến trình  
kết thúc thành công. Mt tiến trình đúng đắn khi không có hành động nào tiếp theo xy  
ra sau END. Vmt ngnghĩa nó tương tự như STOP. Tuy nhiên, STOP là một trng  
thái mà tiến trình tạm ngưng quá sớm, thưng là do deadlock. STOP được sdng khi  
ta mun kết thúc mt tiến trình [1]. Ví dsau mô ttiến trình hn gimt qubom nổ  
trong đó trạng thái E là trng thái kết thúc:  
Hình 2.3.1c [1] : Tiến trình tuần tự BOMP  
Stng hp các tiến trình tun t: Nếu Q là mt tiến trình tun t, P là mt  
tiến trình cc bộ, sau đó P;Q biu din cho stng hp tun tự như vậy khi P kết thúc,  
P;Q strthành tiến trình Q [1].  
Nếu chúng ta định nghĩa tiến trình SKIP = END then P; SKIP P and SKIP; P ≡  
P. Mt stng hp tun ttrong FSP luôn luôn có dng: SP1;SP2;….;SPn;LP [1]  
Nơi SP1;…;SPn là sự tng hp tun tvà LP là tiến trình cc b. Mt stng  
hp tun tcó thxut hin bt cchỗ nào trong định nghĩa của mt tiến trình cơ  
bn mà mt tiến trình cc btham chiếu đến có thxut hin [1].  
dtiến trình P123 và LOOP:  
Hình 2.3.1d[1]: Sự tổng hợp tuần tự LOOP  
10  
Đặc tvà kim chng các phn mềm tương tranh  
Stng hp song song các tiến trình tun t: Stng hp song song SP1 ||  
SP2 ca hai tiến trình tun tSP1 và SP2 kết thúc khi chai tiến trình cùng kết thúc.  
Nếu kết thúc có thtới được trong SP1 || SP2 thì nó là tiến trình tun t[1].  
Hình dưới cho mt ví dvstng hp song song ca tiến trình tun t.:  
Hình 2.3.1e[1] : Sự tổng hợp song song hai tiến trình tuần tự.  
2.3 LTS (Labelled Transition System)  
2.3.1 LTS  
Khái nim: Về cơ bản LTS[1][2] (Lebelled Transition System) ging FSP, mi  
mô tFSP có mt mô tmáy trng thái (LTS) tương ứng. Mỗi LTS tương ứng vi mt  
quá trình FSP là một đồ th. Ta ly ví dLTS mô tbài toán “ba ti ca triết gia” [1]:  
11  
Đặc tvà kim chng các phn mềm tương tranh  
PHIL = (sitdown->right.get->left.get  
->eat->left.put->right.put  
->arise->PHIL).  
FORK = (get -> put -> FORK).  
||DINERS(N=5)= forall [i:0..N-1]  
(phil[i]:PHIL  
||{phil[i].left,phil[((i-1)+N)%N].right}::FORK).  
menu RUN = {phil[0..4].{sitdown,eat}}  
Phân tích mẫu LTS này ta đưc 2 mô hình tương ứng:  
Hình 2.3.1a: Máy trạng thái PHIN  
12  
Đặc tvà kim chng các phn mềm tương tranh  
Hình 2.3.1b: Máy trạng thái FORK  
2.3.2 Deadlock  
2.3.2.1 Khái niệm  
Deadlock xy ra trong hthng khi tt ccác tiến trình ca hthống đều bị  
chn hoặc không đủ điều kiện để tiến trình đó hoạt động.  
Mt ví dvdeadlock điển hình là: “ba ti ca triết gia”. Một bàn ăn có 5 cái  
ghế, 5 vtriết gia cùng ngi vào chiếc bàn. Khi bày đũa, người phc vchỉ để vào gia  
mỗi người 1 chiếc đũa. Như vậy 2 bên mi vtriết gia đều có 2 chiếc đũa nhưng nếu  
ngưi này cầm đũa thì người kia skhông có:  
Hình 2.3.2.1a: Bữa tối của triết gia[1]  
Nếu số đũa được chia đều ra cho năm người, như vậy mỗi người scó mt  
chiếc đũa. Cả năm người skhông ththc hin bữa ăn của mình vi mt chiếc đũa  
được, khi đó deadlock xy ra.  
13  
Đặc tvà kim chng các phn mềm tương tranh  
Hình 2.3.2.1b: Deadlock[1]  
2.3.2.2 Phân tích Deadlock  
Trong mô hình trng thái hu hn FSP ca mt tiến trình, mt trng thái  
deadlock là mt trng thái không có schuyn tiếp đi. Một tiến trình trạng thái như  
vy có thể không tham gia vào các hành động tiếp theo. Trong FSP trng thái deadlock  
này được biu din bng mt biến cc bSTOP[1].  
Nhìn chung, hthống tương tranh vi rt nhiu tiến trình xy ra rt có thsẽ  
xy ra bế tc. Vic kim tra, phân tích deadlock trong đồ thLTS là hết sc quan  
trng. Nó đảm bo cho vic thiết kế chương trình phn mềm đúng đắn và chính xác.  
Công cLTSA có sn chc nng phân tích deadlock, chúng ta snghiên cu phn  
sau.  
2.3.3 Thuộc tính An toàn (safety property)  
Khái nim safety: Thuộc tính an toàn đảm bo không có li xy ra trong quá  
trình thc hin các tiến trình ca mt hthống tương tranh.  
Safety property: Vmt cú pháp, nhng tiến trình FSP được thêm vào trước từ  
khóa property để khẳng định nó là mt thuc tính an toàn. Mt thuc tính an toàn  
khẳng định tt ccác hành động trong Alphabet của nó đều được nó chp nhn. Điều  
này đm bo cho hthng hoạt động đồng bbi tiến trình an toàn này.  
dmô ttrạng thái đèn xanh, đỏ của đèn giao thông:  
14  
Đặc tvà kim chng các phn mềm tương tranh  
property TRAFICLIGHT = (red -> enter  
|blue -> exit).  
2.3.4 Thuộc tính Liveness (Liveness property)  
Khái nim: Thuc tính Liveness là thuc tính quan trng nhất trong chương hệ  
thống tương tranh, nó khẳng định khi chương trình kết thúc có đạt trng thái tt hay  
không [1].  
Thuc tính tiến trình (progress): Một đặc tính progress khẳng định ti bt kỳ  
trng thái nào ca mt trong các hoạt động ca mt thc thi phi xy ra. Tc là các  
hoạt đng thành công và phải đưc kết thúc .  
Phân tích tiến trình: phân tích tiến trình để tìm ra tp kết thúc ca các trng  
thái. Tp kết thúc ca trng thái là mt tp hợp trong đó một trng thái có thtruy cp  
tmi trng thái khác trong tp hp thông qua mt hoc nhiu chuyn tiếp và không  
có chuyn tiếp nào tbên trong tp hp ra trng thái bên ngoài tp hp.  
2.4 Công cụ LTSA  
LTSA (Labelled Transition System Analiser) là mt công chtrkim chng  
với đặc tlà LTS. LTSA sdụng để kim tra tính mong mun và không mong mun  
cho tt ccác trình tcó thcó ca các skiện và hành động [1]. LTSA được ti min  
phí ttrang web [4] chính thc ca cun sách “Concurrency: State Models and Java  
Programs second edition [1]”. Ta ly ví dLTSA phân tích một đặc tLTS cho trng  
thái vào, ra ca mt chiếc ô tô khi qua cu:  
CAR = (enter -> exit -> CAR).  
15  
Đặc tvà kim chng các phn mềm tương tranh  
Hình 2.4a: Mô hình hành động của chiếc ô tô  
Hình 2.4b: LTSA animator điều khiển các hành động trong mô hình 2.4a  
Mỗi hành động được chn trong Animator sẽ điều khin các hoạt động tương  
ng trong mô hình.  
2.5 Kết luận  
Trong chương này, chúng ta đã tìm hiu mt skhái nim phn mm tương  
tranh, phương pháp mô hình hóa, máy hu hn trng thái FSP và công chtrkim  
chng LTSA. Đây là những khái niệm cơ bản mà chúng ta sphi trang bị để có thể  
thc hin đặc tvà kim chng thiết kế, cài đặt mt phn mm tương tranh mà chúng  
ta stìm hiu ở hai chương sau.  
16  
Đặc tvà kim chng các phn mềm tương tranh  
Chương 3: Kiểm chứng thiết kế  
Mt bn thiết kế, dù cn thn và chi tiết đến đâu cũng có thế tn ti thiếu sót,  
chính vì vy mô hình hóa thiết kế là một cách để kim chng hiu qunhất. Phương  
pháp mô hình hóa được sdng rt rng rãi trong kthut, một phương diện nào đó,  
mô hình có thể đại din cho vt chất, mang đầy đủ các tính cht ca vt cht. Khi  
chúng ta kim tra trên mô hình scho kết quả tương đương với ngoài thc tế. Trong  
thiết kế cũng vậy, mô hình hóa thiết kế scho chúng ta kim tra thiết kế mt cách toàn  
diện, xem nó có đúng với yêu cầu bài toán đặt ra không?  
3.1 Đặc tả thiết kế bằng FSP  
Như chúng ta đã biết trên, FSP rt phù hp cho vic thiết kế mt phn mm  
tương tranh, tuy nhiên, chúng ta vn cn kim chng xem thiết kế liệu có đúng như  
yêu cu ca bài toán không? LTS Analiser ( LTSA) dùng để phân tích FSP thành các  
mô hình, thun tin cho vic kim tra thiết kế. Để thun tin cho vic hình dung, chúng  
ta cùng xem mt ví dụ đc tthiết kế bng FSP.  
Bài toán “SingleLandBridge” được phát biểu như sau: Trên một con đường có  
mt chiếc cu hp, chiếc cu chỉ đủ cho mt làn xe chy. Yêu cầu đặt ra là to ra mt  
chương trình điều khin sra, vào ca ô tô ở hai đầu cu. Chương trình scho các ô tô  
đi ti cu được qua cu nếu trên cu chỉ có ô tô đi cùng chiu hoc không có ô tô chy  
theo hướng ngược li. Nếu trên cu có xe đang qua cầu theo hương ngược li hoc có  
ô tô đã chờ ở đầu cầu bên kia trước thì ô tô này phi chcho chiếc xe đó qua trước.  
Chúng ta hãy cùng nghiên cu yêu cu thiết kế cho bài toán. Thiết kế phi thc  
hiện được nhim vchcho phép ô tô đó được qua cu nếu trên cầu có ô tô đi cùng  
hướng hoc hướng ngược li không có ô tô.  
Thiết kế ca bài toán này đã được đặc tbng FSP trong các ví dcó sn ca  
công cLTSA. Ví dnày mang tên “SingleLandBridge”. Tuy nhiên, chúng ta stìm  
hiu chi tiết cách đặc tthiết kế bng các máy trng thái FSP. Ta quy định ô tô qua  
chiếc cu sphân thành hai loi là ô tô đỏ (red) đi từ phía tây sang và ô tô xanh (blue)  
đi từ phía đông sang.  
17  
Đặc tvà kim chng các phn mềm tương tranh  
Hình 3.1: Mô tả các ô tô đi qua một chiếc cầu hẹp[1]  
Trước khi đặc thai yêu cu ca thiết kế, chúng ta hãy định nghĩa hai tiến trình  
ô tô và cầu trưc:  
Tiến trình ô tô (CAR) có hai hành động là đi vào (enter) và đi ra (exit) khi qua  
cu:  
CAR = (enter -> exit -> CAR).  
Tuy nhiên nếu ô tô đi theo đoàn thì mi ln chiếc ô tô dẫn đầu được qua cu thì  
cả đoàn của chiếc ô tô đó đều được qua. Ta có thêm một định nghĩa những chiếc ô tô  
na:  
CARS = (red:CONVOY || blue:CONVOY).  
Trong đó red, blue là những chiếc xe đỏ hoc xanh, CONVOY là tiến trình mô  
ttính chất theo đoàn của nhng chiếc ô tô. CONVOY được định nghĩa như sau:  
CONVOY = [ID]:CAR  
ID là số ô tô có trong đoàn ô tô.  
Nếu mt chiếc ô tô đỏ lên cầu, đồng nghĩa với vic trên cầu đó không có chiếc  
ô tô xanh nào. Nếu trên cầu đã có ô tô đỏ ri nhưng do các ô tô đỏ đi cùng chiều nên  
chiếc ô tô đó vẫn được lên cầu, khi đó số ô tô đỏ trên cu sẽ tăng thêm một. Ngưc li,  
khi ô tô đỏ đó rời cu, số ô tô đsgiảm đi một. Nếu trên cu chcó mt chiếc ô tô đỏ,  
18  
Đặc tvà kim chng các phn mềm tương tranh  
khi chiếc ô tô đó rời cu thì trên cu skhông còn chiếc ô tô nào, ta gọi đó là thuộc  
tính ONEWAY. Khi xảy ra ONEWAY, hai đầu cu bên nào có ô tô tới trước sẽ được  
qua trước. Ta có định nghĩa tiến trình RED và thuc tính ONEWAY:  
RED[i:ID] = (red[ID].enter -> RED[i+1]  
|when(i==1)red[ID].exit -> ONEWAY  
|when( i>1)red[ID].exit -> RED[i-1]  
)
Thuc tính an toàn ONEWAY khẳng định chiếc cu an toàn và cho phép ô tô  
qua cu khi trên cu chcó mt chiếc ô tô và chiếc ô tô đó đã thoát ra ngoài chiếc cu:  
property ONEWAY = (red[ID].enter -> RED[1]  
|blue[ID].enter -> BLUE[1]  
)
Tương tự như vậy ta cũng có tiên trình BLUE:  
BLUE[i:ID] = (blue[ID].enter -> BLUE[i+1]  
|when(i==1)blue[ID].exit -> ONEWAY  
|when( i>1)blue[ID].exit -> BLUE[i-1]  
)
Trên chiếc cu bao gicũng chỉ có mt loi ô tô, hoặc là ô tô đỏ, hoc là ô tô  
xanh. Nếu có cô tô đỏ và ô tô xanh thì chc chn sxy ra tai nn. Khi trên cu  
không có ô tô xanh, tức là ô tô đỏ được qua cầu và ngược li, trên cu không có ô tô  
đỏ thì ô tô xanh được qua cầu. Ta có định nghĩa tiến trình cu:  
BRIDGE = BRIDGE[0][0], // cu trng  
19  
Đặc tvà kim chng các phn mềm tương tranh  
BRIDGE[nr:T][nb:T] = //nr, nb là số ô tô đỏ, sô tô xanh có trên cu  
(when (nb==0)  
// T là sloi ô tô có trên cu  
red[ID].enter -> BRIDGE[nr+1][nb]  
|red[ID].exit -> BRIDGE[nr-1][nb]  
|when (nr==0)  
blue[ID].enter -> BRIDGE[nr][nb+1]  
|blue[ID].exit -> BRIDGE[nr][nb-1]  
).  
Bây gichúng ra sẽ đặc tbng FSP các yêu cu mà thiết kế phi gii quyết.  
- Ô tô được lên cu khi trên cu không có ô tô đi ngược chiu hoặc có ô tô đi  
cùng chiu:  
NOPASS1 = C[1],  
C[i:ID] = ([i].enter -> C[i%N+1]).  
- Sau khi tt cnhng chiếc xe đi cùng chiều ri cu, xe một trong hai đầu  
cu sẽ đưc phép qua cu:  
NOPASS2 = C[1],  
C[i:ID] = ([i].exit -> C[i%N+1]).  
||CONVOY = ([ID]:CAR || NOPASS1 || NOPASS2).  
||CARS = (red:CONVOY || blue:CONVOY).  
20  

Tải về để xem bản đầy đủ

pdf 53 trang yennguyen 14/05/2025 150
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Đặc tả và kiểm chứng các phần mềm tương tranh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_dac_ta_va_kiem_chung_cac_phan_mem_tuong_tranh.pdf