没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记42(2001)网址:http://www.elsevier.nl/locate/entcs/volume42.html11页形式化软件开发A.斯雷尼瓦斯河Venkatesh和M. 约瑟夫塔塔研究设计和开发中心,塔塔咨询服务,印度浦那1摘要形式化精化表明了一个程序的规范是如何通过步骤转化为可执行的实现的。该方法是健全和严格的,但不适合处理大型和复杂的程序。因此,大型程序的构建通常被认为完全超出了正式表示的范围,而非正式的技术,有时使用图形符号,被用来从需求到程序。在本文中,我们展示了如何在不同的视图中定义大型程序,这些视图是单个Meta模型的实例。每个视图代表程序的一组属性,它们的组合定义了程序的规范。转换用于将视图转换为程序片段,这些片段组合在一起以构建整个程序。该技术已被应用于许多实际应用的大型系统的建设1介绍在程序的形式化开发中,一个抽象的规范通过若干细化步骤被转化为一个可执行的程序。该方法有一个合理的逻辑框架支持,适用于相对较小的顺序程序的开发。 然而,面对开发大型复杂程序的问题,工业实践使用非形式化的符号和方法的组合。不同的方法用于表示程序不同方面的属性,这些属性通过开发过程的步骤组合在一起。最终程序的功能充分性在很大程度上取决于执行步骤的彻底性,并且没有解决形式正确性的问题。1 网址: www.pune.tcs.co.in,www.tcs.com2001年由ElsevierScien ceB出版。 诉 操作访问和C CB Y-NC-N D链接。1SREENIVAS,VENKATESH和约瑟夫2一个C−MS s sSAA在本文中,我们描述了一种使用多个模型构建工业规模的软件系统的方法。我们的方法中的模型都是单个Meta模型的实例,而不是对程序的不同方面使用不相关的符号和方法这提供了一种统一的方式来描述模型和使用这些模型构建的系统。 它还导致了一个简单而优雅的实现方法。该方法已被广泛用于构建中型和大型程序,目前在不同国家的业务使用。我们首先在第2节中描述了如何有效地将多个模型用于软件我们用两个例子来说明这一点:一个是在程序分析器的构建中使用不同的模型(第3节),另一个是使用多个模型将一个大问题分解为更小的组件(第4节)。最后,我们将在第6节中讨论使用这种方法时2建模在软件开发中的应用程序的形式化精化[7]始于一个抽象的规范,它将被转化为一个具体的实现。这种抽象的规范通过在每一步添加操作细节来细化,最终实施。A→···Si→Si+1···→ C在这些步骤中,i+1是i的精化,i是i+1的抽象。 因为精化和抽象是传递关系,所以一个中间规范Si既是A的精化又是C的抽象。每个中间规范Si+1都可以使用精化规则从Si导出也可以形式化地证明C是A在显式或隐式底层语义模型方面M.因此,形式精化完全发生在一个模型内,即单个模型M的一个实例A内。在实践中,形式化精化很难用于任何大小的程序(比如大于10, 000- 20, 000行代码),并且该方法不能扩展到大规模的软件开发建模方法使用不同的抽象视图A1···An构造A,每个抽象视图定义一组属性:例如结构简单性、实现效率和性能。视图Ai是可以表示为模型i的更一般结构的实例,例如用于操作序列的状态转换模型或用于表示数据的实体关系注意,可能无法单独使用:在这里用来表示我们可以非正式地称之视图是通过一组相应的机制来实现一组抽象属性的手段,即将每个AiSREENIVAS,VENKATESH和约瑟夫3C一一一是个LPL到相应的实现Ci。 C1···Cn的程序级组合给出了C,它旨在成为A的实现。每个Ai都可以手动转换为i,或者通过使用正式或非正式的细化步骤,但这需要为每个这样的程序完成相反,我们使用模型i,i是它的一个实例,并实现模型的一般转换。这些变换可以应用于Mi的所有实例。在Mi级别定义变换,而不是针对模型的每个实例i,使得可以按比例放大 方法和处理大型程序。例如:设A是一个编译器的抽象规范。 A可以被分解以表示编译过程中的单独步骤i。这些步骤通常是词法分析、语法分析和代码生成。词法分析可以通过正则表达式(或有限状态转换模型)建模,语法分析可以通过上下文无关语法(及其底层模型)建模。代码生成的模型通常是非正式定义的使用这种模型已经成功地为大型语言构建了编译器,这表明多模型方法适合于按比例放大。然而,使用不同的模型有两个明显的缺点首先,每个细化步骤都是非正式地执行的,因为底层模型没有数学定义。第二,也是更重要的,不同的i在这种情况下,对于出现在多个Ai中的任何属性的所有表示,必须存在一致性关系R。我们在第4节中展示了R3建立程序分析器程序分析是一个使用多个模型来表示不同属性集的领域,例如语法属性和语义属性。每个模型都包含一组相对完整和一致的属性。这些模型通过它们所描述的程序对象的类而相互关联。考虑一个软件系统,它被实现为具有良好定义的语义的语言L的程序使用编程语言L的语义模型作为基础理论,可以构建L的证明系统,并用于证明L中程序的属性(图1)。然而,在实践中,人们可能不需要一个完整的边缘证明系统的编程语言。 在许多情况下,只有一个弱证明系统就足够了,它可以检查程序的某些静态可确定的属性,. 许多理论[6,5,2,3]已经被提出用于程序分析,或者静态确定程序属性的过程。L中的每一个程序P都有两个视图,一个是结构视图或语法视图PSSREENIVAS,VENKATESH和约瑟夫4FFFLFFLLLL程序语言L的证明系统Fig. 1. 一个程序及其证明系统以及语义或分析视图PA。语言L本身具有• 抽象语法模型LS和• 静态语义模型LA。PS和PA分别是LS和LA的实例. 这类似于Ai在第二节中,M我们可以从语言推广到一个家族,具有“相似”语义模型的语言(例如所有命令式语言的集合)。当这样做时,就可以用更一般的模型来描述A和S(i) 程序的结构模型,S,表示抽象语法但不代表这些语言的执行语义。(ii) 一种程序分析模型,或F中语言的静态语义模型FA,它代表程序分析的理论语言L所特有的模型是一般模型的实例• LA是 FA的instance,• L S是F S的instance.这两个模型或理论不是,实际上也不可能是基本独立的。L的单一但复杂的语义模型,比如LM,已经被投射成两个更简单的模型S和A,每一个都是健全和完整的。此外,这些子模型通过底层语义模型L M相互关联(图2)。结构或句法模型,描述了中表示的编程语言的类别以及它们之间的关系。程序分析的理论FA为所有可能的分析形成了一个模型L的语义模型SREENIVAS,VENKATESH和约瑟夫5{}L的语义模型弱证据系统程序分析器程序分析模型L的抽象语法模型模型实例化模型细化图二. 作为弱证明系统的对于F. 对于给定的分析,在FS中的不同节点上形成具有偏序±的格P,其中p1 ± p2 <$(p1在节点n成立<$p2在节点n成立)。例如,P中的属性可以是标识符和常数的元组的集合,其中 x,c1,y,c2 保持在nx的值为c1,y的值为 在n处的值c2。2分析LA是从抽象语法LS到P的函数,即,LA:LS→PL的语义通常被定义为LS上的语义函数。因此,L的指称语义描述将是一个函数:[[. ]]:LS→D其中D是表示程序行为的一组表示由于分析是动态语义模型的我们现在定义形式上的一致对于每个分析,抽象函数α可以从表示D定义为属性值P,它定义了属性如何与动态语义值相关即α:D→P2在这样的晶格中,{x,c1,y,c2} ± {x,c1,y,},其中不表示常数。类似地,{x,c1,y,c2}/± {x,c1,y,c3},其中c2/= c3。SREENIVAS,VENKATESH和约瑟夫6RL LLFA Aa分析LA被认为是一致的(等效地,安全的[5]),x ∈ S。 LA(x)± α([[x]])如果分析预测某个属性p对某个x成立,那么它保证在执行时成立这个约束定义了不同模型之间必须保持一致的关系(第2节)。其他.投射复杂语义模型[. [2]分为两个简单的模型,S和A,并确保A与[2]一致。]使我们能够将分析应用于一组类似的语言(如所有命令式语言)和由单一分析理论统一覆盖的程序属性集。3.1达尔潘Darpan[12]是一个基于将复杂模型投影到多个模型的程序分析框架,如图2所示。在这个图中,Darpan可以被看作是虚线框,它支持对用一系列相关语言编写的程序进行分析。在这里,相关语言家族的语法FS对应于第2节的模型Mi的概念;类似地,对于FA,分析模型。注意,单个语言L的语法和分析模型将对应于第2节的AiDarpan接受所需分析的规范(即FA的实例),并生成与规范相对应的程序分析器。该分析器可在任何FS实例上工作以产生分析结果。 当分析器工作在S的实例上时,它独立于编写程序的源语言。 这也使得分析由不同语言的不同组件组成的程序。我们已经使用Darpan生成的分析器来分析程序,其中包括C,C++和Pascal的组件。图3展示了Darpan如何从规范生成分析器。Darpan已经成功地用于分析现实生活中的程序,用于不同的应用,如逆向工程[9](即从程序中提取一些期望的“含义”)和标准检查[13](即, 检查给定语言的程序是否符合一组定义的编程规则)。4关联多个模型一个复杂的系统可以用不同的性质来看待。每一组属性可能需要不同的表示法,并具有自己的基础模型。考虑一个程序P,它使用三个规格A1、A2和A3来描述,底层模型分别为M1、M2和M3,如第2节所讨论的。重要的是要确定1、2和3是相对一致的,这样就可以确定表示不一致。SREENIVAS,VENKATESH和约瑟夫7分析规范A Aa联系我们→⟨ ⟩ ⊆×程序语言前端中间表示程序分析器GUI分析结果用户发生器图3.第三章。Darpan不同表示1、2和3之间的相对一致性可以定义如下:定义4.1如果p是M的一个性质,且p在M1中表示,则M2为p1和p2,则必须存在关系R1,R2,R12,R21,使得p1=R1(p)=R21(R2(p))p2=R2(p)=R12(R1(p))消息序列图(MSC)[8]和状态图是两种不同的符号,用于指定系统的行为消息序列图M是五元组E,,L,T,P其中E是一组事件,
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 藏经阁-应用多活技术白皮书-40.pdf
- 藏经阁-阿里云计算巢加速器:让优秀的软件生于云、长于云-90.pdf
- 藏经阁-玩转AIGC与应用部署-92.pdf
- 藏经阁-程序员面试宝典-193.pdf
- 藏经阁-Hologres 一站式实时数仓客户案例集-223.pdf
- 藏经阁-一站式结构化数据存储Tablestore实战手册-206.pdf
- 藏经阁-阿里云产品九月刊-223.pdf
- 藏经阁-2023云原生实战案例集-179.pdf
- 藏经阁-Nacos架构&原理-326.pdf
- ZTE电联中频一张网配置指导书
- 企业级数据治理之数据安全追溯
- MISRA-C 2012-中文翻译版.pdf
- 藏经阁-《多媒体行业质量成本优化及容灾方案白皮书》-37.pdf
- 藏经阁-浅谈阿里云通用产品线Serverless的小小演化史-23.pdf
- 藏经阁-冬季实战营第一期:从零到一上手玩转云服务器-44.pdf
- 藏经阁-云上自动化运维宝典-248.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功