專利名稱:在計算機系統(tǒng)上安裝軟件和對其進行測試的方法
技術(shù)領(lǐng)域:
本發(fā)明揭示在計算機系統(tǒng)制造中使用的設(shè)備。
本申請涉及共有未決的中國專利申請序列號98117364.0,在1998年8月21日遞交,名稱為“定制的計算機系統(tǒng)的軟件安裝與測試”,發(fā)明人為理查德.D.安伯格,羅杰.W.翁,邁克爾.A.布倫德里基。
本申請涉及共有未決的中國專利申請序列號98118805.2,在1998年8月28日遞交,名稱為“對定制計算機系統(tǒng)的軟件安裝和測試”。發(fā)明人為理查德.D.安伯格,羅杰.w.翁,邁克爾.A.布倫德里基。
本申請涉及共有未決的中國專利申請序列號98117654.2,在1998年8月28日遞交,名稱為“便于對定制計算機系統(tǒng)的軟件安裝和測試的數(shù)據(jù)庫”。發(fā)明人為理查德.D.安伯格,羅杰.w.翁,邁克爾.A.布倫德里基。
這些共有未決的申請在此作為一整體參考使用,并被授權(quán)給本發(fā)明的受讓人。
通用的個人計算機系統(tǒng)和特定的IBM兼容個人計算機系統(tǒng)在向社會的各領(lǐng)域提供計算能力得到了廣泛的使用。個人計算機通??杀欢x為桌上型、地上站立型或可移動的微型計算機,包括具有一個系統(tǒng)處理器的系統(tǒng)單元和相關(guān)的易失或非易失存儲器,顯示監(jiān)視器、鍵盤、一個或多個磁盤驅(qū)動器,一個硬盤存儲設(shè)備和一個可選的打印機。
眾所周知,在將計算機系統(tǒng)發(fā)貨給商業(yè)或個人客戶之前要對它們安裝軟件和進行測試。進行軟件安裝和測試的目的是能有效地生產(chǎn)出有用的、可靠的、可被運送到商業(yè)或個人而又沒有差錯并能隨時運行的計算機系統(tǒng)。一般地,測試要檢測和分析在計算機系統(tǒng)中硬件和軟件部分出現(xiàn)的差錯。計算機系統(tǒng)硬件測試的部分清單包括對硬件組件如處理器、存儲器、磁盤存儲設(shè)備、聲音設(shè)備、圖形設(shè)備、鍵盤、鼠標和打印機的診斷。軟件安裝通常包括裝載所需的軟件包到計算機系統(tǒng)、為計算機提供各種相應(yīng)的環(huán)境以及為安裝的軟件準備相應(yīng)的初始化文件。軟件測試包括確保所需的軟件版本已安裝到計算機系統(tǒng),并且在計算機系統(tǒng)上提供有相應(yīng)的驅(qū)動器程序。
眾所周知,在工業(yè)上計算機系統(tǒng)在被送往客戶之前通過執(zhí)行一固定的過程在制造期間安裝軟件并測試計算機系統(tǒng)。例如,生成針對某一特定類型計算機系統(tǒng)包含某個診斷測試的磁盤。該盤包括很長的、經(jīng)常復(fù)雜的、指導(dǎo)軟件安裝和診斷過程的批處理文件。該盤包括對正購買的計算機系統(tǒng)執(zhí)行測試的所有可執(zhí)行文件。
每一個正被組裝的計算機系統(tǒng)都設(shè)置有該盤的相應(yīng)拷貝。根據(jù)在批處理文件中的命令,在制造過程和對各自的計算機系統(tǒng)測試期間,這些盤都要伴隨在工廠內(nèi)正進行組裝的計算系統(tǒng)。如果對該過程需要做出修改,通過增加或刪除部分批處理代碼來相應(yīng)地改變批處理文件。對批處理文件的改變導(dǎo)致正在被組裝的每一個隨后的計算機系統(tǒng)的測試參數(shù)的改變,因為每一個計算機系統(tǒng)共享同一個批處理文件診斷程序。
盡管這種診斷配置在計算機系統(tǒng)被運送前提高其可靠性方面顯示出某種可用性,但還留下有待提高的空間。比如,隨著測試的進行而變得更復(fù)雜和精確時,診斷測試的批處理文件和可執(zhí)行文件經(jīng)常超過磁盤的存儲容量。而且,很難或不可能為單個定制的計算機系統(tǒng)或某一系列計算機系統(tǒng)定制測試和軟件安裝過程的命令而不必修改對某他系統(tǒng)或系列的測試,而且也不可能也很難針對一單個定制的計算機系統(tǒng)和對某一系列計算機系統(tǒng)修改軟件安裝或測試的指令而不必為其他系統(tǒng)或系列修改該指令。最終,當前批處理文件的結(jié)構(gòu)的非常復(fù)雜的本質(zhì)有時使制造商們很難快而有效地解決或維持測試和軟件安裝。
因此所需要的是提供一種比先有技術(shù)有所改善的在計算機系統(tǒng)上安裝軟件和/或?qū)ζ溥M行測試的方法。
按照一個實施例,提供了一種在一計算機系統(tǒng)上安裝軟件和對其進行測試的方法,包括從一個計算機可讀的文件中讀取多個組件描述符、其中每一個組件描述符說明一個計算機系統(tǒng)的組件,從一個數(shù)據(jù)庫中讀取多個步驟、其中每一個步驟與一個組件描述符相關(guān)并且包括一個序列號,和按照此序列號以預(yù)定的次序排序此多個步驟以提供一個包括用于在計算機系統(tǒng)上安裝軟件和/或?qū)ζ溥M行測試的命令的步驟序列。該方法還包括針對從數(shù)據(jù)庫中讀取的每一步,利用數(shù)據(jù)庫中與該步驟相關(guān)的數(shù)據(jù)判定該步驟是否與一個組件的計算機系統(tǒng)所提供的組件而不是與對應(yīng)該步驟的組件不兼容,如果是,放棄該步驟或在數(shù)據(jù)庫中不再采用與此步驟相關(guān)的進一步的數(shù)據(jù)。
按照另一實施例,提供了一種在一計算機系統(tǒng)上安裝軟件和對其進行測試的方法,包括從一個計算機可讀的文件中讀取多個組件描述符、其中每一個組件描述符分別說明一個計算機系統(tǒng)的組件,從一個數(shù)據(jù)庫中讀取多個步驟、其中每一個步驟分別與一個組件描述符相關(guān)并且包括一個序列號,和按照此序列號以預(yù)定的次序排序此多個步驟以提供一個包括用于在計算機系統(tǒng)上安裝軟件和/或?qū)ζ溥M行測試的命令的步驟序列。該方法還包括針對從數(shù)據(jù)庫中讀取的每一步,利用數(shù)據(jù)庫中與該步驟相關(guān)的數(shù)據(jù)判定此步驟是否要求有參數(shù),如果有則按照此數(shù)據(jù)庫中與該步驟相關(guān)的進一步的數(shù)據(jù)計算此參數(shù)。
圖1是表示軟件安裝和測試的簡略圖;圖2是根據(jù)另一實施例的軟件安裝和測試的簡略圖;圖3A是根據(jù)本發(fā)明把一計算機定單轉(zhuǎn)換成系統(tǒng)描述符記錄的流程圖;圖3B表示一示例計算機定單的一部分,基本組件記錄(BAR)文件和系統(tǒng)描述符記錄;圖4是用于生成和提供步驟序列的流程圖;圖5A是對圖5B和5C之間關(guān)系的簡要說明;圖5B是用于生成步驟序列的更詳細的流程圖的第一部分;圖5C是用于生成步驟序列的更詳細的流程圖的第二部分;圖6表示一個數(shù)據(jù)庫結(jié)構(gòu);
圖7是一步驟文件的部分的舉例;圖8-13是用于執(zhí)行步驟序列的程序的運行的流程圖。
本文的描述是為了說明的目的而不是限制性的,在附圖中相同或相似的元件用同一參考號來表示。在說明中,一模塊被定義為一個命令或命令集。
圖1是在計算機系統(tǒng)制造區(qū)軟件安裝和測試系統(tǒng)90的簡要圖。在運行中,設(shè)置定單92以購買定制的目標計算機系統(tǒng)160。目標系統(tǒng)160將被制造成包含多個硬件和軟件組件。例如,目標系統(tǒng)160可包括某一品牌的硬驅(qū),某一型號的監(jiān)視器,某種品牌的處理器和某一版本的操作系統(tǒng)。在目標系統(tǒng)160被送往客戶之前,安裝并測試多個組件。這種安裝和測試確保在該系統(tǒng)被客戶收到并準備運行時是一個可靠的、工作的計算機系統(tǒng)。
由于不同系列的計算機系統(tǒng)和不同的計算機組件要求有不同的軟件安裝和測試步驟,有必要確定需要對目標系統(tǒng)160運行哪些測試并以什么樣的次序來進行這些測試以便取得一個有效的軟件安裝和測試過程。步驟生成器140是一個配置為排序要在目標系統(tǒng)160上運行的軟件安裝和測試步驟的計算機系統(tǒng)。為了排序軟件安裝和/或測試步驟,步驟生成器140、尤其是駐留在步驟生成器140上的排序程序204首先從描述符文件96讀取多個組件的描述符信息。描述符文件96借助轉(zhuǎn)換模塊94通過將對應(yīng)于具有希望的組件的所需的計算機系統(tǒng)的定單92轉(zhuǎn)換成計算機可讀的格式。
組件描述符是由定單92所定義的、計算機可讀的目標系統(tǒng)160的組件的描述信息。在優(yōu)選實施例中,組件描述符包含在稱為系統(tǒng)描述符記錄的描述符文件中,該系統(tǒng)描述符記錄是包含要被安裝到目標系統(tǒng)160上組件、硬件和/或軟件清單的計算機可讀的文件。在讀取多個組件描述符后,排序程序204通過網(wǎng)絡(luò)連接110從數(shù)據(jù)庫100中檢索對應(yīng)于組件描述符的軟件安裝和測試步驟。網(wǎng)絡(luò)連接110可以是任何已知的網(wǎng)絡(luò)連接,如本地網(wǎng)、因特網(wǎng)、包含在數(shù)據(jù)庫100中的信息可通過以箭頭130指示的修改來更新。
在檢索到與目標系統(tǒng)160相適應(yīng)的軟件安裝和/或測試步驟后,排序程序204根據(jù)對應(yīng)于每一步的序列號以預(yù)定的順序排序這些步驟。在已經(jīng)排序目標系統(tǒng)160所需要的步驟后,排序程序204寫出一系列輸出文件到步驟盤150。在圖1所說明的實施例中,輸出文件包括文本文件,該文本文件包含用于在目標系統(tǒng)160上執(zhí)行相應(yīng)的軟件安裝和/或測試步驟的命令行。根據(jù)對應(yīng)于每一步的序列號以預(yù)定的次序來執(zhí)行。在工廠里步驟盤150和目標系統(tǒng)160裝在一起,在這里直接從步驟盤150或從通過網(wǎng)絡(luò)連接180連到目標系統(tǒng)160的文件服務(wù)器190上運行該測試。最好網(wǎng)絡(luò)連接180是插進目標計算機系統(tǒng)的相應(yīng)網(wǎng)絡(luò)端口的普通網(wǎng)絡(luò)設(shè)備。隨著軟件安裝和測試步驟的執(zhí)行,其結(jié)果通過網(wǎng)絡(luò)連接180被登記到文件服務(wù)器190。
圖2是針對本發(fā)明的另一實施例的軟件安裝和測試系統(tǒng)192的簡要圖。一個客戶設(shè)置定單92購買定制的目標計算機系統(tǒng)160。目標系統(tǒng)160將被制造成包含多個組件,而組件可包括硬件和/或軟件組件。在目標系統(tǒng)160被送往客戶之前,要安裝多個組件和進行測試。這種安裝和測試優(yōu)先確保在客戶接到后準備運行時是一個可靠,可工作的計算機系統(tǒng)。
為了排序軟件安裝和測試步驟,排序程序204從描述符文件96讀取多個組件描述信息。定單92通過轉(zhuǎn)換模塊94被轉(zhuǎn)換成描述符文件96。組件描述符是目標系統(tǒng)160的組件的計算機可讀的說明。在優(yōu)選實施例中,組件描述符包括在稱為系統(tǒng)描述符記錄的描述符文件中,包含每一個組件(硬件和軟件)的清單的計算機可讀文件被裝到目標系統(tǒng)160。系統(tǒng)描述符記錄可被直接存儲在文件服務(wù)器202上。排序程序204從數(shù)據(jù)庫100中檢索對應(yīng)于組件描述符的多個軟件安裝和/或測試步驟。在檢索到針對目標系統(tǒng)160的相應(yīng)軟件安裝和測試步驟后,排序程序204根據(jù)對應(yīng)每一步的序列號按照預(yù)定的次序排序這些步驟。在排序完目標系統(tǒng)160所需的步驟后,排序程序204通過網(wǎng)絡(luò)連接195和180以預(yù)定的次序指導(dǎo)在目標系統(tǒng)160上軟件安裝和測試的執(zhí)行。希望網(wǎng)絡(luò)連接200是插進目標系統(tǒng)160的相應(yīng)部分的本地網(wǎng)絡(luò)設(shè)備。網(wǎng)絡(luò)195可以是大家熟知的任何通信連接。隨著軟件安裝和測試步驟的執(zhí)行。安裝和測試的結(jié)果通過網(wǎng)絡(luò)連接200登記到文件服務(wù)器202或存儲在相應(yīng)的數(shù)據(jù)庫中。從說明中很明顯看到,并不需要圖1的分離的步驟生成器計算機系統(tǒng)140。另外,步驟盤150也不是必須的。而且,只有配置為引導(dǎo)目標系統(tǒng)160的引導(dǎo)盤220才需要在出廠時與目標系統(tǒng)160裝在一起。
在大致地敘述了軟件安裝和測試系統(tǒng)之后,現(xiàn)在詳細描述圖1和圖2中系統(tǒng)的運行。
圖3A描述了該優(yōu)選過程,其中對計算機系統(tǒng)的定單被轉(zhuǎn)換成計算機可讀的系統(tǒng)描述符記錄。該定單可以是任何格式。例如,不同的定單格式也可以有不同的定單傳送機制。例如,針對目標計算機系統(tǒng)的定單可以是通過電話、郵件或計算機網(wǎng)絡(luò)(如internet)等發(fā)出。不管采取什么定單格式,該定單包括客戶希望購買的計算機系統(tǒng)的類型、客戶希望目標計算機系統(tǒng)包括的特定組件的清晰清單。在收到定單后,控制進到傳輸模塊310,在該模塊中目標計算機系統(tǒng)的定單通過計算機網(wǎng)絡(luò)被傳送到生產(chǎn)該計算機系統(tǒng)的生產(chǎn)系統(tǒng)(未示出)。該定單也被提供給軟件安裝和測試系統(tǒng),在這里它被融合進模塊320中的轉(zhuǎn)換程序。在模塊310中使用的計算機網(wǎng)絡(luò)可以是目前已知的任何類型網(wǎng)絡(luò)。
該轉(zhuǎn)換程序把目標計算機系統(tǒng)的定單轉(zhuǎn)換到用于生產(chǎn)過程的一個記錄。尤其是,該轉(zhuǎn)換程序把計算機訂貨單首先轉(zhuǎn)換成在模塊330中稱為BAR文件的記錄。最好,該BAR文件包含能識別正在生產(chǎn)的特定計算機系統(tǒng)的唯一標識符。該BAR文件也包含一份詳細的組件清單,該清單包括包含在該目標系統(tǒng)中硬件和軟件。而且希望該BAR文件包含特定生產(chǎn)商的組件號以及其他針對每一個組件的有用標識符。最后,該BAR文件包含與用戶相關(guān)的信息,如姓名、地址和電話號碼等。
在生成模塊330中BAR文件之后,在模塊340中生成系統(tǒng)描述符記錄。在優(yōu)選實施例中系統(tǒng)描述符記錄描述與該目標計算機系統(tǒng)包含在一起的硬件和軟件組件的計算機可讀文件。在優(yōu)選實施例中,系統(tǒng)描述符記錄以包含硬件標簽、軟件標簽、信息標簽和注解的形形式包含目標系統(tǒng)的組件清單。硬件標簽標識排序程序204在標簽之后的信息是關(guān)于硬件組件的。同樣軟件標簽標識在標簽之后的信息是關(guān)于軟件的組件的。信息標簽指示隨后是一般信息。注解允許各種聲明被加進到系統(tǒng)描述符記錄,但它被排序程序204忽略。希望系統(tǒng)描述符記錄是人可讀和易于理解的文本文文件。這種文件有利于軟件安裝和測試過程的疑難解決和維護。應(yīng)明白,系統(tǒng)描述符記錄可以是對應(yīng)于唯一一套標志的唯一標識符清單,例如,舉個簡單例子,系統(tǒng)描述符可以是組件號的清單。
圖3B表示目標計算機系統(tǒng)定單350、一個相應(yīng)的BAR文件360和一個相應(yīng)的系統(tǒng)描述符記錄370的一個例子。目標計算機系統(tǒng)定單350包含計算機系列的名稱,在本說明中為系列“X”。在目標計算機系統(tǒng)定單350中包含三個作為示例的硬件組件,包括一個奔騰處理器、一個硬驅(qū)和一個顯示器。BAR文件360是通過在圖3A的模塊320中描述的轉(zhuǎn)換程序運行目標計算機系統(tǒng)定單350而得到的。BAR文件360包含針對在系列X中的特定的目標計算機系統(tǒng)的唯一標識符。BAR文件360還包括在目標計算機系統(tǒng)定單中列出的針對每一個組件的與廠商相關(guān)的組件號碼。而且,BAR文件360包含一個標識符,指示所要求的每個組件的質(zhì)量以及包含在目標計算機系統(tǒng)中每一個組件的文字描述。系統(tǒng)90使用BAR文件360生成系統(tǒng)描述符記錄370。
如所說明的,系統(tǒng)描述符記錄370包括針對系列X中特定的目標計算機系統(tǒng)的唯一標識符。而且,系統(tǒng)描述符記錄370包含相應(yīng)的標簽,在這里指示處理器、硬驅(qū)和顯示器都是硬件組件而不是軟件組件。系統(tǒng)描述符記錄370以文本的形式描述這些組件。而且,作為舉例的系統(tǒng)描述符記錄370包含一個軟件標簽,指示對屬于系列X的該目標計算機系統(tǒng)要安裝或測試一定的軟件。例如該軟件標簽可以指示適于此奔騰處理器的某操作系統(tǒng)總是被安裝到屬于系列X的目標計算機系統(tǒng)的硬驅(qū)上。
在圖4中說明了用于排序軟件安裝和測試步驟的優(yōu)選的通用方法。在模塊400中為目標計算機系統(tǒng)160生成該目標計算機系統(tǒng)的唯一標識符。在圖1描述的實施例中,位于步驟生成器計算機系統(tǒng)140的一個用戶向步驟生成器140的排序程序204提供該唯一標識符(例如,作為跟蹤碼的BAR文件),相應(yīng)地,在圖2的實施例中,在收到目標計算機和系統(tǒng)定單后,唯一標識符被自動讀進排序程序。
在模塊410,定位一個對應(yīng)于BAR文件標識符的系統(tǒng)描述符記錄。在圖1的實施例中,或者網(wǎng)絡(luò)連接110或者網(wǎng)絡(luò)連接195定位系統(tǒng)描述符記錄。在圖2的實施例中,網(wǎng)絡(luò)連接195定位該系統(tǒng)描述符記錄。在模塊420,所定位的系統(tǒng)描述符記錄被提供給排序程序204。在圖1實施例中,排序程序駐留在步驟生成器計算機系統(tǒng)140中而在圖2實施例中排序程序駐留在文件服務(wù)器202中。排序程序204與數(shù)據(jù)庫100(圖1和2中的)一起排序目標計算機系統(tǒng)160的軟件安裝和測試步驟。一旦排序完適應(yīng)于該特定目標計算機系統(tǒng)的軟件安裝和測試步驟,排序程序生成如模塊430中描述的輸出文件。
在圖1描述的實施例中,寫到步驟盤150(見圖1)的輸出文件是一個步驟文件和一個Setenv.bat文件。該步驟文件是一個包含用于執(zhí)行針對所定購的目標計算機系統(tǒng)的軟件安裝和測試步驟的相應(yīng)命令行的清單的ASCⅡ文本文件。在優(yōu)選實施例中該步驟文件也包含被循環(huán)的命令。尤其是該步驟文件允許命令被重復(fù)迭代一預(yù)定的次數(shù)或一預(yù)定的時間長度。這種格式優(yōu)先地允許以計算的、預(yù)定的方式重復(fù)軟件安裝和測試步驟。Setenv.bat文件設(shè)置在目標計算機系統(tǒng)上的環(huán)境變量。此Step文件和Setenv.bat文件是包含用于執(zhí)行此目標計算機系統(tǒng)的軟件安裝和測試步驟的相應(yīng)命令行的清單的ASCⅡ文本代碼文件。此步驟文件被分成多個單獨的子文件,每一個子文件具有針對相應(yīng)的生產(chǎn)階段如目標計算機系統(tǒng)生產(chǎn)中Quick Test(Qt)、Extended Test1(ET1)、Extended Test2(ET2)、Software Install(SI)和Final Test(FT)階段的步驟。
在圖2的實施例中。另一方面,輸出文件不寫到圖1所示的步驟盤。相反,輸出文件駐留在文件服務(wù)器202或文件服務(wù)器190中,在此它們用于指示在目標計算機系統(tǒng)160上軟件安裝和/或測試步驟的運行。
圖5A到5C更詳細地描述了圖1和圖2中排序程序204的運行。
確定模塊500確定一個定單的起始。這時只考慮左側(cè)分支。如果需要,模塊502施加一個或多個插入碼到系統(tǒng)描述符記錄。在優(yōu)選實施例中,該插入碼是標準組件,允許為某一特定的目標計算機系統(tǒng)、某計算機系統(tǒng)系列或為某一組件生成一個插入碼。例如,如果一個生產(chǎn)商在某一天希望把某一個計算機系統(tǒng)系列的一種品牌的硬驅(qū)替換成另一個,就可以生成一個插入碼,該插入碼修改包含要被替換的硬驅(qū)系統(tǒng)操作符記錄并在模塊502中完成該替換。
然后模塊504把對應(yīng)于目標計算機系統(tǒng)160的系統(tǒng)操作符記錄(被修補的)輸入到排序程序204。在模塊506,從系統(tǒng)描述符記錄讀取組件描述符。每一個組件描述符描述該目標計算機系統(tǒng)的一個相應(yīng)的組件,硬件和軟件。
參看圖3B,在模塊370中包含奔騰處理器的系統(tǒng)描述符記錄的行是一個示例組件描述符。在模塊508,排序程序204實例化分別對應(yīng)此目標計算機系統(tǒng)160的多個組件的多個導(dǎo)出對象。在優(yōu)選實施例中,這些導(dǎo)出對象用于存儲需要在目標計算機系統(tǒng)160上運行的有關(guān)軟件安裝和測試步驟的信息(從數(shù)據(jù)庫100獲取)。相應(yīng)地,在模塊510中,每一個導(dǎo)出的對象與目標計算機系統(tǒng)160的各自組件相聯(lián)系。
現(xiàn)在從模塊500參照右側(cè)分支。在這種情況下,假設(shè)定單被客戶直接以Bill of Material的形式作為記錄存儲在數(shù)據(jù)庫中,這種記錄包括與目標計算機系統(tǒng)相關(guān)的組件描述符。當模塊514從數(shù)據(jù)庫讀取Bill of Material(存儲在該數(shù)據(jù)庫以為排序程序204所用)時,模塊512,與模塊502一樣,應(yīng)用偏差(插入碼)到Bill of Material。
在模塊516,與目標計算機系統(tǒng)160的各自組件相關(guān)的軟件安裝和測試步驟被從數(shù)據(jù)庫100中檢索并存儲在相應(yīng)的導(dǎo)出對象中。在圖1的實施例中,這些步驟被通過網(wǎng)絡(luò)110檢索而在圖2實施例中這些步驟被直接從文件服務(wù)器202中檢索。為了描述在優(yōu)選實施例中這些步驟是如何從數(shù)據(jù)庫100中檢索的,需要描述該數(shù)據(jù)庫的優(yōu)選建立。
圖6表示數(shù)據(jù)庫100的設(shè)計。數(shù)據(jù)庫100以預(yù)定的次序使軟件安裝和/或測試步驟的序列與計算機系統(tǒng)系列相關(guān)。而且,數(shù)據(jù)庫100被配置為與計算機系統(tǒng)的組件相關(guān)。尤其是,數(shù)據(jù)庫100使軟件安裝和/或測試步驟與計算機系統(tǒng)的組件相關(guān)。
數(shù)據(jù)庫100最好是一個關(guān)系數(shù)據(jù)庫,數(shù)據(jù)庫100包含幾個表,每一個表包含適用于生成上面提到的關(guān)聯(lián)的屬性。
數(shù)據(jù)庫100包含Step表102、Family表104、FamilyStepSeq表106、Component表108、FamilyComponent表112、ComponentStep表114、StepDependency表116、StepParameter表118、ComponentClass表120、ComponentClassAttr表122和OperatorMsg表124。在優(yōu)選實施例中,每一個表包含屬性列表,被加下劃線的屬性作為主關(guān)鍵字。
Step表102包含所有計算機系列的所可能組件的軟件安裝和測試步驟。在優(yōu)選的結(jié)構(gòu)中,Step表102的屬性包括StepID、Name、Command、CommandType、AfterActionType、MaxInstance、ClassID和DepMask。StepID是每一個軟件安裝或測試步驟的唯一標識號。Name是規(guī)定指示該步驟的名稱的一個字符串。Command是指定用于在目標計算機系統(tǒng)160(在圖1和2中所指示的)上執(zhí)行軟件安裝或測試步驟的可執(zhí)行命令行的字符串。AfterActionType是確定在軟件安裝或測試步驟完成后是否需要暫停或重啟動的標識符。MaxInstance是指示該步驟所允許執(zhí)行的最大次數(shù)的標識符。ClassID標識與軟件安裝或測試步驟相關(guān)的某一類型或類的組件(如硬驅(qū)、CD-ROM等)。最后,DepMask記錄有關(guān)一特定的步驟是否具有步驟從屬性和/或步驟參數(shù)的信息并因此確定是否必須進入StepDependency表116和/或StepParameter表118。
Family表104用一個在屬性FamilyID聲明的標識整數(shù)來標識每一系列的計算機系統(tǒng)。而且在Family表中也包括一個標識該系列計算機的名稱的字符串。
FamilyStepSeq表106是一個包含Step表102與Family表104之間的關(guān)系的關(guān)系表。FamilyStepSeq表106包含一個在屬性FamilyID中聲明的、針對一特定系列計算機系統(tǒng)(從Family表104)的系列標識整數(shù),一個在屬性StepID(從Step表102)中聲明的、標識一套特定與該系列相適應(yīng)的步驟的步驟標識整數(shù),和一個序列號。該序列號包含在屬性StepSeqNum,該屬性表示一個在其中與一特定系列相關(guān)的步驟將要運行的預(yù)定的次序。測試工程師分配該序列號,它在每一個生產(chǎn)階段都是唯一的,并以對某一特定目標系統(tǒng)是最有效的順序來選擇。應(yīng)明白,可以使用其它分配序列號的方式。最后,F(xiàn)amilyStepSeq表106包含PhaseID。PhaseID指定在生產(chǎn)的哪一階段來執(zhí)行該步驟。例如,PhaseID可以是一個被選擇為對應(yīng)于前面提到的計算機系統(tǒng)生產(chǎn)的五個階段Quick Test(Qt)、ExtendedTest1(ET1)、Extended Test2(ET2)、Software Install(SI)和Final Test中的一個階段的整數(shù)。
Component表108包含包括在正在生產(chǎn)的計算機系統(tǒng)內(nèi)的所有可能的組件。該表的屬性是指定每一個組件標識符的ComponentID、指定每一個組件的字符串名稱的Description和對每一組件類型(如,硬驅(qū)、CD-ROM)進行標注的ClassID。
FamilyComponent表112是一個包含每一系列計算機系統(tǒng)和一套包含在該系列中的組件的關(guān)系的關(guān)系表,F(xiàn)amilyComponent表112的屬性包括一個在屬性FamilyID(從Family表104)中聲明的計算機系列標識整數(shù)和一個在屬性ComponentID(從Component表108)聲明的組件標識整數(shù)。
ComponentStep表114是一個包含每個組件和與該組件相適應(yīng)的一套軟件安裝和測試步驟的關(guān)系的關(guān)系表。ComponentStep表114的屬性包括一個在屬性ComponentID(從Component表108)中聲明的組件標識整數(shù)和一個在屬性StepID(從Step表102)中聲明的步驟標識整數(shù)。
StepDependency表116包含有關(guān)涉及可能沖突的數(shù)據(jù)。某些測試可能與某些組件類、或特定組件本身、或來自一些廠商的組件相沖突。要組裝的目標計算機系統(tǒng)可能包括一個品牌A的硬驅(qū)和一個品牌B的CD-ROM。品牌A的硬驅(qū)通常可能運行測試C,但是可能測試C與品牌B的CD-ROM不兼容;所有這些從屬性都被記錄在StepDependency表116中。在該表中,StepID標識具有從屬性的步驟,TypeID指示該從屬性是否是關(guān)于組件類或一特定的組件,根據(jù)TypeID的狀態(tài)ObjectID或者是一ClassID或者是一ComponentID,和DepTypeID指示是否一個特定的步驟被保持或在發(fā)生沖突時被清除。
StepParameter表118標識某些步驟可能所需要的參數(shù);例如,可能要求一個步驟運行一定的時間,或運行一特定的循環(huán)數(shù)。在表118中,StepID唯一地標識特定的安裝或測試步驟。ParameterID標識與該步驟相關(guān)的每一個參數(shù);可能有不只一個與一特定步驟相關(guān)的參數(shù)并且每一個具有其自己的ParameterID。例如,同樣的測試但具有不同的參數(shù)可用于不同品牌的硬驅(qū)。DaraType標識要包含在各自參數(shù)中的數(shù)據(jù)類型。在上面的例子中,DataType可聲明該數(shù)據(jù)是一個百分比或是一個硬驅(qū)ID代碼。Content是一個如同在C編程語言所用的與命令如“printf”相關(guān)的命令行開關(guān)。例如,Content可以是“-%d”以指示一個百分比與此參數(shù)相適應(yīng)。StepSeqNum和ClassID如上所述。
應(yīng)當注意,StepParmeter表118僅存儲與一特定的步驟相關(guān)的參數(shù)的類型和數(shù)量,并不實際存儲這些參數(shù)的值。這樣,在步驟文件創(chuàng)建期間,表118并不把參數(shù)值插進該步驟文件的命令行,而是排序程序204在執(zhí)行期間計算參數(shù)值并把該值插入步驟文件命令行。該排序程序根據(jù)包含在此描述符記錄中的信息進行計算。
表StepParameter118的優(yōu)點是通過避免需要具有永久地與步驟相關(guān)的參數(shù)而允許更大的靈活性。這樣表118允許工程師很容易地修改該參數(shù)而無須編輯Step表102。
ComponentClass表120僅是所有組件類型的列表(ClassID),如,硬驅(qū),CD-ROM等,以及這些類型的簡短的描述(ClassName,Description)。
ComponentClassAttr表122列出所有的類以及與每一個類相關(guān)的所有屬性。AttrID是分配到每一個不同類型的屬性如內(nèi)存大小,運行速度、生產(chǎn)商等的代碼,而AttrName是為了方便工程師這些屬性更具描述性的名稱。DataType是用于代表一特定屬性的數(shù)據(jù)類型的指示,例如,在該屬性是生產(chǎn)商的名稱時它可以是一個字符串,或者如果該屬性是一個內(nèi)存的尺寸則它是一個整數(shù)。
ComponentClass表120和ComponentClassAttr表122并不被排序程序204實際使用,主要由開發(fā)工程師使用,這些表并不包含該屬性的行何實際值。
最后,OperatorMsg表124根據(jù)所進行的測試和所測試的組件為測試操作者存儲多個信息。例如,在測試磁盤設(shè)備驅(qū)動器之前發(fā)出一個提示符,提醒操作者把磁帶放進磁帶驅(qū)動器中。
在圖3B中描述的示例目標計算機系統(tǒng)將用于說明上面勾畫的數(shù)據(jù)庫設(shè)計是如何被用于檢索軟件安裝和測試步驟。在系統(tǒng)描述符記錄中標識系列X的計算機系統(tǒng)標識符與對應(yīng)于Family表104中的系列X的FamilyID相聯(lián)系。Component表108被用于檢查在目標計算系統(tǒng)定單中列出的目標計算機系統(tǒng)的組件是否是合法的。換句話說,排序程序和數(shù)據(jù)庫確定包含在圖3B的系統(tǒng)描述符記錄中的處理器、硬驅(qū)、顯示器和軟件是否具有相應(yīng)的入口和由表Component108中的ComponentID所聲明的相應(yīng)的整數(shù)。如果一個組件不是合法的(即,在系統(tǒng)描述符記錄中的組件不包含在Component表108中),就會引起一個錯誤標志。FamilyComponent表112是一個包含來自Component表108和Family表104的映像的關(guān)系表。Family Component表112包含在屬于系列X的目標計算機系統(tǒng)上所包括的所有合法組件。這樣,F(xiàn)amily Component表112可被用于檢查是否所有的目標系統(tǒng)的組件是合法的。換句話,排序程序和數(shù)據(jù)庫確定包含在圖3B的系統(tǒng)描述符記錄中的處理器、硬驅(qū)、顯示器和軟件是否具有FamilyComponent表112中的相應(yīng)關(guān)系。如果一個組件是非法的(即,在系統(tǒng)描述符記錄中的組件不被包含在屬于系列X的目標系統(tǒng)),則引起一個錯誤標志。
在關(guān)系表FamilyStetpSeq 106中駐留有來自Step表102和Family表104的映像。FamilyStepSeq表106包含可合法地在屬于系列X的目標計算機系統(tǒng)上運行的所有的軟件安裝和測試步驟。而且,就在此Family Step Seq表106中序列和階段號與每一個軟件安裝和測試步驟相關(guān)聯(lián)。這些序列和階段號代表針對一特定的系列的計算機系統(tǒng)這些步驟應(yīng)該運行的正常順序。因此,F(xiàn)amilyStepSeq表106包括要在系列X目標計算機系統(tǒng)上運行的步驟清單和代表步驟被執(zhí)行的預(yù)定次序的序列和階段號。
Component Step表114是一個包含來自Component表108和Step表102的映像的關(guān)系表。Component Step表114包含要為目標計算機系統(tǒng)的處理器、硬驅(qū)、顯示器和軟件運行的軟件安裝和測試步驟。
為了檢索與包含在目標系統(tǒng)上的各自組件相關(guān)的軟件安裝和測試步驟,在FamilyComponet表112和ComponentStep表114上執(zhí)行一個連接操作以獲得在目標計算機系統(tǒng)160的組件上運行的中間清單步驟。
連接操作導(dǎo)致一個在圖3B描述的系統(tǒng)描述符記錄中列出的處理器、硬驅(qū)、顯示器和軟件上運行的步驟清單。FamilyComponent表112和ComponentStep表114的連接結(jié)果然后與包含系列X的所有步驟的FamilyStepSeq表106相連接。此連接操作的結(jié)果包括以序列號和階段號形式的排序信息,此序列號在一特定的階段內(nèi)是唯一的。如此,F(xiàn)amily Component表112、ComponentStep表114和FamilyStepSeq表106的三表連接就生成了相應(yīng)的軟件安裝和測試步驟以及以序列和階段號的形式的排序信息以在目標計算機系統(tǒng)上160上安裝和/或測試軟件。
如果第一連接操作的結(jié)果(FamilyComponent表112和ComponentStep表114的連接)是一個空集,就會引起一個出錯條件,對一個空集信號,包含在目標系統(tǒng)上的組件不屬于在系統(tǒng)描述符記錄中所列的系列?,F(xiàn)在說明一個這樣的例子??紤]到一個系統(tǒng)描述符記錄正確地指示一個目標計算機系統(tǒng)屬于系統(tǒng)Y。但是假定,系統(tǒng)描述符記錄不正確地指示出屬于系列X的目標系統(tǒng)的硬驅(qū)(硬驅(qū)Z)應(yīng)當包含在系列Y中的目標系統(tǒng)上。在這種情況下,ComponentStep表114包含與硬驅(qū)Z相關(guān)連聯(lián)的步驟。FamliyComponent表112包含與系列Y相關(guān)聯(lián)的組件。這樣,連接ComponentStep表114和FamilyComponent表112就會產(chǎn)生一個空集,因為硬驅(qū)Z并不是與系列Y相關(guān)聯(lián)的組件(相反,它反與系列X相關(guān)聯(lián))。從上述例子很明顯,該數(shù)據(jù)庫的優(yōu)選設(shè)計有利地使人確信某一系列的計算機系統(tǒng)僅包含與該系列相適應(yīng)的組件。
再次參照圖5A和5C,在檢索與包含在目標系統(tǒng)內(nèi)的組件相關(guān)的步驟之后,排序程序204的模塊518通過為該步驟檢查DepMask為每一步驟確定是否有步驟從屬性。如果有,模塊520從StepDependency表116中讀取從屬性并且模塊522根據(jù)DepTypeID解決此從屬性。
下一步,模塊524通過再次為該步驟檢查DepMask確定是否此步驟要求參數(shù)。如果是,模塊526從StepParameter表108中讀取該參數(shù)數(shù)據(jù),并且模塊528計算此參數(shù)的實際值并把它插進此步驟的命令行。
模塊530通過讀取系統(tǒng)描述符記錄和生成對應(yīng)于包括在該目標系統(tǒng)上的組件的環(huán)境文件來為該目標計算機系統(tǒng)準備環(huán)境變量。例如,讀取在圖3B中描述的系統(tǒng)描述符記錄,并且可以準備象對應(yīng)于系統(tǒng)描述符記錄的處理器硬件組件的“set cpu=pentium”這樣的環(huán)境變量。
在模塊532,多個被檢索的軟件安裝和測試步驟(通過上述的三個表的連接檢索的并且解決了從屬性和加上了參數(shù))被以預(yù)定的次序排序。這個排序過程是按照相應(yīng)的序列號和階段號以提供一個步驟序列。該排序本身是通過使用已知的任何一個排序算法來完成的。
在模塊534,排序程序輸出前面參考的步驟文件和Setenv.bat文件。該步驟文件被分成多個子文件,每個子文件包含要在目標計算機系統(tǒng)生產(chǎn)的Quick Test(Qt)、Extended Test1(ET1)、ExtendedTest2(ET2)、Software Install(SI)和Final Test(FT)階段分別執(zhí)行的步驟。
如所示,對于圖2的實施例,模塊534按原樣存儲該輸出文件或把它存在一個數(shù)據(jù)庫中或存在文件服務(wù)器202上。寫到文件服務(wù)器202上的輸出文件可用于指導(dǎo)在目標計算機系統(tǒng)160上的軟件安裝和測試步驟的執(zhí)行。
在模塊536,如果需要,該步驟文件可以利用一步驟序列插入碼來修改。在優(yōu)選實施例中,該插入碼是一個標準模塊,允許為一特定的目標計算機系統(tǒng)、一特定系列的計算機系統(tǒng)或炒一特定的組件生成一個插入碼。例如,如果一個廠商希望在某一天針對某一特定的組件在另一個測試步驟之前運行一個測試步驟,那么就可以形成一個插入碼,該插入碼修改包含其順序要修改的步驟的所有步驟序列并且相應(yīng)地改變在模塊536中的執(zhí)行順序。在修補之后,模塊538輸出再次按原樣或在數(shù)據(jù)庫中或在文件服務(wù)器202上進行存儲的修改文件。
最后,模塊540給出寫到磁盤150的選項,圖1。如果要求有磁盤,而不是直接寫到該磁盤上,則模塊542在內(nèi)存中生成一個“虛擬盤”并且隨后模塊544在一次操作中把整個虛擬盤寫到該物理盤上,這減少了寫到軟驅(qū)的操作次數(shù)并由此極大地加快了整個程序的運行速度。
該虛擬盤是由下列程序通過分配一個內(nèi)存塊陣列而每一塊與該物理盤的物理扇區(qū)大小相等來生成與該物理盤相當?shù)膬?nèi)存而生成的。該文件系統(tǒng)是FAT12(由PC-DOS、MS-DOS、Windows95和WindowsNT操作系統(tǒng)使用的)。第一扇區(qū)是該磁盤的引導(dǎo)扇區(qū)。一個柱面是一組扇區(qū)的一個邏輯組成或單元。該數(shù)值在該文件系統(tǒng)一旦初始化完成后就是固定的。例如,一個柱面的大小是兩個扇區(qū)。文件系統(tǒng)僅允許由柱面而不是由扇區(qū)來分配。在這種情況下,最小的文件將最少占據(jù)一個柱面(或2個扇區(qū))。
開始生成一個內(nèi)存塊陣列。內(nèi)存塊的數(shù)量與給定文件系統(tǒng)的該磁盤上的物理扇區(qū)的數(shù)量相等。
初始化所有內(nèi)存塊的內(nèi)容值為0。
通過只拷貝該引導(dǎo)區(qū)的外部映像來初始化引導(dǎo)區(qū),此外部映像是存儲在一個文件里。
初始化該FAT表(在該磁盤上由該文件系統(tǒng)定義的扇區(qū))。
如果要求文件寫操作讀該文件分配所需的柱面如果有錯誤,因為沒有足夠的空間而退出函數(shù)。
更新所分配柱面的的目錄和FAT表。
把所讀的內(nèi)容寫到該柱面。
如果要求文件刪除操作。
釋放對給定文件所分配的柱面更新所釋放柱面的目錄和FAT表如果要求物理盤寫操作從該盤的引導(dǎo)扇區(qū)的第四字節(jié)獲取所存儲的磁盤使用數(shù)如果該數(shù)>=最大數(shù),返回一個錯誤代碼以指示錯誤原因如果該數(shù)<最大數(shù),將該數(shù)+1把該數(shù)寫回到虛擬盤上的引導(dǎo)扇區(qū)的第三字節(jié)把內(nèi)存塊從虛擬盤寫回到物理盤,當沒有包含數(shù)據(jù)的內(nèi)存塊時停止結(jié)束參照圖1和圖2,箭頭130指示可對數(shù)據(jù)庫100進行修改。例如,如果生成了一個新的系列的計算機系統(tǒng),就可相應(yīng)地修改數(shù)據(jù)庫100。尤其是,在Family表104的FamilyID該新的系列被賦予一個新的系列標識符并且該新系列的名稱被賦予Family表104的Name屬性。軟件安裝和測試步驟的清單被加到FamilyStepSeq表106,這些步驟代表在新的計算機系統(tǒng)系列中哪些步驟需要運行并以什么樣的預(yù)定順序。如果新的系列的計算機系統(tǒng)與已有的系列具有相似性,就有可能修改FamilyStepSeq表106中已有系列的入口以生成新的系列的入口。如果需要為新系列的計算機系統(tǒng)生成任何新的步驟,那么這些新的步驟要加到Step表102中。相似地,如果新系列的計算機系統(tǒng)配置有任何新的計算機組件,這些組件也要加到Componenet表108中。更新ComponentStep表114以把新系列計算機系統(tǒng)中每一個組件與和其軟件安裝和測試相適當?shù)牟襟E相關(guān)聯(lián)。如果該新系列僅使用在數(shù)據(jù)庫中已提供的組件,該表不需要修改。更新FamilyComponent表112以便包含在新系列中的所允許的組件的清單將位于數(shù)據(jù)庫中。尤其是,需要把新計算機系統(tǒng)的SysID與每個所允許組件的CompID相關(guān)聯(lián)。這可以通過拷貝并且隨后修改一個舊系列計算機系統(tǒng)的已有入口來完成。
應(yīng)明白,在按照該優(yōu)選實施例創(chuàng)建數(shù)據(jù)庫中,提供了某些重要的優(yōu)點。尤其是,數(shù)據(jù)庫的模塊化設(shè)計使得對新系列的計算機系統(tǒng)容易設(shè)置軟件安裝和測試步驟。而且,可以獨立于其他的軟件安裝和測試步驟修改針對一特定系列的計算機系統(tǒng)和一特定組件的軟件安裝和測試步驟。
現(xiàn)在注意在目標系統(tǒng)160上執(zhí)行該步驟序列。使用讀取、解釋和執(zhí)行對應(yīng)于該目標計算機系統(tǒng)的步驟序列的程序,在目標計算機系統(tǒng)160上執(zhí)行軟件安裝和測試步驟。在優(yōu)選實施例中,該程序被稱為RunStep,位于圖1實施例中的步驟盤150或圖2實施例的文件服務(wù)器202上。
圖7表示在任何軟件安裝和測試步驟已執(zhí)行之前的包含在一個步驟文件里的一段步驟序列。如以前提到的,該步驟序列包括用于安裝軟件和/或用于測試定制目標計算機系統(tǒng)的命令。而且,在該步驟文件中的該步驟序列允許命令能執(zhí)行一規(guī)定的迭代數(shù)或一規(guī)定的時間長度,而且,該步驟文件可以包含被RunStep程序忽略的注釋。在步驟文件中標號800用于分離該步驟序列的字段,810項是用于測試目標計算機系統(tǒng)160的命令,該命令包括例如用于測試內(nèi)存和用于測試小型機接口(SCSI)設(shè)備的命令。從該圖中可以看到,每個命令可以包括諸如與特定的測試環(huán)境相適應(yīng)的‘-o’這樣的開關(guān)。820項是一個被RunStep程序所忽略的注釋。810c項是一個以時間循環(huán)的命令。在優(yōu)選結(jié)構(gòu)中,“begin_time_loop”命令指定循環(huán)的起始點,‘end_time_loop’命令指定循環(huán)的終止點。‘begin_time_loop’命令與指定通過循環(huán)迭代的時間長度的一個字段組合使用。在這里,例如,命令810c是運行1小時30分鐘。810d是按照重復(fù)迭代的次數(shù)循環(huán)的命令。在優(yōu)選實施例中,‘begin_iterate_loop’命令指示RunStep程序一個重復(fù)迭代就要執(zhí)行?!甧na_iterate_loop’命令指示循環(huán)命令的結(jié)束。在這里循環(huán)命令810d被運行三次。
圖8-13表示RunStep程序的流程圖。從整體看RunStep一次一行地處理每個步驟子文件而不是把整個步驟子文件讀進內(nèi)存中。在每一行,RunStep執(zhí)行多項檢查以評估它是否繼續(xù)處理該行。例如,如果RunStep發(fā)現(xiàn)由于執(zhí)行前面的行而注冊有失敗條件時,它就會知道繼續(xù)執(zhí)行程序已沒有意義。相應(yīng)地,RunStep會查看是否操作員已亂改動了該步驟子文件(例如為了略過不必要的測試),如果是,將不會繼續(xù)執(zhí)行該程序并由此強迫操作員再重新開始一遍。這樣,如果RunStep確定一個步驟子文件中的一特定的行就是下一個要執(zhí)行的行時,就只讀該行,沒有必要讀取該步驟子文件中的行。很清楚,它具有省時的特點。
圖8是RunStep的頂層流程圖。第一模塊900初始化該系統(tǒng)的狀態(tài),而這在讀取一步驟子文件的任何行之前執(zhí)行。在這個階段,RunStep讀取可變的環(huán)境變量(從文件“progress.bat”,后面將描述)以便它子解該系統(tǒng)的精確狀態(tài),例如,是在執(zhí)行最后一行時返回的失敗嗎 是必須要重新運行或RunStep可以接著讀取下一行嗎 圖9更詳細地描述了初始化階段。第一模塊902使控制中斷功能無效-這防止操作者中斷退出該程序以忽略一個步驟。在模塊904然后初始化變量,和在模塊906程序從該環(huán)境中讀取環(huán)境變量。這些環(huán)境變量主要存儲在叫作progress.bat的批處理文件中,該批處理文件位于內(nèi)存中,并且當RunStep執(zhí)行步驟子文件中靠前的行時將已經(jīng)寫到此批處理文件。progress.bat包含當前系統(tǒng)的狀態(tài),并且如將要描述的(模塊106.圖3)更新從該步驟子文件中讀取的每一行。progress.bat將包含如最后執(zhí)行的步驟的行號這樣的信息;標識哪一個實際命令被執(zhí)行;如果在一個時間循環(huán)中一個特定的命令正在被執(zhí)行,預(yù)期要多長時間;要進行哪一個測試或軟件安裝階段。
如果該環(huán)境變量被成功地讀取,這是由模塊908所決定的,然后模塊910把在本地驅(qū)動器上所有文件的目錄清單讀進RunStep正在運行的計算機160或202的內(nèi)存中。這樣當RunStep來檢查一個文件是否在本地驅(qū)動器(模塊1002,圖13)上時,通過讀取在存儲器上的目錄清單就可以做到這些,并且不必搜索本地驅(qū)動器本身,這節(jié)省了時間。
如果RunStep成功地讀取了該目錄清單,這是由模塊912所決定的,那么模塊914獲取當前的過程狀態(tài)。在此階段,RunStep按照該系統(tǒng)的狀態(tài)設(shè)置了很多的標志,即,失敗、再運行等。就是這些標志將決定通過序列模塊916、918、920的RunStep流。如所應(yīng)用的,這些模塊將引導(dǎo)RunStep進入子進程A、B、C,圖10。
參照圖10(a)如果RunStep已經(jīng)在模塊916建立和該下一個步驟是正常的過程步驟則進入程序A。在程序A中的第一模塊即模塊922校正各種校驗和,這樣做的目的是確保對步驟子文件沒有亂改動,例如,RunStep讀取某校驗和并把它們與存儲在progress.bat中的校驗和進行相關(guān)處理-任何差異將表明一個未授權(quán)的人過去一直在改動此步驟子文件。如果所有的校驗和是正確的,這是由模塊924所決定的,那么在模塊926該程序就復(fù)位(清除)某些變量并讀取當前的時間。
如果該環(huán)境指示最后一步需要被再次執(zhí)行,這是由模塊918所決定的,就進入程序B,圖10(b)。程序B的目的是如果需要,給一個授權(quán)操作者一個中斷進入程序的機會以避免再次執(zhí)行該最后的一步。因此在模塊928顯示一條信息,即操作者可以在五秒時間內(nèi)選擇生成工具(MFGTools)或進行此再次運行。生成工具是一個改善的方法,由此,如果需要,一個具有相應(yīng)密碼的授權(quán)的操作者可以中斷進入該步驟子文件。模塊930確定是否該最后的一步要運行,這取決于操作者的響應(yīng),并且如果是這樣,模塊932設(shè)置進程變量(progress.bat)以運行MFGTools。
圖10(c)在模塊934程序C簡單地設(shè)置該進程變量(progress.bat)以運行MFGTools。
回到圖9,模塊936確定是否返回一個失敗,如果不返回,模塊938查看當前的階段是否是合法的。
參照圖8,一旦完成初始化模塊900,并且如果返回“success”,這是由模塊950所決定的,那么RunStep進到作為“process step file”的模塊952。在RunStep到達此階段時為止,它已經(jīng)從該環(huán)境中讀取了足夠的信息以知道它是否應(yīng)進到該步驟子文件的下一行、再運行前一行或放棄等。
圖11更詳細地表示模塊952,“process step file”。模塊954確定該生成工具是否已被選擇或是否要求再運行,如果任何一個條件為真,那么不必做進一步的設(shè)置并且這部份程序可以返回成功。如果沒有條件是真的,(即,假定RunStep現(xiàn)在已進行到該步驟子文件的下一行),那么在模塊956打開相應(yīng)階段步驟子文件。這意味著RunStep打開與正被引導(dǎo)的測試或軟件安裝(即,快速測試、擴展測試等)的特定階段相關(guān)聯(lián)的步驟子文件。
模塊958確定是否有倒回階段,倒回階段是再運行的一種特殊情況,這時整個測試階段在出現(xiàn)一個步驟失敗時需要被重復(fù),即,RunStep必須回到針對該階段的步驟子文件的開頭。如果RunStep確定這是一個倒回階段,那么相應(yīng)地模塊960設(shè)置環(huán)境并返回成功。
如果它不是一個倒回階段,那么模塊962從步驟子文件中讀取下一行號,并通過將該行號與存儲在progress.bat中、在初始化階段由RunStep讀取的行號進行匹配并進一步檢查它剛剛讀取的行號是它所希望讀取的行-這是一個反亂改動設(shè)備。尤其是,當RunStep在運行時,progress.bat包含有關(guān)被執(zhí)行的最后步驟的信息,即,諸如在步驟子文件中的行號、被執(zhí)行的命令的命令I(lǐng)D及其他檢查和相關(guān)信息。在模塊962,RunStep讀取包含在內(nèi)存中的progress.bat文件,并且如由progress.bat中的行號所確定的那樣略過該步驟子文件中的一些行,然后檢查其實際所處的行號是否與它希望所處的行號相一致。它還檢查位于該行的命令是否與被告知剛被執(zhí)行的那個是同一個,即,RunStep證實它發(fā)現(xiàn)自己現(xiàn)在所處的行實際上是被運行的最后一步。
如果它是,這是由模塊964決定的,那么,在模塊966讀取該步并為運行下一步而設(shè)置進程環(huán)境。模塊968檢查所讀的該步的有效性,如果是,返回成功。如果沒有讀取一有效步驟,在模塊970,RunStep查看是否它實際上已到達該最后階段的步驟子文件的最后行。如果是這樣,那么RunStep返回一個“all steps processed”的消息,表示所有的測試都完成。如果不是,則返回失敗。
另一方面,如果RunStep的模塊964顯示它剛剛讀取的行號并不與它所希望的相匹配,那么RunStep進入圖12中所示的程序。第一模塊972檢查是否RunStep實際上已到達該最后階段的步驟子文件的最后行。如果是,則返回一個消息,指示所有的測試已完成。如果不是,模塊974檢查是否到達一步驟子文件的最后一行。如果是,RunStep退回到模塊956,并為下一階段的測試打開該步驟子文件。
另一方面,如果RunStep確定這不是此步驟子文件的末尾,那么它在模塊976查看它剛剛讀取的行號是否超過它所希望讀取的行(從內(nèi)存中讀)。如果該行號被超過,其指示RunStep在步驟子文件中存在手動亂改(例如,一個操作者從此步驟子文件中消除一個步驟)并且RunStep返回失敗。如果該行號沒被超過,那么RunStep返回到模塊962。
然后RunStep返回到模塊990,圖8,并且如果遇到此步驟子文件的末尾,它就將其報告給該操作者。RunStep進一步查看是否在模塊992返回有失敗。如果是這樣,就做報告并且RunStep退出。
在此階段,RunStep已確定此系統(tǒng)的精確狀態(tài),知道是否將要再運行一步、倒回一個階段或執(zhí)行此步驟子文件中下一行并且相應(yīng)地設(shè)置內(nèi)存。在繼續(xù)之前,RunStep存儲所有它在前期階段中學(xué)習的信息,這在模塊994中進行并在圖13中更詳細地說明。
首先,模塊1000找時機清除不再需要的文件。然后模塊1002確定將要發(fā)生的測試或軟件安裝所需的文件是否存儲在本地驅(qū)動器上或需要通過網(wǎng)絡(luò)獲取,并保存此信息。下一步,模塊1004,1006,RunStep使用它在前期階段中學(xué)習的信息來設(shè)置環(huán)境變量(在progress.bat)以便下次RunStep從開始運行時,所有的環(huán)境變量都被更新成代表該系統(tǒng)的當前狀態(tài)。
在模塊1008,RunStep檢查此寫操作是成功的之后,它在模塊1010中寫一個日志文件。如果成功,模塊1012,在模塊1014確定是否有再次運行的需要,如果需要,模塊1016生成一個再次運行文件。
控制然后回到模塊1020,圖8,并且如果沒有返回失敗,該程序被退出,并以一個255錯誤級別指示應(yīng)該執(zhí)行從模塊966的步驟子文件讀取的命令行。這發(fā)生在模塊1022。然后RunStep返回到開始以處理下一步(在步驟子文件中的行)。
應(yīng)看出,RunStep程序是一個高安全性的系統(tǒng),其中包括有各種檢查以防止未授權(quán)的用戶亂改此步驟子文件以便去掉多余的測試或避免再運行。這通過使控制中斷無效;以各種間隔校正此步驟子文件的行號;把校驗和放進系統(tǒng)中來達到。另一個安全的方面是不管何時發(fā)生失敗,如在上面流程圖中各點處由RunStep所確定的,RunStep退出,并且此項失敗被寫到一個只讀隱藏文件中;一個業(yè)余操作者不會意識到到此文件并且不能找到它,因此也不能發(fā)現(xiàn)出了什么問題和如何忽略該錯誤,即,他將被迫拒絕該組件或再次運行該測試直到滿意為止。
雖然已說明和描述了說明性的實施例,在前面的揭示中也考慮到更寬范圍的修改、變化和替換。有此實施例的特點可以不必使用其他特點而得到利用。所以,應(yīng)明白,所列的附屬權(quán)利要求應(yīng)被更廣義地、并以一種與在此揭示的實施例的范圍相一致的方式理解。
權(quán)利要求
1.一種在計算機系統(tǒng)上安裝軟件和/或?qū)ζ溥M行測試的方法,包括步驟從一計算機可讀的文件中讀取多個組件描述符,每個組件描述符描述該計算機系統(tǒng)的一個組件;從一數(shù)據(jù)庫中讀取多個步驟,每個步驟與一個組件描述符相關(guān)聯(lián)并且各自包括一個序列號;按照該序列號以一預(yù)定的順序排序此多個步驟以提供一個包括用于在該計算機系統(tǒng)上安裝軟件和/或?qū)ζ溥M行測試的命令的步驟序列;對于從該數(shù)據(jù)庫中讀取的每個步驟,利用在該數(shù)據(jù)庫中與該步驟相關(guān)的數(shù)據(jù),判定該步驟是否與該計算機系統(tǒng)所提供的組件不兼容;如果是,放棄該步驟或者不利用數(shù)據(jù)庫中與該步驟相關(guān)的進一步的數(shù)據(jù)。
2.權(quán)利要求1的方法,其特征是該計算機系統(tǒng)屬于某一系列的計算機系統(tǒng),并且讀取該多個步驟的該步驟包括把包含所有屬于該系列的組件的第一數(shù)據(jù)庫表與一包含所有的要在此多個組件上運行的軟件安裝和測試步驟的第二數(shù)據(jù)庫表相連接,其中該連接產(chǎn)生一個中間集,并且把該中間集與包含所有要在該系列上運行的軟件安裝和/或測試步驟的第三數(shù)據(jù)庫表相連接,其中該連接產(chǎn)生所述的多個步驟。
3.權(quán)利要求2的方法,其特征是如果該中間集為空則引起出錯條件。
4.權(quán)利要求1的方法,其特征是至少一個組件是一個硬件組件。
5.權(quán)利要求1的方法,其特征是至少一個組件是一個軟件組件。
6.權(quán)利要求1的方法,其特征是還包括生成對應(yīng)于該多個組件描述符的多個導(dǎo)出對象的步驟。
7.權(quán)利要求1的方法,其特征是還包括準備對應(yīng)于該多個組件的環(huán)境變量的步驟。
8.權(quán)利要求1的方法,其特征是還包括把該步驟序列寫到在生產(chǎn)時就被配置為伴隨該計算機系統(tǒng)的一個非易失性存儲媒介的步驟。
9.權(quán)利要求1的方法,其特征是該步驟序列適于提供可重復(fù)一定時間長度的命令。
10.權(quán)利要求1的方法,其特征是該步驟序列適于提供可重復(fù)一定的重復(fù)迭代次數(shù)的命令。
11.一種在計算機系統(tǒng)上安裝軟件和/或?qū)ζ溥M行測試的方法,包括步驟從一計算機可讀的文件中讀取多個組件描述符,每個組件描述符描述該計算機系統(tǒng)的一個組件;從一數(shù)據(jù)庫中讀取多個步驟,每個步驟與一個組件描述符相關(guān)聯(lián)并且各自包括一個序列號;按照該序列號以一預(yù)定的順序排序該多個步驟以提供一個包括用于在該計算機系統(tǒng)上安裝軟件和/或?qū)ζ溥M行測試的命令的步驟序列;對于從該數(shù)據(jù)庫中讀取的每個步驟,利用在該數(shù)據(jù)庫中與該步驟相關(guān)的數(shù)據(jù),判定該步驟是否要求一個參數(shù);以及如果是按照數(shù)據(jù)庫中與該步驟相關(guān)的進一步數(shù)據(jù)計算這種參數(shù)。
12.權(quán)利要求11的方法,其特征是該計算機系統(tǒng)屬于某一系列的計算機系統(tǒng),并且讀取該多個步驟的該步驟包括把包含所有屬于該系列的組件的第一數(shù)據(jù)庫表與一包含所有的要在該多個組件上運行的軟件安裝和/或測試步驟的第二數(shù)據(jù)庫表相連接,其中該連接產(chǎn)生一個中間集,并且把該中間集與包含所有要在該系列上運行的軟件安裝和/或測試步驟的第三數(shù)據(jù)庫表相連接,其中該連接產(chǎn)生所述的多個步驟。
13.權(quán)利要求12的方法,其特征是如果該中間集為空則引起出錯條件。
14.權(quán)利要求11的方法,其特征是至少一個相應(yīng)的組件是一個硬件組件。
15.權(quán)利要求11的方法,其特征是至少一個組件是一個軟件組件。
16.權(quán)利要求11的方法,其特征是還包括生成對應(yīng)于該多個組件描述符的多個導(dǎo)出對象的步驟。
17.權(quán)利要求11的方法,其特征是還包括準備對應(yīng)于該多個組件的環(huán)境變量的步驟。
18.權(quán)利要求11的方法,其特征是還包括把該步驟序列寫到在生產(chǎn)時就被配置為伴隨該計算機系統(tǒng)的一個非易失性存儲媒介的步驟。
19.權(quán)利要求11的方法,其特征是該步驟序列適于提供可重復(fù)一定時間長度的命令。
20.權(quán)利要求11的方法,其特征是該步驟序列適于提供可重復(fù)一定的重復(fù)迭代次數(shù)的命令。
全文摘要
定制的計算機系統(tǒng)安裝軟件和/或測試軟件的方法包括從一計算機可讀的文件中讀取多個描述該計算機中一個組件的組件描述符。從數(shù)據(jù)庫中檢索出多個與序列號相關(guān)聯(lián)的步驟。按照該序列號以預(yù)定的次序?qū)υ摱鄠€步驟進行排序以提供一步驟序列。該序列包括安裝和/或測試軟件的命令。對于每一步,判定其是否與計算機系統(tǒng)所使用的組件不兼容。而且,對于所讀的每一步,判定該步是否需要參數(shù)。
文檔編號G06F11/00GK1281181SQ9910961
公開日2001年1月24日 申請日期1999年6月30日 優(yōu)先權(quán)日1999年6月30日
發(fā)明者理查德·D·安伯格, 羅杰·翁, 邁克爾·林奇 申請人:戴爾美國公司