付明柏
(昭通学院计算机科学系,云南 昭通 657000)
Turbo C产品主要出自美国的Borland公司,这个公司主要从事专门的软件开发与研制。近年来此公司不断推出了 Turbo系列软件,比如 Turbo Prolog、Turbo Pascal和Turbo BASIC等。Turbo C就是由Borland所研制开发的C语言开发软件工具,其具体集成了链接、调试、程序编辑等许多功能。其在DOS的环境下是一种被广泛使用的应用程序开发工具,此环境下,许多种应用软件都是通过Turbo C进行开发的。而随着世界计算机和软件的不断发展,电脑操作系统从过去的DOS时代已经发展到现代的Windows系统。许多的应用软件已不需要Turbo C进行开发,但之前使用Turbo C进行开发的软件仍具有一定的价值,或者被许多公司或个人使用,这就需要一种软件复用技术,使其能在windows中继续使用。下面主要介绍Turbo C的软件复用技术。
在计算机时代,软件复用技术非常重要,是指在计算机软件开发和应用中为了避免发生重复的劳动而设计的解决方案,软件复用技术的出发点就是为了使应用系统的研制和开发不必再进行“从零开始”的途径,而是在之前工作基础上,利用之前在应用软件或者系统开发和应用中所积累的经验和知识,使其中的测试、编码、分析等许多重复劳动不再发生,从而大大提升应用软件的开发效率;再者,通过对之前良好的质量高的软件开发成果和经验,从而避免可能会出现的错误,使新开发的软件质量大大提升。到目前为止,软件复用技术已在各项软件或者系统中得到了最为广泛的应用,其中效益最为显著的是对软件生命周期中主要阶段的软件复用,其复用技术可以根据周期阶段的不同划分为如下几类:第一,代码的复用。代码的复用主要包括源代码和目标代码的复用,主要是依靠构件库来进行源程序复用,其所进行的目标代码复用,级别也非常低,历史也非常悠久。第二,设计的复用。设计复用相对于源程序复用,其级别更高,所以,设计复用所受现实条件的影响相对较小,以致可复用构建能被复用的机会更大,发生的错误或者修改则更少。第三,分析复用。分析复用相比于设计复用又表现得更为高级,进行复用的分析构件主要是对于问题域中的某些问题或者事件进行抽象的更为具体的解析方法,所受到的技术条件影响相对较少,因此,可以进行复用的机会相对来说比较大。第四,信息测试复用。信息测试复用主要是指测试过程中信息的复用和测试用例中信息的复用。测试用例复用主要是将一个软件的测试用例在新的软件测试中使用或在软件修改后在新一轮测试中使用。测试过程信息的复用是在测试过程中通过软件工具自动地记录测试的过程信息,包括测试的操作输入参数、测试用例及运行环境等一切信息。此种级别的复用从信息的形态看大体处于与程序代码相当的级别。
Turbo的典型编码器结构图如图1所示:其主要是由两种反馈的编码器(我们经常称其为成员编码器)通过它们之间的交织器I进行连接而组成的。如果可以的话,这两个成员编码器所进行输出的序列在进行删余阵之后,便产生出一些码率不同的码。比如,对那些生成矩阵即:g=[g1,g2]卷积码在进行编码之后,一旦进行了删余阵,便可以得到一个码率等于二分之一的编码序列输出;若对其不进行有效的删余,所能产生的码率为三分之一。因此,可以知道,在通常情况下Turbo码的编码器一般是一种RSC编码器。主要是因为递归编码器能对码的比特误码率进行有效的改善。
图1 Tur bo码编码原理图
正是因为Turbo C的编码原理往往只存在于doc环境中,其编程一般都是结构化的编程模式,所面向的大多是具体的技术对象,而随着现代软件技术的发展,Turbo C的软件重用技术将得到有效的推进,主要表现在其编码器的复用上,下面将主要介绍Turbo C软件的编解码器的复用技术。
正是因为卷积码在编码的过程中,其实是一个比较有限的状态转移过程。因此,其复用技术的设计也是一个状态转移过程,具体如图2所示:首先设在t时刻Turbo C编码器从St-1状态转移到St状态,所得到的相应输入即ut=k,其中k∈{0,1},并且其输出校验位即xt,xt和ut共同承担传输义务,将信号传输至接收端,Turbo C的重用就是根据接收信号yt来尽可能恢复ut。
图2 编码网格中Tur bo C的恢复
正是因为ut有着跟子相对应的状态转移,即:
其中y1N即——接收序列[y1…,yN]。所以,只要能得出所有的p(St-1=m',St=m|y1N)便能通过ut=k的对应法则进行状态转移概率求和,以致得出信息比特的后验概率。即:
对于上面的式子,可以进一步简化为:
上面的简化式子的全过程所应用的是马尔可夫信源的性质,即:从时刻T开始,其状态只和St以及其之后的输入和输出有关联,而跟时刻T之前的情况或者状态并没有多大关系,即:得出了时刻T的状态,其后面的状态转移将再不会根据y1t和时刻T-1的情况或者状态而变化。其中式(3)可以分为三个步骤进行,如:
其中,βt(m)和αt(m)可以用递归方法求出:
通常,编码器的初始状态已知,对于编码器1,帧结束时网络终止,因此其终了状态也是已知的,有:
对于编码器2,由于网格不终止,可以认为它的终了状态是平均分布的。另外,有:
式中 ut(m',m)为信息符号,xt(m',m)为对应于状态转移(m',m)的编码输出符号。上式中p(ut)为信息符号的先验概率,而条件概率p(yt|xt)可由信道模型得到。
以上复用技术即复用算法总结起来是按照以下的步骤进行实现的:首先,对任何一个时刻t,都依据相应的解调软件对输出y以及信息符号u进行(7)的计算;其次,根据式(5)和(6)进行递归计算从而得出 βt(m)、αt(m)·;再次,根据式(3)从而计算得出p(St-1=m',St=m,y1N)——联合概率;接着,依据式(1)得出p(ut=k|y1N);最后,依据以上的结果得出任一信息符号所对应的对数似然比,即
其中式子(2)中的分母p(y1N)一般会在最后一个步骤中被约掉,所以不应得出它的具体结果数值。同时,在实际应用中,以上复用技术根据其算法的复杂性,往往显得比较繁琐和沉重。
Turbo C复用技术将得到充分的应用,而面向具体的应用程序,其面向应用程序的具体方法往往通过使用对象进行的,其中由于消息概念、聚合、封装、继承、类的多态性,从而促使Turbo C复用技术逐渐构成了一个有效的便捷的系统软件开发措施。因此,Turbo C将会广泛地面向具体的应用程序,从而发展成一种模型的构建。首先,Turbo C将会有效地对具体应用对象的原则和概念进行对应,支持各种应用软件的复用,如:封装、抽象、类和对象、继承、特殊结构、积聚等等,将这些分散的应用程序环节作为一个整体和部分的关系进行架构,从而对其进行粒径和多态性的控制。最终实现软件复用程序化的效果。Turbo C的复用技术所具有的一个重要优势是其能实现生命周期概念,使其符号、术语、原则实现高度的一致性。如此一致性将会使Turbo C环境下各种不同应用程序在不同环境产生不同的演化,同时又不改变其系统的运行规则。总之,Turbo C的复用技术面向应用程序或者应用软件的特点,不但能得到各级的支持,同时也可以实现各个级别或者种类的复用,最终实现高效、统一的应用软件的复用。
再者,Turbo C的复用技术所表现的将会是一个“积木”组件模型,即:类。各种组件通过例、分析、设计、实施从而组成这个积木类,其中也包含着接口规范、子系统、属性类型。Turbo C的复用技术往往通过组件的形式去获取凝聚力,主要是因为其能提供一个比较稳定的公共接口。通过如此的重用软件体系结构以及可重用组件模型,将能有效地重复地应用已有的Turbo C资产池,从而不断地满足各类应用客户对象。Turbo C重用技术之所有能产生如此好的效果并得以广泛应用,最主要的一个原因就是其能有效满足各类客户的要求而实现其自身的价值。
综上所述,Turbo C软件复用技术的主要目的是为了解决各种软件危机,从而提升软件的开发效果以及升级Turbo C软件应用平台,是一种有效的应用比较广泛的软件开发方式,Turbo C的软件复用技术将促进软件行业的深入发展,使得未来大型网络分布式软件的开发成为可能。
[1]Berrou C,Glavieu x A,Thi timajshima P.Near shannon limiterror cor recting codin g and decoding:Turbo Codes[A].Proceedings of IEEE In ternational Conference on Comm. [C].Geneva,Switzerland,2011.1064 1070.
[2]Heegard C,Wicker S.Turbo Coding[M].Boston:Kluwer A-cademic Publi shers,2009.
[3]刘东华.Turbo码原理与设计[M].北京:电子工业出版社,2011.