论文部分内容阅读
现在,计算机软件系统逐渐变得越来越复杂,本身的开发难度更是在不断增加。传统的开发方法主要依靠手工方式,效率低下、质量欠佳、正确性难以保证。泛型程序设计(Generic Programming, GP)已经变成程序设计中的另一个主要技术。目的是将一类软件表示为互操作性更强、适用的范围更广的泛型表示形式,具体的软件可通过对泛型程序的参数实例化而获得,且不降低运行效率。首先,本课题介绍了泛型程序设计以及STL的研究现状及发展,还介绍了STL的基本组件,讨论了泛型程序设计的作用以及在程序设计过程中还存在的不足之处,简单介绍了泛型程序设计与C++STL、C++模板的关系,详细介绍了形式化方法的研究内容及使用形式化方法进行程序正确性验证的重要性。其次,根据形式语义学理论和相关推理规则,选择了STL中两类算法的具体实例,即改变序列内容中的互换元素算法、一般数值计算中的函数数值计算算法,进行程序正确性的验证和证明。通过公理语义的方法,进行详细的推理验证,本文给出了具体的验证推理过程,并且得出程序正确性的验证结果。使程序的演算理论更加一般化,从而有可能在新的形式化方法方面取得一些实质性的进展。再次,本课题中还研究并总结出了泛型程序设计中的四种技术:模板偏特化、常整数映射为型别、型别对型别的映射以及一种组件泛化仿函数。其中,模板偏特化可以特化template,并非针对特定的、固定集合的参数、而是针对“吻合某个式样的一群参数”;常整数映射为型别允许在编译期以数值(特别是boolean)作为分派的取决因素;型别对型别的映射是利用函数重载来取代C++缺乏的一个特性:函数模板偏特化;编译期间侦测可转换性和继承性是判断任意两型别是否可以互相转换,或者是否为相同型别,或是否有继承关系。并且对这四种技术的程序代码作了分析和研究,实现了从一个接口向另一个接口的转换,并且转换结果是可靠的,使程序在可复用性方面有所提高。