分享

Ada语言可重用性技术方法研究

 昵称l93AX 2015-04-22

Ada属于一种强类型通用程序设计语言,它比较适用于大型的复杂软件系统,尤其是实时和嵌入式系统。现在我国很多卫星型号软件都采用Ada语言 进行开发。由于卫星使用的芯片代码区容量有限,为了实现更多的功能,提高卫星的使用率,对于代码的复用显得尤为重要。研究Ada语言的可重用性技术方法很 有必要,通过对Ada语言重用性技术方法研究以及其实际应用介绍,能够更好的帮助软件开发人员以尽量少的代码来实现尽量多功能。 
  关键词:卫星;Ada语言;可重用性;类属单元;C++绑定 
  自从问世以来,Ada得到了世界各国的广泛重视,已相继成为美国、欧洲主要西方国家的军用标准和国家标准,我国也于1992年制定为了国家标 准语言(GJB1383-92)。可以把Ada语言视为现代程序设计语言的一个里程碑和顶峰,Ada语言在很多方面的评估上都要优于其他编程语言,如对风 险程度的评估、生存期费用的评估、可维护性以及可扩展性的评估、可用性和可靠性的评估、效率的评估、能力的评估等六个方面,它的评分时优于现在比较常用的 C、C++、FORTRAN、PASCAL等主要流行编程语言。 
  Ada语言的特点主要有:可读性好、允许分离编译、支持抽象和信息隐藏、促进软件的重用、实施强类型机制、提供多任务功能、具有异常处理能力 等。因Ada在上述方面具有明显优点,所以它是非常适于大型和实时嵌入式系统开发和维护的通用高级语言。目前我国卫星型号的软件广泛应用Ada语言开发。 
  1 Ada 语言的可重用性方法 
  1.1 软件可重用性 
  软件的可重用性一直都是软件工程中人们所追求的目标之一。可重用性不但有助于提高软件的质量及其开发效率、而且有助于降低软件的开发费用和维 护费用。从另一个方面上理解,软件工程的可重用性还应该包括多个方面,比如说:应用项目的重用性,规格说明的重用性,设计的重用性,概念和方法的重 用性等等。总的来说,层次越高的重用,也就会带来的越大效益。 
  模板元的编程是一种编程方式,在编译期通过模板实例化进行计算。早在1994 年,由Erwin Unruh 在一次C++标准委员会的会议上提出的。因为其编译器执行的独特的优点,模板元编程很快就引起了大家广泛兴趣。此后,模板元编程得到了快速的发展, 并且在软件开发过程中得到了成功的应用。到目前为止,很多种编程语言都对模板元编程提供了很好地支持。 
  然而在传统的编程过程中,每个程序都要经过编译、链接以及执行这三个必不可少的步骤。编译过程做的只是将代码翻译成机器能识别的机器语言。一般来说,在编译期能做的还是很少的,编程的任务大都在运行期执行。与传统编程相比较而言,模板元编程它具有如下2个特点: 
  1)在编译期进行编程是模板元编程最显著的特点 
  通过在编译期进行编程,这样的话很多在运行期才能进行的任务都可以在编译期来完成,这样做的好处就是能够在性能或者接口简单化方面带来很多好处。 
  2)以更少的开销提供更多的功能 
  通过对编码的“再生”,能够提供比源代码更多的功能。由于在编译期承担了运行的一些执行期的任务,这就意味着运行期的开销就会减少很多。 
  模板元编程在软件开发中的作用也是十分明显的,在软件开发中有着广泛的应用前景。 
  1.2 Ada语言类属单元 
  代码重用是多年来软件开发一直强调的重点,也是程序员们的一个希望。但在 C 这些语言中,由于语言的先天不足,代码重用是有限的。Ada 里提供了类属单元(Generic unit)的功能(和 C++的模板 template差不多),使得有可能创建更为通用的子程序或程序包。 
  类属单元是一个程序单元,但它只是一个样板,不能直接使用,只有通过取例才能使用。类属单元体现了类型抽象的一种机制,这种机制支持了软件的 可重用性概念。类属单元是一种参数化的模板,它的主要用途是可以提高程序开发的生产效率,可以避免源代码的重复,可以提高程序的可维护性、可读性以及有效 性。 
  一个类属单元可以是程序包或子程序,允许执行的运算不依赖特定数据类型。 

 1.3 Ada95中对C++模板的绑定 
  C++是当今公认的最为流行的面向对象编程设计语言之一,拥有着大量的、成熟的可重用类库资源。但Ada95标准中仅仅定义了针对C语言、 FORTRAN语言和COBOL语言的过程级绑定接口。所以,研究Ada95与C++这两种面向对象语言的在类层次上的绑定生成技术,能够对重用C++的 资源具有非常重要意义。 
  Ada95和C++都支持参数的多态机制。C++提供的模板以描述具有相似特性的一组为一个类,与之对应的是在Ada95中的类属单元程序 包。模板与类属的主要功能是将相似或重复定义交给编译器来完成。软件设计人员仅在程序设计时定义单一的模板或类属,以不同的类型参数来指定区别不同的实 例。在编译阶段,编译器会通过用实例的类型实参替换模板或类属定义中的形参,由模板或类属来生成具体的实例。因此,模板和类属本身其实只是一个类似于宏定 义的框架,并不具有任何可执行的代码,它的具体可执行的实例代码都是在编译时产生的。因此,模板和类属均属于基于源代码、而不是基于目标代码的重用。 
  Ada95-C++绑定,实质上来说是对已有二进制代码的重用,通过Ada95编译器提供给使用者的编用指令和C++二进制代码形式的内部链 接来实现跨语言环境的调用。在重用C++资源时,对模板的绑定不可避免。C++模板属于一种源代码重用机制,它在遇到类型实参进行具体实例化之前,编译器 对模板不产生实际可用的目标代码,然而Ada95中类属绑定程序包的体部分需要将方法以及属性的实现链接到C++的目标代码上。因此,在C++模板实例化 之前不会生成直接可用的类属程序包。如果要生成直接可用的绑定程序包,必须使得模板实例化,然后再进行编译,产生一个含有可用的二进制代码的目标代码文 件。 
  2 结论 
  在软件开发过程当中,编程的可重用性应用可以给开发者省去很多写重复代码的工作,减少代码量,也可以给软件的可读性、易维护性带来很大的改 善。针对Ada语言的可重用性技术方法做的学习和研究很有必要,对2种可重用性方法进行的研究,包括类属单元的应用以及Ada95如何与C++模板的绑 定,并对如何通过绑定利用C++的可重用资源做了简要介绍,对相关开发人员提供理论技术支持。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多