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