• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      形式化語言B與UML/OCL的比較

      2009-09-30 05:54顧建豐,陳名銘,周秀芳
      電腦知識(shí)與技術(shù) 2009年34期
      關(guān)鍵詞:比較

      顧建豐, 陳名銘, 周秀芳

      摘要:該文介紹了形式化方法中B語言和UML/OCL語言,從軟件開發(fā)生命周期的角度對(duì)B語言和OCL語言進(jìn)行了比較,歸納了這兩種形式化語言的異同和各自的適用范圍。

      關(guān)鍵詞:B語言;OCL;形式化方法;比較

      中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)34-9739-03

      Formal Language B and UML/OCL Comparison

      GU Jian-feng1,2, CHEN Ming-ming1, ZHOU Xiu-fang3

      (1. College of Information Engineering, Yangzhou University, Yangzhou 225009, China; 2. Jiangsu TV University Wujin College, Changzhou 213149, China)

      Abstract: This article introduced in the formalized method the B method and the UML/OCL language. Has carried on the comparison from the softwaredevelopment life cycle's angle to the B language and OCL, has induced these two kind of formalized language similarities and differences and therespective applicable scope.

      Key words: B language; OCL; Formalized method; Compare

      軟件開發(fā)的全過程中,從需求分析、規(guī)格說明、設(shè)計(jì)、編程、系統(tǒng)集成、測(cè)試、文檔生成直至維護(hù)各階段,凡是采用嚴(yán)格的數(shù)學(xué)語言、具有精確的數(shù)學(xué)語義的方法都稱為形式化方法[1]。統(tǒng)一建模語言UML與形式化方法的結(jié)合是近年來的研究熱點(diǎn)[2],統(tǒng)一模型語言UML在軟件開發(fā)過程中已有很多的實(shí)踐應(yīng)用,一種形式化語言O(shè)CL(對(duì)象約束語言)[3]的引入可以提高UML模型的精確性,B語言是一種基于對(duì)象的形式化語言。

      1 UML/OCL與B的簡(jiǎn)介

      UML(Unified Modeling Language統(tǒng)一建模語言)是一種定義良好,易于表達(dá),功能強(qiáng)大,且普遍適用的建模語言。它采用直觀的圖形表示法對(duì)系統(tǒng)建模,統(tǒng)一模型語言UML在軟件開發(fā)過程中已有很多的實(shí)踐應(yīng)用,已在面向?qū)ο蠓治龊驮O(shè)計(jì)中成為事實(shí)上的工業(yè)標(biāo)準(zhǔn),是現(xiàn)今面向?qū)ο笮枨蠓治龅闹匾ぞ摺5玌ML缺乏對(duì)軟件模型的精確描述,OCL的引入可以提高UML模型的精確性,彌補(bǔ)了UML的不足,它是一種精確的、易于使用的形式化語言,避免了其他形式化語言中那些復(fù)雜的約束符號(hào),由其約束的UML模型不會(huì)發(fā)生語義二義性問題,OCL是一種形式化語言。B方法屬于基于模型的規(guī)格說明語言的范疇,也是一種基于對(duì)象的形式化語言。

      2 B和OCL的比較

      2.1 數(shù)學(xué)基礎(chǔ)

      用于開發(fā)計(jì)算機(jī)系統(tǒng)的形式化方法是描述系統(tǒng)性質(zhì)的基于數(shù)學(xué)的技術(shù)[3],這樣的形式化方法提供了一個(gè)框架,可以在框架中以系統(tǒng)的而不是特別的方式刻劃、開發(fā)和驗(yàn)證系統(tǒng)。如果一個(gè)方法有良好的數(shù)學(xué)基礎(chǔ),那么它就是形式化的,典型地以形式化規(guī)約語言給出。這個(gè)基礎(chǔ)提供一系列精確定義的概念,如:一致性和完整性,以及定義規(guī)范的實(shí)現(xiàn)和正確性。

      所有形式規(guī)格說明方法都是以數(shù)學(xué)為基礎(chǔ)的。有些方法是基于集合論和一階謂詞演算,有些方法是基于時(shí)態(tài)邏輯,OCL語言是基于集合論和三值Kleene邏輯。B語言是基于集合論和一階謂詞演算。

      2.2 邏輯基礎(chǔ)

      B建立在Zermelo-Frankel集合理論基礎(chǔ)上,B抽象機(jī)符號(hào)表示形式化方法(B AMN)以謂詞邏輯、表示集合的符號(hào)、序列、函數(shù)以及其它抽象數(shù)據(jù)類型為基礎(chǔ),以一種精確的方法來描述軟件系統(tǒng)的需求與設(shè)計(jì)。AMN用廣義代換語言(Generalised Substitution Language, GSL)的術(shù)語定義,B AMN使用經(jīng)典二值邏輯(真和假)。OCL語言是基于三值邏輯(True,False,Undefined)。

      2.3 書寫風(fēng)格

      B建立在規(guī)格說明的謂詞轉(zhuǎn)換器的風(fēng)格上,在使用前置/后置條件的地方,用替換來表明狀態(tài)的改變。如:

      B:insert(elem)=

      PRE

      elem:TYPE &

      elem/:var

      THEN

      Var:=var∨{elem}

      END

      B中的后置條件象一個(gè)賦值,因而使得規(guī)格說明看起來像偽程序,其實(shí)它的語義恰如狀態(tài)的替換。

      OCL語言使用了大量的關(guān)鍵字(如self,context,pre,post等),其風(fēng)格類似于編程語言。

      2.4 表達(dá)能力

      從表達(dá)能力來分析,B語言的表達(dá)能力比OCL語言更強(qiáng),OCL語言只能對(duì)模型的約束加以說明,使用B方法編寫的規(guī)格說明具有精確性、無二義性、一致性、能進(jìn)行推理等特點(diǎn)。

      OCL語言是一種半形式化的語言,正式的OCL1.5版本的規(guī)格說明中盡管對(duì)OCL語言的語法進(jìn)行了詳細(xì)的描述,但是沒有對(duì)其形式語義進(jìn)行過定義,而最新的OCL2.0版本的草案中提出了兩種語義,一種是基于元模型的語義,另一種是稱之為對(duì)象模型的集合論的形式語義已有研究人員指出這兩種語 義 存在著不一致性和不完備性。

      2.5 前置條件、后置條件明確性

      一個(gè)操作的前置條件是指在操作被執(zhí)行前必須為真的約束,一個(gè)操作的后置條件是指在操作執(zhí)行完成后必須為真的約束。在B語言中,前置條件是明確陳述的,冗余的前置條件需要一致性檢測(cè),OCL的前置條件也是明確給出的,用關(guān)鍵字Pre表示。在B中,不變式是冗余的,不變式的存在與否都不會(huì)改變操作的定義,它并不是操作后置條件的一部分,因而需要證明該操作是否必須保留不變式,而在OCL中,后置條件也明確給出了,用關(guān)鍵字Post表示。

      2.6 工具支持

      一種規(guī)格說明語言要得到廣泛的應(yīng)用,強(qiáng)有力的工具支持是至關(guān)重要的。一般而言,規(guī)格說明語言的支持工具可以分為下面幾種類型:

      1)可視化編輯工具:主要是用于對(duì)規(guī)格說明語言進(jìn)行輸入和編輯。

      2)語法檢查工具:是規(guī)格說明語言最基本的支持工具,其功能是用于檢查規(guī)格說明的語法正確性,但這種工具只能發(fā)現(xiàn)一些簡(jiǎn)單的語法錯(cuò)誤。

      3)類型檢查工具規(guī)格說明語言均為類型語言使用類型檢查工具的目的是為了保證規(guī)格說明類型的正確性。

      4)語義分析工具:是用來檢查規(guī)格說明的語義的正確性。

      5)規(guī)格說明的求精:求精是指將規(guī)格說明轉(zhuǎn)換到程序代碼。

      6)測(cè)試自動(dòng)化工具:測(cè)試自動(dòng)化是指從規(guī)格說明中產(chǎn)生測(cè)試用例,運(yùn)行測(cè)試用例和進(jìn)行測(cè)試結(jié)果分析的自動(dòng)化,這些工具能提高軟件開發(fā)的效率并且降低軟件維護(hù)費(fèi)用。

      7)驗(yàn)證和確認(rèn)工具:主要是用于對(duì)規(guī)格說明進(jìn)行驗(yàn)證和確認(rèn),以保證規(guī)格說明具有所需要的性質(zhì)。驗(yàn)證和確認(rèn)方式主要有模型檢查,定理證明和動(dòng)畫技術(shù)三種。

      OCL語言是一種相對(duì)較新的語言,因此目前該語言還沒有足夠的支持工具。大多數(shù)商業(yè)化的UML建模工具并沒有普遍提供對(duì)OCL語言的支持,只有一些研究人員對(duì)OCL的語義和支持工具進(jìn)行過研究。其相應(yīng)工作介紹如下:

      1)OCL編輯工具目前主流的UML編輯工具如ArgoUML和MagicDraw等都提供了對(duì)OCL語言的支持,并提供了XMI格式的輸出。

      2)詞法分析和類型檢查工具 首先出現(xiàn)的OCL支持工具是IBM公司出品的OCL詞法分析器,它是用Java和JavaCC詞法產(chǎn)生器編寫的。該分析器的功能包括語法分析和部分的類型檢查。后來出現(xiàn)的OCL詞法分析器偶Klasse Objecten公司出品的OCL詞法分析器,但它只能提供詞法分析。ArgoUML工具中集成了Dresden提供的OCL編譯器,它能提供完整的OCL語法和類型檢查。在MagicDraw工具中也可以對(duì)OCL語法進(jìn)行檢查。

      3)其他OCL語言支持工具Bremen大學(xué)開發(fā)了USE(UML-based Specification Environment)系統(tǒng)工具。USE是一種用于信息系統(tǒng)規(guī)格說明的驗(yàn)證確認(rèn)工具。USE能對(duì)系統(tǒng)的模型進(jìn)行動(dòng)畫并規(guī)格說明和用OCL語言表達(dá)的非形式需求進(jìn)行確認(rèn),在對(duì)系統(tǒng)模型進(jìn)行動(dòng)畫的過程中用戶可以創(chuàng)建并操縱系統(tǒng)狀態(tài)。

      B因?yàn)橛泄ぞ咧С侄@得相當(dāng)大的優(yōu)勢(shì),像B-Toolkit這種高質(zhì)量的商業(yè)軟件有一套完整的開發(fā)過程的支持用來完成如下一些任務(wù):類型檢測(cè)、動(dòng)畫、證明法則生成、交互或自動(dòng)的證明支持、代碼翻譯、文檔以及帶有配置管理功能的綜合開發(fā)環(huán)境支持。

      2.7 生命周期的覆蓋

      B支持從規(guī)格說明描述到詳細(xì)設(shè)計(jì)的軟件開發(fā)全過程,而OCL語言只能對(duì)系統(tǒng)模型的約束進(jìn)行說明,不能支持從規(guī)格說明的描述到詳細(xì)設(shè)計(jì)的軟件開發(fā)全過程。

      3 實(shí)例分析

      為了更好地展示兩種語言的特性,舉一個(gè)班級(jí)人數(shù)的實(shí)例,例如對(duì)于一個(gè)班級(jí)而言,只有注冊(cè)人數(shù)大于25人方可開課,并且由于教室大小的約束,人數(shù)又不能超過80人。我們來分別討論兩種形式化語言的規(guī)格說明:

      3.1OCL規(guī)格說明

      首先考慮如何對(duì)類的不變式進(jìn)行說明使用可以對(duì)班級(jí)人數(shù)的屬性加上如下的約束:

      班級(jí)的學(xué)生人數(shù)必須大于25人并且小于80人。

      Context Class

      Inv:self.numberofstudents>=25 and self.numberofstudents<=80

      每個(gè)學(xué)生必須經(jīng)注冊(cè)后方能聽課

      Context Student

      Inv:self.isRegistered=true

      對(duì)于操作而言,可以通過前置條件與后置條件加以輔助說明

      Context Class::register(p:student)

      Pre registerPre:class->excludes(p)

      Post registerPost:class->includes(p)

      上述的規(guī)格說明表示當(dāng)學(xué)生完成注冊(cè)以后學(xué)生成為班級(jí)的成員。

      3.2 B規(guī)格說明

      MACHINE student

      SETS STUDENT

      VARIABLES s, number

      INVARIANT

      s student∧

      number∈NAT

      OPERATIONS

      s ← register(st) =

      PRE

      student≠STUDENT∧ n∈NAT

      THEN

      ANY st WHEREst∈STUDENT - student

      THEN

      studnet:=student∪{st}‖

      s:=st

      END

      4 結(jié)束語

      通過對(duì)B語言和OCL語言的比較,可以知道不同形式規(guī)格說明語言有各自的特點(diǎn)及適用范圍。OCL語言是一種文本性規(guī)格說明語言,但是沒有傳統(tǒng)形式語言的復(fù)雜性。作為UML標(biāo)準(zhǔn)的一部分,OCL被建模者用來說明UML的約束,如不變式、操作的前置、后置條件、狀態(tài)門限和屬性派生規(guī)則等,這大大增加了UML模型描述的精確性。然而,要使OCL表達(dá)式的解釋沒有二義性,必須給出OCL表達(dá)式語義的精確定義。OCL表達(dá)式語義描述有兩種可替換定義方法,使用UML元模型的標(biāo)準(zhǔn)描述形式和使用形式化的非標(biāo)準(zhǔn)描述形。B方法中的精化和實(shí)現(xiàn)是很多形式化開發(fā)方法所沒有的,它在規(guī)格說明的基礎(chǔ)上可直接生成可執(zhí)行系統(tǒng),并在整個(gè)開發(fā)過程中通過正確性驗(yàn)證,保證了軟件產(chǎn)品的高可靠性、可移植性和可維護(hù)性,從而可有效提高軟件的生產(chǎn)率。

      參考文獻(xiàn):

      [1] 鄒盛榮,鄭國(guó)梁. B語言和方法與Z、VDM的比較[J].計(jì)算機(jī)科學(xué),2002(10).

      [2] 肖健宇,張德運(yùn). OCL數(shù)據(jù)類型到B形式化規(guī)約的轉(zhuǎn)換[J]. 計(jì)算機(jī)工程,2006(3):61-62.

      [3] 陳怡海,繆淮扣. OCL與Object-Z作為UML約束語言的分析比較[J]. 計(jì)算機(jī)科學(xué),2004,31(12):182-183.

      猜你喜歡
      比較
      中外建筑工程質(zhì)量管理體制比較
      從小說到電影
      吳昌碩和黃牧甫篆刻藝術(shù)比較
      我國(guó)會(huì)計(jì)制度與國(guó)際會(huì)計(jì)制度比較研究
      西方文藝復(fù)興時(shí)期與中國(guó)宋元時(shí)期繪畫題材的思維方式比較
      電影《千年之戀·源氏物語》與《源氏物語千年之謎》的比較
      同曲異調(diào)共流芳
      托福聽力指南:如何搞定“比較”和“遞進(jìn)”結(jié)構(gòu)的講座題
      怀化市| 西藏| 额尔古纳市| 松原市| 南漳县| 庆元县| 潼南县| 苏尼特左旗| 浪卡子县| 太谷县| 彝良县| 中方县| 屏南县| 凉城县| 南安市| 湖北省| 垣曲县| 吉安市| 织金县| 池州市| 偃师市| 苍溪县| 香格里拉县| 巴林左旗| 桂林市| 鄂托克前旗| 会同县| 南丰县| 阿拉善右旗| 象山县| 景德镇市| 江永县| 江山市| 江北区| 包头市| 佳木斯市| 搜索| 长寿区| 绿春县| 阿拉尔市| 枣阳市|