專利名稱:動態(tài)瀏覽窗系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機輔助軟件工程(CASE),尤其涉及面向人的目標編程系統(tǒng)(HOOPS),該系統(tǒng)為計算機程序的建立提供了交互和動態(tài)環(huán)境。HOOPS使程序員得以利用優(yōu)化增量編譯程序在計算機程序中對微小的顆粒源碼進行編輯。本發(fā)明的主題在于導航系統(tǒng),該系統(tǒng)使程序員可以對存儲的任何有關程序中被引用的任何程序部分的信息進行訪問。該信息是由一獨特的圖形用戶界面(GUI)所提供的。該GUI為程序員提供了一個通過程序導航的直觀系統(tǒng)。本發(fā)明通過使用通用的面向目標編程(OOP)語言C++的優(yōu)選實施例來進行公開,但其原理適用于面向目標的計算機編程語言以及過程計算機編程語言,并且本發(fā)明亦可用于建立使用常規(guī)的和OOP語言的程序。
OOP是建立友好的用戶關系以及智能計算機軟件的最佳環(huán)境。OOP的關鍵元素是數(shù)據(jù)密封性(data encapsulation)、固有性(inheritance)以及多形性(Polymorphism)。這些元素可以用于產(chǎn)生圖形用戶界面GUI,尤其是由具有圖符,鼠標光標以及菜單的視窗環(huán)境所構成的GUI。雖然這三種關鍵元素在OOP語言中很常見,但大部分OOP語言在實施它們時有很大的區(qū)別。
OOP語言的例子包括Smalltalk、目標Pascal和C++。Smalltalk實際上不止是一種語言,更準確地講,它應該被標識為一種編程環(huán)境。該語言是在70年代早期內(nèi)位于施樂普拉阿圖研究中心(PARC)的學習研究小組開發(fā)的。在該語言中,一個消息被送到一個目標以對其進行評價。消息完成的任務類似于在常規(guī)編程語言中的功能調用。程序員無需關心數(shù)據(jù)類型而只須關心生成正確順序的消息及使用正確的消息。目標Pascal是用于蘋果公司的Macintosh_計算機上的語言,蘋果公可在Pascal語言的設計者一尼古拉期·沃斯(Niklaus Wirth)一的合作下開發(fā)出了目標Pascal(Object Pas-cal)語言,C++則是由斯托斯特拉普(Bjarne Stroustrup)在1983年在AT&T貝爾實驗室由C語言擴展而成的。C++的主要概念是分類,它是用戶定義型的。分類提供了面向目標的編程特性。C++模型與C模型相兼容而且可隨意鏈接。從而現(xiàn)有的C程序庫可由C++程序所用。最廣泛使用的基于目標和面向目標的編程語言源于60年代由挪威的戴沃(O-J·Dahl),梅阿漢(B·Myhrhaug)以及而才格得(K·Ny-grad)所開發(fā)的Simula語言。有關OOP的信息可參見布克(Grady Booch)所著的“Object Oriented Design With Applica-tions”(Benjimin/Cummings Publishing Co.,Inc.,ReadwoodCity.Califormia 1991)運行一個計算機程序的完整過程涉及把程序員寫出的源碼譯為機器可執(zhí)行的格式,通常稱為目標碼,然后再執(zhí)行該目標碼,翻譯的過程是由解釋(interpreter)程序或編譯(Compiler)程序完成。在解釋程序中,翻譯是隨程序的運行而進行的,而在編譯程序中,則是在運行該程序之前就進行翻譯并將結果作為目標碼存貯起來。也就是說在一般的編譯和執(zhí)行系統(tǒng)中,翻譯和執(zhí)行是分開進行的。即編譯只進行一次。而在解釋系統(tǒng)中,例如Smalltalk解釋程序,兩者是順序進行。Smalltalk需要解釋程序是因為直到一個目標被實現(xiàn)之前編程環(huán)境不允許指定專用寄存器或地址空間。
一個編譯程序包括三部分;詞法分析程序,語法分析程序,以及代碼生成程序。詞法分析程序的輸入是代表高級語言程序的一序列字符。詞法分析程序將該序列字符分為一序列標記以輸入到語法分析程序。語法分析程序進而將該序列標記分為指令并利用語法規(guī)則的數(shù)據(jù)庫來確定是否每條指令的語法正確與否。若不正確,則產(chǎn)生錯誤消息。若正確,則指令被解壓縮成為一序列基本指令。這些基本指令被送至代碼生成程序以產(chǎn)生低級語言。代碼生成程序本身通常又分為三部分;中間編碼,代碼優(yōu)化,以及代碼生成,基本而言,代碼生成程序接收來自語法分析程序的輸出并生成機器語言碼。
為了助于軟件開發(fā),已開發(fā)出增量編譯程序,在這類程序中,編譯程序在批處理操作中生成用于接收的一條語句或一組語句的代碼,而與稍后生成的用于其他語句的代碼無關。增量編譯的優(yōu)點在于代碼可以在部分程序寫成時即進行編譯和測試,而無需等到整個程序完成時才進行調試處理。但是,常規(guī)的增量編譯程序必須每次都對一個完整的模塊進行再處理。
優(yōu)化編譯程序產(chǎn)生高度優(yōu)化的目標碼,從而在許多情況下使得在源碼時進行調試比一個非優(yōu)化編譯程序更困難。這一問題源于這一事實,即雖然一個例行程序將被編譯以給出適當?shù)拇鸢?,但計算該答案的確切方式可能與源碼中描述的大相徑庭。優(yōu)化編譯程序可以做的一些事情包括刪除已知不會影響最終結果的代碼或變量,將非變量代碼移出循環(huán),合成公用碼,在變量不再需要時重新使用分配給這些變量的寄存器等等。如此,源碼到目標碼或目標碼到源碼的映射在給定某些優(yōu)化時可能會有困難。由于變量的值可能并非在例行程序中任意位置處總是可用的,所以可能難于校驗變量的值。在優(yōu)化代碼中修改變量值尤為困驗。除非專門說明為易變的,否則編譯程序會“記住”分配給變量的值并可能在以后的代碼中不再讀該變量而使用“已知”的值。因此,在該值中的改變會產(chǎn)生錯誤的程序結果。
雖然在先有技術的計算機程序建立,測試及開發(fā)中有許多優(yōu)點,但已知的軟件開發(fā)工具仍給程序員帶來極大負擔,從而通常要求有直覺的洞悉力。其次,常規(guī)的面向批處理的編程系統(tǒng)需要很長的編輯——編譯——測試周期,這時編程的創(chuàng)造性行為帶來的極大的不利影響。
由施樂PARC學習研究小組和蘋果Macintosh_的開創(chuàng),尤其是在近來微軟視窗和IBM的OS/2的引導下,應用程序的直觀圖形用戶界面(GUI)的開發(fā)已有了很大進展,但是,程序設計員依然沒有類似的直觀GUI以幫助進行程序開發(fā)的基本任務,尤其是在開發(fā)操作系統(tǒng)一類的復雜程序時更是如此。
因此,本發(fā)明的一個目的是提供一種用于模型化計算機程序的面向人的交互動態(tài)處理。該處理有助于程序員的精力集中,從而提高生產(chǎn)力。
本發(fā)明的另一目的是為程序員提供對于任何有關程序中被引用的部分的存儲信息的存取。
本發(fā)明進一步的目的是為程序員提供直觀的圖形用戶界面以助于建立計算機程序的交互和動態(tài)處理。
根據(jù)本發(fā)明,提供了一個在計算機程序中導航的系統(tǒng)。這是通過首先把計算機程序成型為組成部分集(Collection ofComponents),然后在存儲器中存儲這些組成部分的方式而實現(xiàn)的。通過訪問存儲的并與計算機程序相關的組成部分實現(xiàn)了導航功能。本系統(tǒng)通過在一個顯示屏上的第一窗格顯示與計算機程序關聯(lián)的信息的方式,而響應用戶選擇的一部分程序。一個第2窗格被生成并在第一和第二窗格之間生成一個系統(tǒng)設置鏈接。該鏈接可顯示為“連接”圖并提供一個直觀瀏覽功能,該功能有助于用戶了解程序中各個模塊的關系。
本發(fā)明的最佳實施例是以C++完成的,并用C++、C以及匯編語言建立程序,這些語言是當前最流行使用的。本發(fā)明的程序一般可用這三種語言完成。因此,雖然本發(fā)明本身是以面向目標的編程語言寫成的面向目標的程序,但其并不僅限于以面向目標的程序語言建立程序。本發(fā)明可同樣用于以過程語言建立程序。進而,本發(fā)明不限于C++語言,它也可由其他編程語言實現(xiàn)。而且本發(fā)明不限于只用于這三種語言;也就是說,本發(fā)明的原理可用于更為一般應用的面向人的目標編程系統(tǒng)。
上述目的和優(yōu)點可從本發(fā)明的詳細敘述以及附圖中有更好的理解,其中,
圖1展示了一種可以支持高分辨率圖形顯示設備和光標指示設備(例如鼠標器)的常規(guī)計算機系統(tǒng),本發(fā)明即可在該系統(tǒng)上實施;圖2是圖1所示常規(guī)計算機系統(tǒng)的主要部件框圖;圖3是根據(jù)一個優(yōu)選實施例的數(shù)據(jù)結構;圖4-24是根據(jù)一個優(yōu)選實施例的計算機屏幕的圖示,該屏幕示出了典型的視窗。
參照圖1,示出了一個常規(guī)計算機10,該計算機10包括一系統(tǒng)單元12,一個高分辨率顯示設備14,例如一個陰極射線管(CRT),或者一個液晶顯示器(LCD)。這種顯示并不重要,除非要求用于顯示視窗系統(tǒng),尤其是圖形用戶界面時需要高分辨率,用戶對計算機的輸入由鍵盤16以及光標指示設備,例如鼠標器18完成,鼠標器18與鍵盤16相連并進而與系統(tǒng)依次相連。替換地,鼠標器18可連到系統(tǒng)單元12的一個專用或串行口。圖1所示的計算機是Apple Macintosh_(蘋果計算機的注冊商標)及IBM PS/2。其他機型包括各種工作站,例如IBM RISC System/6000以及Sun Microsysitems計算機。
圖2展示了圖1所示通用目的的計算機的基本部件。系統(tǒng)單元12包括與總線24相連一個中央處理單元(CPU)21,隨機存取存儲器(RAM),以及只讀存儲器(ROM)23。CPU21可以是任何商業(yè)化的微處理器,例如Motorola 68030和68040(它們通常用于Apple Macintosh計算機中)或Intel80386及80486(它們通常用于IBM PS/2計算機中)。其他微處理器,例如RISC(用于減少指令集計算機)微處理器(通常用于工作站)也可使用。ROM24存儲用于CPU的基本微碼,包括基本輸入/輸出系統(tǒng)(BIOS)。計算機系統(tǒng)10的操作系統(tǒng)(OS)也可存在ROM24中,或者把OS作為初始程序裝入(IPL)的一部分存入RAM22中。RAM22也用于存儲部分應用程序以及執(zhí)行該程序過程中生成的臨時數(shù)據(jù)??偩€24可以是Apple NuBus,IBM MicroChannel或工業(yè)標準之一的總線例如ISA(工業(yè)標準適配器)或EISA(擴展的工業(yè)標準適配器)。
與總線24相連的還有多個輸入/輸出(I/O)適配器,包括一個用戶接口適配器25以及一個I/O適配器26。鍵盤16與用戶接口適配器25相連,而I/O適配器26與軟盤驅動器27和硬盤驅動器28相連。軟盤驅動器27允許把數(shù)據(jù)和程序讀寫到可擦除介質,而硬盤驅動器對通常存儲頁入頁出RAM22的數(shù)據(jù)和程序。顯示設備14通過顯示適配器29而與總線24相連。通訊適配器30為網(wǎng)絡提供接口。其他支持電路(未示出)以集成電路芯片的形式被連到總線24和/或CPU21。這些芯片包括例如控制總線24上的信息量的總線主控芯片??偩€24在某些計算機中可以是雙總線;一個數(shù)據(jù)總線和一個考慮圖形用戶界面中需要的高速顯示操作的顯示總線。
根據(jù)本發(fā)明的面向人的目標操作系統(tǒng)(HOOPS)可根據(jù)要編輯的程序是要建立的程序還是已有程序以決定輸入一個項目名或一個現(xiàn)有的項目名的方式在計算機上開始。HOOPS打開的初始視窗顯示了“項目”部件的“成員”特性及其直接成員。雖然開始只顯示直接成員,但同樣視窗用于顯示在項目部件處開始的每個部件。
HOOPS動態(tài)測覽系統(tǒng)使用戶動態(tài)地建立程序表示。該系統(tǒng)設計用于快速和動態(tài)顯示的改變或生成,而這些顯示可保存起來以供以后再使用。以這種方式,用戶可以對系統(tǒng)進行裁剪。
本系統(tǒng)基于四個主要部件窺視窗,窗格視窗及連線。系統(tǒng)提供了一組可擴充的窺視窗以供顯示一個程序的各個方面。為使用一個窺視窗,必須在一窗格中顯示該窺視窗。窗格則在視窗中顯示。一個視窗可以顯示不止一個窗格(因此不止一個窺視窗),而且窗格可以通過連線連接以提供導航操作,從而生成豐富的各種組合。由于這組窺視窗可擴充,該系統(tǒng)不會對可以生成的各種顯示帶來內(nèi)在的限制。
本系統(tǒng)可用于具有一組內(nèi)相關數(shù)據(jù),尤其是層次的或性質上是網(wǎng)絡的任何域,例如計算機程序的表示。另一個域的例子是學校的數(shù)據(jù)庫,其中有學生,老師,課程以及它們之間的各種關系。
下面給出幾個定義。
程序(Program)
如在本發(fā)明中敘述的,一個HOOPS程序包括一個叫作“項目”的不可建立部件以及一個“可建立部件”集。不可建立部件亦可存儲,但在本敘述中,只要談到未限定部件,就是指一個“可建立部件”,不可建立部件在建立操作中將不被編譯。
組成部分(Component)一個組成部分有一個唯一的標識并被命名。不同的組成部分由稱為ID的唯一標識符的某些格式加以區(qū)分。有一個稱為空IS(Null ID)的區(qū)別ID,它不屬于組成部分。該ID在一個分量生成時被賦予而且在該組成部分存在期間不會改變。若一個組成部分被刪除了,它的ID不會再被使用。實際,ID通常是數(shù)字的。
一個組成部分也有一個“名字”,它包括沒有白空間的文本串。不同組成部分不必有不同名字??梢垣@得所有組成部分的表格(可能是空的),其中所有組成部分的名字與某些給定文本串相吻合。一個組成部分的名字可以在該組成部分存在期間被改變?nèi)我忭棓?shù)。
組成部分用于表達語義語言元素。表達的方式取決于被模塊化的特定計算機語言。例如在C++中由組成部分表達的語言元素的部分表格包括全局數(shù)據(jù),全局功能,分類,數(shù)據(jù)成員,成員功能,typedef,enums,仿真程序,宏指令,“或”運算以及結構。通常,每個語義元素將有一相關聯(lián)的區(qū)別種類。
特性(Properties)一個組成部分包括一個命名的“特性”(Property)集。一個特性表示與該組成部分有關的一些數(shù)據(jù)。給定組成部分的ID和特性名之后,可以存取和檢索這些數(shù)據(jù)。特性名字通常由標識名字的數(shù)字(有時稱為記號)在內(nèi)部表示。也有不屬于特性的區(qū)別特性名,叫做“空特性”(Null Property)。
與一給定特性相關的數(shù)據(jù)對不同的組成部分而言是不同的。改變一個組成部分給定特性的數(shù)據(jù)并不意味著改變用于任何其他組成部分的同一特性的數(shù)據(jù)。但是,有可能在一個組成部分的一個特性中的改變會導致同一或另一組成部分的另一特性的改變。
所有組成部分必須有特性“名”和“貯存器”,該特性“名字”存有組成部分的名字?!百A存器”特性則包含了特性名為“空特性”的一個單一引用。從任一組成部分開始并相繼地由貯存器ID引用的組成部分取代前一組成部分將總是最終導致“項目組成部分(Projct Component)。該“項目”的“貯存器ID”是“空ID”(Null ID)。如此,所有組成部分在“項目”中被描述。
引用(Reference)“引用”是包括一個ID和一個特性名。一個引用唯一地標識特性數(shù)據(jù)的一部分。就象其所引用的組成部分和/或特性,引用通常被松散地使用,實際上,一個引用通常包含在程序建立中間接使用的信息,以標識特性中的哪種數(shù)據(jù)版本及哪個子區(qū)的數(shù)據(jù)要被引用。有一個區(qū)別引用以及空引用,空引用說明沒有組成部分或特性。
類別(Kinds)
每一個組成部分都有一“類別”(Kind)。一個類別是指把組成部分分為例如共用同樣特性或同樣語言專用作為的各個組的一個文本串。大部分類別專用于一種特定的計算機語言并用于指定語義區(qū)別語言元素。
然而,有一些由系統(tǒng)定義的類別,它們分別為“項目”,“庫”,以及“貯存器”。這些類別只用于不可建立組成部分?!绊椖俊鳖悇e是“項目”組成部分的類別?!皫臁鳖悇e則是用于鏈接到目標碼的一個外部塊(例如一個共同庫或應用程序)的組成部分集?!百A存器”類別則應用于把其他分量分組歸類以便組織的組成部分。實際上,類別通常在內(nèi)部由數(shù)碼表示。
窺視窗(Viewer)窺視窗是用于顯示一個組成部分的特定特性的圖形表示。但是,在顯示該特性的處理過程中可以要求窺視窗顯示輔助信息。它們包括從其他特性而來的數(shù)據(jù)。一個窺視窗有一個輸入和一個輸出,兩者是引用的。所說的輸入指定至少一個組成部分和特性,也可以指定該特性的信息的子范圍。該輸出至少指定一個組成部分。它也可以指定一個特性以及該特性數(shù)據(jù)的一個子范圍。該輸出可響應于用戶動作及系統(tǒng)中的狀態(tài)變化而改變。
窗格(Paue)一個窗視窗顯示在一窗格中,窗格有一輸入和輸出,兩者都是引用的。該輸入指定至少一個組成部分,它亦可指定組成部分的一個特性和特性的信息的一個子范圍。其輸出指定至少一個組成部分并可指定一個特性和該特性信息的一個子范圍。該輸出可響應用戶動作及系統(tǒng)內(nèi)的狀態(tài)改變而改變。
一個窗格確定了它的窺視窗輸入,該輸入一般是通過從該窗格的輸入中導出得到。這種所導出的性質可動態(tài)地根據(jù)系統(tǒng)狀態(tài)或靜態(tài)地改變窗格的實施而從窗格到窗格進行變化。在本發(fā)明提供的最簡導出實施例中,窺視窗的輸入與窗格的輸入相同。類似地,窗格的輸出從窺視窗窗格輸出中導出。該導出的性質從窗格到窗格不同,它或者動態(tài)地取決于系統(tǒng)狀態(tài),或者靜態(tài)地由窗格實施的變化而定。在根據(jù)本發(fā)明的最簡導出實施例中,一個窗格的輸出等于其窺視窗的輸出。
測覽窗測覽窗(browser)是顯示至少一個窗格的視窗。在一個視窗中的窗格數(shù)量及安排可由用戶動態(tài)控制。測覽窗有一輸入,其為一引用,瀏覽窗的輸入作為對測覽窗第一窗格的輸入,該第一窗格通常是占用瀏覽窗左上角的窗格。
連線(Wire)連成(wire)是兩個窗格之間的連接。連線的目的是要一個窗格的輸出控制另一窗格的輸入。與窗格和窺視商類似。連線也有一個輸入和輸入,二者均為引用。為了在兩個窗格之間生成連接,一個窗格的輸出與連線的輸入連接。同樣連線的輸出連到第二窗格的輸入,從而建立了連接。
連線的輸出自其輸入導出。這一導出的性質對各個連線不同,其動態(tài)地取決于系統(tǒng)狀態(tài),或靜態(tài)地由連線的不同實施而定。
連成可在通過輸入之前把其輸入變換為其輸出。有各種的用于建立連接的連線實施方式,而且每個實施可以與不同的變換結合。最佳實施例只提供了最簡導出,其中,連線的輸入未經(jīng)改變地通過連線到達其輸出。窗格的輸出可與任意數(shù)量的連線連接。這提供了一種機制,其中,一個窗格的輸出“控制”了任意數(shù)量的其它窗格的輸入。用戶可以動態(tài)地控制兩個窗格之間的連接。
對窺視窗連接的特性為了簡化同樣特性的不同顯示,并允許對不同特性使用同樣的窺視窗實施,本系統(tǒng)提供了一種將特性與窺視窗關聯(lián)的技術。
在優(yōu)選實施例中,由一組窺視窗表實現(xiàn)連接。每一個窺視窗表可與任意數(shù)量的特性關聯(lián)。一個窺視窗表是一個命名的窺視窗說明表,每個說明定義了一個窺視窗名字和實施分類。圖3示出了優(yōu)選實施例中窺視窗表的一個最簡版本。第一個表命名為“成員窺視窗”,它包括對兩個窺視窗的說明。第一個說明稱之為“略圖(Outline)”,并由“窺視窗”庫中的“TNew Out Line Tree”分類所實施;第二個說明是“樹(tree)”并由窺視窗庫中的“(TNew Tree Viewer)”分類所實施。
每個特性與一個窺視窗表關聯(lián)。例如,下面的表展示了一個“項目”組成部分的特性,以及與每個特性關聯(lián)的窺視窗表。特性 窺視窗表(Proporty) (Viewer List)成員 成員窺視窗(Members) (MembersViewers)說明 說明窺視窗(Description) (DescriptionViewers)宏變化 群窺視窗(Macro Changes) (GroupViewers)界面變化 群窺視窗(Interface Changes) (GroupViewers)實施變化 群窺視窗(Implementation Changes)(GroupViewers)建立誤差 誤差表窺視窗(Build Errors) (Build Errors)建立的組成成分 群窺視窗(Component Built) (Group Viewers)編譯程序(Compilers)客戶 導出的引用窺視窗(Cliens)(Clients)引用 導出的引用窺視窗(References)(Refrences)在本例中,“成員”特性(Members property)可由成員窺視窗“(MembersViewers)”表中指定的窺視窗顯示。參見圖3,成員窺視窗“(MembersViewers)”表中包括兩個窺視窗,“略圖”窺視窗和“樹”窺視窗。因此,“項目”組成部分的“成員”特性可由“略圖”窺視窗或“樹”窺視窗顯示。
該表還示明了與同樣窺視窗表關聯(lián)的一些特性,展示了同樣的窺視窗可用于不同的特性?!熬幾g程序”特性沒有與之相關的窺視窗表,表明“編譯程序”特性根本不能被顯示。表中的第一個特性被認為是組成部分的系統(tǒng)設置特性,它用在確定哪個特性和窺視窗要在一個窗格中顯示的時候。
以下是測覽系統(tǒng)基本過程的敘述。
過程A設置一個窗格的窺視窗給定一個窺視窗名字1.在與顯示的特性關聯(lián)的窺視窗表中查找該窺視窗名字。
2.若發(fā)現(xiàn)了窺視窗名字,去往步驟5。
3.沒有找到該窺視窗名字,使窗格空。
4.去往步驟8。
5.例示一個與該窺視窗表中的窺視窗名字關聯(lián)的分類的窺視窗。
6.把該窺視窗的輸入設置到該窗格的輸入。
7.在窗格中建立窺視窗并顯示該窺視窗。
8.過程結束。
過程B設置一個窗格的特性給定一個特性名1.把窗格的特性名設到給定的特性名。
2.更新該窗格的標題框以展示給定特性名。
3.從該商格的輸入組成部分獲取給定名字的特性。
4.獲取該特性的窺視窗表。
5.若在表中只有一個窺視窗,去往步驟7。
6.通過生成用于窺視商表的每個入口的選項屏項而構成窺視窗選項屏。
7.用窺視窗表的第一個窺視窗名調用過程A以設置窗格的窺視窗。
8.過程結束。
過程C設置一個窗格的輸入給定一個引用1.若引用不是空引用,去往步驟3。
2.引用是空的。把窗格設置到空狀態(tài)。去往步驟12。
3.把窗格標題框中的組成部分名設置到引用指定的組成部分。
4.副用引用指定的組成部分的特性名填充特性上托選項屏。
5.若窗格是特性鎖定,去往步驟9。
6.若引用沒有指明一個特性,跳到步驟8。
7.引用指明一特性。調用過程B把窗格的特性設定到引用的特性,去往步驟12。
8.引用沒有指明一個特性,獲取引用指定的組成部分并調用過程B把窗格的特性設定到組成部分的系統(tǒng)設置特性。去往步驟12。
9.窗格是特性鎖定的。獲取由引用指定的組成部分。若組成部分沒有窗格的特性,去往步驟11。
10.組成部分有鎖定的特性。調用過程B把窗格的特性設定到該鎖定的特性。去往步驟12。
11組成部分沒有鎖定的特征。在窗格中沒有窺視窗建立。
12結束過程。
過程D設置一個窺視窗輸出給定窺視窗確定通常由用戶初始化的某些行為需要窺視窗的輸出改變。
1構成一個表示該窺視窗的新輸出的引用。
2調用過程E來設定窗格的輸出。
3結束過程。
過程E設置一個窗格的輸出給定一個表示窗格的窺視窗輸出的引用。
1把窺視窗的輸出轉換成窗格的輸出(在最簡單情況下,二者是相同的)。
2對每個連接到窗格的輸出的連線,調用過程F以設置連線的輸入到窗格的輸出。
3過程結束。
過程F設置一個連線的輸入給定一個引用1把給定的引用是換成連線的輸出(在最簡單情況下,該輸出與給定的引用相同)。
2調用過程C設置連到連線輸出的窗格的輸入。
3過程結束過程G連接兩個窗格給定一個輸入窗格和一個輸出窗1生成一個裝卸連線2把該連線加到輸出窗格連線組。
3把該連線連接到輸入窗格。
4調用過程F設置連線的輸入。
5結束過程過程H劃分窗格給定裝卸窗格的尺寸1生成一個裝卸窗格目標。
2把新窗格的尺寸設定到給定尺寸。
3設定現(xiàn)有窗格的尺寸以便為新窗格提供空間。
4調用過程G把更有窗格與新窗格連接起來。
5結束過程過程I生成一個瀏覽窗給定作為該瀏覽窗輸入的一個引用1生成瀏覽窗目標。
2把游覽窗的輸入設定到給定的引用。
3生成一個其幾何尺寸填充該測覽窗的新窗格目標。
4用過程C把窗格的輸入設定到測覽窗的輸入。
5過程結束人的界面控制圖4示出了根據(jù)一個優(yōu)選實施例的瀏覽窗。對每個測覽窗,窗格以及窺視窗來說都有特定的控制。
每個測覽窗有下列控制。關閉圖符1210可用于在任何時刻關閉該視窗。在測覽窗中對“項目”進行的任何改變被自動保存。測覽窗縮放框1242使用戶可以縮放瀏覽窗以使其占用整個屏幕。
每個窗格有下列控制。窗格標題框1240指出在窗格1230中顯示的特性名以及顯示的組成部分(1240)的名字。窗格劃分框1250可使用戶將一個窗格分為兩個窗格并從而控制窗格的大小。窗格縮放框1243使用戶可以動態(tài)地縮放窗格以使其完全占用視窗,或將窗格縮放至其原來的大小。上托選項屏1220允許用戶選擇輸入組成部分(1240)的任意特性從而改變一個窗格中顯示的特性。窗格特性鎖定1211允許用戶將一個窗格鎖定到一個特定的特性而與該窗格的輸入無關。水平和垂直卷動控制1252允許用戶卷動窗格中一個窺視窗的內(nèi)容。窺視窗選項屏1251包括可用于窗格顯示的窺視窗的選項屏。特別地,若在窗格中顯示的特性可由不止一個窺視窗顯示時,該窺視窗包括了一個“窺視窗”(“Viewer”)選項屏1253,它可由用戶用于在顯示特性的窺視窗中進行選擇。
還有用于在窗格之間建立連接的控制。當一個新窗格生成時,可從分為新窗格的窗格中建立系統(tǒng)設置連接。為改變連接,一個優(yōu)選實施例把圖形連線迭加到圖5所示的測覽窗,而且用戶可以畫一個新連線以改變窗格連接。在圖5中,測覽窗的輸入連接到左邊窗格的輸入,而左邊窗格的輸出2連到右邊兩個窗格的輸入。右邊窗格的輸出不與任何窗格相聯(lián)。為改變該連接,例如把右上方窗格的輸出連到右下方窗格的輸入,則用戶只需從右上方的窗格畫一條新連線到右下方的窗格即可。
測覽窗系統(tǒng)概要以下概要示出了可以如何利用基于已知計算機科學問題(稱之為Towers of Hanoi)的程序在實際中使用的動態(tài)瀏覽窗系統(tǒng)。
圖6展示了包括一個窗格的測覽窗。它可在打于“Tow-ers of Hanoi”編程項目之后被顯示。窺視窗示出了項目中組成部分的層級,其中每個組成部分由一個圖符和其名字表示。該層級的一些部分被縮滅以便只展示當前相關的那些組成部分。用過程I以及一個對“項目”組成部分作為輸入的引用便生成測覽窗。過程I調用過程C以便將窗格的輸入設定為“項目”組成部分。過程C依次調用過程B以設置窗格的特性。由于對“項目”的引用沒有指明一個特性,所以用系統(tǒng)設置特性“成員(Members)”(一個樹數(shù)據(jù)結構)。最后,過程B調用過程A以設定窗格的窺視窗。該“Members”特性窺視窗表只包括“樹(Tree)”和“略圖(Outline)”這兩個窺視窗。因此,“窺視窗(Viewer)”選項屏由每個窺視窗的入口構成,而且在表(Outline)中的第一個窺視窗被顯示。
圖7中,“窺視窗(Viewers)”選項屏被打開,示出了可由兩個窺視窗“Tree”和“Outline”顯示的“Members”特性。選擇“Tree”選項屏項目調用過程A,從而用“Tree”窺視窗取代“Outline”窺視窗,其結果示于圖8中。
圖9中,“Properties”上托選項屏被打開,示出了由過程C獲取的“項目”組成部分的可顯示特性。圖10示明在上托選項屏中選擇“Description”項后的結果。這調用過程B來顯示“Project”組成部分的“Description”特性。只有一個用于“De-scription”特性的窺視窗,所以無需“Viewers”選項屏。
圖11示出了用戶用垂直窗格劃分控制由過程H把一個窗格分為兩個窗格之后的結果。右邊窗格的輸入聯(lián)到左邊窗格的輸入,如圖12中的箭頭所圖示。由于左邊窗格的輸出是一個空引用,所以新窗格的輸入也是一個空引用,從而根據(jù)過程C而導致了一個空窗格。
圖13示出了用戶在選擇了表示左窺視窗中的“Classes”組成部分的圖符之后的結果。這導致左窺視窗生成一個新輸出以及一個對“Class”組成部分的引用。過程D被調用以處理新輸出,而且過程C被調用以便把右窗格的輸入設置為對“CLASSES”的引用。由于該引用未說明一個特性,用“CLASS”的系統(tǒng)設置特性“MEMBERS”調用過程B?!癕EM-BERS”特性有兩個窺視窗“OUTLINE”和“TREE”,所以過程B構成了一個“VIEWERS”選項屏并在第一個窺視窗,“OUT-LOMEE”窺視窗上調用過程A。
圖14示出了用戶選擇了表示左窺視窗中的“T PIC-TURE”組成部分的圖符之后的結果。這改變了左窺視窗對“T PICTURE”組成部分引用的輸出,過程D再次被調用,過程C亦被調用以將右窗格的輸入設置為對“TPICTURE”的引用。進而,由于引用不指明特性,過程C用“TPICTURE”的缺省特性C稱之為“界面”,調用過程B。該特性只有一個窺視窗,所以不生成“VIEWER”選項屏而且用過程A顯示該窺視窗。
圖15示出了用戶在右窗格的縮放控制上按了一下之后的結果。該窗格現(xiàn)在充滿了整個測覽窗。在縮放控制上按一下將顯示返回到圖14所示的顯示。
圖16示出了用戶用水平窗格劃分框劃分右窗格之后的結果。圖17示出了窗格連接。瀏覽窗的輸入連到左窗格的輸入。左窗格的輸出連到右上窗格的輸入。右上窗格的輸出連到右下窗格的輸入。由于右上窗格的輸出是一空引用,所以右下窗格是定的。
圖18示出了在右上窗格選擇了“繪圖(Draw)”組成部分之后的結果。這導致了在右上窺視窗中生成一個新輸出,該過程由過程D處理。這樣便為右下窗格生成了一個新輸入,該生成由過程C處理。由于輸入未指定一個特性,“Draw”組成部分和“Implementaltion”特性的系統(tǒng)設置持性在右下窗格顯示。
圖19示出了在右上窗格選擇“Debug”組成部分的結果,它導致了由過程D生成和處理的新輸出。
圖20示出了使用連接控制把左窗格的輸出連到兩個右窗格的輸入。現(xiàn)在,兩個右窗格接收同樣的輸入,在這一情況中是對“TPicture”在組成部分的引用。
圖21示出了打開的右下窗格的“Property”選項屏,圖22示出了用戶從該選項屏中選中“Descnption”特性之后的結果。兩個右窗格仍然有同樣輸入即對“TPicfure”的引用。但是,由于在右下窗格選中了一個不同的特性,每個窗格顯示“Tpicture”的不同特性。
圖23示出了用戶在左窗中選中TDisk組成部分的圖符之后的結果。它導致左窺視窗生成一個新輸出。即一個對TDisk的引用,而且過程D被調用,從而使對TDisk的引用成為右邊兩個窗格的輸入。右上窗格顯示“TDisk”的“Interface”特性,而右下窗格顯示“TDisk”的“Description”特性。
圖24示出了用戶選中左窗格中的“Classes”組成部分的圖符之后的結果。它致使左窺視窗生成一個新輸出,即一個對Closses的引用,而且該引用補充作為輸入饋送到右邊的兩個窗格。由于該引用未指明一個特性,右上窗格使用其輸入的系統(tǒng)設置特性,在本例中為“MEMBERS”特性。在下窗格顯示“Deseription”特性,因為它被饋定到該特性。
雖然本發(fā)明以實施例方式敘述了本發(fā)明,但普通技術人員可在本發(fā)明基本原理下對實施例進行修改和變型。本發(fā)明的范圍受權利要求保護。
權利要求
1.一種在計算機程序內(nèi)進行導航的方法,其特征在于包括以下步驟(a)將一個計算機程序成型為一個組成部分集;(b)在一個存儲器中存儲各組成部分;(c)訪問所存儲的組成部分并根據(jù)計算機程序顯示圖符目錄;以及(d)通過顯示與該計算機程序關聯(lián)的信息而響應對程序一部分的選擇。
2.根據(jù)權利要求1所述的方法,其特征在于還包括在一單獨的視窗中顯示與計算機程序關聯(lián)的信息的步驟。
3.根據(jù)權利要求2所述的方法,其特征在于其中的視窗可動態(tài)調整。
4.根據(jù)權利要求1所述的方法,其特征在于包括對來自對于一個組成部分的引用的定義信息提供直接訪問的步驟。
5.根據(jù)權利要求1所述的方法,其特征在于還包括對來自對于一個組成部分的引用的資料信息進行訪問的步驟。
6.根據(jù)權利要求1所述的方法,其特征在于還包括對來自對于一個組成部分的引用的客戶信息進行訪問的步驟。
7.一種用于在計算機程序中導航的系統(tǒng),其特征在于包括(a)用于將一個計算機程序成型為一個組成部分集的裝置;(b)用于在一個存儲器中存儲各組成部分的裝置;(c)用于訪問存儲的組成部分并根據(jù)計算機程序顯示圖符目錄的裝置;以及(d)用于通過顯示與該計算機程序關聯(lián)的信息而響應對程序一部分的選擇的裝置。
8.根據(jù)權利要求7所述的系統(tǒng),其特征在于還包括在一單獨的視窗中顯示與計算機程序關聯(lián)的信息的裝置。
9.根據(jù)權利要求8所述的系統(tǒng),其特征在于其中的視窗可以動態(tài)地調整。
10.根據(jù)權利要求7所述的系統(tǒng),其特征在于還包括對來自對于一個組成部分的引用的定義信息進行訪問的裝置。
11.根據(jù)權利要求7所述的系統(tǒng),其特征在于還包括對來自對于一個組成部分的引用的資料信息進行訪問的裝置。
12.根據(jù)權利要求7所述的系統(tǒng),其特征在于還包括對來自對于一個組成部分的引用的客戶信息進行訪問的裝置。
13.一種用于在計算機程序內(nèi)導航的方法,其特征在于包括以下步驟(a)將計算機程序成型為一個組成部分集;(b)在存儲器中存儲各組成部分;(c)訪問存儲的組成部分并根據(jù)計算機程序顯示圖符目錄;(d)通過在一個第一窗格中顯示與計算機程序關聯(lián)的顯示信息響應對程序的一部分的選擇,以及;(e)生成一個第二窗格并在第一窗格和第二窗格之間生成一個系統(tǒng)設置連接。
14.根權利要求13所述的方法,其特征在于還包括生成一個幾何數(shù)的步驟,該幾何數(shù)連接第一和第二窗格并表示第一窗格和第二窗格之間的連接。
15.根據(jù)權利要求13所述的方法,其特征在于還包括存儲第一窗格和第二窗格之間的連接的邏輯表示的步驟。
16.根據(jù)權利要求13所述的方法,其特征在于還包括生成多個窗格并生成多個窗格之間的多個連接的步驟。
17.根據(jù)權利要求16所述的方法,其特征在于還包括編輯連接以改變程序的特征的步驟。
18.根據(jù)權利要求1所述的方法,其特征在于還包括將一個視窗分為多個窗格的步驟。
19.根據(jù)權利要求1所述的方法,其特征在于還包括通過從一個選項屏中選擇一項而動態(tài)地改變視窗中顯示的信息的步驟。
20.根據(jù)權利要求1所述的方法,其特征在于還包括通過從一個選項屏中選擇一項而動態(tài)地改變顯示器上的信息步驟。
21.根據(jù)權利要求1所述的方法,其特征在于還包括把一個應用程序的多個顯示與至少一種信息關聯(lián)的步驟。
22.根據(jù)權利要求1所述的方法,其特征在于還包括把信息和多個顯示關聯(lián)的步驟。
全文摘要
一個面向人的目標編程系統(tǒng)提供了一個交互和動態(tài)的處理以助于計算機程序的增量建立。該增量建立簡化了操作系統(tǒng)及具有圖形用戶界面的應用程序之類的復雜計算機程序的開發(fā)。一個程序被成型為一個稱為組成部分的單元集。一個組成部分表示一個分類或功能之類的可編譯語言元素。三個主要的功能性是數(shù)據(jù)庫,編譯程序和建立處理。
文檔編號G06F9/06GK1105508SQ94190009
公開日1995年7月19日 申請日期1994年1月3日 優(yōu)先權日1993年6月28日
發(fā)明者彼得·約瑟夫·麥金內(nèi)爾尼, 約翰·R·丹斯 申請人:塔里根特公司