專利名稱:用于計算機運行期間改變軟件的系統(tǒng)的制作方法
本申請是申請日為1993年6月28日,申請?zhí)枮?3107664.1,發(fā)明名稱為“用于計算機運行期間改變軟件的系統(tǒng)”的分案申請。
本專利文獻的公開的部分含有受版權保護的材料。該版權所有人不反對在專利文獻或專利公開(當其出現在專利和商標局中時)、專利存檔文件或記錄的任何一項中出現其摹真復制品,但在其它情況下保留所有的版權權利。
本發(fā)明涉及到軟件的修改,尤其是涉及到在一個運行中的計算機系統(tǒng)中軟件的替換。
計算機軟件的一項特征就在于,它必須用修改、增加和/或刪除的方式周期性地更新,以便持續(xù)地給用戶提供適當的功能、使軟件盡可能完善并糾正在軟件生命期中所產生的錯誤和差異。當一個新的性能附加給了軟件時,希望盡可能早和盡可能容易地替換舊軟件、以使用戶得到新軟件的性能。
在特定類型的計算系統(tǒng)中,如獨立或批處理系統(tǒng),將軟件從一個版本改為另一個版本面臨的障礙較少。典型的是,在一天中用機活動較少時維修人員就可以關機。然后將老的軟件就簡單地移去,代之以軟件的較新版本。此后,該計算系統(tǒng)重新啟動,所有將來的數據處理都由軟件新版本來完成。當然,這一過程假設了新軟件已在脫機系統(tǒng)上經過適當的檢測和調試達到了這樣的程度,即軟件人員和運行管理部門確信該軟件將適當地實現為其設計的功能、而不會產生要求停機然后重新啟動整個計算系統(tǒng)的不適當的中斷。
在其它類型的計算系統(tǒng)中,例如現代的存儲程序控制(SPC)電信交換系統(tǒng)(在該產業(yè)中通常稱之為“交換機”),系統(tǒng)中軟件新版本的檢測和軟件的改變都不象在獨立批處理系統(tǒng)中那樣容易。例如,離開了實際的操作處理呼叫,軟件的新版本就不能得到有效的測試。軟件必須在操作過程中測試,以便確定它在實際的操作條件下是否將發(fā)揮適當的功能、確定它作為一個運行的SPC交換系統(tǒng)的一部分是否能與所有其它的軟件模塊適當銜接。此外,電信交換系統(tǒng)事實上永遠不會停止運行。理想情況下,這些系統(tǒng)將永遠不停地運轉而不中斷,因為在一個社區(qū)內要求通信設施連續(xù)服務。即,通過該系統(tǒng)所處理的電信業(yè)務是一個連續(xù)流,即使在白天或晚間的空閑時間也是同樣,并且該交換操作中的任何中斷都將導致該電信業(yè)務的混亂。這樣一種混亂可能對該系統(tǒng)的運行及其有效性,以及系統(tǒng)在用戶或顧客中的接受程度造成極大的損害。
電信交換的這些實時要求在兩方面提出了嚴格的要求在含有新的或改進的功能的軟件提高版本或其若干部分的測試方面,以及在交換中包含錯誤糾正或“錯誤修改”而不影響由交換正在處理的電信業(yè)務的軟件的替換方面。然而,用傳統(tǒng)的“編輯-編譯-鏈接-裝入-運行”方式把軟件成分或單元的新版本集成并入該系統(tǒng)的方法并不是令人滿意的。人們寧愿選擇這樣一種方法,即在系統(tǒng)運行過程中修改或擴展軟件的能力,而不需要停機。
人們?yōu)榻鉀Q與把新軟件并入運行中的計算機系統(tǒng)有關的問題進行了嘗試。例如,當今使用的一些并不以獨立或批處理方式運行的先進的連機運行系統(tǒng)是用與獨立或批處理系統(tǒng)中顯著不同的方式解決替換舊軟件的問題。然而,盡管比獨立系統(tǒng)中的更透明,這些系統(tǒng)仍然是人工地替換軟件,即要求各個用戶或用戶組積極地選擇是否使用軟件的新版本或修改版本來進行處理。這一選擇可以由用戶通過修改在其各自的用戶標識符之下運行的過程所利用的軟件的相互聯(lián)系來實施。這一選擇在一段時間內一通常以數周或數月來計算一保留給用戶,在這段時間里經過在每一個先前的層次上的成功運行而沒有任何不一致之后軟件在相互聯(lián)系的結構中向上遷移若干層次。到達該相互聯(lián)系的頂層時,就宣告該軟件是“可運行的”,同時該系統(tǒng)的用戶就不再使用較舊的版本。新軟件插入該系統(tǒng),以及在不同層次的遷移,是由一個配置管理過程控制的,該過程是一個報告、批準、跟蹤每一個層次上的軟件版本并且實施已批準的改變的人工過程。
正如采用在批處理或獨立系統(tǒng)上更新軟件的方法那樣,以這種方式使新的或修改的軟件并入系統(tǒng)具有人所共知的弊端。這在很大程度上是一個人工的、工作量大的系統(tǒng),復雜且費時。它把何時何種情況下系統(tǒng)應使用某種新軟件運行的控制留給了用戶,而不是實施逐步的、限定的、聯(lián)機的使用新軟件,以至于造成錯誤迅速的擴散或直接影響所有后續(xù)的操作。對新的或已修改的軟件的訪問進行控制的方法是直接連接到并且限制在執(zhí)行該軟件的單個用戶。
用于解決至少某些與在運行的計算機系統(tǒng)中的軟件更新有關的問題的其它嘗試采用了一種不同的方式。如,在一項美國專利中,包含了AndersAbrahamsson和LarsHolmqvist發(fā)明并轉讓給L.M.埃利克遜電話股份有限公司(TelefonaktiebolagatLMEricsson)的技術,其中透露了一個在運行期間動態(tài)連接軟件的系統(tǒng)。然而,該系統(tǒng)涉及到一個間接尋址的復雜系統(tǒng),它需要用到一個或是特殊的或是擴展的操作系統(tǒng),以及/或者一個特別的編譯程序。該系統(tǒng)也有若干弊端,包括需要一個非標準的操作系統(tǒng)。此外,該系統(tǒng)不能與標準應用軟件一起工作。該系統(tǒng)的局限性還在于,它僅僅涉及全部問題的一個部分,而且對于現有的與修改的軟件模塊之間控制的漸進測試與改變方面并未提供幫助。
在當今使用的典型的電信系統(tǒng)中,改變軟件或軟件的若干部分的問題甚至更嚴峻。雖然這樣的系統(tǒng)不能恰當地稱為批處理或獨立系統(tǒng),但無論何時只要進行了軟件的改變系統(tǒng)的操作就會受到影響。裝入新軟件,從屬于舊軟件的數據被轉移并傳送給新軟件。在傳送進行之中的這段時間,系統(tǒng)不能登記任何新的呼叫。失去功能的這一階段可以持續(xù)一小時或更長時間,這樣就必需在操作的非峰荷時間安排軟件的變更。即使這樣,在一個電信交換系統(tǒng)中一個小時的故障時間也是相當長和代價巨大的,因為在這段時間里不能處理任何新的呼叫,也不能為應急通信的任何要求提供服務。
因此,在電信產業(yè)中,在電信交換系統(tǒng)的實際操作期間,在不影響通過該系統(tǒng)正在進行的電信業(yè)務的情況下,如果能夠測試和改變軟件將是極為有用的。如果有能力通過新軟件或軟件的新的組成部分指揮一個限定的和指定部分的通訊業(yè)務,從而使該軟件能夠在一個運行環(huán)境中優(yōu)先于處理正在使用的數據而被測試,這樣對電信產業(yè)將更為有益。這樣,在不需要特別的編譯程序的系統(tǒng)運行期間改變軟件的一種平穩(wěn)的、透明的方法就是令人高度期待的。本發(fā)明的系統(tǒng)提供了這樣一種方法。
SPC電信交換系統(tǒng)這樣的計算系統(tǒng)的動態(tài)特征,從本質上可以描述為一系列平行的、相對獨立的事務處理(也稱為“線索”或“事件鏈”),其中每一個事務處理由若干相關活動所組成。一個事務處理一般完成對系統(tǒng)的外部用戶來說是可見的和具有功能用途的一項工作。在電信交換系統(tǒng)中一個典型的事務處理可以是一次呼叫。
采用本發(fā)明的平穩(wěn)軟件改變技術的連機軟件替代利用了面向軟件的事務處理,以及在同一時間內既能存貯老版本也能存貯新版本的存儲器。轉到軟件新版本的一個平穩(wěn)的改變是用軟件老版本使正在進行的事務處理,即“老業(yè)務”,運行結束來實現的。在軟件改變已經開始之后啟動的事務處理,即“新業(yè)務”,將用軟件的新版本以一種漸進的和受控制的方式運行。
能為本發(fā)明的平穩(wěn)的軟件改變技術所滿足的首要需求包括使用戶的干擾最小或者消失以及高水平的系統(tǒng)可用性。本發(fā)明的首要特征包括下列事實(1)在一個事務處理(如,一次呼叫)期間系統(tǒng)的一個單獨的用戶所經歷的干擾最小或者消失,因為一個并且只有一個軟件版本控制著每一個特定的事務處理,即,從事務處理的開始到結束,系統(tǒng)或者使用軟件的老版本或者使用軟件的新版本;(2)系統(tǒng)的一個單獨的用戶沒有系統(tǒng)不可用性的經歷,因為作了軟件改變,在此項改變期間軟件的兩種版本是平行地使用的。如果后一特征沒有出現,一個簡單的解決辦法就是對系統(tǒng)軟件作一個簡單的脫機改變。
將由系統(tǒng)處理的數據可以根據前后關系分成兩種不同的類別(1)動態(tài)數據,它是在一個事務處理期間所產生和使用的并且在該事務處理結束后就被消除;(2)半永久性數據,這是由若干個事務處理所使用的并且生存于若干事務處理期間,如在電信系統(tǒng)中,有關與該系統(tǒng)相聯(lián)的用戶數目的數據或由特定用戶們使用的短缺數目的數據。
與要求最小干擾的連機軟件替換相聯(lián)系的一個決定性的問題在于,軟件老版本的狀態(tài)必須轉移為軟件新版本。根據本發(fā)明,采用平穩(wěn)的軟件修改技術,動態(tài)數據與半永久性數據的分離使這一問題變得簡單,因為只有半永久性數據-如果存在的話-需要從軟件老版本傳送到軟件的新版本。此外,半永久性數據一般是作為一個單獨的數據庫中的對象提供的,并且比一個電信軟件系統(tǒng)中的其它部分有更難得的改變。
本發(fā)明的系統(tǒng)為將新軟件裝入電信系統(tǒng)的存貯器中(與老軟件在一起,并且除了新軟件還有老軟件)作了準備。在本發(fā)明的系統(tǒng)中,系統(tǒng)中現存的業(yè)務開始是由老軟件處理,測試業(yè)務是通過開關按預定的路線由新軟件處理的。然后,如果測試業(yè)務由新軟件進行了成功的處理,實際正在進行的業(yè)務(或正常業(yè)務)的一部分就有選擇地由新軟件按預定路線處理,同時該實際正在進行的業(yè)務的其余部分仍由老軟件進行處理。由新軟件處理的正在進行的取樣業(yè)務的百分比可以在零到百分之一百之間變化。該取樣業(yè)務應當由新軟件適當地執(zhí)行,所有業(yè)務都被引向新軟件。一旦由老軟件所進行的所有呼叫的處理已經結束,系統(tǒng)就不再用到老軟件,可以從系統(tǒng)中將其消去。
另一方面,本發(fā)明的系統(tǒng)包含了一個對新的或修改的軟件進行平穩(wěn)驗證的系統(tǒng)。本發(fā)明的系統(tǒng)允許按一種漸進的和受控制的方式使數據通過新軟件而流動,但是是作為實際運行的該系統(tǒng)的組成部分。該系統(tǒng)在對電信交換系統(tǒng)的實際運行只有很小的或沒有影響的情況下提供了錯誤和差異的早期探測,因為流向新軟件的初始數據僅僅是由該系統(tǒng)產生的測試數據。在處理測試數據時如果電信系統(tǒng)探測到一個錯誤,就沒有更多的業(yè)務引向新軟件,這樣,即使該新軟件已經在處理實際的數據了,對系統(tǒng)整個業(yè)務的干擾也被最小化了。
本發(fā)明的系統(tǒng)的另一方面是,該系統(tǒng)以漸進的方式使業(yè)務從老軟件引向新軟件。本發(fā)明的系統(tǒng)包含了允許這樣進行事務處理的能力,即用老軟件開始處理,到結束處理時仍用老軟件。只有隨裝入新軟件后開始的事務處理將由新軟件進行處理。本發(fā)明的系統(tǒng)的這一特征使得在由給定的老軟件到用新軟件替代它或擴展它的這段過渡時期對用戶僅有很小的干擾。此外,這一特征使要求轉換到和/或傳送到不同的一組軟件的數據量比一開始所處理的數據量減到最小。
還有另一個特征,本發(fā)明的系統(tǒng)包含了軟件的平穩(wěn)修改,這是一個過程,它把軟件的操作模型看作是一系列可辨認的和可維護的事務處理。在本發(fā)明的系統(tǒng)中,這樣一個鏈在整個處理過程中始終被辨認并維護。此外,在這一特征方面,本發(fā)明的系統(tǒng)在軟件的新、老版本同時駐留在電信交換系統(tǒng)中的這段時間內,控制著將每個事務處理連接到老版本或者是新版本上。
本發(fā)明的系統(tǒng)的另一特征是,它具有這樣的機制,即把包含在老軟件中且由老軟件直接控制的可能存在的半永久性數據轉換并移動到新軟件中。
本發(fā)明的系統(tǒng)的另一特征是,它包含一系列的方向指針,可用于在運行著的系統(tǒng)內將事務處理動態(tài)地引向系統(tǒng)的老版本或者是新版本。該系統(tǒng)通過許多途徑包括由函數名稱尋址的消息的分析和運行期間的動態(tài)連接實現軟件部件的動態(tài)定向。
本發(fā)明的系統(tǒng)的另一特征是,它包含一種即時修改方法。此方法用于軟件的兩種版本不可能同時存在的時候,并且提供從軟件的老版本到軟件新版本的瞬時改變。所有的業(yè)務都自動地被引向新版本,除非探測到在新版本中存在著使用它進行操作是不可能的或不實際的這樣一些錯誤。在這種關頭,系統(tǒng)如果停機就可以通過一個新的即時修改返回到采用軟件舊版本處理所有業(yè)務。在此特征下系統(tǒng)將老版本以被動狀態(tài)保留在系統(tǒng)內。
本發(fā)明的系統(tǒng)還有另一個特征,它包括一個連接過程(調用)的機制,它包含了一個商人和一個核心使不同類別的軟件部件之間的接口能起作用。這一連接過程調用機制在運行期間也用于實現內部連接和新舊軟件單元的匯集。在使用本發(fā)明的系統(tǒng)中的這一連接過程調用機制方面,利用本發(fā)明的系統(tǒng)的另一個特征建立所需要的接口說明,使用了一種特殊的面向目標的接口描述語言并稱為ELIN。該語言含有適于為本發(fā)明的系統(tǒng)的連接過程調用特征開發(fā)接口的一種特殊構造。
本發(fā)明的系統(tǒng)還有另一個特征,它含有用一個函數名地址對消息尋址的機制,該函數名地址包含了一個商人,或者是使可被分布在該系統(tǒng)中的軟件單元之間的接口能起作用的消息路徑選擇機制。在運行期間這一機制也用來將消息引向舊軟件或新軟件。在使用本發(fā)明的系統(tǒng)的這一尋址機制方面,利用本發(fā)明的系統(tǒng)的另一個特征建立所需要的接口說明,這種特殊的語言如上所述稱為ELIN。該語言含有適于為本發(fā)明的系統(tǒng)的消息協(xié)議方面開發(fā)接口的一種特殊構造。
如同很容易被具有此特殊技術中的普通技巧的人們所欣賞那樣,此項發(fā)明的原則和特征也可以在除了電信交換系統(tǒng)之外的各種計算機應用中用來幫助進行軟件在運行期間的轉換。
為理解本發(fā)明并為了進一步了解本發(fā)明的目標及其優(yōu)點,現在可以提交如下的描述,連同相關的圖示,在這些圖示中
圖1A-1B是將新的或修改過的軟件引入一個運行的軟件系統(tǒng)的現有的技術系統(tǒng)的圖示說明;圖2是一個框圖,說明在本發(fā)明的系統(tǒng)中將處理從一個老的軟件單元重新引向一個新的軟件單元的示例過程;圖3A-3E是根據本發(fā)明的系統(tǒng)從老軟件改變到新軟件的處理的圖示說明;圖4是一個流程圖,說明根據本發(fā)明的系統(tǒng)在運行期間改變軟件的處理;圖5是一個框圖,說明在本發(fā)明的系統(tǒng)中對新老兩種軟件有選擇地尋址的方法;圖6是一個框圖,說明在本發(fā)明的系統(tǒng)的軟件內對目標尋址的方法;圖7是一個框圖,說明在本發(fā)明的系統(tǒng)內尋訪軟件的方法;圖8是一個框圖,說明在本發(fā)明的系統(tǒng)中商人尋訪軟件的方法;圖9是一個面向目標的接口描述語言用來實現本發(fā)明的系統(tǒng)的方法的示意圖;圖10是本發(fā)明的系統(tǒng)的特定方面的示意圖;圖11是使本發(fā)明的系統(tǒng)內給定的協(xié)議容易接口的方法的示意圖。
本發(fā)明的系統(tǒng)在某些方面采用了面向目標程序設計的原則。面向目標程序設計實質涉及四個元素一類,目標,實例變量(或象在C++中所實現的數據成員),以及方法(或在C++中的成員函數)。一個類簡單說來就是用以定義目標的模板,這些目標就是它們從其中產生的那個類的實例。類有兩種類型的組成成份-實例變量和方法。實例變量用作數據元素而方法用作函數,即它們定義了一個目標的性質。其中每一個結合成運行中的模塊上的一個簡單普通的目標。因此,程序設計是圍繞各種目標完成的,而不是圍繞待完成的函數和任務而完成的。
在此項技術中眾所周知的、面向目標程序設計的給定技術已用程序設計語言C++,以所提出的本發(fā)明的系統(tǒng)的實現方式,在本發(fā)明的系統(tǒng)中得以具體化。這些技術包括繼承、同素異構和封閉。繼承可以從一個現存的類中推出一個新類,從而使代碼可以重復使用,因而數據和代碼可以加到一個類中,或者可以在沒有改變現存類的情況下改變一個類的性質。同素異構是這樣一種特性,它提供改變由不同目標分享的一個成分的性質的能力,允許成分或目標的不同實例有不同的表現,盡管它們看來是完全相同的。最后,封閉是一種將數據與處理這些數據所必需的操作全都結合在一個“屋頂”下。此外它還允許能夠保護數據使之避免多余的或不必要的訪問并將數據組織的細節(jié)隱蔽起來。
首先參考圖1A,這里闡明了在先前的技術系統(tǒng)中采用的有關將新的或修改過的軟件引入一個運行著的軟件系統(tǒng)的管理的軟件控制方案。圖1A闡明了軟件的等級層次序列,其中每一層的內容是由一個考察板(board)的成員所控制的。對軟件的所有改變在系統(tǒng)中實現之前必須由該板批準。在考察板作出一個正式的決定(即需要一個軟件,它已經經過適當的測試并且它不象會引起危險或使系統(tǒng)中斷運行)之前,軟件是不會被并入該系統(tǒng)的。
該等級層次可由連接在一起的幾個單獨的等級所組成,由已經訪問過或者需要這些層次或軟件的“庫”以實現他或她的功能的一個個別的用戶把這些等級連接在一起。在等級1的頂端是實時、運行的軟件,它們一般使用最廣泛且控制最嚴格(“AB.D”)。在該層次之下是一個改變庫2,在后綴中附加字母C來標示(“AB.DC”)。在該等級內運行的軟件的較低層次可以從屬于系統(tǒng)內用戶的不同群體,并將由這些層次上的考察板進行控制。得到批準之后,新的或修改的實時軟件進入系統(tǒng),到最低的適合于改變的層次,即象在2和3那樣的以字母C結尾的層次。
一旦新的或修改過的軟件進入系統(tǒng),它就保留在所進入的層次上,直到經過一個特定階段并且軟件已不產生出可探測到的錯誤為止。然后它將遷移到下一個最高層次上。有些情況下,這將需要一個特定考察板的預先批準;另一些情況下,遷移將自動產生,作為系統(tǒng)活動的有規(guī)律安排中的一部分。遷移對用戶是透明的,遷移或進入該等級的軟件對于用戶將是立即有用的,這些用戶是已經將其軟件與包含新的或改變的軟件的庫中的軟件的聯(lián)系結構化的。
正如圖1A也闡明的,對于駐留在同一系統(tǒng)中的非實時工程型軟件而言,相同的處理可以重復并同時發(fā)生。這種情況下僅有的差別在于,控制處理是由不同的一批人進行管理的,而且該處理可以不象一般在整個系統(tǒng)所用的運行的軟件對緊要過程處理那樣精密。然而,就這種工程軟件來說軟件的并入是以與運行的軟件同樣的方式而發(fā)生的。新的或修改過的軟件進入以C作為后綴中的最后一個字母的最低的適于改變的層次的那個等級,如在4。然后它在取得必要的批準的情況下,經過一段時間按向上方向遷移,直至到達該等級的其所在部分的頂端5。在或是工程軟件或是運行軟件的情況下,一旦它已經遷移到下一個層次它就不再駐留在較低的層次上。
是否利用進入到系統(tǒng)的等級庫中的新的或修改過的軟件留給單個的用戶或用戶組來決定。用戶可以選擇系統(tǒng)將用來把軟件聯(lián)在一起以便使用的庫的層次。他們可以選擇繞過軟件的全部較低層次,或者他們可以簡單地選擇避免最低的改變層次,該層包含有最新的和地位最低的已測試的軟件。當然,等級中每一部分的最高層次含有大批的在使用的運行軟件。
圖1B闡明了把配置控制強加給圖1A中的軟件庫的等級上、以便維持對基準和根據日常根據引入該系統(tǒng)的新的或修改過的軟件的控制的人工處理過程。如上所述,新軟件根據考察板的批準而進入等級制度中最低的適于改變的層次。如果新軟件導致出錯和差異,該軟件就從等級體系中移走并且如6所示返回去進行額外的軟件維護工作。一旦問題已被糾正且軟件已被重新測試,就可以根據考察板的批準,再試一次,把該軟件并入系統(tǒng)的最低的適于改變的層次。如果在所允許的固定的階段內沒有探測到問題,軟件將自動遷移到下一個層次,除非下一層需要如7所示的另一次考察板的批準。否則,在得到適當的批準之后它將根據一個確定的安排而遷移。這一過程將連續(xù)重復,直到軟件到達等級體系的那一部分里的最高層次,此時它將完全被宣布為運行軟件。
下面參見圖2,這里闡明了本發(fā)明的一個方面,描述了可以對軟件進行一種平穩(wěn)的修改或改變的機制。這種平穩(wěn)的修改特性是這樣一種性質,即在一個特定的時間階段內,允許系統(tǒng)將軟件的老版本和新版本同時存儲在主存儲器內。新業(yè)務然后就可以逐漸地引向軟件的新版本,隨著這種引導的進行,就使得老的事務處理由老的軟件版本執(zhí)行到結束,同時新的事務處理就由新的軟件版本執(zhí)行。在圖2中給出了一個未加改變的軟件單元11并通過一個稱為定向點的尋址機構12與一個老的修改單元13和一個新的修改單元14結合起來。未加改變的接口15和16將老的修改單元13和新的修改單元14與尋址機構12連在一起。
在本發(fā)明的系統(tǒng)中一次僅替換軟件的一個部分是完全可能的并且事實上是典型的情況。將被替換的軟件稱作為一個修改單元。圖2給出了這樣一個情況,有一個修改單元R,它既在軟件老版本即老的修改單元13中,也在軟件新版本即新的修改單元R′14中。新的修改單元R′通過定義選擇有了一個接口16,它是與連接未加改變的軟件11的現存接口相一致的。這意味著未加改變的軟件是能夠既與老版本軟件配合也能夠與新版本軟件(修改單元)配合。
本發(fā)明的這一特征,即提供了事務處理的動態(tài)定向或重新定向,通過定向點的引導和使用而變得容易。這些定向點由分布式系統(tǒng)中的這樣一些區(qū)段所組成,在這些區(qū)段事務處理可用一種特別的方式定向。如圖2中所示的尋址機構12表示定向點的實現以及系統(tǒng)的事務處理被各自地引向軟件的新版本或老版本的途徑。這些定向點可以按三種方式運行。首先,可以通過分析由系統(tǒng)處理的業(yè)務相關聯(lián)的函數名來觸發(fā)。根據這一操作方法,業(yè)務可以被引導到要求完成必要處理的特定函數的軟件新版本或是老版本。其次,事務處理可以被引導去執(zhí)行一個程序的軟件新版本或老版本,該程序是以作為運行時間軟件連接的結果而提供的信息為基礎的。
一個軟件部分的多種版本在系統(tǒng)內一段特定時間可以共存這樣一個事實具有一系列后果。例如,本發(fā)明的這種平穩(wěn)修改特征要求,萬一改變半永久性數據表示法,軟件的不論是新版本還是老版本都能夠訪問適當的數據表示法。
下一個參見圖3A-3E,這里闡明了一個修改單元在修改的一般情況下可以經歷的各階段。在系統(tǒng)的實際運行中,一個特定的修改單元看起來將只經歷圖示各階段的一個子集合。此外,在實際操作中,圖示各階段并不是將要完成的系列操作的一個精確的集合。更確切地說,一個或多個階段在修改的過程中可以重復。本發(fā)明這一方面的一個重要特征在于,修改過程各階段的控制對系統(tǒng)的用戶是透明的,對應用軟件程序本身也幾乎是透明的。圖示的各階段是由一個在系統(tǒng)內操作各種現存的定向點的協(xié)調裝置控制的。
圖3A表示系統(tǒng)21含有一個體現于其中的修改單元R22。這代表了在修改過程開始時系統(tǒng)的狀態(tài)。此時,系統(tǒng)將所有的常規(guī)業(yè)務引向軟件老版本。圖3B表示通過與數據修改信息24結合起來的新版本R′23對修改單元22的修改。圖3A闡明了修改開始的狀態(tài),而圖3B則代表了初始或裝入階段,此時新版本R′23、以及某些情況下在數據修改信息24中所包含的新數據方案被連同老的修改單元22′一起裝入。數據修改信息24在軟件開發(fā)系統(tǒng)中已被說明,基于已知知道老版本和新版本的數據表示法這樣一個事實。
圖3C用圖描述了修改處理的數據階段的改變。這一階段的目標是,在適當的時刻,移動可能存在的半永久性數據的相關部分,如上所述,這些由老的軟件部分包含并直接控制的數據移入新的軟件部分,即用來取代老的軟件部分,以避免不可接受的干擾。本發(fā)明這一特征的實現是通過完成幾個不同的活動來管理的。首先,活動集中在數據修改階段,包括(a)數據從舊表示法到新表示法的轉換,其結果是替換的新軟件部分中的數據表示法比在老軟件部分中所用的數據表示法已經作了改變;(b)數據從老的軟件部分向新的軟件部分的傳送。其次,在測試階段和完成階段即新老軟件平行使用的這些階段延續(xù)的活動,包含對或者是新軟件部分或者是老軟件部分中的半永久性數據的每一次“初始的”更新,這里在另一個軟件部分中隨后就有一個相應的半永久性數據的更新。即,如果初始的更新是對新軟件而進行的,那么隨后的更新就是在老軟件中進行的,反之亦然。這就意味著,一般情況下,每次的數據轉換和傳送,半永久性數據都是由新或老軟件更新的。數據轉換取決于數據修改信息,它們在軟件開發(fā)期間創(chuàng)建于支持系統(tǒng)中,在初始/裝入階段被裝入目標系統(tǒng),在圖3中稱為之“數據修改信息”。
關于數據轉換,系統(tǒng)的一種可供選擇的實現方案可以是僅僅把數據的表示法轉換為由新軟件在一種所需要的基礎上所使用的形式,然后,在老軟件從系統(tǒng)中移去之前,轉換到那時為止系統(tǒng)仍不需要的全體剩余數據。同樣地,所有這些數據開始就可以轉移成新軟件所使用的表示法,以便節(jié)省存儲空間,然后,可以用一個再轉移程序來將數據轉回到由老軟件在一種所需要的基礎上所使用的形式,直到它被移去。
圖3C也用圖描述了修改處理的第三階段,即測試階段。該階段打算允許軟件新版本裝入系統(tǒng),最初僅對測試數據進行操作以便在使用軟件與實際業(yè)務一同運行之前確定軟件的質量水平。該測試階段可以被分為兩個子階段(a)用測試業(yè)務測試,即只有人工產生的事務處理將采用新版軟件;(b)用簡單業(yè)務測試,即,經過選擇的實際業(yè)務的一定比例,大約在零到百分之百之間的新的事務處理將被引去用新版軟件運行之。到第二個子階段結束時,實際業(yè)務的大部分或全部將在新版軟件之下運行。
測試業(yè)務是由特殊軟件或利用特殊測試電話用戶所產生的。測試業(yè)務是受控制的,以便保證修改單元R'23被使用。通過給測試業(yè)務加注測試標志可以確保這一結果,該測試標志將自動地在所有的定向點上把測試業(yè)務引向新版軟件,在定向點上存在一個引向新版軟件還是現存的老版軟件的選擇問題。對于常規(guī)的實際業(yè)務,究竟是使用新版還是使用老版的軟件,將在遇到的第一個定向點上作出決定,該定向點上有一個選擇。此后,該業(yè)務或事務處理僅由所選擇的軟件版本進行處理。在后面的某個定向點如要改變到另一個軟件版本,在系統(tǒng)中是被禁止的。在此階段期間,如果測試指出了因使用新版軟件而導致發(fā)生的問題或錯誤,就轉回去進行修改,所有新的事務處理都被引向老版軟件。
值得注意的是,在特定的實施情況下,在成功地處理了測試業(yè)務之后使用新版軟件的樣本業(yè)務量可以減少到零。這種情況下,一旦新版軟件已被測試業(yè)務檢驗過,滿載的所有新的事務處理都可以傳送給新版軟件,當所有的舊的事務處理已經結束時就允許新版軟件完全取代舊版軟件。
圖3D中圖示了第四階段即結束階段。在此階段,已經在使用舊版軟件的事務處理繼續(xù)使用老的修改單元R22,直到系統(tǒng)內不再存在使用老的修改單元R22的事務處理為止。當新的事務處理使用新版軟件時前述情況將自然發(fā)生。在此階段,兩個版本的軟件留在系統(tǒng)存儲器內,新版軟件依然被認為是處在測試階段。
結束階段可以或者是持續(xù)下去、直到使用老版軟件的所有老的業(yè)務已經結束,或者可以是在一個特定的時間將它置為結束。如果到結束階段的最后還有任何仍使用老版軟件的老業(yè)務,那么它們將被終止,或者如果可能的話,傳送給新版軟件。此后,由老版軟件所擁有的半永久性數據將不再被更新,老的修改單元將被堵住,結束階段終止。應當注意的是,在結束階段之前的測試階段可以已經由一長段時間來結束,在此期間所有新業(yè)務已經被分類成為樣本業(yè)務,所有老業(yè)務已經結束。在這種情況下,結束階段將非常短,并且僅僅意味著半永久性數據不再被更新和老的修改單元被堵住。
結束階段的終止意味著整個軟件修改過程已經終結。圖3D表示了這一狀態(tài)。
老的修改單元R22及其修改信息不再受到維護,在此關頭,它不再可能轉回去在老版軟件之下運行。此時,如果新軟件有一個問題,就要求一個全新的修改。老版軟件現在也可以從系統(tǒng)中移去。圖3E圖示了這一狀態(tài)。
本發(fā)明的系統(tǒng)的另一特征,包含了瞬時修改法作為平穩(wěn)修改的補充。這一方法為處理所有業(yè)務的目的提供了從老版軟件到新版軟件的即時的或瞬間的轉換能力。當應用過程禁止兩種不同版本的軟件在系統(tǒng)內共存時就可使用這種類型的修改。利用瞬時修改法,如果需要就可以在轉換時立即把軟件狀態(tài)變換到新版本。在系統(tǒng)中這是可能的,因為應用軟件有能力在新版軟件中再造其狀態(tài)。本發(fā)明的系統(tǒng)的這一方面的一個重要性質就在于,盡管修改在內部是相當突然的,對系統(tǒng)用戶以及正被處理的業(yè)務來說則是透明的??梢栽诓灰鹑魏慰梢钥吹靡姷闹袛嗵幚淼那闆r下將業(yè)務再引向新版軟件。本發(fā)明在這一方面的另一個優(yōu)點是,老版軟件留在系統(tǒng)內,雖然是以一種被動模式存在。因此,如果已經顯示出新版軟件有問題或有錯,返回到老版軟件就仍然是可能的,這時的處理并不需要重大的或較長的中斷。
下面參看圖4,這里給出了從老版軟件轉換為新版軟件的平穩(wěn)修改方法的流程圖。特別是,系統(tǒng)預先假設現存軟件在系統(tǒng)中是有效地運行著的,并從101開始,此時將新版軟件裝入內存。在102,系統(tǒng)對數據及其在新版軟件中的改變進行復制,并連接數據到新軟件上。在103,系統(tǒng)開始用新軟件運行測試事務,正常的業(yè)務在系統(tǒng)內繼續(xù)用老軟件和老數據運行。在104,系統(tǒng)詢問“新軟件是在進行測試業(yè)務工作嗎 ”如果不是,系統(tǒng)轉到105,在此點新軟件和新數據從系統(tǒng)中移走,進程在106結束。在104點如果新軟件是在進行測試業(yè)務工作,系統(tǒng)轉到107,在該點系統(tǒng)用新軟件運行實際業(yè)務的樣本,同時對常規(guī)業(yè)務的其余部分與老軟件和老數據一起進行維護。通過新軟件運行的樣本業(yè)務的百分比可以在實際業(yè)務總量的零到百分之百之間有選擇地變化。此后,在108,系統(tǒng)再次詢問新軟件是否在對樣本業(yè)務進行工作。如果不是,系統(tǒng)轉到105,新軟件和新數據移出,處理結束。然而,如果在108點處新軟件正在成功地處理樣本業(yè)務,系統(tǒng)就轉到109用新軟件和數據運行將來所有的呼叫,此后,在110,系統(tǒng)再次詢問新軟件是否在工作,如果不是,轉到105,移去新軟件,在106結束。如果在110處,系統(tǒng)中新軟件正在進行處理常規(guī)業(yè)務的工作,系統(tǒng)就詢問所有老的事務處理在系統(tǒng)內是否已經完成,這是在111處。如果在111處得到的回答為“不是”,就在113處詢問用于改變的時間期限是否已滿,如果期限未滿,就在109處繼續(xù)做(1)用新軟件執(zhí)行所有新的事務處理,(2)用老軟件執(zhí)行所有老的事務處理,直到在111處接收到一個“是”或者在113處時間期限已滿。如果在113處時間期限已滿,系統(tǒng)就終止或傳送所遺留的呼叫,并轉到112。如果在111處接收的是一個“是”,系統(tǒng)就移到112,老軟件與老數據一道被移走。系統(tǒng)在從老軟件轉到新軟件的運行期間,在沒有不適當地使現有業(yè)務遭受危險或延遲的情況下,在電訊交換系統(tǒng)內完成了一次交換轉換。
下面看圖5,這里給出了表120,其中包含一個呼叫標識(ID)類目和一個ID指針類目。對于系統(tǒng)內的每一個是測試的調用尋址,給出了一個指向新軟件121的指針,與此同時對于所有包含常規(guī)標識的呼叫標識(ID),給出了指向老軟件122的指針。圖5闡明了這樣一個方法,據此方法本發(fā)明的系統(tǒng)能夠將普通的、實際的業(yè)務和測試業(yè)務適當地引向合適的軟件版本。
盡管這是關于在本發(fā)明的系統(tǒng)內對老軟件和新軟件的尋址方式的一種概括的過分簡單的解釋,事實上,詳細的連接過程調用機制被用來在分別裝入的程序單元之間創(chuàng)建動態(tài)的運行時間匯集。即,在替換一個程序單元時,軟件的新老版本要共存一段時間,直到新版本經驗證是正確的并且由老版本所執(zhí)行的活動可以如上所述予以終止。一種合適的連接過程機制在同樣是未決的一項美國專利申請書中已被揭示,該專利申請書的名稱是“計算機系統(tǒng)中用于同時執(zhí)行軟件模塊的動態(tài)運行時間匯集的系統(tǒng)”,由K.Lundin等人發(fā)明并轉讓給L.M.埃利克遜電話股份有限公司(TelefonaktiebolagetLMEricsson),特在此引用使之具體化。本發(fā)明的系統(tǒng)將顧客作為借助于連接過程調用通過一個接口訪問軟件的一種途徑。在裝入期間,對連接過程調用可訪問的所有接口對核心中的一個商人函數都是公布的。每個接口是用其標識和地址公布的,這涉及到從接口創(chuàng)建一個目標的一種方法。在軟件版本間的匯集在運行時間內完成,每當對一個特定的接口建立了一個目標,就向此后將被調用的創(chuàng)建方法的商人或地址發(fā)出一個請求,并向所創(chuàng)建的目標返還一個目標指針。
如圖6所示,類X131的每個目標由目標-數據133內的表132通過一個目標指針134進行調用,這里目標指針134本身又指向目標131內的一個操作表135,即其中包含該類目標所定義的操作定義的地址。服務員的程序單元內的操作表所涉及的一些地址存貯在目標-數據中。操作表本身又含有屬于指定接口的操作的地址。因為在目標一數據內的操作表地址的存儲單元和操作表中的地址所存貯的順序是固定的和已知的,就可以在不借助于商人的情況下調用操作。在接口中可以在沒有商人的情況下被調用的一種操作是刪除所創(chuàng)建的一個目標。
這些操作表的使用提供了達到同素異構的能力,這里的同素異構是可以通過使用例如程序設計語言C++及其關于虛擬表的構造而實現的一個概念。同素異構,意味著“多形狀”,是一種可用以改變由不同目標所分享的一個組成成份的性質的技術。換句話說,一個組成成份在各種情況下可以看起來是相同的,但是對于它所聯(lián)系的不同的目標可以用有點不同的方式去完成。同素異構是有用的,它可允許創(chuàng)建相關聯(lián)的目標族,即,這樣的目標具有共同的來源或基礎,但它們在不同的情況下以不同的方式去完成。這就允許一個目標族里用同樣的名稱的每個目標含有多種方法或功能,盡管對于每個目標的多種方法的實際代碼可以有很大的差別。本發(fā)明的系統(tǒng)使用同素異構,以及面向目標程序設計的其它原理。然而,本發(fā)明的系統(tǒng)以一種新的更有用的方式實現和擴展了這些原理,以達到執(zhí)行期間不同軟件版本的動態(tài)的、透明的內部連接。
下面參看圖7,那里圖示了這樣一個事實,即連接過程調用技術體現在核心142中所包括的商人141的概念中,核心142使一對軟件單元143和144之間具有接口關系,143和144中分別含有目標的一個顧客類145和一個服務員類146。圖7詳細給出了為在也如圖6中所示的系統(tǒng)內創(chuàng)建目標所要求的步驟。
目標是一種語言構造,它將數據和代碼或函數包含在一個單個的程序包或單元之內。因為它們可以包含數據和代碼,它們就作為微型的、獨立的程序。因此,在創(chuàng)建更復雜的程序時就可以把它們作為積木塊而不必重新為這些功能進行所需的編碼。因為它們可以被單獨地維護和修改,所以程序的維護和修改就簡化了。
類是用以定義目標的模板,而目標則是類的一個例子。一個類包含兩種類型成分,實例變量或數據成員和方法或成員函數。為支持計算機系統(tǒng)的顧客或非服務員節(jié)點,通過利用作為服務員類的一種媒介的接口說明自動產生出一種顧客類。系統(tǒng)的顧客節(jié)點從顧客類中調用操作,以確信調用被傳送給了服務員類中駐留的軟件工具。因此,所有與動態(tài)匯集功能相關的編碼都可以在顧客類中找到。
類說明控制著這樣一種方式,編譯程序將按這種方式在目標一數據中存儲地址,操作表中的地址將依該方式的次序加以陳述。某些類說明是由系統(tǒng)自動產生的。當一個目標在系統(tǒng)中創(chuàng)建出來時,其“創(chuàng)建方法”部分函數就可以通過向定位在核心142內的操作系統(tǒng)的商人141部分發(fā)出一項請求來加以定位。商人141含有由系統(tǒng)內的連接過程調用可訪問的所有類的所有接口信息,即,它含有每個目標可被其它目標訪問或訪問其它目標的信息。
圖8闡明了程序單元的老軟件和新軟件在運行期間通過連接過程調用進行內部連接和匯集所采用的方法。核心142內的商人141可以將軟件單元151的執(zhí)行引向或者是老軟件單元152或者是新軟件單元153。在進行替換時,來自老版本和新版本的服務員類每種都有其在商人141中所公布的接口。商人141對每個項目都提供了兩個地址入口,一個是到老軟件單元152,另一個是到新軟件單元153。在替換之前所創(chuàng)建的事務處理將接收到一個指向老軟件單元152及其服務員類的地址,而另一個事務處理可以接收到指向服務員類的新版本的地址。
替換完成以后,采用舊軟件單元152的事務處理已經結束以后,老軟件單元152可以從存儲器中移走,由老軟件單元152中的服務員類所公布的接口就可以撤銷。如果在老軟件單元內所有的事務處理運行結束之前試圖從存儲器中撤銷這些服務員類,系統(tǒng)就從核心142中產生一個例外調用。然后系統(tǒng)內的例外管理事務處理就允許未結束的處理有一個機會,將它自己重新定向并且使用新軟件單元153,或者否則就終止它。
本發(fā)明中使用連接過程調用技術時,接口說明是用一種稱為ELIN的面向目標的接口描述語言書寫的,該語言在一項美國專利申請中被揭示,該專利以K.Lundin的名義申請,并轉讓給L.M.埃利克遜電話股份有限公司(Telefonaktiebolaget L MEricsson),特在此引用使之具體化。在該語言中,有一個特別的構造(類),它特別有助于連接過程調用接口的說明。ELIN語言中的類是特定類型的目標所提供的接口的一種說明。如果使用一種面向目標的程序設計語言,這些目標就尤其適合作為一個類的例子而加以實現。ELIN語言中連接過程調用接口的說明包括下列信息。
(a)說明的名稱;(b)用作該名稱的基礎的其他接口;(c)(用于創(chuàng)建示例的)一個或多個設計師;以及(d)零個或多個方法說明,其中每個包括一種方法名稱,主題,返回類型和例外。
如下所述,是一個代碼形式的接口說明的示例,它可以被用作為該連接過程調用技術的一部分,它描述了堆棧目標的一個接口。
<pre listing-type="program-listing"><![CDATA[CLASS Stack; BASE CLASS TelecomObject; ACCEPTS CONSTRUCTOR(IN size Int); METHOD push(In data Int); METHOD pop()RETURNS Int; DESTRUCTOR();END CLASS Stack;]]></pre>1992L.M.埃利克遜電話股份有限公司這一接口說明定義了一類堆棧目標,其基礎類被稱為“電訊目標(TelecomObject)”。此類目標可以從列出的函數成員中接收消息呼叫。有了這一類所標示的基礎,就表明,還有一個稱為“電訊目標”的類的這種說明。該基礎類也有特定的詳細說明的方法,作為該基礎類的一個示例的當前類將繼承這些方法。在上述類定義中所說明的函數成員或方法是在基礎類中所說明的函數成員或方法之外的??傊鲜龃a包含了一種類說明,它是在系統(tǒng)內可創(chuàng)建的接口說明的類型之一。
一個接口可以由另一個接口推出,那么后一個接口就被稱為所推出接口的基礎接口。接口可以由一個以上的其它接口推出,所推出的接口繼承了作為其基礎的每一個接口的操作。此外,所推出的接口要說明它自己附加的操作,盡管它對從其基礎接口所繼承的那些同名操作可以不加定義。應該明白,繼承僅僅影響類的接口層次,而不影響執(zhí)行層次。
如圖9所示,本發(fā)明的系統(tǒng)也包括存根-代碼生成工具162,它用來證明顧客與服務員之間的協(xié)調,在運行期間顧客與服務員是通過一個接口動態(tài)地連接在一起的。該接口是用一種語言無關形式加以說明的,但是采用面向目標的示例說明。存根一代碼生成處理確保達到向幾種程序設計語言之一的變換,在以下的部分里,有關于如何實現C++中的變換的簡短說明。參看圖9,其中闡明了在本發(fā)明的系統(tǒng)中一個接口說明161采用存根生成工具162而和一組所生成的文件164相關的方法。圖9尤其是闡明了在該語言中完成變換的C++的整個結構。接口說明在本發(fā)明的系統(tǒng)中使用時以面向目標的接口描述語言ELIN寫出,它類似于程序設計語言C++中所用的類定義。與此相似,通過目標的訪問操作技術類似于程序設計語言C++處理虛擬函數的方法。因此,圖9所示的關于C++的變換對于本發(fā)明的系統(tǒng)這一方面的操作是有指導性的。
存根生成工具1 62既為顧客一方也為服務員一方產生兩個文件,一個以“.h”(header的首字母)為后綴,一個以“.cc”(code的首字母)為后綴。對于顧客,“.h”或首標(header)文件包括兩個類定義。一類是服務員的“.h”或首標文件里的相應類別的精確復制件。這就確保了顧客與服務員之間的協(xié)調一致,并且使顧客調用由服務員創(chuàng)建的目標成為可能。然而,這一類的設計師是專有的,從而使該類不能被用來在堆棧上創(chuàng)建自動的目標。第二類是將用于顧客的一個類,它用作一個媒介,通過它可以訪問由服務員創(chuàng)建的目標。
對于服務員,由存根生成工具162產生同樣的兩個文件-“.h”(header)文件和“.cc”(code)文件?!?h”文件的內容包括一個類定義,它將確保與顧客的協(xié)調一致。就是這個類被用作工具的基礎。該工具可以直接以所產生的類為基礎,或者說所產生的類可以用作推出其它類的基礎?!?cc”文件含有“創(chuàng)建方法”的一個輪廓以及實現創(chuàng)建方法地址的公開的代碼。創(chuàng)建方法的主體擔負著創(chuàng)建一個與所產生的類兼容的目標和返還一個指向也如圖6所示的新創(chuàng)建目標的指針的工作。
為顧客和服務員兩方面產生出不同的然而是兼容的類定義而不是一個共享的類定義,這樣做有幾條理由。首先,它為顧客和服務員中的成員提供了不同層次的清晰度。例如,一個設計師在服務員中必須是公共的,但如果它是駐留在顧客中就并不需要是公共的。其次,如果使用不同的類,在為測試的目的把顧客和服務員程序連接在一起時就不會遇到名稱沖突的問題。下面參看圖10,這里給出了一個特定的框圖布局,闡明了給定的示例代碼模塊及在本發(fā)明的系統(tǒng)中它們的相互關系。圖10闡明了給定的所產生的文件和所書寫的說明的邏輯結構,它們在本發(fā)明的系統(tǒng)內可被實現。在最高層次,公共接口說明171定義了一個類“X”以及該類將接受調用時采用的方法。該類的邏輯下屬,在定義的下一層次,是接口說明171的一個用戶單元172的說明書,和公共接口說明171的一個供應者單元173的說明書。用戶單元說明書172定義了公共接口-類別X的一個顧客。供應者單元說明書173定義了類X的一個服務員。
在單元說明書172和173之下的下一邏輯層次是為用戶和供應者分別產生的類定義。為X用戶(XUser)所產生的類定義174闡明了既為公共用途也為個人用途所定義的特定的用戶類。為X供應者(Xprovider)所產生的類定義175闡明了關于供應者數據和函數的特定的公共定義和專有定義。
最后參看圖11,它闡明了一個協(xié)議說明是如何被用來產生存根-代碼的,這樣確保了使用消息的兩個通訊當事人之間完全的協(xié)調一致。存根-代碼的結構如圖11所示,包括用戶書寫代碼181,生成代碼182和核心代碼183。在分布式和模塊的計算機系統(tǒng)中,它的一個例子是電訊系統(tǒng),使用許多應用層次的協(xié)議以方便在系統(tǒng)各部分之內及系統(tǒng)各部分之間的通訊。
協(xié)議可以看作是系統(tǒng)內各對當事人之間契約的集合,這些當事人同意按照一種特定的方式和格式通訊。有的協(xié)議可以被描述為顧客-服務員協(xié)議,在那里僅有一方當事人是引發(fā)者。另外一些協(xié)議,稱為同等協(xié)議,允許兩方當事人引發(fā)通訊。與其它現存的系統(tǒng)不同,在本發(fā)明的系統(tǒng)中,當事人之間全部的協(xié)定或協(xié)議是用一個單獨的接口說明加以說明的,該接口說明是與當事人的具體的執(zhí)行過程相分離的。因此,這意味著該單獨的說明可以用作為一個普通的協(xié)議,它可以系統(tǒng)內部任何一對當事人之間重新用作協(xié)議。
本發(fā)明的系統(tǒng)以一種有專利權的面向目標的接口描述語言ELIN來實現單獨的接口/協(xié)議說明。例如,同等類型的協(xié)議說明包含下列組成成份(1)操作形式上被分為協(xié)議,每個協(xié)議有兩方當事人;(2)相互作用的約束的說明書。同等協(xié)議說明的存在與使用協(xié)議執(zhí)行通訊的執(zhí)行過程相分離。同等協(xié)議說明根據下列格式而組成(1)協(xié)議名稱;(2)第一方當事人的名稱及其可接受的操作表;(3)第二方當事人的名稱及其可接受的操作表;(4)相互作用約束(可選的)。
以下為帶有相互作用約束的代碼形式的一個協(xié)議說明的示例。該協(xié)議說明中所包含的信息可以用于生成存根代碼<pre listing-type="program-listing"><![CDATA[PROTOCOL Communication Service; PARTY DataProducer; ACCEPTS StartTransmissionTerminate Transmission, ReSendData END PARTY DataProducer PARTY DataConsumerACCEPTS StringData, IntegerData,NoMoreDataToSendEND PARTY DataConsumer;INTERACTION STATE START WHEN StartTransmission THEN Started; STATE Started WHEN TerminateTransmission THEN START; WHEN IntegerData THEN Dataphase; WHEN StringData THEN Dataphase; STATE Dataphase WHEN IntegerData THEN Dataphase; WHEN StringData THEN Dataphase;WHEN ResendData THEN Dataphase; WHEN NoMoreDataToSend THENDataphase Ended; STATE DataphaseEnded WHEN ResendData THEN ResendOrdered; WHEN TerminateTransmission THEN START; STATE ResendOrdered WHEN StringData THEN DataphaseEnded; WHEN IntegerData THEN DataphaseEnded;END PROTOCOL CommunicationService;]]></pre>1992L.M.埃利克遜電話股份有限公司在系統(tǒng)內通訊的一方當事人的邏輯結構也在圖11中給出。如圖11所示,ELIN語言被用于描述分布跨越該系統(tǒng)的目標之間的通訊,以及在該系統(tǒng)內所使用的數據類型之間的通訊。在本發(fā)明的這一特征中使用的和定義的協(xié)議允許設備起相同作用,在任何一方當事人引發(fā)通訊的情況下。并不預先定義任何一方在通訊中是主方或是從方。本發(fā)明的系統(tǒng)的這一特征允許在不同的和遙遠的地方開發(fā)和操作的系統(tǒng)容易進行相互間的操作,只要每個系統(tǒng)是使用單獨加以說明的接口開發(fā)的。本發(fā)明的系統(tǒng)的這一方面的協(xié)議說明與該系統(tǒng)內任何應用工具是分離的和有區(qū)別的。
如圖11中所進一步闡明的,用戶書寫的代碼181作為通訊協(xié)議的一方當事人既可根據協(xié)議說明發(fā)送消息也可根據協(xié)議說明接收消息。數據接收過程184,185和186處理按協(xié)議到達的輸入消息。數據發(fā)送過程187,188,189包含由存根生成工具所自動生成的代碼,以便在用戶呼叫時根據協(xié)議說明建立并發(fā)送消息到系統(tǒng)中去。接收消息的活動190和發(fā)送消息的活動191都是通過一個接口媒介192引導的,192是生成代碼182的一部分。該接口說明192是生成代碼的命令部分,為了接口和協(xié)議適當地發(fā)揮作用該部分必須給出。
調度程序193是一個函數,它由存根生成工具產生并由協(xié)議說明中加以說明的每個輸入消息調用。調度程序193接收消息,對消息進行譯碼,從消息主體中分離出消息標識符,然后將其如圖中194所示分配給將以此工具書寫的過程。
協(xié)議警察195是生成代碼182的一個可選部分,用來監(jiān)督業(yè)務并確定在任一給定的瞬間通訊雙方當事人在發(fā)送或接收消息時是否遵守了接口規(guī)則。協(xié)議警察195在遵守協(xié)議規(guī)則的監(jiān)督方面象一臺狀態(tài)機器那樣運作。該狀態(tài)機器的邏輯在上面提供的示例代碼中已作表達。
在圖11所示的核心代碼183中駐留了一個通訊端口196。該通訊端口196由本發(fā)明的系統(tǒng)的尋址機制視為一個被動的支持工具。通訊端口196不知道通過它正在傳遞的協(xié)議,但是用以使通訊更加便利。通訊支持197是存在于操作系統(tǒng)中的總的通訊支持。它可以在同一處理器中的處理之間進行操作,也可以對定位在不同的處理器上的處理進行操作。如果它正在對分布在處理器之間的目標進行操作,通訊支持197就將組成一個硬件通訊鏈路。在圖11中包含的整個說明的鏡象將代表發(fā)生在該支持中的相應活動以及在系統(tǒng)中第二個通訊當事人的操作。
如上所述,本發(fā)明的系統(tǒng)使得運行期間新軟件與舊軟件的蘊含或連接成為可能,這種蘊含或連接所采用的方式使得軟件既能被實時有效地測試,也能在遠程通訊網絡中平穩(wěn)地和透明地被替換,而該網絡中的電訊業(yè)務并不受干擾。
這樣,可以相信,本發(fā)明的操作和構造從前面的描述中已經顯而易見。圖示的和描述的方法、裝置和系統(tǒng)已經按所愿意的方式來刻劃,人們將容易看到,在不離開以下的權利要求所定義的本發(fā)明的精神和范圍的情況下,是能夠進行各種改變和修改的。
權利要求
1.一種用于在計算機系統(tǒng)中將數據處理操作從先前裝入的第一軟件自動轉移至新近裝入的第二軟件的裝置,其中,第一軟件處理現有數據而由計算機系統(tǒng)接收新數據,其特征在于,所述裝置包括第一裝置,它把測試數據傳送至用以進行處理的第二軟件,所述測試數據模擬要被所述第一軟件處理的實際數據,與此同時現有實際數據和新的實際數據由所述第一軟件進行處理;第二裝置,響應于所述第二軟件對所述測試數據的成功處理,在用所述第一軟件繼續(xù)處理所述現有數據,并且從所述第一和第二軟件同時產生輸出數據時,用所述第二裝置來傳送所有的所述新數據至所述第二軟件;第三裝置,首先響應于由所述第一軟件完成對所述現有數據的處理,或者響應于開始把所有的所述新數據傳送至所述第二軟件之后一預選的時間間隔的結束,用所述第三裝置停止再用所述第一軟件來處理數據,由此在計算機系統(tǒng)運行期間可自動地完成從所述第一軟件至所述第二軟件的轉換,從而對數據處理操作的連續(xù)性不產生重大干擾。
2.一種用于在計算機系統(tǒng)中將數據處理操作從先前裝入的第一軟件自動地轉移至新近裝入的第二軟件的裝置,其中,由第一軟件處理現有數據而由計算機系統(tǒng)接收新數據,其特征在于,所述裝置包括第一裝置,它把測試數據傳送至用以進行處理的第二軟件,所述測試數據模擬要被所述第一軟件處理的實際數據;第二裝置,響應于所述第二軟件對所述測試數據的成功處理,在用所述第一軟件繼續(xù)處理所述現有數據時,用所述第二裝置來傳送所有的所述新數據至所述第二軟件;第三裝置,該裝置首先響應于由所述第一軟件完成對所述現有數據的處理,或者響應于開始把所有所述新數據傳送至所述第二軟件后的一預選的時間間隔的結束;第四裝置,響應于所述第二軟件對所述測試數據的成功處理,用所述第四裝置把實際數據的預定的有限個樣本傳送至所述第二軟件,否則這些樣本將由所述第一軟件處理;而其中用于將所有的所述新數據傳送至第二軟件的所述第二裝置是響應于所述第二軟件對所述測試數據和實際數據的樣本的成功處理,用于停止再用所述第一軟件來處理數據,由此在計算機系統(tǒng)運行期間可自動地完成從所述第一軟件至第二軟件的轉換,從而對數據處理操作的連續(xù)性不產生重大干擾。
3.如權利要求1或2所述的裝置,其特征在于所述計算機系統(tǒng)是一電信交換系統(tǒng);以及所述現有數據和新數據是由所述電信交換系統(tǒng)接收到的呼叫。
4.一種與電信交換系統(tǒng)一起使用的自動操作裝置,在電信交換系統(tǒng)中,當該系統(tǒng)接收新呼叫時,現有呼叫由先前裝入的第一軟件處理,所述自動操作裝置用于在所述交換系統(tǒng)運行期間將呼叫逐漸改道至后來裝入的第二軟件,并由該軟件作處理,而對連續(xù)的呼叫處理沒有重大干擾,其特征在于,所述自動操作裝置包括第一裝置,它可用于將模擬由所述第一軟件處理的實際呼叫的測試呼叫傳送至所述第二軟件,與此同時由所述第一軟件處理現有實際呼叫和新的實際呼叫;第二裝置,當由所述第一軟件對現有呼叫繼續(xù)進行處理而由所述第一和第二軟件同時產生輸出數據時,用第二裝置把由電信交換系統(tǒng)接收到的所有的新呼叫傳送至所述第二軟件;第三裝置,用于順序地操作所述第一和第二裝置,并且使所述第二軟件順序地經受下述測試(1)采用從所述第一裝置傳送至所述第二軟件的測試呼叫的第一呼叫處理測試,以及(2)隨著所述第二軟件成功地完成所述第一呼叫處理測試,采用由所述第二裝置傳送至所述第二軟件的新呼叫的第二呼叫處理測試;以及第四裝置,隨著由所述第二軟件成功地完成所述第二呼叫處理測試,用第四裝置把所有的呼叫處理控制從所述第一軟件轉移至所述第二軟件。
5.一種與電信交換系統(tǒng)一起使用的自動操作裝置,在電信交換系統(tǒng)中,當該系統(tǒng)接收新呼叫時,現有呼叫由先前裝入的第一軟件處理,所述自動操作裝置用于在所述交換系統(tǒng)運行期間將呼叫逐漸改道至后來裝入的第二軟件,并由該軟件作處理,而對連續(xù)的呼叫處理沒有重大干擾,其特征在于,所述自動操作裝置包括第一裝置,它可用于將模擬由所述第一軟件處理的實際呼叫的測試呼叫傳送至所述第二軟件;第二裝置,它可用于將由電信交換系統(tǒng)接收到的所有新呼叫傳送至所述第二軟件;第三裝置,用于順序地操作所述第一和第二裝置,并且使所述第二軟件順序地經受下述測試(1)采用從所述第一裝置傳送至所述第二軟件的測試呼叫的第一呼叫處理測試,以及(2)隨著所述第二軟件成功地完成所述第一呼叫處理測試,采用由所述第二裝置傳送至所述第二軟件的新呼叫的第二呼叫處理測試;第四裝置,隨著由所述第二軟件成功地完成所述第二呼叫處理測試,用第四裝置把所有的呼叫處理控制從所述第一軟件轉移至所述第二軟件;以及第五裝置,它可用于將實際呼叫的樣本部分傳送至所述第二軟件,否則這些樣本要由所述第一軟件來處理;其中,隨著所述第二軟件成功地完成所述第一呼叫處理測試,采用由所述第五裝置傳送至所述第二軟件的實際呼叫的所述樣本,所述第三裝置順序地操作所述第一、第二和第五裝置,以使所述第二軟件順序地經受附加的呼叫處理測試,并且在其中,所述第二呼叫處理測試是隨著由所述第二軟件成功地完成對所述第一和附加呼叫處理測試而進行的。
6.如權利要求4或5所述的自動操作裝置,其特征在于,所述第四裝置響應于下述情況而操作(1)由所述第二軟件成功地完成所述第二呼叫處理測試;以及(2)由所述第一軟件完成所述現有呼叫處理。
7.一種與計算機裝置一起使用的系統(tǒng),當系統(tǒng)用現有軟件處理現有數據并接收要被處理的新數據時,自動地將計算機裝置的數據處理控制轉移至新軟件,并對由現有軟件處理現有數據不產生重大干擾,還允許兩種軟件版本同時產生輸出數據,其特征在于,所述系統(tǒng)包括把新軟件裝入計算機裝置的裝置;在新的和現有的實際數據由現有軟件處理的同時,用新軟件來處理測試數據的裝置;在新軟件對所述測試數據進行成功的處理,而繼續(xù)用現有軟件處理現有數據并同時由新軟件和老軟件產生輸出數據之后,把所有新數據的處理控制自動轉移至新軟件的裝置;以及在新軟件成功地處理所述新數據之后,把全部數據處理控制自動轉移至新軟件的裝置。
8.如權利要求7所述的系統(tǒng),其特征在于用于自動轉移的所述裝置首先響應于在開始用新軟件處理所有的新數據而用現有軟件處理現有數據之后一預選的時間間隔的結束,或響應于用現有軟件完成現有數據的處理。
9.如權利要求8所述的系統(tǒng),其特征在于,在所述預選的時間間隔結束后,強制終止仍用老軟件處理的所有的事務處理。
10.如權利要求8所述的系統(tǒng),其特征在于,在所述預選的時間間隔結束后,把仍用老軟件處理的所有的事務處理都轉移至新軟件以完成處理。
11.如權利要求8所述的系統(tǒng),其特征在于,在所述預選的時間間隔結束后,打算把可能留下干擾的所有的事務處理轉移至新軟件作處理,而終止其他所有的事務處理。
12.如權利要求7所述的系統(tǒng),其特征在于,現有數據和新數據在多個并行、獨立和同時的事務中加以處理,并把這些事務動態(tài)地引至現有的軟件版本或新的軟件版本,并且還包括用一個指出事務模式的標幟來與每個事務相關聯(lián)的裝置;以及根據由相關聯(lián)的標幟指出的模式,把每個事務的整體動態(tài)地引至新的軟件版本或現有的軟件版本的裝置。
13.如權利要求12所述的系統(tǒng),其特征在于,一指出測試模式的標幟與基于輸入至系統(tǒng)的測試數據的所有的事務相關聯(lián),而把具有一與之相關聯(lián)的測試標幟的所有的事務引至新軟件,由此對整體作處理。
14.如權利要求12所述的系統(tǒng),其特征在于,一指出現有數據模式的標幟與基于所有實際數據的所有事務相關聯(lián),這些實際數據是在把新數據輸入至新軟件之前輸入至系統(tǒng)的,而把具有一與之相關聯(lián)的現有數據標幟的所有的事務引至現有軟件,由此對整體作處理。
15.一種與計算機裝置一起使用的系統(tǒng),當該系統(tǒng)用現有軟件處理現有數據并接收要被處理的新數據時,它自動地將計算機裝置的數據處理控制轉移至新軟件,并對由現有軟件處理現有數據不產生重大干擾,其特征在于,所述系統(tǒng)包括把新軟件裝入計算機裝置的裝置;用新軟件處理測試數據的裝置,測試數據模擬由現有軟件處理的實際數據;在新軟件成功地處理所述測試數據之后,把全部數據處理控制自動地轉移至新軟件的裝置;響應于新軟件對測試數據的成功處理,允許新軟件處理實際數據的一批樣本的裝置,否則這些樣本要由老軟件來處理,并且在其中,在對所述測試數據和實際數據的所述預定樣本部分都成功處理后,把全部數據處理控制自動地轉移至新軟件的所述裝置才工作。
16.如權利要求15所述的系統(tǒng),其特征在于,在由現有軟件對現有數據處理完成之后,才啟動用于自動轉移的所述裝置。
17.如權利要求16所述的系統(tǒng),其特征在于自動轉移用的所述裝置對于由新軟件成功地處理所有的新數據以及用現有軟件完成對現有數據的處理作出響應。
18.一種與計算機裝置一起使用的裝置,當系統(tǒng)用現有軟件處理現有數據并接收要被處理的新數據時,它自動地將計算機裝置的數據處理控制轉移至新軟件,并對由現有軟件處理現有數據不產生重大干擾,其中,現有數據和新數據都在一系列事務處理中處理,并且兩者都包括動態(tài)數據和半永久性數據,動態(tài)數據在處理每一事務時建立和使用,而在處理完成后刪除,半永久性數據在多個事務處理中使用并留存于其中,其特征在于,所述系統(tǒng)包括將新軟件裝入計算機裝置的裝置;將數據從現有軟件轉移至新軟件的裝置;使用新軟件處理測試數據的裝置,測試數據模擬被現有軟件處理的實際數據;以及在新軟件成功地處理所述測試數據之后,把全部數據處理控制自動地轉移至新軟件的裝置。
19.如權利要求18所述的系統(tǒng),其特征在于,新軟件中的數據表示法不同于現有軟件中的數據表示法,把數據從現有軟件轉移至新軟件的所述裝置包括用于把所述數據從所述現行的表示法轉換至所述新的表示法的裝置。
20.如權利要求19所述的系統(tǒng),其特征在于,將所述數據從所述現行的表示法轉換至所述新的表示法的所述裝置包括在所述新軟件所需的基礎上轉換所述數據的裝置。
21.如權利要求19所述的系統(tǒng),其特征在于,將所述數據從所述現行的表示法轉換至所述新的表示的所述裝置包括用于一次把所有的所述數據轉換至所述新的表示法的裝置;以及在所述現有軟件所需的基礎上,將所述數據從所述新的表示法再轉換至所述現行的表示法的裝置。
22.如權利要求19所述的系統(tǒng),其特征在于,它還包括響應于現有軟件或新軟件內半永久性數據每次初始更新,用于更新另一軟件內的半永久性數據的裝置。
23.如權利要求18所述的系統(tǒng),其特征在于,只把半永久性數據從現有軟件轉移至新軟件。
24.如權利要求18所述的系統(tǒng),其特征在于,它還包括;響應于現有軟件或新軟件內半永久性數據每次初始更新,用于更新在另一軟件內半永久性數據的裝置。
25.一種在電信交換系統(tǒng)連續(xù)運行期間平穩(wěn)而自動地從老的呼叫處理軟件改變到新的呼叫處理軟件,而沒有系統(tǒng)干擾的重大風險,并從老的和新的處理軟件同時產生輸出數據的系統(tǒng),其特征在于,所述系統(tǒng)包括用于在老軟件繼續(xù)處理呼叫時,把新軟件裝入系統(tǒng)的裝置;用于通過系統(tǒng)運行多個測試呼叫并將所有的所述測試呼叫送至新軟件作處理,而同時用老軟件處理實際呼叫的裝置;響應于新軟件成功地處理所述測試呼叫而同時用老軟件處理所有的現有呼叫并由老軟件和新軟件同時產生輸出數據,用于將系統(tǒng)接收到的所有的新呼叫送至新軟件裝置;以及響應于新軟件成功地處理所有的新呼叫,并終止由老軟件處理的所有的呼叫,用于從系統(tǒng)中移去老軟件的裝置。
26.一種在電信交換系統(tǒng)連續(xù)運行期間平穩(wěn)而自動地從老的呼叫處理軟件改變到新的呼叫處理軟件,而沒有系統(tǒng)干擾的重大風險的系統(tǒng),其特征在于,所述系統(tǒng)包括用于在老軟件繼續(xù)處理呼叫時,把新軟件裝入系統(tǒng)的裝置;用于通過系統(tǒng)運行多個測試呼叫并將所有的所述測試呼叫送至新軟件作處理的裝置;響應于新軟件成功地處理所述測試呼叫,并同時用老軟件繼續(xù)處理實際呼叫的剩余部分,用于把選定數目的實際呼叫送至新軟件的裝置;響應于新軟件成功地處理所述測試呼叫和所述選定數目的實際呼叫,用于把由系統(tǒng)接收到的所有的新呼叫送至新軟件的裝置;以及響應于新軟件成功地處理所有的新呼叫,并終止由老軟件處理的所有的呼叫,用于從系統(tǒng)中移去老軟件的裝置。
27.一種在電信交換系統(tǒng)連續(xù)運行期間平穩(wěn)而自動地從老的呼叫處理軟件改變到新的呼叫處理軟件,而沒有系統(tǒng)干擾的重大風險的系統(tǒng),其中,現有呼叫和新呼叫都是在一系列事務處理中處理的,兩者都具有相關的動態(tài)數據和半永久性數據,動態(tài)數據在每個事務處理中建立和使用并在處理完成后刪除,而半永久性數據在多個事務處理中使用并留存于其中,其特征在于,所述系統(tǒng)包括用于在老軟件繼續(xù)處理呼叫時,把新軟件裝入系統(tǒng)的裝置;用于把數據從老軟件轉移至新軟件的裝置;用于通過系統(tǒng)運行多個測試呼叫并將所有的所述測試呼叫送至新軟件作處理的裝置;響應于新軟件成功地處理所述測試呼叫,用于將由系統(tǒng)接收到的所有的新呼叫送至新軟件的裝置;以及響應于新軟件成功地處理所有的新呼叫,并終止由老軟件處理的所有的呼叫,用于從系統(tǒng)中移去老軟件的裝置。
28.如權利要求27所述的系統(tǒng),其特征在于,新軟件中的數據表示法不同于老軟件中的數據表示法,而用于把數據從老軟件轉移至新軟件的所述裝置包括用于把所述數據從所述老的表示法轉換至新的表示法的裝置。
29.如權利要求28所述的系統(tǒng),其特征在于,用于把所述數據從所述老的表示法轉換至所述新的表示法的所述裝置包括用于在所述新軟件所需的基礎上把所述數據從所述老的表示法轉換至所述新的表示法的裝置。
30.如權利要求28所述的系統(tǒng),其特征在于,用于把所述數據從所述老的表示法轉換至所述新的表示法包括一次將所有的所述數據轉換至所述新的表示法的裝置,并且還包括,用于在所述老軟件所需的基礎上把所述數據從所述新的表示法再轉換至所述老的表示法的裝置。
31.如權利要求28所述的系統(tǒng),其特征在于,它還包括響應于在老軟件或新軟件內半永久性數據的每次初始更新,用于更新另一軟件內半永久性數據的裝置。
32.如權利要求27所述的系統(tǒng),其特征在于只將半永久性數據從老軟件轉移至新軟件。
33.如權利要求27所述的系統(tǒng),其特征在于,它還包括響應于老軟件或新軟件內半永久性數據的每次初始更新,用于更新另一軟件內半永久性數據的裝置。
34.一種在電信交換系統(tǒng)連續(xù)運行期間平穩(wěn)而自動地從老的呼叫處理軟件改變至新的呼叫處理軟件的系統(tǒng),其特征在于,所述系統(tǒng)包括用于在老軟件繼續(xù)處理呼叫時,把新軟件裝入系統(tǒng)的裝置;用于通過系統(tǒng)運行多個測試呼叫,并把所有的所述測試呼叫送至新軟件作處理,而不停止到老軟件的所有的實際電信業(yè)務的裝置,包括用于只將模擬呼叫送至新軟件作處理,而所有的實際呼叫繼續(xù)由老軟件處理的裝置;以及響應于新軟件成功地處理所述模擬呼叫,用于將模擬呼叫和一選定數目的新呼叫送至新軟件作處理,而所有的剩下的新呼叫仍由老軟件處理的裝置;響應于新軟件成功地處理所述測試呼叫,用于把由系統(tǒng)接收到的所有的新呼叫送至新軟件的裝置;以及響應于新軟件成功地處理所有的新呼叫,以及終止或轉移由老軟件處理的所有的呼叫,用于把老軟件從系統(tǒng)中移去的裝置。
35.一種把分別處于第一和第二軟件應用程序中的第一和第二模塊動態(tài)地連接起來的系統(tǒng),通過提供一組定向點,以將運行軟件系統(tǒng)內的事件鏈動態(tài)地引至所述第一或第二應用程序的一個或另一個之中,其特征在于,所述系統(tǒng)包括用于分析由函數名尋址的消息的裝置;用于將這些消息引至所述第一或第二模塊的每一個中的進程;以及用于藉動態(tài)運行時間匯集,將進程的執(zhí)行引至所述第一或所述第二軟件模塊中,以有選擇地執(zhí)行所述進程的裝置。
36.一種用于動態(tài)連接第一軟件單元與第二軟件單元的計算系統(tǒng),其特征在于,所述系統(tǒng)包括用于在所述計算系統(tǒng)中建立一商人部分的裝置;用于將所述第一軟件單元裝入所述計算系統(tǒng)的裝置,所述第一軟件單元具有一顧客接口;用于將所述第二軟件單元裝入所述計算系統(tǒng)的裝置,所述第二軟件單元具有一與所述顧客接口兼容的服務員接口;用于在所述第一軟件單元中執(zhí)行一連接過程調用的裝置,所述連接過程調用規(guī)定所述顧客接口;用所述規(guī)定的顧客接口訪問所述商人部分以識別所述服務員接口的裝置;以及在執(zhí)行所述第一軟件單元時,用于以所述經識別的服務員接口來替代所述顧客接口,由此動態(tài)連接所述第一和第二軟件單元的裝置。
37.如權利要求36所述的計算機系統(tǒng),其特征在于,它還包括從一公共的接口說明產生所述顧客接口和所述服務員接口的裝置。
38.如權利要求37所述的計算機裝置,其特征在于,它還包括用一面向目標的規(guī)范,按與計算機程序語言無關的方式產生所述公共接口說明的裝置。
39.如權利要求38所述的計算機系統(tǒng),其特征在于,它還包括用于將第三軟件裝入所述計算機系統(tǒng)的裝置,所述第三軟件單元具有一第二服務員接口,該接口與所述顧客接口兼容;以及用于在所述商人部分公布所述第二服務員接口實際位置的裝置。
40.如權利要求39所述的計算系統(tǒng),其特征在于,用于裝入所述第一軟件單元的所述裝置包括用于在所述商人部分公布所述服務員接口實際位置的裝置。
41.如權利要求40所述的計算系統(tǒng),其特征在于,用于裝入所述第二軟件單元的所述裝置包括用于在所述商人部分公布所述服務員接口實際位置的裝置。
42.如權利要求41所述的計算系統(tǒng),其特征在于,用于訪問所述商人部分的所述裝置包括用所述規(guī)定的顧客接口訪問所述商人部分以識別所述第二服務員接口的裝置。
43.如權利要求42所述的計算系統(tǒng),其特征在于,所述顧客接口是C++計算機程序設計語言中的一類,而所述服務員接口是C++計算機程序設計語言中的一類。
44.如權利要求43所述的計算系統(tǒng),其特征在于,用于替代的所述裝置包括用所述第二服務員接口的實際位置,從所述第二服務員接口建立第二服務員接口目標的裝置;以及在執(zhí)行所述第一軟件單元時,把所述第二服務員接口目標表示為用類型分配由所述顧客接口建立的目標,由此動態(tài)地連接所述第一軟件單元和所述第三軟件單元的裝置。
45.如權利要求44所述的計算系統(tǒng),其特征在于,所述計算系統(tǒng)是一電信交換系統(tǒng)。
46.如權利要求44所述的計算系統(tǒng),其特征在于,所述計算系統(tǒng)是一臺個人計算機。
47.如權利要求44所述的計算系統(tǒng),其特征在于,所述計算系統(tǒng)是一計算機網絡。
48.如權利要求42所述的計算系統(tǒng),其特征在于,用于替代的所述裝置包括在執(zhí)行所述第一軟件單元時,用所述經識別的第二服務員接口來替代所述顧客接口,由此動態(tài)地連接第一和第三軟件單元的裝置。
49.如權利要求41所述的計算系統(tǒng),其特征在于,它還包括用于在所述第一軟件單元中接受一進程的裝置,所述進程具有一規(guī)定所述第二服務員接口的標志。
50.如權利要求49所述的計算系統(tǒng),其特征在于,用于執(zhí)行所述連接過程調用的所述裝置包括響應于所述已接受的進程,用于在所述第一軟件單元中執(zhí)行所述連接過程調用的裝置,所述連接過程調用規(guī)定所述顧客接口和所述第二服務員接口。
51.如權利要求50所述的計算系統(tǒng),其特征在于,用于訪問的所述裝置包括用所述規(guī)定的顧客接口訪問所述商人部分以識別所述第二服務員接口的裝置。
52.如權利要求51所述的計算系統(tǒng),其特征在于,用于替代的所述裝置包括在執(zhí)行所述第一接口時,用所述第二服務員接口替代所述顧客接口,由此把所述顧客接口與所述第二服務員接口動態(tài)地連接起來的裝置。
53.如權利要求41所述的計算系統(tǒng),其特征在于,它還包括用于在所述第一軟件單元中接受一進程的裝置,所述進程具有一規(guī)定所述服務員接口的標志。
54.如權利要求53所述的計算系統(tǒng),其特征在于,用于執(zhí)行所述連接過程調用的所述裝置包括響應于所述所接受的進程,在所述第一軟件單元中執(zhí)行所述連接過程調用的裝置,所述連接過程調用規(guī)定了所述顧客接口和所述服務員接口。
55.如權利要求54所述的計算系統(tǒng),其特征在于,所述計算系統(tǒng)是一電信交換系統(tǒng)。
56.如權利要求54所述的計算裝置,其特征在于,所述計算系統(tǒng)是一臺個人計算機。
57.如權利要求54所述的計算系統(tǒng),其特征在于,所述計算系統(tǒng)是一計算機網絡。
58.如權利要求38所述的計算系統(tǒng),其特征在于,所述顧客接口和所述服務員接口與一單一的識別號相關聯(lián)。
59.如權利要求57所述的計算系統(tǒng),其特征在于,用于訪問所述商人部分的所述方法包括用與所述顧客接口相關聯(lián)的所述單一的識別號訪問所述商人部分以識別所述服務員接口的裝置。
60.如權利要求37所述的計算機系統(tǒng),其特征在于,用于裝入所述第一軟件單元的所述裝置包括用于在所述商人部分公布所述顧客接口的實際位置的裝置。
61.如權利要求60所述的計算機系統(tǒng),其特征在于,用于裝入所述第二軟件單元的所述裝置包括用于在所述商人部分公布所述服務員接口的實際位置的裝置。
62.如權利要求61所述的計算機系統(tǒng),其特征在于,用于替代的所述裝置包括用所述服務員接口的實際位置,從所述服務員接口產生一服務員接口目標的裝置;在執(zhí)行所述第一軟件單元時,將所述服務員接口目標表示為用類型分配從所述顧客接口建立的一個目標,由此將所述第一軟件單元和所述第二軟件單元動態(tài)地連接起來的裝置。
63.如權利要求62所述的計算機系統(tǒng),其特征在于,所述計算機系統(tǒng)是一電信交換系統(tǒng)。
64.如權利要求62所述的計算機系統(tǒng),其特征在于,所述計算機系統(tǒng)是一臺個人計算機。
65.如權利要求62所述的計算機系統(tǒng),其特征在于,所述計算機系統(tǒng)是一計算機網絡。
66.如權利要求61所述的計算機系統(tǒng),其特征在于,所述顧客接口是在C++計算機程序設計語言中的一類,而所述服務員接口是C++計算機程序設計語言中的一類。
67.如權利要求37所述的計算機系統(tǒng),其特征在于,用于產生接口的所述裝置包括用一脫機存根產生我具,從一公共的接口說明產生所述顧客接口和所述服務員接口的裝置,所述脫機存根產生工具在所述顧客接口與所述服務員接口之間提供協(xié)調。
68.如權利要求67所述的計算機系統(tǒng),其特征在于,用于產生接口的所述裝置包括用于產生包含至少一個顧客接口的顧客文件的裝置;以及用于產生包含至少一個服務員接口的服務員文件的裝置。
69.如權利要求68所述的計算機系統(tǒng),其特征在于,用于產生一顧客接口的顧客文件的所述裝置包括用于產生包含一個顧客接口的顧客文件,該顧客接口與在所述已產生的服務員文件中的相關聯(lián)的服務員接口兼容。
70.如權利要求37所述的計算機系統(tǒng),其特征在于,所述公共接口說明是面向目標的,而且所述計算機系統(tǒng)還包括用一種面向目標的接口描述語言產生所述公共接口說明的裝置。
71.如權利要求70所述的計算機裝置,其特征在于,用于產生所述公共接口說明的所述裝置包括從一基本接口產生所述公共接口說明的裝置,所述公共接口說明繼承所述基本接口的規(guī)定方法。
72.一種用于動態(tài)地連接初始和替代軟件模塊的系統(tǒng),其中,所述初始和替代軟件模塊由相同的函數名識別,并且所述模塊包括操作實時計算機系統(tǒng)的多個進程,其特征在于,所述系統(tǒng)包括用于在所述計算機系統(tǒng)中生成包含所述初始和替代軟件模塊的所述函數名的表的裝置;用于在所述計算機系統(tǒng)中接收事件鏈的裝置,其中,每個事件包括一個目的地函數名和一個事件方向參數;如果所述事件的目的地函數名與所述表函數名相同,用于在所述事件鏈中用所述事件的目的地函數名過濾每個所述事件,以將所述事件送至所述表的裝置;以及使用所述事件的的事件方向參數,用于把所述經過濾的事件引向所述初始軟件模塊或所述替代軟件模塊,以在所述實時計算機系統(tǒng)中實行所述初始和替代軟件模塊的動態(tài)運行時間匯集。
73.如權利要求72所述的系統(tǒng),其特征在于,所述表還包含一個表方向參數,并且所述用于引向的裝置包括如果所述事件方向參數滿足所述表方向參數的條件,用于把所述經過濾的事件引向所述替代軟件模塊的裝置;以及否則用于把所述經過濾的事件引向所述初始軟件模塊的裝置。
74.如權利要求73所述的系統(tǒng),其特征在于,所述表方向參數包括一個時間標記閾值,而所述事件方向參數包括一個時間標記值,其中,如果所述時間標記值等于或大于所述時間標記閾值,則用于把所述經過濾的事件引向所述替代軟件的裝置包括用于把所述經過濾的事件引向所述替代軟件模塊的裝置,以及其中,如果所述時間標記值小于時間標記閾值,則用于把所述經過濾的事件引向所述初始軟件的裝置包括用于把所述經過濾的事件引向所述初始軟件模塊的裝置。
全文摘要
在電訊交換系統(tǒng)中希望能在系統(tǒng)運行期間不停止系統(tǒng)運行而很快地進行軟件替換,本發(fā)明所揭示的系統(tǒng)能平穩(wěn)地進行這種修改,并使之對現行活動的影響最小;所揭示的系統(tǒng)把電訊系統(tǒng)的動態(tài)操作作為一組平行而獨立的事務處理來對待且每個事務處理由一系列相關活動組成,使得能在運行中改變軟件;這種事務處理一般是與系統(tǒng)的一個特定用戶如電話用戶或操作員相聯(lián)系的一個功能元素,如待系統(tǒng)處理的一個呼叫或待系統(tǒng)執(zhí)行的一個命令。
文檔編號G06F11/00GK1233011SQ9910480
公開日1999年10月27日 申請日期1999年4月2日 優(yōu)先權日1992年7月1日
發(fā)明者里卡德·尼爾松, 烏爾夫·馬克斯特倫, 萊夫·克勞夫佛 申請人:L·M·埃利克遜電話股份有限公司