




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 卜 摘要 f 由于a d a 程序设计语言有两种国际标准,并且旧的标准a d a 8 3 广泛的应用于 壁塞堕丕堕的开发,因此从a d a 8 3 到a d a 9 5 的源代码的转换工具的开发具有 实际意义a 本文首先在研究a d a 8 3 和a d a 9 5 的语言机制和不兼容性的基础上,针对转换 系统所面向的专用领域和编译器平台的特点,细化和扩充了a d a 兼容性指南( a d a c o m p a t i b i l i t yg u i d e ) ,提出了用类似于编译器的体系结构来实现转换系统的方案, 并使用了螺旋增量开发方式控制工程的进度和质量。在详细设计和实现部分,本 文详细介绍了系统后端,包括:转换规则字典和报告模板字典的组织和引用:中 间表示中几种对象的设计和实现;自动转换、程序代码输出和报告生成功能模块 的实现。晟后,给出了系统的测试方案和完成指标。 关键词:a d a 8 3 , 。a d a 9 5 ,。兼容性,代码转换,信息字典 a b s t r a c t s i n c et h e r ew e r et w oi n t e m a t i o n a ls t a n d a r d s i s s u e d s u c c e s s i v e l y f o ra d a p r o g r a m m i n gl a n g u a g e ,a n d t h eo l d o n e ,a d a 8 3 ,h a sb e e n u s e d w i d e l y i nt h e i m p l e m e n t a t i o no fe m b e d d e dr e a l - t i m es y s t e m s ,i ti sn e c e s s a r yt od e v e l o pat o o lw h i c h c a r lt r a n s l a t et h ea d a 8 3s o u r c ei n t oc o m p a t i b l ea d a 9 5s o u r c e a f t e r s t u d yt h em e c h a n i s m so fa d a 8 3a n da d a 9 5a n dt h ei n c o m p a t i b i l i t i e sb e t w e e n t h e m ,w ed e t a i l e da n de x p a n d e da d ac o m p a t i b i l i t yg u i d e ,a c c o r d i n gt ot h es p e c i a l d o m a i na n dt h es p e c i a lc o m p i l e r st h a tt h et r a n s l a t i o ns y s t e mw o u l d a p p l yt o t h e nt h e s c h e m eu s i n ga na r c h i t e c t u r et h a tr e s e m b l e sac o m p i l e r sw a sp u tf o r w a r d ,a n dt h e d e v e l o p i n gm e t h o d t h a ts o m ei n c r e m e n ti sm a d ea f t e re a c hc y c l ew a s a d o p t e d t oc o n t r o l t h ep r o j e c t sp r o g r e s sa n dt oe n s u r et h es y s t e m sq u a l i t y i nt h ep h a s eo fd e t a i l e dd e s i g n a n d i m p l e m e n t a t i o n ,t h e b a c k e n do ft h e s y s t e m w a sd i s c u s s e d i ti n c l u d e st h e o r g a n i z a t i o n a n dr e f e r e n c eo ft h e t r a n s l a t i n g r u l e s d i c t i o n a r ya n dr e p o r tt e m p l a t e d i c t i o n a r i e s ,t h ed e s i g na n di m p l e m e n to fs e v e r a lt y p e so fo b j e c ti ni n t e r m e d i a t e r e p r e s e n t a t i o n ,a n dt h er e a l i z a t i o no f t h em o d u l e so fa u t o - t r a n s l a t i o n ,s o u r c eo u t p u ta n d r e p o r tg e n e r a t i o n 、f i n a l l y , t h ep e r f o r m a n c ea n a l y s i so f t h es y s t e ma n dt h er e s u l t so ft e s t a r ep r e s e n t e d k e y w o r d :a d a 8 3 ,a d a 9 5 ,c o m p a t i b i l i t y ,c o d et r a n s l a t i o n ,i n f o r m a t i o nd i c t i o n a r y 第一章绪论 第一章绪论 1 1a d a 语言概况 a d a 语言是为军事系统中嵌入式计算机研制的通用程序设计语言,它的第一 个标准简称a d a 8 3 。从八十年代开始a d a 8 3 在美国和欧洲军事应用和航空航天 等领域得到了大力地推广应用。国内有些实时嵌入式系统也采用a d a 8 3 设计实 现。九十年代以来,软件领域的面向对象技术得到迅速发展。为了适应新的需求 1 9 9 5 年出台了新的a d a 语言国际标准,简称a d a 9 5 。 用于嵌入式系统领域的应用是a d a 语言设计的主要目的,但实践表明,它的 应用领域要宽得多,也很适合大型、复杂、可靠性要求高的各种应用系统。从大 系统的要求来考察,a d a 8 3 有着许多不适合的地方。首先,a d a 8 3 是基于对象的 程序设计语言,而不是面向对象程序设计语言。其次,新语言应该覆盖若干个特 定应用领域。但包含许多不同需求的语言实现代价大;基于可移植性的考虑,a d a 又不允许存在各种子集。因此,最后发布的a d a 9 5 国际标准也是由一个核心语言 加上若干个附件( 包括系统编程、实时系统、分布式系统、信息系统、数字、安 全和保密等) 组成。所有的a d a 9 5 编译器必须实现核心语言厂商则可根据市场 的需求,实现零个、一个或多个附件。 a d a 9 5 语言是世界上第一个同时得到国际标准化组织和a n s i 认可的面向对 象程序设计语言。相比a d a 8 3 ,它新增以下功能:提供了类、类层次以及继承性 的语言支持机制;为处理c 、c o b o l 和f o r t r a n 的程序与数据提供了标准接口 功能;提供了更加有效的实时、分布式和并行程序设计的环境【2 i 等。同j a v a 、c + + 及a d a 8 3 相比,a d a 9 5 具有更安全、高效和灵活的特点。 1 2a d a 8 3 和a d a 9 5 的兼容性问题 a d a 9 5 语言标准的设计过程中,十分注意对a d a 8 3 语言的继承性。语言修订 中,遵循最大的正面效益最小的负面影响的原则( 3 ,即原有的使用a d a 8 3 设计 的软件在不作修改或作最低限度的修改后就可以直接在a d a 9 5 下运行,并保持原 有的运行特性。尽管如此,a d a 8 3 和a d a 9 5 的语言特性上仍存在着差异邮1 ,使得 原有的a d a 8 3 源程序在a d a 9 5 的编译器平台上出现不能完全正确的被编译和运 行,即所谓的兼容性问题。 本课题中关于兼容性问题的分析是以a d a 兼容性指南口】( a d ac o m p a t i b i l i t y 2 a d a 8 3 9 5 转换系统秀端设计与实现 g 试d ev e r s i o n6 0 ,简称a c g ) 为基础。a c g 给出了从a d a 8 3 到a r i a 9 5 所有可能 的不兼容,并分为三大类共4 3 条不兼容条款。这三类不兼容分别为: 1 向上一致( u p w a r dc o n s i s t e n t ) 不兼容。原有的合法a d a 8 3 程序在a d a 9 5 下仍然保持合法而不受语言标准改变的影响。其中部分合法的a d a 8 3 程 序可能会变为不合法,但那些保持合法的程序和原来具有相同的语义。 2 无异常的向上致( u p w a r d c o n s i s t e n ti f n oe x c e p t i o n ) 不兼容。不引发和兼容 特性相关的异常时,原来的合法a d a 8 3 程序在a d a 9 5 下仍然保持合法而 不受语言标准改变的影响。其中部分合法的a d a 8 3 程序可能会变为不合 法,或者能得到有意义的结果而不再引发异常。 3 向上不一致( u p w a r di n c o n s i s t e n t ) 不兼容。在a d a 9 5 下。原来合法并正确的 a d a 8 3 程序因语言标准的改变而不同。譬如程序可能会引发一个以前不 会引发的预定义异常或者程序运行得到与以前不同的结果。即程序的语 义发生变化。 针对每一条不兼容,a c g 给出了以下几个方面的描述:不兼容出现的概率、 语言的改变说明、语言改变的原理描述、语言改变的具体出现或例程、编写a d a 8 3 程序时不兼容的避免方式、可能的探测和消除方法。因此,a c g 为以下工作提供 指导:1 ) 指导a d a 8 3 的程序设计人员避免使用与a d a 9 5 不兼容的编程风格。2 ) 指导通过自动或手动的方式修改已有的a d a 8 3 程序,使之能够在a d a 9 5 下正确编 译和运行。 本课题针对具体系统的需求对a c g 条款进行了许多细化和扩充的工作,但 仍然沿用了a c g 对不兼容的分类方法并使用“a c g i ”的形式为不兼容条款编 号,其中i 的值从0 l 到4 3 。 1 3a d a 8 3 9 5 源程序兼容性的自动分析与转换 由于a d a 9 5 在程序设计和实现中存在着优势,一些原来使用其它语言设计的 图1 1 兼容性问题的解决方案 第一章绪论 系统也希望能够转向使用a d a 9 5 ,国外已经为这样的转换提供了工程化的解决方 案1 5 6 1 ,但没有提出自动化的系统解决方法。其中,从a d a 8 3 到a d a 9 5 的转换是 最直接、稳定和高效的,也最适合自动化。同时现有基于a d a 8 3 的系统应用,对 转换有一定的需求。为了提高效率和节省资金有必要研制一个a d a 8 3 9 5 的自 动转换系统,以帮助实现a d a 8 3 平台向a d a 9 5 平台的升级。 图中的立体框所代表的就是我们开发的a d a 8 3 9 5 转换系统,它为用户提 供一个从a d a 8 3 到a d a 9 5 的源代码级的转换工具,使得最终得到的a d a 8 3 可执 行程序和a d a 9 5 可执行程序的运行特性完全一样。因此该系统要完成以下功能: 1 a d a 8 3 到a d a9 5 的兼容性检查:分析语法和语义正确的a d a 8 3 源程序, 收集所有不兼容的出现的相关信息。 2 a d a 8 3 到a d a9 5 的程序转换:将具有确定对应关系的部分进行从a d a $ 3 到a d a 9 5 的自动转换,并且保证转换后的程序在a d a 9 5 环境下能够正确 编译运行,并且得到与a d a 8 3 程序相同的结果。 根据以上功能的要求以及a d a 8 3 源程序中不兼容性的性质,最终系统所得的 结果会有以下三种: 1 经过自动修改,可以将a d a 8 3 程序转换为语法和语义完全等价的a d a 9 5 程序,我们认为这类修改是安全的。处理的方法是输出转换后的结果并 且给出相应不兼容信息报告: 2 经过自动修改在大多数输入的情况下,a d a 8 3 源程序的语法和语义与 a d a 9 5 程序是等价的,但是并不能保证所有的输入情况均等价,这类修改 被认为是不安全的,处理的方法同样是输出转换后的结果,但是在不兼容 信息报告中强调被转换的不安全性; 3 有些不兼容性问题是不能自动修改的这种情况,不输出转换结果,仅给 出不兼容信息的报告。 4 a d a 8 3 1 9 5 转换系统后端设计与实现 第二章a d a 8 3 9 5 转换系统的整体设计 a d a 8 3 9 5 转换系统是面向专用领域和专用编译器平台的软件,系统最终的要 求主要是功能性的以此为基础兼顾系统运行效率。功能性指标的完成程度,依 赖于系统实现方案的有效性和兼容性分析的完备性。以下分别就这两个方面进行 讨论。 2 1 不兼容的上下文相关性| ,| 本转换系统是一个语言的处理翻译系统,输入是字符流,输出则是经过处理 的字符流。因此,有两种系统构造方案可供我们选择:1 ) 检查和转换同步;2 ) 检查和转换异步。检查和转换同步的实现过程为:检查器对输入字符流进行扫描, 如果没有满足匹配转换条件的字符段出现就原样输出。否则,按照映射规则将其 转换成为对应的字符段输出。该过程不断进行,直到输入的字符流结束。检查和 转换异步的实现是:检查器从输入的字符流中搜集信息,并将其按照某种结构存 储,以这些信息结构为基础,我们可以进行一遍或多遍的检查和转换,直到获得 满意的结果,然后将信息重新组织并输出。 对于遵循上下文无关文法规则的字符流均可以采用检查和转换同步的方式 处理。但是对上下文相关的字符流,这种方式却无能为力。例如,关于程序设计 语言中标识符的声明和引用就是这样的例子。我们可以用l = w e w l w 属于( a | b ) ) 表示程序中标识符的声明和引用匹配问题的抽象,“w c w 中的第一个“w ”的出 现代表标识符的声明第二个“w ”的出现则代表它的引用。一个在语言中只声 明而不引用的标识符是没有实际意义的,而一个标识符仅被引用而没有声明也是 错误的。 如果我们将上例看作一个不兼容检查的过程,其中“w ”可看作是和某种不 兼容有关的语言符号。第一个“w ”表示可能会引起不兼容的语言符号,而第二 个“w ”则表示和前面相关的语言符号的再次出现。只有综合考虑这两处语言符 号的出现情况才能够确定是否不兼容的出现。下面我们以不兼容条款a c g 3 1 ( 关 于本文中出现的a c g 条款的说明见附录b ) 为例来说明如上描述的不兼容出现 的确定方法。 该不兼容出现是由于a d a 8 3 和a d a 9 5 对类属形参的语法表示有区别。在a d a 8 3 的类属声明中,不需要明确与类属形参结合的实参是确定类型还是非确定类型, 而在a d a 9 5 中,根据实例化时采用的实参类型的确定和非确定的不同,类属形参 应该以不同的方式声明。如: 第二章a d a 8 3 9 5 转换系统的整体设计 g e n e r i c t y p e e l e m e n tt y p ei sp r i v a t e ; p a c k a g e s t a c ki s 其中e l e m e n tt y p e 为类属程序包s t a c k 的类型形式参数。在a d a 8 3 中。该声明形 式表示类属实例化的实参可以是确定类型也可是非确定类型。但在a d a 9 5 中,该 声明形式则表示类属实例化的实参只能是确定类型,否则不合法。如果实参是非 确定类型,则类属的声明应修改为如下形式: g e n e r i c t y p ee l e m e n t _ t y p e ( ) i sp r i v a t e ; p a c k a g e s t a c ki s 其中,“( ) ”可以被称为非确定标记,在a d a 9 5 中这两种类属声明形式都合法, 只是意义不同。因此当源程序中出现类属形参不带非确定标记时,该声明形式是 否不兼容是不能确定的。只有当遇到用非确定类型来实例化这个类属时,例如将 不确定类型s t r i n g 赋给类属形参。 p a c k a g es t r i n g _ _ s t a c ki sn e ws t a c k ( e l e m e n t _ t y p e = s t r i n g ) ; 这时,我们才能确定类属的声明是a c g 3 1 不兼容的出现。显然不兼容条款a c g 3 1 中对不兼容出现的确定规则是上下文相关的。 通过对a c g 分析和试验,我们发现在4 3 条不兼容条款中既有上下文无关, 也有相当一部分上下文相关的不兼容。因此,用检查和转换同步方案是无法成功 完成从a d a 8 3 到a d a 9 5 源程序不兼容的检查和转换。因此a d a 8 3 9 5 转换系统 采用检查和转换异步的方式来构造。 2 2 转换系统的体系结构 “a d a 8 3 9 5 转换系统”要完成的基本功能有:检查a d a 8 3 源程序中出现的与 a d a 9 5 标准不兼容的程序代码、自动将a d a 8 3 源程序转换成为等价的a d a 9 5 源程 序。根据以上的需求,我们构造了一个类似于编译器的体系结构,分为前端检查 和后端转换两部分,如图2 1 所示。 转换系统的前端进行信息的收集和整理,包括词法分析、语法分析、符号表 的查填、向中间接口输出信息等。中间接口包括不兼容表和源程序表示负责前 端到后端的信息的传递,并且是后端过程操作的数据基础。转换系统的后端进行 信息的综合,主要根据中间接口所提供的数据信息和不兼容信息对a d a 8 3 源程 序实施自动转换,并按照各类报告模板输出系统报告。 系统运行所需要的数据可划分为不变数据和可变数据。可变数据是根据具体 的输入源程序的不同而改变,这部分信息由前端检查过程收集并存放在中间接口 6 a d a 8 3 d 5 转换系统后端设计与实现 处理不兼容转 处理策略文件 唾嚼x 百瓤 文件 不兼容信息 字典 输入 d a 8 3 源程序 预处理 前端检查 类型标识 ,中间表示 ! 问临时文件童? 叫后端转换 ,一_ t 】 不兼容 详细报告模扳 后处理 输出a d a 9 5 源程序和 不兼容信息报告 图2 i系统体系结构 中。不变数据是使用频度高,且在整个转换系统运行过程中内容固定不变的数据。 由于系统开发阶段的不同和用户希望的不同,这些信息也需要有一定程度的变 化。因此这些数据被从系统中提取出来并结构化的存放形成系统运行所依赖 的信息字典。前端检查的信息字典包括:a d a 8 3 关键字和基本类型名字典、不兼 容信息字典、a d a 8 3 预定义语言环境字典、a d a 8 3 预定义语言名字典和不兼容类 型标识字典。后端转换使用的信息字典包括:不兼容转换规则字典、不兼容详细 报告模板字典和不兼容概要报告模板字典。 在系统的检查之前和转换之后,转换系统分别要做预处理和后处理。预处理 的主要任务是:直接载入部分信息字典的内容、读入部分信息字典的路径设置、 读入系统转换的工程信息,以及对系统运行环境量做预先设置。后处理的主要任 务是对转换操作完成后的信息输出,包括按照预定义位置和名字输出源代码和各 类报告文件。 系统体系结构的设计对系统后续的开发有很大的帮助:将不变数据信息归纳 为信息字典的思想,使数据和具体的程序分离,给系统带来了可扩展的空间,系 统模块之间的松耦合。前端和后端仅通过中间接口相关,各模块有完整且独立的 功能,可单独完成编写和测试,开发过程并行化。预处理使用户可以灵活的通过 修改配置来定制系统。 一凰蜀蟊皇一灞 第二章a d a 8 3 9 5 转换系统的整体设计 2 3 基于分析和检测的螺旋上升开发过程 7 在软件的开发过程中,仅仅通过系统需求分析,很难确定出一套完整、一致 而又有效的应用需求i ”。如果在软件系统开发后期才发现对问题的认识还不全面, 整个工程就可能需要倒退到最开始的状态,甚至可能意味着工程的失败。为了提 高软件系统开发的合理性和成功率,本转换系统采用了螺旋式增量开发的方式。 螺旋式增量开发过程就像人们对事物的认知过程一样是循环上升的。在软件系 统开发过程中的每一次循环,都是对问题更进一步的认识和离既定要求更进一步 的接近。 a d a 8 3 9 5 转换系统的开发阶段包括:总体分析; 概要设计;体系 结构原型的实现;细化需求分析:详细设计: 编码实现;测试评估: 提交。其中,从到是开发过程中反复循环的螺旋式增量开发过程。 在进行螺旋式增量开发之前,我们进行了总体分析概要设计和体系结构原 型的实现。在这个过程中我们最大的收获是通过广泛的分析和试验,明确了不 兼容的上下文相关性这个最重要的原则,确定了按照构造编译器的方法来实现转 换系统。另外我们还初步提出了一部分不兼容的检查和转换的设想,并实现了整 个转换系统的一个简单原型。这为后续的螺旋式增量开发打下了基础。 在螺旋式增量的开发过程中细化需求分析和测试评估直接关系到详细设计 和编码实现的质量,是两个较为关键的步骤。 细化需求分析是在对a c g 和a d a 8 3 及a d a 9 5 语言机制1 9 - - 1 3 的理解的基础上, 通过对例程( 包括根据不兼容原理编写的例程和a c g 提供的例程) 进行试验, 手工验证修改方案的可行性和确定不兼容出现的判定条件。 测试评估阶段是捡验设计方案是否合理和系统性能指标是否达到的过程。对 于在分析阶段给出的例程一般都能按照要求得到预期的检查和转换的结果。但 这并不意味着对语言里所有可能出现的情况都考虑到了,实际程序中可能会出现 一些意想不到的情况,因此,需要更完全的测试。系统的最终测试采用的是 a c v c l 1 l 测试集的a 集和c 集。 前面提到a d a 8 3 是一个不允许有子集的语言。而a c v c ( a d ac o m p i l e r v a l i d a t i o nc a p a b i l i t y ) 是用来测试一个a d a 的编译器是否符合a d a 语言标准。它 是以测试程序集合、辅助处理测试过程的支持程序集组成。只要通过了它的针对 语言核心的测试,就是标准的a d a 语言。版本号为1 1 l 的a c v c 是针对a d a 8 3 语言标准的测试集版本。显然根据不兼容性报告,一部分a c v c l 1 1 中的程序无 法通过a d a 9 5 的编译器的编译或编译后运行得不到和原来一致的结果。由于a c v c 是针对a d a 语言完备性的测试则实际出现不兼容的情况种类和可能性都要比在 a d a 8 3 9 5 转换系统后端设计与实现 普通程序设计中要高。因此,对于a r i a 8 3 9 5 转换系统,a c v c l 1 1 测试集的测试 是一个很好的标准。实际上我们也通过测试发现了一些没有出现过的情况和许 多对语言及不兼容理解不透彻的地方,并在对新情况的分析的基础上对a c g 进 行了增补和扩充及时的重新进行了分析和设计。 用螺旋式增量开发方法在该系统中的应用使我们较好的解决了如下问题: 清楚的认识并解决一个问题需要一个过程。对于每一条不兼容原理及其 相关的语言机制的完全理解,需要参考标准和手册并结合实践。充分利 用每次循环的测试和评估来提高自己对问题的认识程度,在此基础上才 能最终设计出好的检查方案和修改方案。 将原本复杂的问题分解成若干个小问题进行处理。基于不兼容报告,我 们可以按照问题的难易程度来划分问题。可以将几个相似的不兼容条款 组成一组寻找一个共同的解决方案,也可以将一个复杂的不兼容条款分 成几次来解决。在做适当的分割后,问题往往比较单一,使得容易理解 和设计出适当的解决方案也使得程序设计逻辑相对简单,测试的针对 性也较强。 充分把握项目的进度。只有在开发过程中获得足够的反馈信息,软件开 发人员才能够充分的把握开发的进度,对系统达到既定的性能指标有足 够的信心,才能合理的将工作量分配到各个开发阶段中,充分保证系统 开发质量。 2 4 系统的目标环境和实现环境 目标环境就是开发所针对的环境,a d a 8 3 9 5 转换系统的开发所针对的a r i a 8 3 的源程序是基于a c t i v a d af o rw i n d o w s n tv e r s i o n5 5 1 9 1 ,转换后的a d a 9 5 源程序 则基于o b j e c t a d a 丘”w 协d o w s 7 1 2 。 系统的开发环境主要是0 b j e e t a d a f o rw i n d o w s7 1 2 。在开发中,我们还使用 了由西安电子科技大学软件工程研究所研制的“x d a 9 5 c l e x & x d a 9 5 y a c c ” 【”】。它的特点是: 1 属于类l e x y a c c 工具系列,但是基于a d a 9 5 环境: 2 支持面向对象程序设计; 3 支持对汉字输入分析的自动生成。 该工具在系统前端做为不兼容检查系统词法分析器和语法分析器构造的主要 工具,在后端做为形式化的数据字典信息输入的构造工具。 第二章a d a 8 3 9 5 转换系统的整体设计 2 5 论文的主要工作 9 由于a d a 8 3 9 5 转换系统是一个比较复杂的软件,整个工作是与课题组其他成 员共同完成的。 合作完成的工作包括: 1 分析a d a 8 3 和a d a 9 5 的语言机制和不兼容性,并对不兼容报告( a c g ) 进行细化和扩充。 2 共同设计系统的整体体系结构,以及前端和后端的数据传递方式和信息组 织形式。 3 分析测试中出现的新问题,评估不兼容检查和转换策略,修改后使其达到 或接近期望的性能指标。 独立完成的工作包括: 1 设计后端自动转换子系统的体系结构。 2 设计不兼容自动转换策略和系统运行报告,基于信息分离的思想,设计和 实现映射规则字典和信息模板字典。 3 分析系统各模块的功能选择合适的语言机制和语言结构编程实现。 4 针对a c v c 的特点,设计批处理的测试方式,并负责系统的阶段测试和 整体测试。 独立完成的工作,在从第三章开始的各章节中详细讨论。 1 0 a d a 8 3 d 5 转换系统后端设计与实现 第三章转换系统的后端分析与设计 3 1 不兼容的扩展分析 a c g 中的不兼容条款对不兼容的检查和转换工作起着指导作用。在实现中, 我们也保留了“a c g i ”的不兼容编号方式。但如果直接作为本系统开发的基础, 它还存在不足之处。首先,a c g 描述的是关于不兼容的概括性的基本原则,着重 于原理的描述,而不是细节的分析。其次,a c g 是针对a d a 8 3 和a d a 9 5 语言标 准的不是针对某种具体的编译器的实现,因此有些地方无法提出确切的可实施 的方案。基于以上两点原因我们在设计实现方案前,需要对a c g 做进一步的 扩展分析。针对a c g 中的不兼容条款进行的扩展分析主要有下面两种。 1 细化不兼容条款。 在a c g 中,有的不兼容条款没有提供不兼容的具体出现情况:有的不兼容条 款所给出的出现情况并不完全。下面分别以一条不兼容条款为例来说明对它们的 扩充情况。 例如a c g 3 2 不兼容产生的原因是因为类属实例化时的参数处理顺序不同引 起的。a d a 8 3 是先处理显式提供的参数,后处理缺省的参数,而a d a 9 5 并不区别 对待这两类参数。这条不兼容条款只是说明了这一事实,没有提供它在语言中的 具体出现情况。因此我们为这一条款增加了具体出现情况的描述,并提供类属参 数值确定和参数处理顺序有关的类属实例化例子。 不兼容条款a c g 0 5 则既包括向上一致不兼容,又包括向上不一致的不兼容。 条款提供了该不兼容在语言中出现的三种情况:1 ) 用c h 耻a c t e r 类型做数组的下 标;2 ) c h a r a c t e r 类型的变量做情况语句的判别表达式:3 ) c h a r a c t e r 类型的l a s t 属性的引用。根据测试,我们发现这并不能完全概括该条款的不兼容出现情况 另外有三种情况也应该被归类为本条不兼容。它们是:4 ) 用c h 盯a c t e r 类型作为 f o r 循环体的叠代取值范围:5 ) 引用c h a r a c t e r 的属性v a i 时提供了越界的值。6 ) 在类属中引用了c h a r a c t e r 的v a l 、l a s t 属性。对于后面两种不兼容,因为涉及到 类属实例化以及程序的动态检查,所以在静态检查中是无法确定的,只能为用户 提出可能出现不兼容的警告。这对用户也是很重要的,因为不能在出现不兼容时, 仍然盲目的给用户提供一个成功转换为兼容源程序的报告。 对于类似a c g 0 5 的不兼容条款在a c g 中还有一些,对这一类的不兼容,我 们先将已列出的情况排列为子不兼容然后在原来的基础上扩充子不兼容的数 目,尽量达到对不兼容出现情况的完整覆盖。 第三章转换系统的后端分析与设计 2 结合具体的编译环境将原来a c g 中无法具体的地方具体化。 转换系统所针对的a d a 8 3 和a d a 9 5 的编译环境是特定的这在前面已经说明。 由于涉及到具体的编译器实现中对语言机制的实现和算法的采用会有不同,因此 我们可以对a c g 中提到的一些无法具体化的条款具体化,对一些条款中和语言 实际情况不符的情况进行局部修订。 例如a c g l 6 不兼容出现原因是对于从实数强制转换到整数的取整算法的不 确定。a d a 8 3 语言标准并没有确定两个整数的中间值应该向那个方向取整,而是 将它留给了编译器实现者自己定义。为了提高代码的可移植性a r i a 9 5 语言标准 将取整算法统一为向远离0 的方向取整l 。转换系统针对的a d a 8 3 编译器采取的 取整策略恰好就是这一算法,因此这条不兼容可以暂时看做是兼容的。 还有一部分不兼容必须要进行局部的修订。如在a c g 3 9 中,不兼容产生的原 因是a d a 9 5 在系统程序包t e x ti o 中增加了新的子过程、类属和子类型。这些标 识符在a d a 8 3 的t e x ti o 中是没有的,因此有可能和a d a 8 3 应用程序中使用的一 些标识符冲突。新增的标识符中有一个判断文件是否打开的过程i s ,该过_open 程在a c t i v a d a 中己提供,并且与a d a 9 5 所规定的功能相同。再如不兼容a c 0 2 7 , a d a 9 5 对原来a d a 8 3 提供的一些编用做了一些调整,一部分编用被取消,一部分 编用的名字被新名字所替换。其中原有的编用名“i n t e r f a c e ”和“s h a r e d ”分别被 “i m p o r t ”和“a t o m i c ”代替。但实际针对我们所使用的目标环境,1 日名字和新 名字是通用的。 对于这些和具体的编译器实现有关的不兼容,要根据目标环境来明确处理的 方式,当然,同时也需要考虑到目标环境改变和对系统做功能性扩充时,处理这 些问题的策略。 3 2 后端体系结构 后端的体系结构与越来越关注中间表示结构的现代编译器的结构i i 6 l 基本一 致,a d a 8 3 9 5 转换系统的中间表示也是一个生命期贯穿整个系统的结构。在前端 检查子系统不断的将收集到的信息添加到中间表示中,后端的自动转换、报告生 成和a c l a 9 5 源程序的输出这些一连串的功能都是以中间表示为基础的多个应用操 作集。其体系结构如图3 1 。图中的粗箭头表示控制流细箭头表示数据的读写 流向关系。 图中下方的数据对象层就是中间表示,它有两类对象组成:不兼容表对象和 源程序表示对象。这两类对象分别将不兼容记录表和程序行记录表封装起来,为 上层的应用过程提供数据操作的接口。在应用过程层,分别是后端的自动转换、 源代码输出和报告生成三个功能模块。其中,自动转换和报告生成由针对各个不 旦a d a 8 3 9 5 转换系统后端设计与实现 自动转换规则报告模扳 图3 i 后端转换体系结构 兼容条款的处理过程集和一个调度过程组成。根据不兼容标识,调度过程将分派 不同的处理过程对信息进行处理。该处理过程则根据信息字典中的配置信息和不 兼容记录中的信息,按照功能的需求,通过接口访问源程序表示中的源程序数据。 在自动转换过程中用到的自动转换规则字典和在报告生成过程中用到的报告摸板 字典都是在系统预处理时读入系统的。 3 3 软件系统的信息分离 好的软件应该具有较大的灵活性和良好的适应性,一种有效的方法是尽可能 将数据从程序中分离出来,以使得可以通过改变数据而不是修改程序来达到改变 软件功能的目的。软件系统中可以与程序分离的数据主要有两大类,一类是程序 处理的对象,另一类是程序的控制信息。 作为程序处理对象的数据是多样化的,可以是整型、实型或字符串类型这些 基本的数据类型,也可以是较复杂的组合数据类型如数组、记录以及在此基础 上构造的数、图、表等。 控制信息主要用于控制或部分取代程序的行为,可以包括指导程序行为的规 则和提供系统的配置等多种信息。控制信息以数据形式从程序中分离出来,可以 将软件设计成信息驱动的状态机模型,从而为软件开发人员或用户按照实际需求 定制软件系统提供有效途径,使得软件系统具有更广的适应面和更长的生命期。 第三章转换系统的后端分析与设计 后端转换系统的设计中,除了访问中间信息结构外,还需要利用到自动转换 规则字典和报告模板字典提供的数据信息。自动转换规则字典为自动转换过程提 供必须的数据信息和控制信息;报告模板字典则为信息的输出提供良好的格式。 信息字典的设计过程是:收集和分析系统中的有用信息提取其中需要具有改变 能力但在一次系统运行期间又相对不变的部分,用形式化的方法设计信息的组织 形式和存储方法。同时为了支持字典内容的可修改性,这些信息字典最好能够有 较好的可读性。下面分别介绍这两种信息字典的设计过程。 3 4 从系统报告中分离模板信息 模板的开发方法,1 是基于软件重用技术和事物相似性原理的。模板是从一组 类似的事物( 如系统软件,函数) 中抽象出一种框架型的结构,任何与其类似 的事物都可以是该模板派生的实例。因此,构成计算机应用系统的各种粒度的集 成元素( 如系统,设备资源应用,功能块) 的设计方案、模型、实现代码、 有关文档等均可以从中抽象出一定的模板并存放于模板库中被重用。 a d a 8 3 9 5 转换系统的设计目的是辅助实现将已有的系统从a d a 8 3 平台向 a d a 9 5 平台的升级,因此应该允许用户对报告的内容和自动转换的程度进行适当 的控制,而且语言不兼容性本身的特性也决定了不可能实现全自动的转换而只 能是自动和手动相结合。基于以上原因在对不兼容进行检查和自动转换的同时 为用户提供详略得当的报告也应该是本系统的重要目标之一。在设计中通过对系 统报告的形式化描述,提取出报告的模板形式,以达到重用的效果。 3 4 1 系统中报告的设计 为了从不同层次为用户提供合适的报告,转换系统为用户提供三类报告:i ) 不兼容概要报告;2 ) 不兼容详细报告;3 ) 映射源程序中的标注。 通过查阅不兼容概要报告用户可以总体上了解转换系统从一组相互有关联 的a d a 8 3 源程序中检查出的不兼容和对这些不兼容出现的自动转换情况。因此, 该报告给出的信息内容包括:o 转换前a d a 8 3 源文件的名字;转换后的a d a 9 5 源文件的名字;详细不兼容报告文件的名字;简洁的不兼容信息,包括: 不兼容的出现位置、不兼容编号、转换后的位置以及转换状态描述。转换状态描 述是用“己修改”、“已建议修改”、“警告”来标识。 通过查阅不兼容详细报告,用户可以详细了解系统检查出的每个不兼容出现 的细节和系统自动转换的细节。因此,该报告给出的信息包括:不兼容位置 信息:不兼容的简单说明:不兼容的处理策略。其中,不兼容位置信息包 1 4 a d a 8 3 9 5 转换系统后端设计与实现 括:不兼容的出现位置、不兼容编号和转换后的相关位置。不兼容的简单说明则 是结合程序中出现的具体标识符或语言结构来说明不兼容出现的原因。不兼容的 处理策略报告则是由对不兼容的处理方法决定,根据不兼容的出现特性和用户配 置的不同,给出三种格式:1 ) 自动转换。在自动转换过程中,源程序文件中的 一段源代码被另一段代码代替,处理策略报告给出转换前后的源程序代码段比 较。2 ) 增行插入。在自动转换过程中,源程序文件的代码没有被替换,而是通 过插入操作增加了一些语句,处理策略报告给出增加的语句行的代码。3 ) 警告。 在自动转换过程中没有对源程序代码做转换操作,而只是提出了对某些代码段 的不兼容警告。处理策略报告给出相关的说明。 映射源程序中的标注,是在映射源程序即转换后的a d a 9 5 源程序中,与不兼 容相关的行均用“”来标识,并附上简单的说明。简单说明的内容包括不兼 容编号和转换状态描述。这里的转换状态描述是针对具体的每一行的处理情况 的。如:对不兼容出现的行描述为“修改”、“警告”、“该行提前”等;对修改的 行描述为“己修改”、“已建议修改”等。用户可以通过查阅映射源程序,搜索标 识“j ,对不兼容的检查和转换进行人工校对或进一步的手动修改。映射源程 序中的标注是在程序的自动转换过程中完成,而不是在报告生成时,而且其形式 只是利用a d a 语言的注释来简单说明。源程序中的标注为查找和理解不兼容以 及手动修改提供了方便。熟悉不兼容的用户可以从中获取足够且直观的信息,因 此可以将它也看作是系统报告的一种形式。 下面以有不兼容出现的两个具有u s e w i t h 关系的a d a 8 3 源程序的转换来说明 报告的形式。两个文件的名字分别为p k g a d a 和t e s t a d a 。文件内容如下( 为了方 便对照,此处增加了行号,而在实际的源代码中是没有行号的。) : 文件:p k g ;a d a l p a c k a g e p k g i s 2 c r i t e r i o n :i n t e g e r ; 3 w v :i n t e g e r ; 4 p r o c e d u r eg e n e ; 5 t ) r p eti sa r r a y ( i n t e g e rr a n g e1 1 0 ) o f i n t e g e r ; 6 e n d p k g ; 7 p a c k a g eb o d yp k g i s 8 p r o c e d u r eg e n ei s 9 b e g i n 1 0 v v v := t q m s e s i z e ; 1 1 e n d ; 1 2 b e g i n 第三章转换系统的后端分析与设计 1 3c r i t e r i o n :21 0 ; 1 4e n d p k g ; 文件:t e s t a d a l w i t h p k 苗r i s e p k g ; 2w i t l lt e x t _ i o ;u s et e x l i o ; 3 p r o c e d u r et e s ti s 4 u n t i l :i n t e g e r := 1 0 ; 5 哆p c f x 3 3 3i sd e l t a0 0 1 r a n g e0 0 。9 9 : 6a 01 :c o n s t a n t := f x 3 3 3 l a r g e ; 7 b e g i n 8 i f ( c r i t e r i o n = u n t i l ) t h e n 9 p u t ( ”s u c c e s s ! ”) : 1 0e l s e 1l p u t ( ”f a i l e d ! ”) ; 1 2 e n d i f ; 1 3 e n d t e s t ; 这两个程序中共有三类不兼容,有四处不兼容的出现。通过a d a 8 3 9 5 转换系 统的转换后,应该获得以上提到的三类报告。 首先来看不兼容概要报告。其内容如下: 源文件:p k g a d a 修改后的文件:9 5p k g a d a 详细报告文件:p k ga d a r p t 第1 0 行:a c g 0 3 不兼容,输出为第l o ,l l 行。已建议修改。 源文件:t e s t a d a 修改后的文件:9 5t e s t a d a 详细报告文件:t e s ta d a r p t 第4 行:a c g 0 2 不兼容,输出为第4 ,5 行。已修改。 第6 行:a c g l 0 不兼容,输出为第7 行。警告。 第8 行:a c g 0 2 不兼容,输出为第9 ,1 0 行。已修改。 针对每个a d a 9 3 源文件的不兼容详细报告被分别放在不同的文件中,在此例 中分别放在p k g _ a d a r p t 和t e s ta d a r _ p t 中,它们的内容如下: 文件p k oa d a r p t 的内容: 1 6 a d a 8 3 9 5 转换系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人员外派合同范例
- 住房装潢合同范例
- 区块链在智能电网中的应用与安全性探讨
- 俩兄弟合伙开店合同范例
- 供电企业合同范例
- 与物业合作签合同范例
- 个体招聘合同范例
- 修补雨棚天沟合同范例
- 乡里地皮出售合同范例
- 区块链与供应链金融深度融合的奥秘
- 《中华传统文化》第11课戏曲-教学教案
- 机械基础章节练习题集题库带答案
- 塔式起重机大臂减臂使用的受力分析和计算
- 三年高考高考生物试题分项版解析 专题01 组成细胞的分子
- 电力供应与使用条例考试卷及答案
- 生物大分子晶体学基础(I)2016
- 申请增值电信业务经营许可证材料范本说明书
- 卒中与卒中后抑郁分析
- 烟草商业企业卷烟物流配送中心服务规范
- 机械毕业设计(论文)带式输送机传动滚筒设计【全套图纸】
- 关于电商平台对入驻经营者的审核要求或规范文件
评论
0/150
提交评论