日韩欧美视频一区-日韩欧美三区-日韩欧美群交P内射捆绑-日韩欧美精品有码在线播放免费-成人免费一区二区无码视频-成人免费一级毛片在线播放视频

SCI期刊 | 網(wǎng)站地圖 周一至周日 8:00-22:30
你的位置:首頁(yè) >  計(jì)算機(jī) ? 正文

基于合約的程序分析

2021-4-9 | 計(jì)算機(jī)

 

0引言

 

伴隨著軟件行業(yè)的飛速發(fā)展,軟件項(xiàng)目越來(lái)越龐大,其開發(fā)團(tuán)隊(duì)需要越來(lái)越多的人參與其中。軟件行業(yè)人員的高度流動(dòng)性以及國(guó)內(nèi)軟件項(xiàng)目管理的混亂,造成了代碼和文檔的不一致,使得程序的可重用性、可維護(hù)性比較差,軟件維護(hù)費(fèi)用開銷太大。在這種情況下急需設(shè)計(jì)出一些好的程序分析工具進(jìn)行程序剖析,例如自動(dòng)給源程序生成注釋或規(guī)格說(shuō)明來(lái)幫助人們理解程序,并保持基線管理的一致性[1]。合約式設(shè)計(jì)的思想根植于正規(guī)的(也就是數(shù)學(xué)形式的)軟件構(gòu)造分析方法。合約是由斷言所組成的,這些條件被用來(lái)描述前置條件、后置條件和不變量。一般情況下,軟件系統(tǒng)有4種合約類型。它們分別是語(yǔ)法合約、數(shù)據(jù)行為合約、控制合約和服務(wù)質(zhì)量合約。語(yǔ)法合約是控制性合約,而與語(yǔ)法合約不同的是,其他3種高層合約都不是強(qiáng)制性的,即使沒(méi)有數(shù)據(jù)行為合約、控制行為合約或服務(wù)質(zhì)量合約,軟件系統(tǒng)也能夠運(yùn)行。但是不能保證良性運(yùn)行。為了避免程序漏洞帶來(lái)的危害,提高程序的質(zhì)量,人們已進(jìn)行了許多研究[2]。其中,基于合約的程序設(shè)計(jì)[3](DesignByContract,DBC)就是一種十分重要且得到廣泛應(yīng)用的技術(shù)。從而,基于合約的程序動(dòng)態(tài)分析也成為軟件質(zhì)量保證的一個(gè)重要途徑。

 

1合約的概念

 

從程序員的角度上講,程序就是為了解決某一實(shí)際問(wèn)題的,用某種語(yǔ)言表示的一個(gè)有限指令序列;從邏輯的角度上理解,具體的一種計(jì)算機(jī)語(yǔ)言,就是符號(hào)邏輯中的一階語(yǔ)言,計(jì)算機(jī)語(yǔ)言中的語(yǔ)法規(guī)則就是一階語(yǔ)言中Lt的具體體現(xiàn);語(yǔ)句就是一階語(yǔ)言中的公式,程序就是定義于此一階語(yǔ)言的一個(gè)結(jié)構(gòu)[4]。規(guī)范是軟件所需要滿足的需求和目的的體現(xiàn),它是一種易于理解的精確而形式的陳述。以便恰當(dāng)?shù)伢w現(xiàn)需求。規(guī)范由2部分組成,第一,性質(zhì)規(guī)范是屬性的形式陳述。一般屬性涉及安全性、可靠性、健全性和有效性,它定義了程序?qū)λ锌赡艿膱?zhí)行必須具備的特征。第二,功能規(guī)范是功能需求的形式陳述。功能需求描述程序的需求行為。一般地,程序規(guī)范描述程序要達(dá)到“什么”,而不描述“如何”達(dá)到。也就是說(shuō)規(guī)范以結(jié)果的形式描述行為。合約實(shí)際上就是一個(gè)程序必須滿足的規(guī)范,主要是由斷言組成的一個(gè)程序行為的約束集合,并對(duì)這些約束條件進(jìn)行核查。簡(jiǎn)化的講,合約就是“規(guī)范和核查”。所謂斷言[3]就是必須為真的假設(shè),只有這些假設(shè)為真,程序才能做到正確無(wú)誤,從而確保高質(zhì)量軟件系統(tǒng)的出現(xiàn)。合約式設(shè)計(jì)的主要斷言包括前置條件(Pre-condi-tion)、后置條件(Post-condition)和程序不變量(Invari-ant)[2-4]。前置條件(Pre-condition)是針對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的方法,它規(guī)定了在調(diào)用該方法之前必須為真的條件。后置條件(Post-condition)主要是針對(duì)方法而言的,它規(guī)定了方法順利執(zhí)行完畢之后必須滿足的條件。程序不變量(ProgramInvariant)也可以叫作程序不變式,是指在程序的某個(gè)位置(例如Java的類中某方法的入口點(diǎn)或出口點(diǎn))可見(jiàn)的,所有變?cè)g用公式的形式描繪出來(lái)的關(guān)系(包括變?cè)旧淼淖兓闆r)。它是針對(duì)整個(gè)類而言的,規(guī)定了該類任何實(shí)例用任何方法時(shí)都必須為真的條件。舉個(gè)簡(jiǎn)單的例子:對(duì)某個(gè)類的方法m入口點(diǎn)的分析得出結(jié)論:x=2*y+3*z,也就是說(shuō)不管使用什么樣的測(cè)試程序?qū)嵗@個(gè)類,變?cè)诜椒ǎ淼娜肟邳c(diǎn),始終滿足x=2*y+3*z。那么,表達(dá)式x=2*y+3*z對(duì)于該類來(lái)講就是一個(gè)程序不變量[5]。

 

