付明柏
(昭通學院計算機科學系,云南 昭通 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.