付明柏
(昭通學(xué)院計(jì)算機(jī)科學(xué)系,云南 昭通 657000)
Turbo C產(chǎn)品主要出自美國的Borland公司,這個(gè)公司主要從事專門的軟件開發(fā)與研制。近年來此公司不斷推出了 Turbo系列軟件,比如 Turbo Prolog、Turbo Pascal和Turbo BASIC等。Turbo C就是由Borland所研制開發(fā)的C語言開發(fā)軟件工具,其具體集成了鏈接、調(diào)試、程序編輯等許多功能。其在DOS的環(huán)境下是一種被廣泛使用的應(yīng)用程序開發(fā)工具,此環(huán)境下,許多種應(yīng)用軟件都是通過Turbo C進(jìn)行開發(fā)的。而隨著世界計(jì)算機(jī)和軟件的不斷發(fā)展,電腦操作系統(tǒng)從過去的DOS時(shí)代已經(jīng)發(fā)展到現(xiàn)代的Windows系統(tǒng)。許多的應(yīng)用軟件已不需要Turbo C進(jìn)行開發(fā),但之前使用Turbo C進(jìn)行開發(fā)的軟件仍具有一定的價(jià)值,或者被許多公司或個(gè)人使用,這就需要一種軟件復(fù)用技術(shù),使其能在windows中繼續(xù)使用。下面主要介紹Turbo C的軟件復(fù)用技術(shù)。
在計(jì)算機(jī)時(shí)代,軟件復(fù)用技術(shù)非常重要,是指在計(jì)算機(jī)軟件開發(fā)和應(yīng)用中為了避免發(fā)生重復(fù)的勞動(dòng)而設(shè)計(jì)的解決方案,軟件復(fù)用技術(shù)的出發(fā)點(diǎn)就是為了使應(yīng)用系統(tǒng)的研制和開發(fā)不必再進(jìn)行“從零開始”的途徑,而是在之前工作基礎(chǔ)上,利用之前在應(yīng)用軟件或者系統(tǒng)開發(fā)和應(yīng)用中所積累的經(jīng)驗(yàn)和知識(shí),使其中的測(cè)試、編碼、分析等許多重復(fù)勞動(dòng)不再發(fā)生,從而大大提升應(yīng)用軟件的開發(fā)效率;再者,通過對(duì)之前良好的質(zhì)量高的軟件開發(fā)成果和經(jīng)驗(yàn),從而避免可能會(huì)出現(xiàn)的錯(cuò)誤,使新開發(fā)的軟件質(zhì)量大大提升。到目前為止,軟件復(fù)用技術(shù)已在各項(xiàng)軟件或者系統(tǒng)中得到了最為廣泛的應(yīng)用,其中效益最為顯著的是對(duì)軟件生命周期中主要階段的軟件復(fù)用,其復(fù)用技術(shù)可以根據(jù)周期階段的不同劃分為如下幾類:第一,代碼的復(fù)用。代碼的復(fù)用主要包括源代碼和目標(biāo)代碼的復(fù)用,主要是依靠構(gòu)件庫來進(jìn)行源程序復(fù)用,其所進(jìn)行的目標(biāo)代碼復(fù)用,級(jí)別也非常低,歷史也非常悠久。第二,設(shè)計(jì)的復(fù)用。設(shè)計(jì)復(fù)用相對(duì)于源程序復(fù)用,其級(jí)別更高,所以,設(shè)計(jì)復(fù)用所受現(xiàn)實(shí)條件的影響相對(duì)較小,以致可復(fù)用構(gòu)建能被復(fù)用的機(jī)會(huì)更大,發(fā)生的錯(cuò)誤或者修改則更少。第三,分析復(fù)用。分析復(fù)用相比于設(shè)計(jì)復(fù)用又表現(xiàn)得更為高級(jí),進(jìn)行復(fù)用的分析構(gòu)件主要是對(duì)于問題域中的某些問題或者事件進(jìn)行抽象的更為具體的解析方法,所受到的技術(shù)條件影響相對(duì)較少,因此,可以進(jìn)行復(fù)用的機(jī)會(huì)相對(duì)來說比較大。第四,信息測(cè)試復(fù)用。信息測(cè)試復(fù)用主要是指測(cè)試過程中信息的復(fù)用和測(cè)試用例中信息的復(fù)用。測(cè)試用例復(fù)用主要是將一個(gè)軟件的測(cè)試用例在新的軟件測(cè)試中使用或在軟件修改后在新一輪測(cè)試中使用。測(cè)試過程信息的復(fù)用是在測(cè)試過程中通過軟件工具自動(dòng)地記錄測(cè)試的過程信息,包括測(cè)試的操作輸入?yún)?shù)、測(cè)試用例及運(yùn)行環(huán)境等一切信息。此種級(jí)別的復(fù)用從信息的形態(tài)看大體處于與程序代碼相當(dāng)?shù)募?jí)別。
Turbo的典型編碼器結(jié)構(gòu)圖如圖1所示:其主要是由兩種反饋的編碼器(我們經(jīng)常稱其為成員編碼器)通過它們之間的交織器I進(jìn)行連接而組成的。如果可以的話,這兩個(gè)成員編碼器所進(jìn)行輸出的序列在進(jìn)行刪余陣之后,便產(chǎn)生出一些碼率不同的碼。比如,對(duì)那些生成矩陣即:g=[g1,g2]卷積碼在進(jìn)行編碼之后,一旦進(jìn)行了刪余陣,便可以得到一個(gè)碼率等于二分之一的編碼序列輸出;若對(duì)其不進(jìn)行有效的刪余,所能產(chǎn)生的碼率為三分之一。因此,可以知道,在通常情況下Turbo碼的編碼器一般是一種RSC編碼器。主要是因?yàn)檫f歸編碼器能對(duì)碼的比特誤碼率進(jìn)行有效的改善。
圖1 Tur bo碼編碼原理圖
正是因?yàn)門urbo C的編碼原理往往只存在于doc環(huán)境中,其編程一般都是結(jié)構(gòu)化的編程模式,所面向的大多是具體的技術(shù)對(duì)象,而隨著現(xiàn)代軟件技術(shù)的發(fā)展,Turbo C的軟件重用技術(shù)將得到有效的推進(jìn),主要表現(xiàn)在其編碼器的復(fù)用上,下面將主要介紹Turbo C軟件的編解碼器的復(fù)用技術(shù)。
正是因?yàn)榫矸e碼在編碼的過程中,其實(shí)是一個(gè)比較有限的狀態(tài)轉(zhuǎn)移過程。因此,其復(fù)用技術(shù)的設(shè)計(jì)也是一個(gè)狀態(tài)轉(zhuǎn)移過程,具體如圖2所示:首先設(shè)在t時(shí)刻Turbo C編碼器從St-1狀態(tài)轉(zhuǎn)移到St狀態(tài),所得到的相應(yīng)輸入即ut=k,其中k∈{0,1},并且其輸出校驗(yàn)位即xt,xt和ut共同承擔(dān)傳輸義務(wù),將信號(hào)傳輸至接收端,Turbo C的重用就是根據(jù)接收信號(hào)yt來盡可能恢復(fù)ut。
圖2 編碼網(wǎng)格中Tur bo C的恢復(fù)
正是因?yàn)閡t有著跟子相對(duì)應(yīng)的狀態(tài)轉(zhuǎn)移,即:
其中y1N即——接收序列[y1…,yN]。所以,只要能得出所有的p(St-1=m',St=m|y1N)便能通過ut=k的對(duì)應(yīng)法則進(jìn)行狀態(tài)轉(zhuǎn)移概率求和,以致得出信息比特的后驗(yàn)概率。即:
對(duì)于上面的式子,可以進(jìn)一步簡(jiǎn)化為:
上面的簡(jiǎn)化式子的全過程所應(yīng)用的是馬爾可夫信源的性質(zhì),即:從時(shí)刻T開始,其狀態(tài)只和St以及其之后的輸入和輸出有關(guān)聯(lián),而跟時(shí)刻T之前的情況或者狀態(tài)并沒有多大關(guān)系,即:得出了時(shí)刻T的狀態(tài),其后面的狀態(tài)轉(zhuǎn)移將再不會(huì)根據(jù)y1t和時(shí)刻T-1的情況或者狀態(tài)而變化。其中式(3)可以分為三個(gè)步驟進(jìn)行,如:
其中,βt(m)和αt(m)可以用遞歸方法求出:
通常,編碼器的初始狀態(tài)已知,對(duì)于編碼器1,幀結(jié)束時(shí)網(wǎng)絡(luò)終止,因此其終了狀態(tài)也是已知的,有:
對(duì)于編碼器2,由于網(wǎng)格不終止,可以認(rèn)為它的終了狀態(tài)是平均分布的。另外,有:
式中 ut(m',m)為信息符號(hào),xt(m',m)為對(duì)應(yīng)于狀態(tài)轉(zhuǎn)移(m',m)的編碼輸出符號(hào)。上式中p(ut)為信息符號(hào)的先驗(yàn)概率,而條件概率p(yt|xt)可由信道模型得到。
以上復(fù)用技術(shù)即復(fù)用算法總結(jié)起來是按照以下的步驟進(jìn)行實(shí)現(xiàn)的:首先,對(duì)任何一個(gè)時(shí)刻t,都依據(jù)相應(yīng)的解調(diào)軟件對(duì)輸出y以及信息符號(hào)u進(jìn)行(7)的計(jì)算;其次,根據(jù)式(5)和(6)進(jìn)行遞歸計(jì)算從而得出 βt(m)、αt(m)·;再次,根據(jù)式(3)從而計(jì)算得出p(St-1=m',St=m,y1N)——聯(lián)合概率;接著,依據(jù)式(1)得出p(ut=k|y1N);最后,依據(jù)以上的結(jié)果得出任一信息符號(hào)所對(duì)應(yīng)的對(duì)數(shù)似然比,即
其中式子(2)中的分母p(y1N)一般會(huì)在最后一個(gè)步驟中被約掉,所以不應(yīng)得出它的具體結(jié)果數(shù)值。同時(shí),在實(shí)際應(yīng)用中,以上復(fù)用技術(shù)根據(jù)其算法的復(fù)雜性,往往顯得比較繁瑣和沉重。
Turbo C復(fù)用技術(shù)將得到充分的應(yīng)用,而面向具體的應(yīng)用程序,其面向應(yīng)用程序的具體方法往往通過使用對(duì)象進(jìn)行的,其中由于消息概念、聚合、封裝、繼承、類的多態(tài)性,從而促使Turbo C復(fù)用技術(shù)逐漸構(gòu)成了一個(gè)有效的便捷的系統(tǒng)軟件開發(fā)措施。因此,Turbo C將會(huì)廣泛地面向具體的應(yīng)用程序,從而發(fā)展成一種模型的構(gòu)建。首先,Turbo C將會(huì)有效地對(duì)具體應(yīng)用對(duì)象的原則和概念進(jìn)行對(duì)應(yīng),支持各種應(yīng)用軟件的復(fù)用,如:封裝、抽象、類和對(duì)象、繼承、特殊結(jié)構(gòu)、積聚等等,將這些分散的應(yīng)用程序環(huán)節(jié)作為一個(gè)整體和部分的關(guān)系進(jìn)行架構(gòu),從而對(duì)其進(jìn)行粒徑和多態(tài)性的控制。最終實(shí)現(xiàn)軟件復(fù)用程序化的效果。Turbo C的復(fù)用技術(shù)所具有的一個(gè)重要優(yōu)勢(shì)是其能實(shí)現(xiàn)生命周期概念,使其符號(hào)、術(shù)語、原則實(shí)現(xiàn)高度的一致性。如此一致性將會(huì)使Turbo C環(huán)境下各種不同應(yīng)用程序在不同環(huán)境產(chǎn)生不同的演化,同時(shí)又不改變其系統(tǒng)的運(yùn)行規(guī)則??傊?,Turbo C的復(fù)用技術(shù)面向應(yīng)用程序或者應(yīng)用軟件的特點(diǎn),不但能得到各級(jí)的支持,同時(shí)也可以實(shí)現(xiàn)各個(gè)級(jí)別或者種類的復(fù)用,最終實(shí)現(xiàn)高效、統(tǒng)一的應(yīng)用軟件的復(fù)用。
再者,Turbo C的復(fù)用技術(shù)所表現(xiàn)的將會(huì)是一個(gè)“積木”組件模型,即:類。各種組件通過例、分析、設(shè)計(jì)、實(shí)施從而組成這個(gè)積木類,其中也包含著接口規(guī)范、子系統(tǒng)、屬性類型。Turbo C的復(fù)用技術(shù)往往通過組件的形式去獲取凝聚力,主要是因?yàn)槠淠芴峁┮粋€(gè)比較穩(wěn)定的公共接口。通過如此的重用軟件體系結(jié)構(gòu)以及可重用組件模型,將能有效地重復(fù)地應(yīng)用已有的Turbo C資產(chǎn)池,從而不斷地滿足各類應(yīng)用客戶對(duì)象。Turbo C重用技術(shù)之所有能產(chǎn)生如此好的效果并得以廣泛應(yīng)用,最主要的一個(gè)原因就是其能有效滿足各類客戶的要求而實(shí)現(xiàn)其自身的價(jià)值。
綜上所述,Turbo C軟件復(fù)用技術(shù)的主要目的是為了解決各種軟件危機(jī),從而提升軟件的開發(fā)效果以及升級(jí)Turbo C軟件應(yīng)用平臺(tái),是一種有效的應(yīng)用比較廣泛的軟件開發(fā)方式,Turbo C的軟件復(fù)用技術(shù)將促進(jìn)軟件行業(yè)的深入發(fā)展,使得未來大型網(wǎng)絡(luò)分布式軟件的開發(fā)成為可能。
[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碼原理與設(shè)計(jì)[M].北京:電子工業(yè)出版社,2011.