2合約式程序設(shè)計(jì)

 

合約式設(shè)計(jì)(DesignByContract,DBC)的思想是由合約式設(shè)計(jì)之父BertrandMeyer提出的。合約式設(shè)計(jì)本意是比較簡(jiǎn)單的,就是在設(shè)計(jì)和編碼階段向面向?qū)ο蟪绦蛑屑尤霐嘌浴嘌詰?yīng)使用某種編程語(yǔ)言嵌入到程序中(而不是僅僅通過(guò)文檔加以聲明),只有這樣對(duì)于程序員來(lái)講才有意義,更好地支持測(cè)試和調(diào)試工作[4]。合約式設(shè)計(jì),為編程者或者測(cè)試者提供了一個(gè)不同于傳統(tǒng)模式的觀測(cè)程序的視角維度,并且是一個(gè)特別重要的維度。但是,不是說(shuō)原來(lái)的設(shè)計(jì)維度不要了,而是提醒設(shè)計(jì)者,還存在一個(gè)維度即合約的維度。合約式設(shè)計(jì)的思想與當(dāng)前主流設(shè)計(jì)思想是相輔相成的。合約式設(shè)計(jì)對(duì)于軟件開發(fā)來(lái)講意義是重大的,主要體現(xiàn)在下面3個(gè)方面。

 

2.1合約式設(shè)計(jì)有助于提高軟件質(zhì)量

 

合約式設(shè)計(jì)對(duì)編程過(guò)程中出現(xiàn)的“錯(cuò)誤”進(jìn)行了明確的處理,這種清晰的思路,對(duì)于提高產(chǎn)品的可靠性和正確性,作用是巨大的。合約本身是對(duì)于程序前提和功能的一種規(guī)范,而在編寫這些規(guī)范的時(shí)候,程序員看待程序的角度是不一樣的。特別是當(dāng)軟件規(guī)模達(dá)到一定程度,復(fù)雜到一定程度的時(shí)候,已經(jīng)沒(méi)有任何方法來(lái)確保軟件完全正確。但是如果開發(fā)者能夠以一個(gè)不同的角度來(lái)審視自己的程序,那么相當(dāng)于用兩道不同的工序來(lái)確保產(chǎn)品質(zhì)量,可靠性大幅度提高。

 

2.2合約式設(shè)計(jì)有助于得到優(yōu)秀的設(shè)計(jì)

 

在合約式設(shè)計(jì)的過(guò)程中,可以很清晰地劃分軟件模塊的權(quán)利和義務(wù),這個(gè)劃分過(guò)程本身對(duì)于系統(tǒng)整體設(shè)計(jì)的幫助是特別大的。從而進(jìn)一步可以對(duì)軟件模塊接口的設(shè)計(jì)及理解更加透徹,所以能夠使程序更加趨于完美。

 

2.3合約式設(shè)計(jì)有助于提高文檔與代碼的協(xié)同性

 

作為一個(gè)程序設(shè)計(jì)者,面臨的主要矛盾是要?jiǎng)?chuàng)造出“好”的設(shè)計(jì)。一個(gè)設(shè)計(jì)只有滿足簡(jiǎn)單、清晰、強(qiáng)壯、靈活、高效才能算是“好”的設(shè)計(jì)。所謂簡(jiǎn)單,就是避免無(wú)謂的復(fù)雜化;清晰,就是要讓設(shè)計(jì)緊湊明確,容易理解;強(qiáng)壯,就是設(shè)計(jì)質(zhì)量要高,錯(cuò)誤少,易實(shí)現(xiàn),便于測(cè)試;靈活,就是讓設(shè)計(jì)方案保持彈性,隨時(shí)變化,應(yīng)對(duì)需求變更;高效,就是要避免無(wú)謂的效率損失,盡可能提高系統(tǒng)性能。上述幾點(diǎn),合約式設(shè)計(jì)都能滿足,從而使文檔與代碼的協(xié)同性得到充分提高[6]。

 

3基于合約的程序動(dòng)態(tài)分析

Top
主站蜘蛛池模板: 国产成人无码区免费内射一片色欲 | 伊人热 | 日本美女论坛 | 亚洲日本一区二区三区在线不卡 | 狠狠色狠狠色综合系列 | 爆乳啪啪无码成人二区亚洲欧美 | 国产成人免费片在线视频观看 | 亚洲字幕在线观看 | 亚洲成年人在线观看 | 丰满老熟好大bbbxxx | 囯产精品久久久久久久久蜜桃 | 国产主播福利一区二区 | 麻豆啊传媒app黄版破解免费 | 成年人视频在线观看免费 | 快播性爱电影 | 中文字幕日本一区 | qvod影院| 国产婷婷一区二区在线观看 | 在线观看视频国产 | 国产人妻XXXX精品HD电影 | 两个奶被男人揉了一个晚上 | 91国内精品久久久久免费影院 | 成人性生交大片免费看金瓶七仙女 | 国产精品伦一区二区三级视频 | 18av 在线 | 久久天堂成人影院 | 日韩免费精品视频 | 国产在线观看成人 | 灰原哀被啪漫画禁漫 | 久久99精品国产免费观看 | 99视频在线免费看 | 国内精品久久人妻无码HD浪潮 | 国产av久久免费观看 | 亚洲精品视频免费 | 欧美黑白配性xxxxx | 国产Av影片麻豆精品传媒 | 免费观看桶机十分钟 | 苍井空a 集在线观看网站 | 少妇无套内谢久久久久 | 美女用手扒开粉嫩的屁股 | 国产又粗又黄又爽的大片 |