Ch˜Ïng 1. TÍng quan vΣ lu™n án 1.1 L˛ do l¸a chÂn Σ tài Mô hình hóa là mÎt trong các cách th˘c hiªu qu£ %∫ qu£n l˛ %Î ph˘c t§p trong phát tri∫n ph¶n mΣm, nó cho phép thiΠt kΠ và %ánh giá các yêu c¶u cıa hª thËng. Mô hình hóa không chø cung cßp các nÎi dˆng mÎt cách tr¸c quan mà còn c£ các nÎi dung k˛ t¸. Các kˇ thu™t ki∫m th˚ có th∫ %˜Òc s˚ dˆng trong phát tri∫n ph¶n mΣm thông th˜Ìng %∫ ki∫m tra liªu mÎt ph¶n mΣm th¸c thi có th‰a mãn yêu c¶u cıa ng˜Ìi dùng. Tuy nhiên, ki∫m th˚ là cách xác th¸c không %¶y %ı vì nó chø có th∫ phát hiªn %˜Òc lÈi trong mÎt vài tr˜Ìng hÒp nh˙ng không %£m b£o %˜Òc hª thËng ch§y %úng trong mÂi tr˜Ìng hÒp. Ki∫m ch˘ng ph¶n mΣm là mÎt trong nh˙ng ph˜Ïng pháp m§nh hiªu qu£ %∫ tìm ra lÈi ho∞c ch˘ng minh không có lÈi mÎt cách toán hÂc. MÎt vài kˇ thu™t %ã %˜Òc %Σ xußt cho ki∫m ch˘ng ph¶n mΣm nh˜ ki∫m ch˘ng mô hình, ch˘ng minh %‡nh l˛, và phân tích ch˜Ïng trình. Trong các kˇ thu™t này, ch˘ng minh %‡nh l˛ có ˜u %i∫m vì có kh£ n´ng ki∫m ch˘ng các ch˜Ïng trình có kích cÔ lÓn và suy diπn qui n§p. Tuy nhiên, ch˘ng minh %‡nh l˛ th˜Ìng sinh ra nhiΣu các ch˘ng minh ph˘c t§p và khó hi∫u. Trên khía c§nh khác, kiΠn trúc ph¶n mΣm là mÎt khái niªm %˜Òc %Σ xußt %∫ xây d¸ng các hª thËng ph¶n mΣm mÎt cách hiªu qu£. MÎt d§ng kiΠn trúc ho∞c ki∫u thiΠt kΠ th˜Ìng có các ph˜Ïng pháp mô hình hóa và ki∫m ch˘ng phù hÒp khác nhau. KiΠn trúc h˜Óng s¸ kiªn là mÎt trong nh˙ng kiΠn trúc phÍ biΠn trong phát tri∫n ph¶n mΣm cung cßp cÏ chΠ gÂi d‡ch vˆ không tr¸c tiΠp. MÈi thành ph¶n cıa kiΠn trúc này có th∫ sinh ra các s¸ kiªn, sau %ó hª thËng s≥ gÂi các thı tˆc %ã %´ng k˛ vÓi các s¸ kiªn này. Eây là mÎt kiΠn trúc %¶y h˘a hμn vì nó cho phép phát tri∫n và mô hình các hª thËng ít ràng buÎc nhau và lÒi ích cıa nó %ã %˜Òc công nh™n rÎng rãi trong khoa hÂc và ˘ng dˆng. Có nhiΣu lo§i hª thËng h˜Óng s¸ kiªn bao gÁm các hª thËng giao ªndiªn ng˜Ìi dùng cho phép s˚ dˆng các s¸ kiªn %∫ th¸c thi lªnh cıa ng˜Ìi dùng, các hª thËng sinh ra lu™t s˚ dˆng trong trí tuª nhân t§o khi x£y ra mÎt %iΣu kiªn nào %ó, hay các %Ëi t˜Òng ho§t %Îng khi thay %Íi giá tr‡ cıa các thuÎc tính thì kích ho§t mÎt sË hành %Îng 11. Trong kiΠn trúc h˜Óng s¸ kiªn, các lu™n d§ng ECA %˜Òc %Σ xußt nh˜ mÎt các tiΠp c™p %∫ %∞c t£ các quan hª khi các s¸ kiªn x£y ra mÎt %iΣu kiªn %‡nh tr˜Óc. Lu™t ECA có d§ng: On Event IF conditions DO actions có nghæa là khi s¸ kiªn Event x£y ra trong mÎt %iΣu kiªn conditions thì th¸c thi actions. Ta cÙng có th∫ bi∫u diπn các lu™t này mÎt cách không hình th˘c b¨ng các lu™t ifthen, nghæa là if Events x£y ra trong %iΣu kiªn condition, then th¸c thi action. Các ˜u %i∫m cıa ph˜Ïng pháp này %ã %˜Òc ˘ng dˆng và tích hÒp trong nhiΣu lænh v¸c khác nhau nh˜ hª thËng CSDL, các ˘ng dˆng c£m ng˙ c£nh. Eã có nhiΣu nghiên c˘u vΣ phân tích các hª thËng h˜Óng s¸ kiªn cÙng nh˜ là hình th˘c hóa các lu™t ECA. Tuy nhiên, các ph˜Ïng pháp mô hình hóa và ki∫m ch˘ng các hª thËng h˜Óng s¸ kiªn tÍng quát là ch˜a %ı vì trên th¸c tΠ ta th˜Ìng phát tri∫n mÎt d§ng %∞c tr˜ng cıa hª thËng h˜Óng s¸ kiªn có s˚ dˆng các lu™t ECA. HÏn n˙a các nghiên c˘u hiªn t§i cıa ki∫m ch˘ng ph¶n mΣm chı yΠu tâp trung vào phân tích các mô
Trang 1ÑI H≈C QU»C GIA HÀ NÀI Tr˜Ìng §i hÂc Công nghª
Trang 2Ng˜Ìi h˜Óng d®n khoa hÂc:
Có th∫ tìm hi∫u lu™n án t§i
- Th˜ viªn QuËc gia Viªt Nam
- Trung tâm thông tin th˜ viên , §i hÂc QuËc gia Hà NÎi
Trang 3Ch˜Ïng 1 TÍng quan v∑ lu™n án
Mô hình hóa là mÎt trong các cách th˘c hiªu qu£ ∫ qu£n l˛ Î ph˘c t§p trongphát tri∫n ph¶n m∑m, nó cho phép thi∏t k∏ và ánh giá các yêu c¶u cıa hª thËng
Mô hình hóa không chø cung cßp các nÎi dˆng mÎt cách tr¸c quan mà còn c£ cácnÎi dung k˛ t¸ Các kˇ thu™t ki∫m th˚ có th∫ ˜Òc s˚ dˆng trong phát tri∫n ph¶nm∑m thông th˜Ìng ∫ ki∫m tra liªu mÎt ph¶n m∑m th¸c thi có th‰a mãn yêu c¶ucıa ng˜Ìi dùng Tuy nhiên, ki∫m th˚ là cách xác th¸c không ¶y ı vì nó chø cóth∫ phát hiªn ˜Òc lÈi trong mÎt vài tr˜Ìng hÒp nh˙ng không £m b£o ˜Òc hªthËng ch§y úng trong mÂi tr˜Ìng hÒp Ki∫m ch˘ng ph¶n m∑m là mÎt trong nh˙ngph˜Ïng pháp m§nh hiªu qu£ ∫ tìm ra lÈi ho∞c ch˘ng minh không có lÈi mÎt cáchtoán hÂc MÎt vài kˇ thu™t ã ˜Òc ∑ xußt cho ki∫m ch˘ng ph¶n m∑m nh˜ ki∫mch˘ng mô hình, ch˘ng minh ‡nh l˛, và phân tích ch˜Ïng trình Trong các kˇ thu™tnày, ch˘ng minh ‡nh l˛ có ˜u i∫m vì có kh£ n´ng ki∫m ch˘ng các ch˜Ïng trình
có kích cÔ lÓn và suy diπn qui n§p Tuy nhiên, ch˘ng minh ‡nh l˛ th˜Ìng sinh ranhi∑u các ch˘ng minh ph˘c t§p và khó hi∫u Trên khía c§nh khác, ki∏n trúc ph¶nm∑m là mÎt khái niªm ˜Òc ∑ xußt ∫ xây d¸ng các hª thËng ph¶n m∑m mÎt cáchhiªu qu£ MÎt d§ng ki∏n trúc ho∞c ki∫u thi∏t k∏ th˜Ìng có các ph˜Ïng pháp môhình hóa và ki∫m ch˘ng phù hÒp khác nhau Ki∏n trúc h˜Óng s¸ kiªn là mÎt trongnh˙ng ki∏n trúc phÍ bi∏n trong phát tri∫n ph¶n m∑m cung cßp cÏ ch∏ gÂi d‡ch vˆkhông tr¸c ti∏p MÈi thành ph¶n cıa ki∏n trúc này có th∫ sinh ra các s¸ kiªn, sau
ó hª thËng s≥ gÂi các thı tˆc ã ´ng k˛ vÓi các s¸ kiªn này ây là mÎt ki∏ntrúc ¶y h˘a hµn vì nó cho phép phát tri∫n và mô hình các hª thËng ít ràng buÎcnhau và lÒi ích cıa nó ã ˜Òc công nh™n rÎng rãi trong khoa hÂc và ˘ng dˆng Cónhi∑u lo§i hª thËng h˜Óng s¸ kiªn bao gÁm các hª thËng giao ªndiªn ng˜Ìi dùngcho phép s˚ dˆng các s¸ kiªn ∫ th¸c thi lªnh cıa ng˜Ìi dùng, các hª thËng sinh
ra lu™t s˚ dˆng trong trí tuª nhân t§o khi x£y ra mÎt i∑u kiªn nào ó, hay các
Ëi t˜Òng ho§t Îng khi thay Íi giá tr‡ cıa các thuÎc tính thì kích ho§t mÎt sËhành Îng [11] Trong ki∏n trúc h˜Óng s¸ kiªn, các lu™n d§ng ECA ˜Òc ∑ xußtnh˜ mÎt các ti∏p c™p ∫ ∞c t£ các quan hª khi các s¸ kiªn x£y ra mÎt i∑u kiªn
‡nh tr˜Óc Lu™t ECA có d§ng: On Event IF conditions DO actions có nghæa làkhi s¸ kiªn Event x£y ra trong mÎt i∑u kiªn conditions thì th¸c thi actions TacÙng có th∫ bi∫u diπn các lu™t này mÎt cách không hình th˘c b¨ng các lu™t if-then,nghæa là if Events x£y ra trong i∑u kiªn condition, then th¸c thi action Các ˜ui∫m cıa ph˜Ïng pháp này ã ˜Òc ˘ng dˆng và tích hÒp trong nhi∑u lænh v¸ckhác nhau nh˜ hª thËng CSDL, các ˘ng dˆng c£m ng˙ c£nh ã có nhi∑u nghiênc˘u v∑ phân tích các hª thËng h˜Óng s¸ kiªn cÙng nh˜ là hình th˘c hóa các lu™tECA Tuy nhiên, các ph˜Ïng pháp mô hình hóa và ki∫m ch˘ng các hª thËng h˜Óngs¸ kiªn tÍng quát là ch˜a ı vì trên th¸c t∏ ta th˜Ìng phát tri∫n mÎt d§ng ∞ctr˜ng cıa hª thËng h˜Óng s¸ kiªn có s˚ dˆng các lu™t ECA HÏn n˙a các nghiênc˘u hiªn t§i cıa ki∫m ch˘ng ph¶n m∑m chı y∏u tâp trung vào phân tích các mô
1
Trang 4t£ chính xác v∑ ch˘c n´ng và hành vi cıa hª thËng Chính vì nh˙ng l˛ do trên,các ph˜Ïng pháp mô hình hóa và ki∫m ch˘ng phù hÒp cho các hª thËng này là c¶nthi∏t N∏u ta có th∫ ki∫m ch˘ng các tính chßt quan trÂng cıa hª thËng sÓm thì s≥ti∏t kiªm ˜Òc chi phí phát tri∫n Các ph˜Ïng pháp này vì th∏ n∏u gi£m ˜Òc Îph˘c t§p trong ch˘ng minh thì s≥ có kh£ n´ng áp dˆng vào th¸c t∏ cao Lu™n án
∑ xußt các ph˜Ïng pháp mÓi ∫ §t ˜Òc các yêu c¶u trên b¨ng s˚ dˆng ph˜Ïngpháp hình Event-B Event-B ˜Òc d¸a trên l˛ thuy∏t t™p hÒp và phù hÒp cho môhình hóa các hª thËng lÓn và ph£n ˘ng Tính nhßt quán cıa mô hình Event-B ˜Òcb£o £m bi các ch˘ng minh hình th˘c Các công cˆ hÈ trÒ ˜Òc chung cßp cho
∞c t£ và ch˘ng minh Event-B trên n∑n t£ng Rodin Vì vây, s˚ dˆng Event-B làmph˜Ïng pháp hình th˘c ∫ mô hình hóa và ki∫m ch˘ng các hª thËng h˜Óng s¸ kiªn
có rßt nhi∑u ˜u i∫m
Lu™n án ˜a ra mÎt cách ti∏p c™n khác so vÓi các nghiên c˘u hiªn t§i Thay vìphân tích mÎt hª thËng h˜Óng s¸ kiªn tÍng quát, chúng tôi t™p trung vào s˚ dˆngEvent-B ∫ mô hình hóa các hª thËng h˜Óng s¸ kiªn ∞c tr˜ng nh˜ các hª thËngCSDL, các hª thËng c£m ng˙ c£nh Lu™n án ∑ xußt các ph˜Ïng pháp hiªu khôngchø mô hình hóa các hành vi ˜Òc bi∫u diπn b¨ng các lu™t If-Then mà còn hìnhth˘c hóa các tính chßt quan trÂng b¨ng các thành ph¶n Event-B Tính úng ≠ncıa các tính chßt này ˜Òc ch˘ng minh mÎt cách toán hÂc b¨ng viªc ch˘ng minhcác mªnh ∑ c¶n ch˘ng minh ˜Òc sinh ra bi Event-B Công cˆ Rodin ˜Òc s˚dˆng trong hÈ trÒ quá trình mô hình hóa và ch˘ng minh t¸ Îng Lu™n án có mˆctiêu phân tích các hª thËng h˜Óng s¸ kiªn ˜Òc mô t£ b¨ng các yêu c¶u khôngchính xác Lu™n án giÓi thiªu ph˜Ïng pháp mÓi d¸a trên làm m‡n ∫ mô hình hóa
và ki∫m ch˘ng tính chßt an toàn và tính ho§t Îng cıa hª thËng
Các nghiên c˘u óng góp cıa lu™n án bao gÁm
1 Lu™n án ∑ xußt mÎt ph˜Ïng pháp ∫ mô hình hóa và ki∫m ch˘ng các hª thËngCSDL có thành ph¶n trigger s˚ dˆng Event-B Ph˜Ïng pháp này giÓi thiªu cácb˜Óc chi ti∏t ∫ chuy∫n Íi các khái niªm trong CSDL sang các k˛ hiªu Event-B.Quá trình chuy∫n Íi d¸a trên s¸ t˜Ïng t¸ gi˙a cßu trúc cıa triggers và Event-Bevent VÓi ph˜Ïng pháp ∑ xußt, tính chßt b£o toàn các ràng buÎc ˜Òc ki∫mch˘ng và các vòng l∞p vô h§n sinh ra bi các trigger có th∫ ˜Òc phát hiªn b¨ngcác ch˘ng minh hình th˘c Các phát hiªn này s≥ óng góp làm gi£m chi phí pháttri∫n MÎt công cˆ hÈ trÒ chuy∫n Ëi bán t¸ Îng cÙng ˜Òc phát tri∫n
2 Lu™n án ti∏p tˆc nghiên c˘u ˜u i∫m cıa cÏ ch∏ ho§t Îng t˜Ïng t¸ gi˙a cáclu™t ECA và Event-B event ∫ ∑ xußt ph˜Ïng pháp mô hình hóa và ki∫m ch˘ngcác hª thËng c£m ng˙ c£nh Lu™n án phát hiªn ra ˜u i∫m cıa cÏ ch∏ làm m‡ntrong Event-B ∑ làm cho ph˜Ïng pháp ∑ xußt phù hÒp vÓi mô hình hóa t¯ngb˜Óc Các tính chßt quan trÂng nh˜ là b£o toàn ràng buÎc ng˙ c£nh có th∫ ˜Òcki∫m ch˘ng t¸ Îng b¨ng s˚ dˆng công cˆ Rodin
Trang 54 Lu™n án k∏ th¯a tính làm m‡n cıa Event-B, d¸a trên ph˜Ïng pháp mô hình hóacác lu™t If-Then mÌ và mÎt sË ph˜Ïng pháp suy diπn ∫ phân tích mÎt sË tínhchßt quan trÂng cıa các yêu c¶u không chính xác nh˜ tính an toàn và tính ho§tÎng.
Lu™n án ˜Òc tÍ ch˘c nh˜ Hình 1.1 Ch˜Ïng 2 cung cßp các ki∏n th˘c n∑n t£ngcho lu™n án Ch˜Ïng 3 giÓi thiªu ph˜Ïng pháp mô hình hóa và ki∫m ch˘ng các hªthËng CSDL Ch˜Ïng 4 t™p trung vào vßn ∑ mô hình hóa và ki∫m ch˘ng các hªthËng c£m ng˙ c£nh Trong Ch˜Ïng 5, lu™n án ∑ xußt mÎt ph˜Ïng pháp mô hìnhhóa cho các hª thËng h˜Óng s¸ kiªn ˜Òc mô t£ bØng các lu™t If-Then mÌ Ch˜Ïng
6 giÓi thiªu ph˜Ïng pháp ki∫m ch˘ng tính chßt an toàn và ho§t Îng cıa các yêuc¶u không chính xác Ch˜Ïng 7 tÍng k∏t lu™n án và ˜a ra h˜Óng phát tri∫n
Ch˜Ïng 2 Ki∏n th˘c cÏ s
Propositional temporal logic (PTL) là s¸ m rÎng cıa logic mªnh ∑ trong ó môt£ mÎt chuÈi các tr§ng thái nh˙ng kho£ng thÌi gian khác nhau gÂi là thÌi i∫mt˘c thÌi MÎt thành ph¶n cÏ b£n PTL là mÎt công th˘c logic b™c 1 ˜Òc xâyd¸ng t¯ các nguyên tË v‡ t¯,các phép l˜Òng hóa 9, 8; các toán t˚ ^, _ ,¬; và các
3
Trang 6toán t˚ thÌi gian ⇤ (“always”),⌃ (“eventually”), và (“next”), U (“until") Cú phápcıa mÎt công th˘c PTL ˜Òc mô t£ nh˜ trong B£ng 2.1
B£ng 2.1: Cú pháp cıa công th˘c PTL
hformulai ::= htermi {_ htermi}
htermi > ::= hfactori {^ hfactori}
hfactori > ::= hprimaryi {U hprimaryi}
hprimaryi > ::= hatomc propositioni >
mÌ F ˜Òc ‡nh nghæa trên mÎt t™p X là mÎt t™p, mà mÈi ph¶n t˚ là mÎt c∞p:
Các ph˜Ïng phác hình th˘c ˜Òc s˚ dˆng ∫ ∞c t£ và ki∫m ch˘ng các hª thËngmÎt cách toán hÂc MÎt ph˜Ïng pháp là hình th˘c n∏u nó ˜Òc có inh nghæa cÏs d˜Ói d§ng toán hÂc th˜Ìng ˜Òc ˜a ra bi mÎt ngôn ng˙ hình th˘c [13] Cácph˜Ïng pháp ki∫m ch˘ng hình th˘c tr nên phÍ bi∏n trong công nghiªp và ngàycàng có các yêu c¶u ˘ng dˆng chúng Có hai cách ti∏p c™n phÍ bi∏n trong ki∫m
Trang 7Ch˜Ïng 2 Ki∏n th˘c cÏ s
ch˘ng là ki∫m ch˘ng mô hình và ch˘ng minh ‡nh l˛ Lu™n án này s˚ dˆng ph˜Ïngpháp Event-B ∫ mô hình hóa và ki∫m ch˘ng các s¸ kiªn, vì v™y trong ph¶n nàytr˜Óc khi trình bày v∑ Event-B chúng tôi s≥ giÓi thiªu mÎt sË ph˜Ïng pháp liênquan nh˜ VDM [8], Z [12], B [2]
VDM là vi∏t t≠t cıa “The Vienna Development Method" bao gÁm mÎt nhóm các
kˇ thu™t cho ∞c t£ hình th˘c và phát tri∫n cıa các hª tính toán VDM là mÎtph˜Ïng pháp d¸a trên mô hình mô t£ các hª thËng ph¶n m∑m thành các mô hình[8] Các mô hình này ˜Òc ∞c t£ nh˜ các Ëi t˜Òng và các hành Îng trên các Ëit˜Òng trong ó các Ëi t˜Òng bi∫u diπn các tr§ng thái input, output và bên trongcıa hª thËng VDM có ngôn ng˙ ∞c t£ VDM-SL bao gÁm mô hình toán hÂc ˜Òcxây d¸ng t¯ các d˙ liªu cÏ b£n nh˜ t™p hÒp, danh sách và ánh x§ cùng vÓi cáchành Îng thay Íi tr§ng thái cıa mô hình VDM-SL có ‡nh nghæa hình th˘c d¸atrên Logic of Partial Functions (LPF)
2.4.2 Ph˜Ïng pháp Z
∞c t£ Z d¸a trên l˛ thuy∏t t™p hÒp và tính toán v‡ t¯ b™c 1 MÈi Ëi t˜Òng cómÎt ki∫u riêng, ˜Òc bi∫u diπn bi mÎt t™p c¸c §i trong ∞c t£ hiªn t§i MÎt khíac§nh cıa Z là s˚ dˆng ngôn ng˙ t¸ nhiên Z s˚ dˆng toán hÂc ∫ ˜a ra vßn ∑,tìm ra các gi£i pháp và ch˘ng minh thi∏t k∏ l¸a chÂn phù hÒp vÓi ∞c t£ Z cungcßp cÏ ch∏ làm m‡n ∫ xây d¸ng hª thËng d¶n d¶n MÎt tài liªu ∞c t£ Z bao gÁmcác o§n hình th˘c và phi hình th˘c [12]
2.4.3 Ph˜Ïng pháp B
B là mÎt ph˜Ïng pháp ∞c t£, thi∏t k∏ và vi∏t mã cho các hª thËng ph¶n m∑m fit˜ng chính cıa B là b≠t ¶u b¨ng mÎt mô hình rßt tr¯u t˜Òng, sau ó thêm d¶ncác chi ti∏t vào các mô hình cˆ th∫ ti∏p theo [2] B ˜a ra các khái niªm v∑ máytr¯u t˜Òng óng gói các thành ph¶n toán hÂc, h¨ng, t™p hÒp, bi∏n và mÎt t™p hÒpcác hành Îng trên các bi∏n này Các thành ph¶n này ˜Òc ch˘a trong các môdun
có tên ∫ có th∫ ˜Òc s˚ dˆng các môdun khác
Event-B [3] là mÎt ph˜Ïng pháp hình th˘c mô hình hóa và phân tích m˘c mô hình
∞c tính chı chËt cıa Event-B là s˚ dˆng l˛ thuy∏t tâp hÒp làm k˛ hiªu mô t£, s˚dˆng cÏ ch∏ làm m‡n ∫ bi∫u diπn các hª thËng các m˘c tr¯u t˜Òng khác nhau vàs˚ dˆng các ch˘ng minh toán hÂc ∫ ki∫m ch˘ng s¸ Áng nhßt gi˙a các m˘c làmm‡n MÎt cßu trúc mô hình Event-B cÏ b£n bao gÁm mÎt máy và ng˙ c£nh
Ng˙ c£nh Event-B mô t£ ph¶n tænh trong ó các tính chßt liên quan và các gi£thuy∏t MÎt ng˙ c£nh có th∫ bao gÁm các t™p hÒp, h¨ng và các gi£ thi∏t T™p mang
s ˜Òc bi∫u diπn bi tên và khác rÈng Các t™p mang có tên khác thì hoàn toàn Îcl™p nhau H¨ng c ˜Òc xác ‡nh bi các gi£ thi∏t P (s, c), các gi£ thi∏t này cÙngphˆ thuÎc vào t™p mang s
Máy Event-B ˜Òc xác ‡nh b¨ng mÎt t™p các mªnh ∑ bao gÁm các bi∏n, bßt bi∏n,
‡nh l˛ và s¸ kiªn Bi∏n v biπu diπn tr§ng thái cıa mô hình Bßt bi∏n I (v ) sinh ra
Trang 8các lu™t ∑ £m b£o các bi∏n v luôn th‰a mãn Các lu™t này ˜Òc hình th˘c hóab¨ng các v‡ t¯ bi∫u diπn bi tính toán v‡ t¯ b™c mÎt ˜Òc m rÎng bi Equality bil˛ thuy∏t t™p hÒp MÈi s¸ kiªn có dang evt = any x where G(x , v ) then A(x , v , v0)end trong ó x là các bi∏n cˆc bÎ cıa s¸ kiªn, G(x , v ) là i∑u kiªn x£y ra s¸ kiµn
và A(x , v , v0) là hành Îng cıa s¸ kiªn MÎt s¸ kiªn ˜Òc kích ho§t n∏u i∑u kiªncıa nó tho£ mãn MÎt hành Îng cıa s¸ kiªn có th∫ có nhi∑u phép gán MÈi phépgán có th∫ là (1) phép gán Ïn ‡nh (x := E (t, v )), (2) phép gán rÈng (skip), ho∞c(3) phép gán không Ïn ‡nh (x :| P(t, v, x0)) ∫ gi£i quy∏t s¸ ph˘c t§p khi môhình hóa hª thËng, Event-B cung cßp cÏ ch∏ làm m‡n cho phép xây d¸ng hª thËngt¯ng b˜Óc b¨ng viªc thêm vào các chi ti∏t ∫ §t ˜Òc mô hình chính xác hÏn MÎtmáy làm m‡n th˜Ìng có nhi∑u bi∏n hÏn máy tr¯u t˜Òng vì ta có nhi∑u bi∏n biπudiπn mô hình chi ti∏t hÏn Trong làm m‡n chÁng, các bi∏n tr¯u t˜Òng v®n tÁn t§itrong máy làm m‡n, trong làm m‡n theo chi∑u dÂc các bi∏n tr¯u t˜Òng ˜Òc thayth∏ bi các bi∏n cˆ th∫ K∏t nËi gi˙a bi∏n tr¯u t˜Òng v và bi∏n cˆ th∫ w ˜Òc bi∫udiπn b¨ng các bßt bi∏n J (v , w ) ∫ ki∫m tra xem mÎt máy Event-B có th‰a mãnmÎt t™p các tính chßt không, Event-B ‡nh nghæa ra các mªnh ∑ c¶n ch˘ng minh.MÎt vài mªnh ∑ c¶n ch˘ng minh liên quan ∏n lu™n án là invariant preservation(INV), convergence (VAR), deadlock-freeness (DLF)
Lu™n án s˚ dˆng công cˆ Rodin phiên b£n 2.8 [1] là môi tr˜Ìng Eclipse ∫ mô hìnhhóa và ch˘ng minh trong Event-B Nó ˜Òc xây d¸ng trên n∑n t£ng cıa Eclipsebao gÁm các công cˆ hÈ trÒ mô hình hóa plug-ins Rodin có giao diªn phong phúbao gÁm các c˚a sÍ nh˜ proving, Event-B editor
• C˚a sÍ Proving: Cung cßp tßt c£ các mªnh ∑ ˜Òc sinh ra mÎt cách t¸ Îng chocác máy Event-B Các mênh ∑ này ˜Òc ch˘ng minh t¸ Îng ho∞c t˜Ïng tácthông qua các c˚a sÍ mªnh ∑ và mˆc tiêu
• C˚a sÍ Event-B: Bao gÁm các giao diªn cho phép chønh s˚a các máy và ng˙ c£nh.N∏u ng˜Ìi s˚ dˆng mã hóa không chính xác, c˚a sÍ problem s≥ hiªn th‡ thôngbáo lÈi
Có nhi∑u lo§i hª thËng h˜Óng s¸ kiªn nh˜ giao diªn cıa ph¶n m∑m, các hª thËngsinh lu™t ˜Òc s˚ dˆng trong trí tuª nhân t§o khi i∑u kiªn úng thì th¸c thi mÎthành Îng, hay trong các Ëi t˜Òng ho§t ông khi thay Íi giá tr‡ hay thuÎc tínhcıa Ëi t˜Òng [11] Trong lu™n án này, chúng tôi xét ∏n hai ˘ng dˆng ó là các
hª thËng CSDL và c£m ng˙ c£nh C£ hai hª thËng này ∑u s˚ dˆng các lu™t d§ngECA ∫ bi∫u diπn các hành vi
2.7.1 Hª thËng CSDL và triggers
MÎt hª thËng CSDL quan hª d¸a trên mô hình quan hª gi˙a các Ëi t˜Òng và cácquan hª, hành Îng cho thao tác d˙ liªu và toàntoàn vµn d˙ liªu Các hª thËngCSDL quan hª hiªn §i s˚ dˆng các lu™t ho§t Îng nh˜ trigger CSDL áp ˘ngl§i các s¸ kiªn x£y ra bên trong và bên ngoài cıa CSDL Trigger là mÎt o§n mãt¸ Îng th¸c thi khi có mÎt s¸ kiªn xác ‡nh x£y ra trong CSDL S¸ kiªn th˜Ìng
Trang 9liên quan ∏n viªc thao tác d˙ trong CSDL Trigger th˜Ìng ˜Òc s˚ dˆng trongcác tr˜Ìng hÒp: ki∫m soát ti∏n trình, t¸ Îng th¸c thi các hành Îng ho∞c cáclu™t nghiªp vˆ ph˘c t§p Cßu trúc cıa mÎt trigger có d§ng ECA : rule name::Event(e) IF condition DO action Trigger CSDL ph¶n lÓn có th∫ chia thành hailo§i: Data Manipulation Language(DML) vàvà Data Definition Language (DDL)triggers Lo§i ¶u tiên ˜Òc th¸ thi khi thao tác vÓi d˙ liêu, lo§i th˘ hai ˜Òc kíchho§t khi có các s¸ kiªn DDL x£y ra nh˜ t§o b£ng ho∞c login, commit, roll-back 2.7.2 Các hª thËng c£m ng˙ c£nh
Thu™t ng˙ “c£m ng˙ c£nh" ˜Òc ˜a ra l¶n ¶u tiên bi Bill Schilit [10], tác gi£ ã
‡nh nghæa ng˙ c£nh là v‡ trí, là ‡nh danh cıa các Ëi t˜Òng và s¸ thay Íi cıacác Ëi t˜Òng này sau ó làm cho ch˜Ïng trình thích nghi vÓi ng˙ c£nh Có nhi∑unghiên c˘u ã t™p trung vào ‡nh nghæa các thu™t ng˙ c£m ngh˙ c£nh Lu™n ánt™p trung vào các hª thËng c£m ng˙ c£nh s˚ dˆng d˙ liªu ng˙ c£nh mÎt cách tr¸cti∏p t¯ các c£m bi∏n v™t l˛ Hª thËng có th∫ c£m nh™n ˜Òc nhi∑u lo§i ng˙ c£nhtrong môi tr˜Ìng nó ho§t Îng nh˜ v‡ trí, Î t´ng tËc, nhiªt Î, Î £m, thÌi thi∏t
Và viªc x˚ l˛ cıa hª thËng này là phˆ thuÎc vào ng˙ng˙ c£nh t˘c là ph£n ˘ng vÓicác thay Íi cıa ng˙ c£nh
Ch˜Ïng 3 Mô hình hóa và ki∫m ch˘ng các hª thËng CSDL
∫ mô hình hóa và ki∫m ch˘ng hª thËng CSDL có trigger s˚ dˆng Event-B giaio§n thi∏t k∏ fi t˜ng chính cıa ph˜Ïng pháp xußt phát t¯ s¸ t˜Ïng Áng vè cÏch∏ ho§t Îng cıa trigger và s¸ kiªn Event-B ¶u tiên, chúng tôi ∑ xußt mÎt t™plu™t ∫ chuy∫n Íi mÎt hª thËng CSDL có trigger sang mô hình Event-B, sau óki∫m tra mÎt cách hình th˘c liªu hª thËng có th‰a mãn ràng buÎc d˙ liªu và pháthiªn các vòng l∞p vô h§n b¨ng viªc ch˘ng minh các mênh ∑ c¶n ch˘ng minh cıamáy Event-B ◊u i∫m cıa ph˜Ïng pháp là hª thËng CSDL có th∫ chuy∫n Ëi sang
mô hình Event-B mÎt cách tr¸c ti∏p Các tính chßt quan trÂng ˜Òc ch˘ng minhmÎt cách toán hÂc thông qua ch˘ng minh mªnh ∑ c¶n ch˘ng minh vì v™y tínhúng ≠n cıa các tính chßt này ˜Òc £m b£o Ph˜Ïng pháp này có giá tr‡ vì nó
£m b£o ˜Òc hª thËng tránh ˜Òc mÎt sË lÈi nghiêm trÂng thÌi i∫m thi∏t k∏.Ngoài ra, vÓi công cˆ hÈ trÒ Rodin thì các vßn ∑ s≥ ˜Òc ch˘ng minh t¸ Îng, nós≥ làm gi£m bÓt Î ph˘c t§p so vÓi ch˘ng minh thı công Ph˜Ïng pháp này cÙng
có th∫ dπ dàng áp dˆng ∫ th¸c thi mÎt công cˆ hÈ trÒ mô hình hóa bán t¸ Îng
7
Trang 10mÎt CSDL sang Event-B i∑u này cÙng kh≠c phˆc nh˜Òc i∫m v∑ Î ph˘c t§pkhi mô hình hóa cıa các ph˜Ïng pháp hình th˘c khi∏n chúng tr nên khó áp dˆngtrong phát tri∫n ph¶n m∑m.
B£ng 3.1: Qui t≠c chuy∫n Íi gi˙a CSDL và Event-B
Database definitions Event-B concepts Rule 1 db = hT, C , Gi DB M , DB C Rule 2 t = hr 1 , , r m i T = TYPE 1 ⇥ TYPE 2 ⇥ TYPE n
Rule 3 ri = hf i1 , , fini t 2 T Rule 4 Primary key constraint f : TYPE1 7 7! TRule 5 Constraint C Invariant I Rule 6 Trigger E Event Evt
3.2.2 Hình th˘c hóa triggers
B£ng 3.2 mô t£ cách chuy∫n mÎt trigger sang mÎt s¸ kiªn Event-B trong ó i∑ukiªn cıa s¸ kiªn là hÒp cıa lo§i trigger và i∑u kiªn trigger x£y ra Ph¶n th¸c thicıa trigger ˜Òc chuy∫n Íi thành ph¶n thân cıa s¸ kiªn Event-B Ta xét tr˜ÌnghÒp Ïn gi£n là thân chø ch˜a các câu lªnh DML Ïn Mã hóa nÎi dung cıa trigger
˜Òc mô t£ trong B£ng 3.3
B£ng 3.2: Hình th˘c hóa mÎt trigger
IF (e)
ON (c) WHEN (e ^ condition) ACTION (a) THEN (a) END
VALUES (value1, ,valuen) THEN T := T [ r
END
ANY v DELETE FROM T WHEN (v 2 TYPE 1 ^ e ^ c) WHERE hcolumn1 = some valuei THEN t := t f (v )
END
ANY v 1, v 2 UPDATE T WHEN v 1 2 TYPE 1 ^ v2 2 TYPE 2 ^ e ^ c SET column1=value, column2=value2 THEN t := {1 7! value1, 2 7! value2} t
Trang 11Ch˜Ïng 3 Mô hình hóa và ki∫m ch˘ng các hª thËng CSDL
• Vòng l∞p vô h§n: Vì mÎt trigger có th∫ kích ho§t trigger khác, nên nó có th∫d®n ∏n vòng l∞p vô h§n Tình tr§ng này có th∫ x£y ra khi sau mÎt chuÈi các s¸kiªn thì tr§ng thái cıa hª thËng không thay Íi Có hai cách ∫ phát hiªn tínhchßt này sau khi mô hình hóa b¨ng ph˜Ïng pháp ã ∑ xußt Các th˘ nhßt, tach˘ng minh mªnh ∑ c¶n ch˘ng minh deadlock-freeness (DLKF), mênh ∑ này
là hÒp cıa các i∑u kiªn cıa các s¸ kiªn Event-B, bi∫u diπn mÎt cách hình th˘c:
I (v ), P (c) ` G1(v ) _ _ Gn(v ), trongtrong ó v là bi∏n, I (v ) là bßt bi∏n, Gi(v )làlà i∑u kiªn cıa s¸ kiªn Trong mÎt sËt r˜Ìng hÒp, mªnh ∑ DLKF không suydiπn ˜Òc t¯ t™p các bßt bi∏n I (v ) và h¨ng ràng buÎc, ta s≥ ch˘ng minh t§i mÎtthÌi i∫m luôn có 1 s¸ kiªn ˜Òc kích ho§t b¨ng ch˘ng minh hÎi cıa các i∑ukiªn luôn úng tr˜Óc và sau khi th¸c thi event, t˘c là ch˜ngs minh mªnh ∑ c¶nch˘ng minh INV (bao gÁm c£ s¸ kiên INITIALISATION )
• B£o toàn ràng buÎc: VÓi ph˜Ïng pháp chuy∫n Íi ∑ xußt, mÎt trigger không viph§m các luât này n∏u I (v ), G(w , v ), S (w , v , v0) ` I (v0) ây cÙng chính là mªnh
∑ c¶n ch˘ng minh INV cıa máy Event-B
3.3.1 Mô t£
Trong mÎt hª thËng CSDL cho ˘ng dˆng qu£n l˛ nhân s¸ có hai b£ng EMPLOYEES(gÁm hai tr˜Ìng id và level) vàvà b£ng BONUS (gÁm hai tr˜Ìng id và amount).Ÿng dˆng có yêu c¶u ràng buÎc v∑ d˙ liªu nh˜ sau.: Tr˜Ìng amount cıa BONUS
>=10 n∏u level cıa nhân viên >5 Hª CSDL này ˜Òc thi∏t k∏t hai triggers th¸chiªn nhiªm vˆ sau:
Trigger 1 N∏u b£ng nhân viên employee ˜Òc c™p nhât thì bonus t´ng lên 10 Trigger 2 N∏u tr˜Ìng amount cıa nhân viên BONUS ˜Òc t´ng >=10 thì levelcıa nhân viên t´ng lên 1
3.3.2 Mô hình hóa
MÎt ph¶n ∞c t£ Event-B cıa ví dˆ ˜Òc th∫ hiªn Hình 3.1, Hình 3.2 và Hình 3.3
CONTEXT TRIGGER C SETS
TYPES TABLE NAMES
CONSTANTS
TBL EMPL TBL BONUS
Trang 12MACHINE TRIGGER M
SEES TRIGGER C
VARIABLES
bonus empl
f bonus
f empl type
INVARIANTS
inv1 : bonus 2 P (TBL BONUS) inv2 : empl 2 P (TBL EMPL) inv3 : type 2 TYPES inv4 : f bonus 2 N 7 7! N inv5 : f empl 2 N 7 7! N SYS CTR : 8 eid.eid 2 dom(empl) ^ pk empl(eid) > 5 ) pk bonus(eid) > 10 INF LOOP : (type = update ^ table = BONUS) _ (type = update ^ table = EMPL)
END
Hình 3.2: Máy Event-B Event trigger1 b=
any
eid
when
grd1 : type = update grd2 : table = EMPL grd3 : eid 2 dom(empl)
then
act1 : type := update act3 : table := BONUS act5 : bonus := {eid 7! (pk bonus(eid) + 10)} bonus act5 : pk bonus(eid) := pk bonus(eid) + 10
end Event trigger2 b=
any
eid
when
grd1 : type = update grd2 : table = BONUS grd3 : pk bonus(eid) 10
then
act1 : type := update act2 : table := EMPL act3 : empl := {eid 7! (pk empl(eid) + 1)} empl
end
Hình 3.3: Mã hóa trigger
3.3.3 Ki∫m ch˘ng các thuÎc tính
• B£o toàn ràng buÎc: Tính chßt này ˜Òc hình th˘c hóa bi bßt bi∏n SYS CTR :
8 eid.eid 2 dom(empl) ^ pk empl(eid) > 5 ) pk bonus(eid) > 10
Ta c¶n ch˘ng minh bßt bi∏n này b£o toàn tr˜Óc và sau khi các s¸ kiªn th¸c thi,mªnh ∑ c¶n ch˘ng minh t˜Ïng ˘ng cıa trigger 1 ˜Òc mô t£ nh˜ B£ng 3.4 Hais¸ kiªn Trigger 1 và Trigger 2 cıa máy DB M sinh ra các mªnh ∑ c¶n ch˘ngminh t˜Ïng ˘ng là trigger1/SYS CTR/INV, trigger2/SYS CTR/INV
Trang 13B£ng 3.4: INV PO of event trigger 1.
8 nid.nid 2 dom(empl rec) ^ pk empl(nid) > 5 ) pk bonus(nid) > 10
emplid 2 dom(empl rec)
8 nid.nid 2 dom(empl rec) ^ pk empl(nid) > 5
) (pk bonus {emplid 7! pk bonus(emplid) + 10})(nid) > 10
• Vòng l∞p vô h§n: – mˆc 3.2.3, bßt bi∏n INF LOOP là mªnh ∑ tuy∫n cıa cáci∑u kiªn cıa s¸ kiªn ˜Òc s˚ dˆng ∫ phát hiªn vòng l∞p vô h§n N∏u bßt bi∏nnày b£o toàn vÓi hai s¸ kiªn thì th¸c thi cıa hai triggers s≥ d®n ∏n vòng l∞p vôh§n Mªnh ∑ c¶n ch˘ng minh cıa tính chßt này ˜Òc th∫ hiªn B£ng 3.5
B£ng 3.5: Mªnh ∑ c¶n ch˘ng minh INV cıa trigger 1
8 nid.(nid 2 dom(empl rec) ^
type = update ^ table = BONUS ^
pk bonus(nid) > 10) _ (type = update ^ table = EMPL)) ^
emplid 2 dom(bonus rec)
table = BONUS ^ pk bonus(emplid) > 10 trigger1
8 nid.(nid 2 dom({emplid 7! pk empl(emplid) + 1} empl rec) ^ /INV
update = update ^ EMPL = BONUS ^
pk bonus(nid) > 10) _
(update = update ^ EMPL = EMPL)
T¯ ph˜Ïng pháp ∑ xußt Mˆc 3.2, chúng tôi ã cài ∞c mÎt công cˆ Trigger2B
∫ hÈ trÒ mô hình hóa và ki∫m ch˘ng mÎt hª thËng CSDL có trigger Công cˆ này
có th∫ sinh ra các file d˜Ói ‡nh d§ng XML ∫ có th∫ s˚ dˆng làm ¶u vào cho cáccông cˆ hÈ trÒ khác cıa Event-B nh˜ Rodin Ki∏n trúc cıa công cˆ ˜Òc mô t£nh˜ Hình 3.4
Hình 3.4: Architecture of Trigger2B tool
Ch˜Ïng 4 Mô hình hóa và ki∫m ch˘ng các hª thËng c£m ng˙
c£nh
C£m ng˙ canh cıa mÎt ˘ng dˆng liên quan tÓi kh£ n´ng áp ˘ng, ph£n hÁi và
Î nh§y c£m cıa ˘ng dˆng vÓi các thay Íi cıa ng˙ c£nh [5] Theo nghæa hµp thìmÎt hª thËng c£m ng˙ c£nh có th∫ xem nh˜ mÎt hª thËng h˜Óng s¸ kiªn nghæa
là nó nh™n các s¸ kiªn g˚i khi có s¸ thay Íi v∑ ng˙ c£nh và ph£n hÁi l§i các s¸
11