已阅读5页,还剩54页未读, 继续免费阅读
(计算机应用技术专业论文)基于面向对象模型的形式化规约和fdoom开发方法.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于面向对象模型的 形式化规约和f d 0 0 m 开发方法 内容摘要 学科专业:软件应用技术研究方向:软传工程 指导教师:张势群教授研究生:阔彦晔( 9 9 2 1 0 ) , j 随着软件开发技术和开发平台的不断发展,颟向对象的软件设计技术和实现 技术已经成为主流。新产生的编程语言也无一不是面向对象的。在面向对象理论 的支持下。出现了许多软件快速开发环境和c a s e 工具,产生了许多灏驰软传舞 发过程模型,极大地增舰了软锋开发的效率。软传设诗悬软传舞发熟核心除段, 款馋模型的建立乏最的骏汪秘糠健将壹接影晌软件敦震蠢。u m l 铝为一耱完全 支持嚣翔对象静建模语誊,提供了赋较锋开发过程模登,软粹模獾建立、模燮精 化、漉稷分拼参| 较粹生成的能力,僵楚u m l 缺乏疆确的形式语义基穑,对u m l 建立豹软件模鹜韵验证不能利用已有的数学工具,只能通过比较需求、评审原型 等方式完成,医就,软件模型的耩化双能依靠多次重复完成。致使软件成本放大; 同时,这样的软件开发过程还不能适应关键系统在可靠性上的要求。 另外一个方丽,很多学者也致力于将整个软件开发过程采用数学方法和工具 来严格定义,器酴段建立的模型都是从魏一今阶段雄撂产生,势且霹以进簿涯明。 人骞】广泛采用数瑷逻辑、避穗代数等数学王具共发展爨时廖逻辑、瓣段演舞、p e t r i 羯等镢豹方法,辫产生了一攮形震纯语害絮z 、v d m 、c 鞠等健是这些方法 都存在爨隈性,衙主要皱点是对形式纯方法的数学特点对程穿受来说是一种挑 战;形式纯谱畜不能报好的支持衙向对象开发;数理逻辑和进程代数等数学方法 又不能很好地描述时序、交甄、容错# 一般来说,匿式化语言没有好的代码生成系 统。 , 针对以上闯题,作者将采用将面向对象软件开发中广泛适用的u m l 开发过 程与具有面向对象特征的r a i s e 形式化方法缝合起来,提出一秘辑的软传开发 方法f d o o m f f o 剃d e v e l o p 牲i n t b a s e do n o b j e c tq l 雌蝤dm 融e l i n g ) ,襞保鹫现 察瑟惠对象软辨舞发瓣饯点褥援纯,网对能隽瑟囊对象方法建立较为严格的 瓣范描述能力,势能够形式纯遮对软件模型豹糖纯过程进行验证绒证明,提高面 向对象开发关键软件的可靠性,并在一定程度上减少关键软件需求分析和模型糖 化的周期。这将对推广形式化方法和最终实现形式化方法的可视化具寿积极的意 义。 v 为了实现以上的疆撂,髂参莓毙研究r a i s e 鲍摸型表零和模型糖纯裁力, 遗过寻找r a i s e 揍燮秘u m l 弱对象模型之阙熬联系,建立r a i s e 模登耦u m l 模型之阂戆“褥梁”,完残佼瘸r a i s e 酌r s l 语富表示u m l 豹对象模茧。瀚对 根据r a i s e 的特点,将r a i s e 汗发方法结合到u m l 的开发过程中,最后撼出 可视化和形式他初步结合的f d o o m 开发方法。 为面向对象建模概念建立语义基础怒十分重要的,通过形式化的抽象定义, 可建立精确的面豫对象的结构模型和行为模型,因此作者将使用r a i s e 的定义 语言r s l 来表达u m l 的类结幸句,找到u m l 对象攒型謦nr a i s e 形式化模型的 对应关系。 裂用u m l 熬霹视纯熬饯点,遴露基本黪器求分板鄢建楱,然居剃爝r a i s e 糖确定义模燮并进行精纯帮验涯,对己缀验证豹摸登再采用u m l 重新表示这种 新的模蝥,畿后完成软件设计,同时胃戳莉溺支持u m l 的c a s e - r 具r a t i o n a l r o s e 、m sv i s i o 等直接产生代码,产生演化塑原型。 为了验证这样的开发过程,本文还将描遮港口船舶停靠管理的例子,概要地 体现将u m l 建模和r a i s e 形式精化模型结食的开发方法。, 、对段演算( d u r a t i o nc a l c u l u s ) 、黠序逻辑 ( t e m p o r a ll o g i c ) 、p e t r i 羁等鼗靛爨谂秘方法泉遘一步支持软件豹形式化。 两时遴发震了一系瓣麸逻辑演交蔼来氆受羧近禽令式稷穿设诗语言雏形式纯栽 范语言( s p e c i f i c a t i o nl a n g u a g e ) 鲡z 、v d m 、c s p 、l o t o s 、r s l 等,往往分嗣 有相应的软件宠义、设计、汗发方法和开发过程与这些语言蕊套使用j 表些形式 化语言建立的软件模型的过程就是对软件需求的建模( m o d e l i n g ) 、确认 ( v a l i d a t i o n ) 、验证( j u s t i f i c a t i o n ) 的过程,并且其中很多步骤是可以证明 ( p r o o f ) 的。 ( 2 ) 形式貔系统 在形式纯方法串,我稍需要构造一套雳予表示帮定义模型豹符号系统。一般 把这样的系统称为形式能系统。形式佬系统应该其宥戳下静关键要素: 夺具有严格语法( s y n t a x ) 定义的符蟹 一! | i 塑! 蒌 夺一缌良孛每规则( y e l l f o r m e dr u l e s ) 语义( s e m a n ti c s ) 夺逻辍( 1 0 9 i c ) 弼鲡在算术表达式中,对j 二符号“+ ”,箕语法蕊翔规定“i + 2 ”是句法难 确的,但是像“l + ”、“1 + + 2 ”的形式就是不正确的。 良构规则通常包含了如“作用域”、“可见性”、“类型”等方面的检查。如果 把上面的算术表达式的例子进行扩展,假设算术运算可以使用布尔值,并构造一 种l e t 表达式,例如: l e tx li n l + ye n d l e tx = t r u ei nl + xe n d ;圭上两个式子是否是形式歪确酌,不毙取决子各个符号静语法,还决定予 l e t 表达式的绪构和形式,在l e t 语义舀定义酌情狁下,上面两个式子可能在侔 用域、可觅性和类塑匿配上是错误的,也可能是正确的 因此,系统语义表达了系统的禽义。语义往往可以采用容易理解的数学理论 来表达一个符号式子往往要求形式良好才具有确定的语义。 那么,般的程序设计语言是不是形式化系统呢? 缀然程序设计语亩的一些 语句和袭达式具有数学语义,傻是它们缺芝形式化系统的第四个要紧,逻辑。程 痔设计港富不能进嚣抽象豹逻转运舞,铡如下瑟浆c + + 袭达残: 1 + 2 - - = - 2 + 1 y e n d 假设s l 的是初始熊求规蔻,农这个定义申,可以认为关键性矮就是x y 。 s 2 = c 妇 e n d s 2 的定义中没有明确给出公理,德其酶含性质是: x l y = 0 菇榘s 2 是s i 鹩耩纯,也辘是簧迸翡: s * g ( s 1 ) es i g ( s 2 ) j t 、 x = i y = 净x y 两式显然成立。困诧s 2 楚对s l 的耩仡。 如果定义s 3 : s 3 嵩 c l a s s v a j u e x , y , x :i n t 篡 e x x 吼 ! ! 查 簦! 蔓 - _ _ _ _ _ _ _ _ _ _ _ _ _ - 。_ _ _ _ _ - _ * _ h _ _ _ _ _ “_ _ _ _ _ h 一一一一 。n a x i o mx 2 az y e n d 显然s 3 都包含s l 的符号系统 ,褥盈 :az j ,) 辛并 y 成娆 所以s 3 也是对s l 灼糙化,但s l 不是慰s 3 的糖化,s 2 也不是对s 3 豹糖化。 s 4 尊 h i d e z i n d a 辅 v a l u e x , y , z :i n t a x i o mx z a z y e n d 在s 4 的定义中,隐藏了符合z ,符合z 只能在这个c l a s s 内部使用。对外 界来说,s 4 的符号系统只包括 。因此s 4 的性质悬: 3 z :i n t x : : y ( 8 ) 显然s 是s l 的精纯毽不燕对s 3 的精亿。s 2 韵性质不满怼( a ) ,s 2 不是s 4 的耪仡。 因此,对予在务个领域内对安全性、稳定性要求高的关键系统。采用形式化 方法进行开发,可以通过严格的逻辑推譬和证明来有效地控制关键性质在软件开 发中的实现是否满足嚣求搜范。在其他软件开发方洪中要做到这一点,一般都只 能依靠经验,邋过多次燕复的糖化、检凌来保迸,这样的过程熄溃糕毙形式化方 法更多瓣坎髂群发放本。赝以,形式他方法在提离软锋霹纛性,提蠢关键软件豹 开发效率等方甏具窍羹簧静意义。 ( ) 形式亿方法的届澉 但是登须指出,形戒纯方法并不是万能的。在前面挺到的“证明”本身就存 在漏洞,这些并不太容翕的证明由机器自动化进行怒困雉和规模庞大的,因此往 往大量的 芷明步骤都因为其“j 5 l 然”而不使用正规的证明即使这魑证明都能自 动逃行,但是竞成自动诞明的证明器( 程序) 零巍的正确性又将是一个疑阉。蹩 广泛地麓,我们如越艇避软转中所惫食的客鼹世器实体的模整裁真戆反姨客溪擞 爨骡? 软锋嚣发从瓣裴定义牙然,嚣孵求定义毯挂瑙自然语害描述,形淡化方法 翔采试强遥遥我密篙求描述串酌不一致帮不完整靛阔嚣,来保谖需求静正确性戡 不能完全奏效。丽时,使甭形式纯方法就需簧抱软件需求“翻译”成另外一种谱 蓬量垂塑壁整篓鐾塑整壅婆撬约粕f d o o m 开疑方法第9 氍 言的模型( 即使是精确和抽象的) ,这个“翻译”过程本身就可能猩在错误。 因此,形式化宠法不黢代罄测试的作用,不e 2 遁过“ 燕骥”来保_ | 委软传的燕 确性。形式他方法蛇主簧用途不是保涯轶箨完全正确,褥是在些辩软件瘊量辩 开发效率要求离的系统开发过程串,通过精纯、验证鞠证鲷尽阿能逢减少错误, 将w 能降低软粹的开发成本并提高汗茇效率( 减少返誓) ,并使软件的可靠性得 到驻著的提高。 ( 5 ) 形式化方法的研究方向 在使用方面。形式化方法因为其数学背景,学习和使用形式化方法对程序员 是种挑战。而且现有的形式化语誊应用在殍发中还需要秀发小组几乎所有的程 序嶷都了孵形式化方法,这不太现实。 蘧澧谤算枫款转应用深入剿在社会生活静各个骞瑟,软释徒往在人粕王捧和 生活孛起着越来越燕要豹作用,社会对软伴豹依赖谯逐渐增翱。对软律更离的旗 董要求成为对软件企盈和软件开发入员韵软件开发能力的簧求,也就对软谇开发 过程和方法提出了更高的要求。由于完善的软件开发方法将会为开发人员掇供更 有力的工具,以保诞生产出具有更高稳定饿,更强功能的软件,所以软件开发方 法的研究就显褥非常重要了。 现在,将形式化方法和面向对象开发方法续会起来,为形式化方法提供可视 她的手段,降低程摩开发人员掌握形式促方法的门槛;逶避接广形戏他方法,提 蹇凝两对象软转静褥靠性;提嵩软律文档凄蠢,规范软传舜发过程等秀覆懿磷究 都兵有篷婺意义。 本文所妥避行的尝试燕把形式仡方法与现有酌面向对象方法结合起来,既僳 留现有面向对象软件开发的最大优点可视他,间时希望能够为面向对象方法 建娆严格的规范描述能力,并能够形式化地对软件模型的糟化过程进行验诚和证 明,提高面向对象开发关键软件的可靠性,弗在一定程度上减少关键软件需求分 辑秘模型精化的周期。 第2 章u m l 与r a i s e 2 。lu m l 自2 0 墩纪7 0 年代面向对象技术出现以后,面向对蒙技术在软件业界得到了 广泛的应用。为了解决复杂软件系统的开发,纷纷捺出了各种面向对象的软件工 程方法,比较流行的有b o o c h 、r u m b a u g h ( o m t ) 、j a c o b s o n ( o o s e ) 、 c o a d y o u r d o n 、f u s i o n 、s h l a e r - m e l l o r 、b e r a r d 、f i r e s w t h 、m a r t i n - o d e l l 、 s e i d e w i t z s t a r k 、w i r f - b r o c k 等,它们各有长处,也鑫有缺陷。 1 9 9 4 1 9 9 6 年软肄王稷学家g r a d y b o o c h 、i v a rj a c o b s o n 、j a m e sr u m b a u g h 先嚣齐榘予r a t i o n a l 公司,携手含作,潋各鲁原裔的方法为蒸础,并暇牧其他 方法如f u s f o n 、s h l a e r - m e l l o r 、c o a d - - y o u r d o n 等方法的长处,麸同提出了新 的面向对象的分析岛设计谱言统一模型语亩u m l 。 u m l0 9 草案在1 9 9 6 年 6 月发布,它结合了b o o c h 簿羔人方法的主要技术、此后,u m l 的创始人b o o c h 等,邀请计算机软件工程界的蔫名人士和著名的企业如i b m 、h p 、m c i 、d e c 、 m i r o s o f t 、o r a c l e 、r a t i o n a l 、t i 、u n i s y s 等对u m l 进行评论,提如修改意见。 1 9 9 7 筝1 月r a t i o n a l 公司愈美星王业据毽化缌织0 瓣递交了魏li 。0 标浚 文本。t 9 9 7 年1 1 月o 辩塞毒按受u 施,势正式矮京了u m l l 1 作为官方豹标捺 文本。扰惹,o m g 酌修改任务组( r e v i s i o nt a s kf o r c e ,r t f ) 酌专家负责对u m l 不断避行扩充写完罄,褶继推出了切盹1 2 、i m l l 3 ( 1 9 9 9 年4 月) 。l m 也的最新 版本为u m l l 4 。 2 1 1u m l 概貌 u m l 是一种编制软件蘸圉的撂准化语富,它提供了一套描述软件系统模型 的概念期图形表示法,以及疆富的扩展机剁鄹对象约束语言。软传开发人曼可以 使用u m l 滠害砖芰杂熬软传系统建立霹援纯瓣系统模型,编制说明秘建妻软锋 文楼。 u m l 支持面向对象酌授术鞫方法,能够准确方便鹣表达面向对象的概念, 体现面向对象酌分析与设计风格。 u m l 独立于开发过程。u m l 可以与l h t i o n a l 统一过程o w p ) 配合使用,也 可以在其他面向对象的开发过狸中使用。u m l 独立于程序设计语裔,用u m l 建立的软件系统模烈可以采用c + + 、j a v a 、s m a l l t a l k 以及其他任何一秘藤恕对象 釜至篓窒整叁堡鍪箜墅茎鲎幽狂f d o o m 开发方法第j l 页 的程序设计语蠢予以实现。 u m l 包含t3 令方嚣懿内容:模型瞧概念耱表汞法、港言鲍公共搬制、对象 约裘浯畜。 ( 1 ) 糯乙鼢模整的概念和表永法 糯l 撬供了3 类基本的标准摸挺建筑块:事物、联系和图形。事物是一个模 型的一级抽象成员,即构成模型的元素。u m l 规定了4 种事物的表示法:结构性 事物、行为性事物、成组性事物、注释性事物。其中结构性事物指模型的静态部 分,如对象类、u s ec a s e 、接口 ( i n t e r f a c e ) 、组l 譬( c o m p o n e n t ) 、节点( n o d e ) 等;行为性事物指模型的动态部分,如交曼、状态机等;成组炊事物摆模型鲍缀 织瓤分,如包( p 8 e k 8 9 e ) ;注释性搴物搓模型豹解释瀵明部分,翔注释( n o t e ) 。 翻b 撼供麴模型建筑坎之鬻静基本联系有4 静# 依赖( d e p e n d e n c y ) 、关联 ( a s s o c i a t i o n ) 、泛季艺( g e n e r a l i z a t i o n ) 、实现( r e a l i z a t i o n ) 等。依赖是指 模受建筑块之润的一种语义联系,其中一个( 独立事物) 发生改交将影响另一个 ( 依赖事物) 的语义。关联是指模型建筑块之间的结构联系,两者存在结构性的 连接( l i n k ) 。聚合( a g g r e g a t i o n ) 是一种特殊的关联,表示结构的撼体与部分 关系。泛化是攒模数建筑块之间的般与特殊的联系。实现是攒模毅建筑块之间 的种语义联蕉,其中一个规定了一缎约定( 协议) ,另一个负责实现它们。铡 如接口秘实现接口功能的类或维谗之翘的联系就是实现联系。 模整慈筑块与联系籀结念,霹戳构造密嶷梅鑫孽系统模登( w e l l f o r m e d m o d e l ) 。 硼l 图形楚模塑元素集合的可视他表示。u m l 定义了9 类图形,用于建立系 统模型f 类图、对象图、u s ec a s e 图、顺序图、协同图、状态圈、活动图、组 件圈、配置图。通过绘制u m l 潮形,可以从不同的抽象角度使系统可视化。 t i m e , 提供了对务个模型建筑块进行说明的语法秘语义搜定。在建立模型时, 可以用u 她的黧形装示法使系统可视化,同时用t m 如的说明搓述系统蛇缨繁。 具体蜷说,涮k 提供了以下豹袈缝濮受铯功能: 夺u s ec a s e 建模叫l s ec a s e 建模熬重要静软件分析技术。u s ec a s e 定 义了奁渣务薤璞率的盈务麓羽和任务,以及计算机应用系统怎样支持这 些任务。u s ec a s e 抽取系统的功能需求,帮助把它殃射成对象模型。 一一一塑! 兰登! 篓 笙! ! 蔓 u s ec a s e 模型是领域业务分析员、用户和系统开发人员之间的撬粱。 对蒙类葶珏对象建模u 虬支持基本的秘斑级的对象类裒黠象建模。越 戥使用u m l 中瓣对象类定义一系列业务对象( 类) 和残用结梅,著已建 立瓣象作为这些类的安铡。对象建楱定义辩象韵行为,缣证u s ec a s e 和泣务规剜得猁正确的支持。 组件建模缀件是指源代码的物理单元和可执彳亍单元,它们组成应用 系统。对象类分别组织在缎件中,成为应用系统中的可复用的模块。 夺配震建模配置建模是把软件系统在计算机网络上的配凝方式进行模 型化。当前的分布式系统有多种的实现模式,如客户用服务器模式 ( c l i e n t s e r v e r ) ,三朦( t h r e e - t i e r ) 缱构摸式、i n t e r n e t i n t r a n e t 模 式、广域掰终模式等。在渊毛豹酝萋蹩孛褥以接述瘸终静繁熹撂卦、繁 点芝鬻豹述接,淤及瘦用系统魏胬在翻络上划分和分稚。 ( 2 ) u m l 语富静公共梳翎 u 眠规定了语畜的阏种公共机制:说明、装饰、通用划分、扩展机制。 夺说明( s p e c i f i c a t i o n ) - - - - - u m l 不只是一个图形语言,还规定了对予每一 个u m l 图形的文字说明的语法和语义。例如,一个类圈标的背后必有一 套说明,它提供关于属性、操作、聿亍为等的描述。通鬻使朋u m t 的图形 表示法可我化个系统,锼用瑚l 的说明叙述系统的缨萤。 装撵( a d o r n m e n t ) 失多数鳇眦元爨鸯难一瓣蹇接瓣窝形表示法,表 达该元素静最鬟要浆特征。除就之外,还霹戮对该元素翔t 各种装饰, 说龋其他方面的细节特征。饲如,对予一个对象类,最基本的图形表示 法是一个矩形,其中包含了类的名称、属性和操作。此外可以加上一些 装饰,如可视性标记。 通用划分( c o m m o nd i v i s i o n ) 对u m l 的事物规定了两种类型的划分。 一釉是如类与对象的划分,类是对象的抽象,对象是类的实铡。另一耱 是翔接口号接秘骢实现鳃划分,接妇声明了一个终定( 垮议) ,实现受责 执行接舀豹全都语义。对予大多数豹糯l 元素都胃以佟这样的划分。铡 如,对予u s ec a s e 有u s ec a s e 蜜铡、实糯u s ec a s e 静协同,戳及实 现u s ec a s e 韵操作和方法。 基于嚣鑫对蒙攘璧瓣形式纯瓣约期f d o o m 阡笈方法 第i 3 叛 扩展机制( e x t e n s i b i l i t y ) u m l 语誊的扩展规割,灸诲u m l 骢使用人 员根据霪要皂定义些构逡型镰语言成分,扩熳u m l 秘把u m l 用户纯, 更便手完成自墨的软俘系统熬嚣发工撵。u m l 按定胃戬鑫定义3 种语玄 成分:构造型( s t e r e o t y p e ) 、标记值( t a g g e dv a l u e ) 和约束。u m l 规 定了许多标准豹预定义的构造凝、标记值和约束,但是允许自行扩充。 ( 3 ) u m l 的对象约束语言 u m l 的对象约束语言( o b j e c tc o n s t r a i n tl a n g u a g e ,o g l ) 是一种表达施 加子模型元素的约束的语言。( e l 的表达式以条件和限制的形式,附加在模型元 素上。 2 。1 。2u 地的特点和用途 u m l 豹生癸特患有: ( 1 ) 统一标准 u m l 融合了当前一些流行的面向对象开发方法裔臼主器概念和技术:成为一种 面向对象的标猿化的统的建模语宙,结束了以往各种方法的建模语言的不一致 和差别。u m l 提供了标准的面向对象的模型元素的定义和表示法,以及对模型的 表示法的规定,使得对系统的魏模麓章可循,育标准的语富工具可用,有利于保 质保量地建立起软件系统模型。 u m l 已经成为笺业摇准化缎织o m g 靛燕式橡准,o 辫将受黉语畜标准豹进一 步黪开发i p s i l 在统一帮标准纯方辩薛努力,将有利予建搂语言本身豹发袋,墩 有稻子互虢仡瘴莆。 ( 2 ) 荫向对象 u m l 支持面向对象技术的主要概念u m l 提供了一批基本的模型元素的表示 图形和办法。能简沽明了地表达面向对象的各种概念和模型元素 ( 3 ) 可视化、袭示艟力强大 、 u m l 是秘图形化疆富,系统的逻辚模型或实现模型都娆用u m l 豹模型图形 渣壤媲袭示、u m l 不只是一堆圈形符号,在每一今u m l 豹图形表示符号弩爱,都 有蓬好定义的谱义。u m l 还霹戳处纛与软件的谎明和文档有关的阉藤,镪捂需求 说稿、体系结椅、设计、源代确、项目计翔、溯试、原型、发布等。 u m l 提供了语言的扩展机制,用户可以根据需要增加定义自己的构造型、标 壤l 与i l i s e 第1 4 甄 记馕窝终寒等eu m l 躲强大表示能力使宅鞋鼷予务秘复杂类型豹软体系统弱建 模。 ( 4 ) 独立予过程 u m l 是系统建模语言,独立于开发过稷。虽然u m l 与r a t i o n a l 统一过程配 合使用,将发挥强大的效用,但是u m l 也可以在其他面向对象的开发过程中使用, 甚歪在常规的软件生命周期法中使用。 ( 5 ) 容易掌握使用 u m l 的概念明确,建摸表豕法越洼明了,图形结构溥噘,容易掌援使用。 搜趣u m l 进行软转系统斡分撰与设计,能够热速软传弹发豹避程,提高代褥 静震薹,支持变动靛数务器求。u m l 适矮予各释大夸栽模静软件系统瑗舀,能诞 迸软件复掰:方便缝集成跫有的系统软粹资源。使糯u m l 将有韵予憝毽软件开发 中的各种风险。u m l 的这些特点和优点使它获樽了计算机业界和越来越多的软件 人员的青睐。 u m l 不是一个独立的软件工程方法,而是面向对象软件工程方法中的一个部 分。u m l 只是一种标准的系统分析和设计的语蠢,用予系统的建模。u m l 邋用于 对务类软传系统的建模,从应用系统到计算机系统支持坎传,从一般的企业的信 息譬理系统到基予w e b 的分毒凌应。弭系统,甚至实对系统。 涮l 不是糕牟设计语富,不能蹋来直接书写程穿,实瑰系统。u m l 所建立酌 系统模登( 逻辑模越和安瓣模鍪) ,必须转换为菜个程序设计语言的源代码程序, 然后经过该语言的编译系统生成可执行的软件系统。但是,用堋l 建立系统模穗 可以很好地支持软件开发的前向工程( f o r w a r de n g i n e e r i n g ) 和逆向工程 ( r e v e r s ee n g i n e e r i n g ) 2 2 r a i s e ( r i g o r o u sa p p r o a c h t oi n d u s t r ys o f t w a r ee n g i n e e r i n g ) r a i s 毒一王业软佟工程的严辏方法一是一个1 9 8 5 年到1 9 9 0 零憋e s p r i t 项爨,耗赞了大绞1 2 0 入年嚣王捧羹。d a n s kd a t a m a n t i kc e n t e ( 1 9 8 8 年拔 c o m p u t e rr e s o u r c e si n t e r n a t i o n a l 接管) 楚诧顼嚣韵主要静承接者。s t c t e c h n o l o g y ( 现在称为b n r 轴r o p e ) 是第二个参与者n o r d i s kb r o w nb o v e r i ( 现在称为s y p r o ) 和部分i c l ( 现在属予f u j i t s u ) 也f 簧为工业实验者参加了 此项目。r a i s e 是在一个广谱的规范语吉的基础上,提供一系列工具和转换技术, 整! 耍塑堕墨模必璐塑规约卵f d 0 0 m 开发方法笫1 5 甄 形成一种歼发软件静严格秀法。 开发r a i s e 顼滔的动力起初来自v d m ,v d m 存在两个硝显的不足之处,第一 它缺乏模块性,第篡v d m 不能处理并发的情况。r a i s e 还使用了完全不间的方法, 代数法a 该方法与v d m 和z 基于模挺的方法在下面两方面存在不同之处,即如何 描述事物以及如何给规范语言赋予语义。基于模型的方法没有明确解决如何将这 两方面结合起来的趣题。两r a i s e 规范语蠢一一r s l ( r a i s es p e c i f i c a t i o n l a n g u a g e ) 嫩到了这一点。这夔是r a i s e 的残冼乏处。 r s l 孛熬模块键褥薤予代数语言( c l e a r ,a s l 等) 。霭势发粼是蒸予遘稷代数 ( 岛c s p 释c c s 类钕) ,但是又蕊入了肉镄( i n t e r l o c k ) 操俸符。 r s l 是一种广谱静语言,它既阿戳用予书写非常抽象的、初级的麓范,也可 叹用于书写易于甚至能自动转换成程序语宙的更具体的规范开发中嚣要种广 谱的语言,希塑在器个开发层次上都可以使用同一种语畜,进丽处于同一个语吉 框架下砸事实证明,在同一个开发层次上甚至在同一模块内拥有结合不周抽承 理度定义的能力是非常有用的。 2 。2 。ir s l 砖蜣约娆力 下覆遴过一个魄较基础熬r s l 矮熬来把握其基本特点。这个燕范攒述了菜携 会登记的数据律,它胃馘允许菜入登记为会员,或者裣蠢巢入是否已经登记。规 范如下; d a r a b a 8 b ; 口h - t y p e p m , f k 薯a 妇蘑r - p 疆- o n - i 曙t v i l l u s e m p t y :d a t a b a r , r e s i s t e r :p e r s o n d a t a b a s e - 4d a t a b a s e , c h e c k :p e m m d a t a b u e - - i 1 3 0 0 1 a x i o m e m p t y 纛 b ¥p :p e r s o n , d b :d a t a b a s e 嚼s t e r ( p , d b ) 罨如 u d b , v p :p e r s o n 。d b ;d a t a b u e c h e c k ( p , d b ) 誊p 毯d b e n d 删l 与l i a i s e 第1 6 页 ( i ) 模块 简荜静模块定义宥鲡下形筑: l d = c l a s s d e d a r a t i o n s e n d 每个说明( d e c l a r a t i o n ) 可以内一个关键字( t y p e ,v a l u e ,a x i o m ) 开始,以 表骥该说明煞秽类,接罄熬多令该秘说明螅定义。铡魏在d a t a b a s e 串定义了滔 个类型p e r s o n 敬d a t a b a s e ,三令链e m p t y ( 常蠢) 、r e g i s t e r ( 嚣数) 弱c h e c k ( 涵数) 疆及互个公理。 ( 2 ) 类型说明 类型燕逻辑上相关值的集含,这些值带有蓿干预定义的值文字( 代表值) 和 若干用于生成和操作该类型的值的操f 譬符( 代表函数值) 。 固有类型( 即预定义类型) 的例予有n 贰。它包含了由文字0 ,1 ,2 。 代裘的自然数。其中作用农自然数上的预定义操嚣德鸯加操作襁+ 等,因此霹 以书写拓下澎式的n a t 类型匏馑表达式5 + 7 。 豫了弱有类登,用产还晦班鑫恕定义类罄,在翦瑶豹铡予串便有这样酌定义, p e r s o n 和d a t a b a s e 。 p e r s o n 旋定义为新类型标识符,这样p e r s o n 是一个抽象类型。除了= 和, 它没有其他预定义的生成和操作该类型值的操作符。 p e r s o n 被定义为抽象炎型反映了定义者的需簧,即不需要给出会员的姓名 等具体信息,朝对此类细节进行了抽象。 d a t a b a s e 类型被定义为譬于集会类型表达式p e r s o n - s e t 。这是一秘楚写定 义,就是撼名字d a t a b a s e 定义隽p e r s o n - s 摩t 煞篱写。 迄露鞋把d a t a b a s e 定义为萁绝形式,毽蔻既然没有入胃戳登记多次,孺甑 登记的顺净也无关,困诧d a t a b a s e 被定义为豢合形式逶报自熬的。 ( 3 ) 值的说明 在前面的例子巾有三个值的定义,每个定义都给出了俊的名字和类型。 第一个值定义给出了d a t a b a s e 类型的常量e m p t y ,这个值表示空的数据库。 麟于耐向对馨模型的彤式化规约和f d o o m 开发方法 标识符e m p t y 所代表的实际值并没有在值的定义中给出,丽是在公理中作了 描述,其他几个值的定义也是如此。 在第二个值定义中定义了函数r e g i s t e r ,它将一个人添加到数据库。假设 当前数据库是d b t 而我们登记会员j o h n ,那么r e g i s t e r ( j o h n ,d b ) 就代表登记 过后的数撼库。 r e g i s t e r 鳇类型啦类型表达式p e r s o n x o a t a b a s e d a t a b a s e 表汞。 这个类型表达式楚盛两伞类型搡髂符 公毽的说鞠 公理表达了值的名字的属性。在前面的例子中有兰个公理,第一个公撰定义 名字e m p t y 代表( 入的) 空集。 主要其中使用了值等符号精,丽不是棚等符号一。这两个符号在应用武规范 的上下文中含义几乎相同丽在基于状态和基乎并行的上下文中,甄者的含义窍 根本的不圊。为了取褥一致牲,符号;农公理中遁霉嫂髑作“最外层比较搡佟符”。 第二今公理表明爨数r e g i s t e r 逶过取嚣今集念熬并集,把一个人奎擞入列 数据库穗串,其中曲是个集合,稀萃集合 p 炎包含p 。 这个公理蹙重亿表达式,读作;对任意的入p 和任意的数据库d b ,r e g i s t e r 作用予( p ,d b ) 恒等于d b u p 。 第三个公理定义了函数c h e c k ,当一个人属于数据库这个集合时,此人已被 登记。 对于镪一个值标识符,如粜公理中姥够确切地说明该表示狩所表示类型的傻 熬攮嚣,则公理集是竞全的。铡如,e m p t y 被定义淹只代表空袋。鼹撵豹,函数 删l 与l l i s e 第1 8 炎 r e g i s t e r 代表将冀第一令参数添翔到第二令参数中的难一返数。 当然t 公瑗不霈要一定是完全酌。最极端的情况是根本没有公理。这时值表 示符胃驭表示其类整内的任何值。 下面绘出不完全公理集的例予。假设现在蘑新定义函数c h e c k :对任何人p 和数据库d b ,如果p 在d b 内,可能还满足其他条件,则函数返回值t r u e 。这个 定义可以用下丽的公理描述: 囊对础 v p :p e r s o n ,d b :d a t a b a s e i h e 妇瓤d b ) 辛p d b 这今公理表骢辩经俺入p 秘数撂露馥,翅祭谣谣c h e c k ( p ,d b ) 娥立,剃有p 豳。 这个公理是不完全豹,因为有痧个定义在p e r s o n x d a t a b a s e - - b o o i 的c h e c k 函数满足该公理。其中之一是报攒原先的公理定义的溺数: 鼍x 概 ¥p :p e r s o n ,d b :d a t a b a s e 曲e 呔慨d b ) 纂p d b 另一个函数满足以下公理; a x 觚 v p :p e r s o n ,d b :d a t a b a s e c 船c k ( p ,d b ) 暮p d bao l d e n o u g h ( p ) 这器瀵数o l de n o u g h ( p ) 返圈t r u e ,如果p 达爨 法定年龄 翔莱一个标识符没有完全被公疆指定( s p e c i f i e d ) ,称其为未指定的 ( u n d e r - s p e c i f i e d ) 。 为了整理文档的需求和在证明中引用方便起觅。公理可以被命名。例如定义 e m p t y ,c h e c k ,r e g i s t e r 的公理可以麓未如下形式: 曩x 觚 【e m p t y a x i o ml e m p t y 舞 h 。 【嘴i e t e r a x t o m l v p ;p e r l m l l , d b :d a t a b a s e r e g t z t e r 晰i b ) 暮 p ud b , 【c h e c k - e a d o m 】 v p :p e r s o n 。d b :d a t a b a s e c h 糯k p , d b ) 誊p 两 ( 5 ) 值和公理说明的结合 当公理具有特别的形式时,r s l 为值和公理说明的结合提供了简写形式。例 一一一登主要窒翌苎堡篓塑翌塞堡塑堑塑! 窆! ! 塑堑鍪塑鲨笙! ! 壅 妇,我们可以对常曩e m p t y 据如下定义: v a l u e e m p t y :d a t a b a s e # 2 2 2r a i s b 开发方法 r a i s e 不只是褥供了规范语言r s l ,还提供了一套基于r s l 的面向软件定义、 精化、验证和开发的方法。其中还包括一套工具集。下面根据面向对象软件开发 的需要,将相关的方法进彳予归纳。 ( 1 ) 基本概念 r a i s e 方法的目标是按预定的步骤使用一秘形式化方法来产生符合襞求的、 霹靠豹,霹维势和霹垂爆的软俦。 形式纯开发懿关键是分步开发豹愚怒。舞发者蜀 ;觚一个逡当抽象的裙始筑 范汗始,这个篾范簧考露的是这个软件系统必须徽什么,丽不蔻关予如何徽的细 节。因此所有可以被搁鼍裔白设计问题都可以不考虑经过了一系歹! l 的设计步骤, 不断将以前不清楚的部分补充完整来充实攒范。直判得剽了一个易于( 可能是自 动的) 转换为程序设计语言代码的规范为止。在理想的情况下,这些设计步骤之 间是不断糖化的。也裁是说,每一级的般范都符念前一级规范所持有的全部性质。 在实贱巾,褥以发现不是墩真的设计步骤之闻都是糖化的关系,尽慧它们之闻蛇 关系 # 攀类儆予耱亿。这中开发方法篾开发者霹以描述感窀织之麓鹑确切关系。 ( 2 耩纯关系 r s l 中的精化( r e f i n e m e n t ) ,绒实现( i m p l e m e n t a t i o n ) 关系般被称为“静 态实现”关系,这种关系,即类表达式的最大特征的包含关系,是实现的先决条 件。 r s l 中实现的崽义形式为;如聚类表达式b 的所有模型都悬类袭达式a 的模 型,那么说类表达式0 被类表达式b 实现。所有糖化就是丢弃慕些融有模塑以产 生( 实瑗) 另乡 其镳模型的过稷。 在逡羹希鬟允诲将扩震( 鲡添撩鬏豹类型,僖等) 佟为一种自然懿耩化形式, 因诧可黻定义类表达式的模鳌集包含箕所有胃髓的扩震。掰戳镁何类表达式豹模 型檠都建无穷集。我们需要一种适予刻溺这种模型集合豹谥碉瑷论来帮助构造和 检森多种精化。 型! 兰坠! 登 笙! ! 墨 可以谖职翅模型集浆子集产生的寇义等价予簿理论扩浸产生鑫冬定义。掰戬我 们涟类表达式a 被类表达式矗实现,如果 a 的最大特征包含在8 的最大特征之中 郄b 静态实现a ) ,并且 a 的理论在b 中都是可证的 这样为了缭出实现的特征我们必须说明各种类表达式和各种说明的“理论” 是什么,简单说,一个类表达式的“理论”就是它所宥用公理表述的傧息,这姥 信息在求最大特征时被忽略掉。 除了隐藏( 它不改变璎论) ,其他赝鸯躲类表达式都霹1 2 主震舞残基本类表达 式。孱骞大部分豹定义都熬绩为说褪豹性豢上。下箍对每一类说弱鸯孽情况绘出规 定。 方案和对象的精纯对予方案和对象的说明,其理论就是它所定义的 类表达式( 对于方案荐加上它的参数,参数也是由类表达式来表述的, 对于对象数组,再加上数组参数) 所以要检验个新的方案或对象的定 义是否实现了旧的定义。其方法即使梭验这两个类表达式之间的关系。 对于方案的参数,方法也是类似。但是宅们鼹卷的关系是围步 ( c o - g r a d i e n t ) 的一鼹l 爨参数的类表达式必矮实现赣参数瓣类表达式。瓣 予对象数缝新煞下标集必缀毽禽暇豹,遣靛是说霹戳扩大数组。 交鬃嚣信邀的耪车艺交薰和信遭盼唯一理论就程予其类整豹子类登信 息( 鲡采存在) 以及对于交重所有的初始化。因诧关予实现需要检验的 就是新变量或佰道的类型必须是溜变量或信道的类型的子类型,而且如 果旧变量傲了初始化,那么新变量必须以棚等的值做初始化。 类越的糖化既然变体类型定义可以展开成鼹种类型定义( 仅仅是新 类型的名字) 粒一螳值及公理的说明,嚣联合秘短记录类型定义又可以 晨舞成嶷体类型定义,因戴其实只骞掰秘类整滋骧燕耱类燮弱篱写 类型定义。对予品种类鍪,它没有莲论,它只是雩l 入了一个新类璧翡名 字。对子倚写类型,它的理论就是新类登的名字等价予简写式所代表的 类羹表迭式。阂诧薪的装登说胡必须燕与1 日的阋一凝墅的简写定义。 在r s l 中,如果定义了 t y p es e t b l 翱懈“ 一篷主墅塑翌墨堡翌堕踅苎些塑竺塑坚1 2 1 翌茎垄查鎏 塑! ! 塑 那么瑟瑟就不能精仡为 t y p e s e t = e l e m 。 即使存在一个众所周知的从表墅4 集合的恢复函数墩不行。做出这晕申限制 的原因是拣望姥够用搜化过的类型代替原寒的类型,在最溪讨论分离开 发豹孵嫉,这一点憋会缀明显。显然誉戆羯第二令表达式代蛰第一今表 这式,尼乎任 鼙含有s e t 类型的篷酶表达式将不辩做类鍪l 检鸯。鬻魏不 用上瑟的方法,我们登矮甜s e t 傲如下的掬象定义: t y p e s e t v a l u er e p :s e t _ e e m - s e t 或者可以使用个“表示溺数”: t y p es e t ;= 骶嘁la d d ( e 蛔s 西 其中r e p 强是给出了一个特征( 而且r e p 还是隐藏的) 。为了能够在出现 集合的地方使用表,可以嗣操作e l e m s 实现函数r e p 。 值的精化一个值的说明总是可以被展开成一个使用最大类型的值的 说明和若干公理。值的理论就是这些公理。例如,下顽的说明 v a l u e x :l m = 2 l y :n a t y 3 等价予 v a l u e x :融 y :埘 垴o t l l x 2 。 y 0 y 3 对乎蘧数,就苓魅遮梯餐攀,全丞数哭戆技耀化必全甄数,嚣且如果掇 熬滋数骞访翊,薅么蓑蕊数裁双能拥考都些诱瓣豹子集。( 孬粼,爨:翅像 一个函数不能作用莱个交豢这样的性质就可能失去) 将函数定义展开成公瑾,就得翔了关于函数的耪亿规刚;作用域被扩大, 前鬣条件被弱化,后置条件被增强。 u m l 与l l i s e 第2 2 负 公理的精化公理本身就是它的理论,掰敬必缓证绢旧的公理猩新的 类表达式审仍然成立。 ( 3 ) 分离的- 开发 上面主要是和单个模块精化相关,如果开发实际系统,考虑到汗发人员是多 人合作,可能被分成多个小组,每个小组负责某个部分,既要保持这些开发的独 立性又器保持一致性,就需要使用分离的开发( s e p a r a t ed e v e l o p m e n t ) 。 在某个系统中s 使用了另终一个模块a ( 这曼是作为参数) 。宠寨s _ 秘a o 分别是这鼹个模块麴胡始援范,如果一令嚣发小组把方案糯拜发至方案a 。,另 夕 一令嚣发,j 、缀将穷案s o 嚣发至s n ,帮这污个开发是稻互独立静,参觅鹜2 1 。 开发s 静小组辩予方案a 的了解仪限予其初始蕊藏a 0 ,这可班由第n 个方案s n 的参数仍然是舢看出。最后把这两组的实现缀合在一起,由对象0 i 和0 2 来表 示,作为初始规范s o 的实现。r s l 的耩化关系明确地保证了这个实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石英手表装配工岗后知识考核试卷含答案
- 经编机操作工操作规程考核试卷含答案
- 建筑模型制作工创新实践知识考核试卷含答案
- 燃气具安装工诚信品质测试考核试卷含答案
- 轻冶浆液调整输送工安全操作模拟考核试卷含答案
- 脂肪烃衍生物生产工岗前理论知识考核试卷含答案
- 富集工岗前理论技能考核试卷含答案
- 空管自动化系统机务员岗前技术应用考核试卷含答案
- 砌筑工岗位工作质量考核试卷含答案
- 综合能源运维员安全风险考核试卷含答案
- T SCSIA 0015-2023《四川省信息化项目费用测算标准》
- 小学主题班会课件:语言表达
- 设备检维修作业风险识别培训课件
- 《决策树与智能推理》教学课件-2025-2026学年人教版初中信息技术(人工智能专册)
- 2026年春季开学“两案九制”完整文件,工作方案应急预案晨午检复课证明传染病防控健康教育消毒隔离制度等
- DB32T 5188-2025经成人中心静脉通路装置采血技术规范
- 设备维护保养教学课件
- 水电自动装置高级工技能鉴定理论考试题库(含答案)
- 2024年秋季新人教PEP版三年级上册英语全册教案
- 中小学生反对浪费世界粮食日节约粮食主题班会课件
- 2017电动汽车用增程器技术条件
评论
0/150
提交评论