專利名稱:系統(tǒng)開發(fā)支持的制作方法
技術領域:
本發(fā)明涉及一種按照所描述的一套過程幫助開發(fā)軟件產品的系統(tǒng),尤其是按照一套例如在計算機程序設計的許多方法中可以找到的那些過程來自動監(jiān)測、記錄、調用和建議過去、現(xiàn)在和將來的行動的交互式支持媒體。
多年來,計算機軟件開發(fā)者和程序設計人員一直在追求能減輕產生復雜的計算機程序的負擔的工具。先前和不久前的軟件開發(fā)要求程序設計人員特別注意與程序進展相關的每個細節(jié)和所有文件、說明等。一種計算機軟件系統(tǒng)要經(jīng)過建立、測試、修改各組成部分重建該系統(tǒng)的過程才能產生程序設計人員所需要的產品。隨著軟件系統(tǒng)的規(guī)模和復雜性的增長,要求設計單個系統(tǒng)的程序設計人員的人數(shù)也急劇的增長。因此,由不同的各別的程序設計人員分別設計整個軟件系統(tǒng)中的各個部分,然后相互連接起來,形成最后的產品這樣一種做法現(xiàn)在已是十分普遍的。很清楚,在這樣的設計中會產生相容性和一致性的問題。例如,某個程序設計人員修改了他或她的程序部分,則受到其影響的其它程序部分的設計者必須注意到它的影響。于是,需要開發(fā)一種支持系統(tǒng)以便在建立復雜的計算機程序時用來跟蹤和幫助軟件開發(fā)人員。
在美國專利No.4,860,204中杰德朗(Gengran等人)給出了一種解決方案,其中,工作站通過使用可視的圖形表示的方法來構造計算機程序?;诮艿吕实墓ぷ髡镜挠嬎銠C允許用戶通過連接圖形編程塊來建立計算機程序,并由此建立所希望的功能結果。當杰德朗系統(tǒng)對所選的交互連接進行整體檢驗時,該系統(tǒng)并不給用戶提供或自動提出編程過程中可采取的行動及其所產生的后果的建議。
同樣,在愛弗夏(Afshar)的美國專利No.4,734,854中,給出了一種設計生成程序模塊的系統(tǒng),這種模塊完成共同需要的計算功能。然后,用戶可將此生成模塊集成到一個專用的或具體的軟件單元中去,愛弗夏系統(tǒng)還能自動產生適用于特定的軟件單元的生成模塊的具體版本。盡管該系統(tǒng)具有某些自動特性,但它不能告訴用戶在開發(fā)期間需要哪個生成系統(tǒng)或工具,也不能給用戶建議可選用的方法。
然而,最近計算機輔助軟件工程(“CASE”)環(huán)境不僅變得有用,而且在很多情形下成為復雜軟件設計所必須;正如計算機輔助設計(“CAD”)系統(tǒng)已成為復雜硬件設計所必須一樣。“軟件工程環(huán)境”一般涉及操作系統(tǒng)環(huán)境和工具或子例程的集合,這些子例程復蓋了開發(fā)計算機程序過程中產生的各種情況所需的功能。例如,萊布朗(Leblang)等人的美國專利No.4,809,170闡述了一種計算機輔助軟件工程應用的支持系統(tǒng)。萊布朗的支持系統(tǒng)監(jiān)測正在開發(fā)的系統(tǒng)中的各種變化并把它們記錄下來,以便將未恢復時使用,另外,該系統(tǒng)將系統(tǒng)的任何這類變化通知當前的用戶。然而,萊布朗并不向用戶提出能自動調用各種程序構造工具和交互前進建議的支持系統(tǒng)。
早期的軟件工程環(huán)境系統(tǒng)以及軟件開發(fā)支持的理論和目的概括地描述在下面的文章中格里菲斯等人(Griffiths,etal.,)的“ALF它的進程模式和它在PCTE上的實現(xiàn)(ESPRITALF工程,技術文章1989)。
凱塞(Kaiser)等人的“軟件開發(fā)和維護的智能幫助”(IEEE軟件1988)。
科倫(Clemm)的“用作業(yè)控制替代版本控制”(計算機器協(xié)會1989)。
另外,CASE系統(tǒng)以不同于代碼生成的方式幫助用戶。例如,由軟件開發(fā)者所承擔的修改一個程序的特定方面的任務不僅影響程序模塊元件而且也影響到程序的其它非代碼元件。對程序的擴充也可能需要更新程序的設計說明、用戶手冊和聯(lián)機“幫助”文件,某些步驟可能包括脫機活動,例如把變化通知在該程序上工作或使用該程序的其它人,建立更新程序的軟盤和傳送新盤給程序設計人員和用戶。軟件開發(fā)過程所涉及的遠非編程一個方面,因此,實際的軟件開發(fā)環(huán)境應該支持編程以外的更多方面。
如今,工業(yè)計算機程序的開發(fā)從描述方法和過程開始,按這些方法和過程能獲得特定的軟件。這種描述包含大量的標準以及復雜的過程,要求大量的步驟去完成。先前的軟件支持系統(tǒng)由“工具箱”組成,該工具箱包含幾個完成特定任務的工具。這類支持系統(tǒng)中的所使用的工具包括編輯器,編譯程序,流程圖編輯器等。程序設計人員的任務在于選擇恰當?shù)墓ぞ卟⒋_保各種程序單元之間的一致性。
其它軟件支持系統(tǒng)包括用軟件描述的進程的進程編程技術。進程編程作為軟件來實現(xiàn)軟件進程。這種方法利用形式語言描述盡可能多的軟件進程,并且進程描述由計算機去解釋,然后該計算機能指導用戶怎樣去實現(xiàn)一個特定的任務。對作為軟件開發(fā)幫助手段有爭議的已有進程編程技術不能給用戶提供靈活的幫助。相反地,已有的進程編程強迫用戶去通過各種各樣的開發(fā)進程的不同步驟。然而,用戶不愿意接受由進程編程技術所施加的強制性的限制。為了使軟件開發(fā)過程真正有效,需要一個更靈活的支持系統(tǒng),它包括監(jiān)測用戶的所有行動,允許用戶在幾個與后續(xù)開發(fā)過程一致的方向上進行開發(fā),解釋用戶的行動并對實現(xiàn)這些行動給以支持。于是,在技術上需要一個交互的進程編程支持系統(tǒng),該系統(tǒng)以靈活的方法幫助程序設計人員和工程師們開發(fā)復雜的計算機程序。
現(xiàn)在用一個示例來體現(xiàn)本發(fā)明。本發(fā)明包括一種對根據(jù)特定的軟件進程開發(fā)軟件產品提供交互式支持的方法。該方法的內容是第一步用特定的語言定義某個軟件進程,該特定語言涉及一套用于開發(fā)某軟件產品的步驟。然后,所建立的說明必須由解釋程序將其變換為可執(zhí)行的形式。在解釋期間,該方法產生一個供選擇的菜單,其中每個選擇構成一個關于特定軟件進程可能的行動的建議。用戶作出一項選擇;隨后,一組系統(tǒng)工具中的一個可被啟動且完成一個工具操作。用戶也能直接啟動工具操作。由該工具完成的任何操作結果被跟蹤以便看它是否涉及該進程。對該結果進行分析,且作為一個作用,其它系統(tǒng)工具或其它工具操作可自動啟動。因此,給用戶提供一個覆蓋根據(jù)先前所取步驟開發(fā)的當前狀態(tài)的反饋。
本發(fā)明的方法包括在形式的進程描述中指定的一致性檢驗。這些一致性檢驗能夠在每使用一次系統(tǒng)工具后出現(xiàn),且能產生在一致性檢驗期間發(fā)現(xiàn)的錯誤報告。上述方法的一個附加單元允許瀏覽與該開發(fā)相關的數(shù)據(jù)庫中的目標。搜索數(shù)據(jù)庫中的特定目標可以以啟動來自瀏覽程序的任何可用系統(tǒng)工具的形式出現(xiàn)。
在另一方面,本發(fā)明是一個在按照特定的軟件進程開發(fā)階段期間提供交互支持的計算機系統(tǒng)。該交互支持系統(tǒng)包括一個規(guī)定和存貯一個形式進程描述的裝置。系統(tǒng)中進一步提供一個將功能進程描述變換為可解釋形式的裝置。該解釋程序(interpreter)包括一個專家系統(tǒng)以及一個電氣可連接于該邏輯解釋程序(logic interpreter)的數(shù)據(jù)庫。一電氣連接于該邏輯解釋程序的信息處理程序(messagehandler)用于處理與一組系統(tǒng)工具通信,這些工具配置完成與所述進程相關的特定任務。最后,一個用戶界面用圖形與該系統(tǒng)的用戶進行通信并也允許用戶輸入。
下面參照
本發(fā)明以便更好地理解本發(fā)明,并使本技術領域中的技術人員清楚地了解本發(fā)明的許多目的、特性和優(yōu)點。
圖1是表明需要定義某個進程的形式說明的各步驟的方框圖;
圖2是表明使某個形式說明可執(zhí)行所要求的各步驟的方框圖;
圖3是表明作為本發(fā)明可使用的專家系統(tǒng)的主要組成部分的方框圖;
圖4是表明本發(fā)明支持系統(tǒng)的主要組成部分的方框圖;
圖5是以順序表明的預先形成在進程的交互支持中的各步驟的流程圖;
圖6是本發(fā)明瀏覽程序特性的流程圖;
圖7是表明工具功能的啟動和操作的流程圖;
圖8表明按照本發(fā)明所指出的方法構造一個所使用的活動的各種單元;
圖9A-9C是按照本發(fā)明的方法處理數(shù)據(jù)的方法的不同部分的流程圖;
圖10是進一步說明本發(fā)明處理數(shù)據(jù)的方法的流程圖;
圖11是進一步說明在本發(fā)明處理數(shù)據(jù)的方法中使用圖形符號的流程圖;
圖12是表明本發(fā)明的數(shù)據(jù)恢復方法的流程圖;
圖13是進一步表明處理數(shù)據(jù)的方法的流程圖,特別是它表明了依據(jù)本發(fā)明原理執(zhí)行一個活動的情況;
圖14是以圖形形式表明設有用本發(fā)明的工具支持的執(zhí)行一個活動的流程圖;
圖15表明完成數(shù)據(jù)處理子進程的流程圖。
支持系統(tǒng)的用戶在做的每件事都將關系到達到某個目的,如產生一個新軟件產品。下面,術語“進程”用來描述需要達到這樣目的的各步驟,它包括這些步驟出現(xiàn)的次序等。進程是建立設計者的工作的自然路徑(Way)。因此,進程的描述必須是由專家們仔細分析設計者應該怎樣以最佳路徑(方式)運行以獲得預期目的的結果。本發(fā)明中為了在形式上能描述進程,使用了稱為PDL(ProcessDescriptionLanguage)的專用語言。為了幫助設計者進行由進程定義的工作,PDL描述必須是可執(zhí)行的,否則,它僅僅是相當于一種文本性的描述。通過執(zhí)行描述,系統(tǒng)的用戶獲得達到預期目的所需要通過的全部步驟的導向。
應當理解,本發(fā)明包含兩個不同的單元。第一,是進程單元,第二是支持系統(tǒng)單元。在得到幫助之前,被支持的進程必須在形式上使用如上所述PDL來描述。這種進程描述然后被輸入(以修改過的形式)給一個進程描述解釋程序,由此,支持系統(tǒng)才能在獲得進程目的上提供幫助。于是,圖1表明了進程定義的最初步驟。進程要求在框300中得到分析,然后在框302中產生該進程的一個非形式的模塊(例如,作為一個文本性的描述)。在方框300和302中,我們有一個關于應該產生什么樣結果和在該進程中需要取哪些步驟的說明。接著,在框302中產生一個PDL進程說明,同時在框306中產生如數(shù)據(jù)方案等的進程的信息模塊。
PDL說明由對支持系統(tǒng)負責的并在開發(fā)進程方面專門拼制以適合特定公司和/或特定目的如特征設計、故障報告等的需要的系統(tǒng)設計人員來制作(誠然,普通用戶原則上也能設計進程說明)。
該PDL說明(描述),例如包含許多基體特征。首先,它描述了一個進程分解為各個子進程,每個子進程描述了能夠與其它子進程所描述的任務并行完成的任務,以便提高生產率。這樣密切配合了設計者面臨使用現(xiàn)代工作站的情況,在這樣的工作站中有許多計算機工具能并行執(zhí)行。然而每個工具用某個PDL表示的進程來描述,子進程描述了使用該工具應獲得什么結果和該工具怎樣與其它子進程或工具相互配合。第二,它描述了由不同的子進程描述的任務是怎樣通過在進程之間不同時溝通的特定事件而交互作用的。第三,該PDL說明描述了特定子進程的起動和完成的條件,第四,它描述了構成一個子進程的不同的步驟和活動如編輯、編譯、聯(lián)接、測試等,為了起動某個步驟或活動所需的條件。最后,該PDL說明描述了通過面授怎樣給用戶提供進程的狀態(tài)信息以及在進程的當前狀態(tài)下執(zhí)行哪些可能的步驟是合適的,而與用戶交互作用。
為了用戶進行他自己的選擇和避免察覺到支持系統(tǒng)限制用戶于某個順序活動的障礙,PDL說明有三個基本特性。首先,唯有進程狀態(tài)確定能夠做什么;這確保了活動執(zhí)行次序具有最小重要性。第二,該PDL描述通過向用戶提供許多與進程當前狀態(tài)有關的建議確保了靈活性,用戶可自由地選擇任一建議。于是,支持系統(tǒng)不強迫用戶服從某個行動選擇。第三,用戶能直接進行活動,而不使用由本發(fā)明提出的選擇。PDL說明的這三個特性將確保設計者必須做的不同任務能夠以察覺不到太嚴格限制的方式處理。
現(xiàn)在參看圖2,那里顯示了為了實現(xiàn)圖1中定義的進程的PDL描述所需采取的必要步驟,從而給某個特定進程提供援助。首先,在框350中,產生進程的PDL描述。然后,分析這種描述并在框352中將其變換為適合于支持邏輯解釋程序的格式。一旦經(jīng)適當格式化的描述在框354中裝載于支持邏輯解釋程序44(見圖4),其結果是系統(tǒng)能向用戶提供必要的支持。這些步驟由系統(tǒng)程序員(asystemProgrammer)采取以便使支持系統(tǒng)提供以PDL描述表達的支持作好準備。于是,這就準備好了本發(fā)明的第二個方面,即支持單元當用戶決定進行以由某個進程描述的任務工作時,支持邏輯解釋程序44開始對已變換為格式的PDL描述進行解釋,由此向設計者提供援助去努力完成他的任務。于是,由于PDL描述了支持邏輯即它是怎樣工作的,所以PDL描述的另一名稱為“支持邏輯”(assistantlogic)。
在執(zhí)行支持邏輯期間,在支持中產生許多影子目標(“Shadow”objects)。這些影子目標代表著“實際”目標、文件、說明等設計者正在用它們作為他任務的一部分建立和工作著的目標,這些影子目標用于支持邏輯以便保持跟蹤與該進程描述工作相關的每個實際目標的狀態(tài)。通過對目標狀態(tài)保持跟蹤能夠檢驗條件以便看看新的行動是否合適并在那樣情況下是否將它們建議給用戶。這些影子目標是圖1所述信息模塊的組成部分。
現(xiàn)在參看圖3,那兒顯示了表明一個類似于本發(fā)明專家系統(tǒng)20的專家系統(tǒng)的主要組成的方框圖。典型的專家系統(tǒng)取決于在產生系統(tǒng)自身期間所累積的知識大全(corpus)。這種知識大全駐留在專家系統(tǒng)20的知識庫中。存貯在知識庫30中的信息可以劃分為知識庫30的分類單元和離散部分。這種情形由包含在知識庫30中的#1KB和#2KB表示。支持系統(tǒng)8的特定操作所需知識必須是清楚的并可接入專家系統(tǒng)20。
專家系統(tǒng)20的一般問題解決單元包含推理工具32。該推理工具32調用存貯在規(guī)則庫34中的規(guī)則。推理工具32確定包含在規(guī)則庫34中的規(guī)則是如何應用于手頭的問題以及這些規(guī)則執(zhí)行的次序。專家?guī)?0中的許多規(guī)則取一種為求解答而由簡化了的檢索方式組成的試探法的形式。在操作中,推理工具32掃描數(shù)據(jù)庫36中的數(shù)據(jù),并將數(shù)據(jù)與來自規(guī)則庫34的準則匹配。依次,與規(guī)則庫34相關的試探法方法產生用于知識庫30的信息。起初,進程中使用的規(guī)則來源于專家38,這些規(guī)則不需要特定的次序。進而,知識庫30中的信息在專家系統(tǒng)20運行期間受到實時更新。
另一方面,可使用歸納工具40對專家系統(tǒng)20進行操作以便使規(guī)則庫34的規(guī)則公式化。歸納工具40通過導出應用于在知識庫30中找到的特定信息的進程的一般原理進行工作。專家38能直接提供規(guī)則或給出能由歸納工具40將其變換為規(guī)則的樣例。
下面參看圖4,該圖顯示了按照本發(fā)明描述其組成部分的支持系統(tǒng)的方框圖。作為一個基于計算機的系統(tǒng),為了提供其優(yōu)點,本發(fā)明的較佳實施例存放于計算機41中,這是一種適合于執(zhí)行預先建立的邏輯語句的序列(即程序和/或固體)和從存貯器讀寫的計算機。位于支持系統(tǒng)8的操作中心的是支持(assistant)12。該支持12包含支持邏輯模塊42和支持邏輯解釋程序44。
支持邏輯模塊42由一個如上所述被變換為PDL描述組成,它定義進程并代表要達到的目的。
支持邏輯解釋程序44容納著專家系統(tǒng)20。在一較佳實施例中,專家系統(tǒng)用ProKappa語言編程,這種語言由Intellecorp公司(1975ElCaminoRealWest,MountainView,California)設計。本發(fā)明將圖解加給所提供的Protalk語言以增加操作的簡便性。支持12和尤其是支持邏輯解釋程序44通過信息處理器46與支持系統(tǒng)中的工具進行通信,包括但不限于編譯程序和編輯器。工具和工具功能是依據(jù)它們表達進程的基本積木塊,通過它們進程在支持系統(tǒng)中被表示與執(zhí)行。以這種方式,多數(shù)進程專用知識能夠指定PDL描述而不是在工具中。因此,不同的工具很容易再應用于其它進程,而且當進程被修改時,工具不必改變。數(shù)據(jù)庫36也連接到支持12。數(shù)據(jù)庫36存貯通常由支持系統(tǒng)8產生或處理的數(shù)據(jù)以及為支持邏輯解釋程序44和支持邏輯42連接先前存貯的進程信息。
為了提高使用支持系統(tǒng)8時的生產率,每個工具22與其它工具22并行工作(以不同的UNIX進程,如果工作在UNIX平臺上)。每個工具通過交換與那工具所取的當前作用狀態(tài)有關的信息與支持12交互作用。于是,許多同時的活動出現(xiàn)在支持系統(tǒng)8中,并且這些同時活動的每一個由支持12監(jiān)視和分析。
請仍然看圖4,它還顯示了支持的用戶界面活動窗口48。用戶界面48與用戶16進行進程狀態(tài)通訊,并且向用戶提供執(zhí)行由進程定義的活動的指南。用戶界面包含對用戶是“可見”的唯一的支持12的元件。支持12中的專家系統(tǒng)20根據(jù)當前進程的前后關系分析用戶16的行動(通過從工具接收到的信息或在支持用戶界面中所做的選擇),并且產生特定情況的特定圖形信息。
在用戶界面48中,使用許多不同的表示形式進行信息通信是可能的。所顯示的信息,例如,可取表格形式,或取圖形表示及流程圖形式。許多可用的界面利用代表首選的界面的塊50和代表次選的界面的塊52來圖示說明。用戶可選擇最適合他的技術和手頭任務的界面類型。
現(xiàn)在參見圖5,它顯示了,當支持邏輯解釋程序44裝入如上所述的進程描述時,一個更詳細的描述運行期間支持工作方式的流程圖。從該流程圖看,很顯然,支持12依賴于與作為支持系統(tǒng)8的一部分的工具22相關的許多因素。首先,支持12必須能起動工具22和調用工具功能。這通過能通信的信息處理器46來進行。工具也必須報告發(fā)生的各種事件,因為絕大多數(shù)工具事件涉及進程狀態(tài)和要達到的設計目的,例如修改一個文件,建立一個界面說明,或編譯一個程序。一個工具應當報告哪個事件決定于描述該任務的進程描述何時被指定。
因為工具不管它從哪里起動(從支持活動窗口,從數(shù)據(jù)庫瀏覽器,或從Unix外殼),它都能與支持12通信,所以系統(tǒng)8允許用戶除了由支持處理的活動窗口48-52外利用其它手段起動工具。用戶也能直接執(zhí)行與那些非必須在活動窗口中作為建議顯示的工具不同的工具功能。因此,支持12和支持邏輯42必須能處理在任何時候產生于不同工具的事件。這是可能的,因為PDL說明,當出現(xiàn)事件時它描述了要做的事,它僅僅涉及進程的當前狀態(tài),而不涉及已經(jīng)出現(xiàn)事件的那個次序(這樣能在專家系統(tǒng)下面使用觸發(fā)裝置(triggeringmechanisms))。因此,任何事件根據(jù)進程狀態(tài)來解釋而不管它是否已涉及來自支持12的建議。
繼續(xù)見圖5,下面是顯示在那里的流程圖的詳細說明。由框60開始,用戶16選擇他應完成的任務。例如,任務可以是一個新軟件產品的設計,或是一個處理錯誤的報告。在框61中,支持12選擇適當?shù)奶囟ㄈ蝿盏腜DL說明(這種工作是在支持中內部自動地進行的)。這種說明按圖2中所述在先前已被分析和變換。繼續(xù)到框62,描述任務的進程的當前狀態(tài)由數(shù)據(jù)庫36裝入支持12。這種裝載當用戶16先前已在該任務上工作并已貯存了先前工作的狀態(tài)時是最恰當?shù)模诳?3中,支持12將根據(jù)進程當前狀態(tài)的行動作出建議。建議所顯示的方式取決于如上所述采用的用戶界面。
方框65描述了支持出現(xiàn)在支持系統(tǒng)8中的等待事件。至框66的分支表明一個工具報告了作為事件功能調用到支持12的結果。為響應框66中產生的事件,框67改變進程狀態(tài),這是因為它來自發(fā)生在支持系統(tǒng)中的事件。如果用戶16已從活動窗口中選擇了支持建議中的一個,則方框68應該處于活動狀態(tài)。如果接著是從框68至框69的分支,并且來自活動窗口所選擇的建議包含執(zhí)行一個工具功能,則起動工具22(假如需要的話),并且適當?shù)墓δ芙?jīng)信息處理器46被調用。繼續(xù)進行到框70,改變進程狀態(tài),反映工具功能調用。然而,如果由用戶16選擇的建議不包含調用工具功能,則進程的內部狀態(tài)僅通過用戶16所做的選擇進行改變。在這種情況下,用戶16通常表明某些人工活動已在進程中完成。
在狀態(tài)改變完成后,在方框72中,支持12演繹這種變化的結果。按照方框72導出的分析結果支持可自動在方框73中調用其它工具。而且,作為在框72中的分析結果,不同信息單元之間的一致性檢驗可在框74中自動進行,且其中發(fā)現(xiàn)的錯誤將在框75中得到報告。另外,支持12可按照框72的分析結果認為自動工具調用是不必要時,則轉而為用戶16產生一組新的建議。該組新建議是以新建立的進程狀態(tài)為基礎的,如此重復進行循環(huán)。然而,如果用戶16在框77中想退出這種情況,則進程狀態(tài)在框78中被保留。
下面參看圖6,那里圖示了本發(fā)明的瀏覽服務器(browserserver)90的情況,它包含支持系統(tǒng)8的獨立單元。瀏覽服務器90允許用戶16尋找系統(tǒng)數(shù)據(jù)庫36中的目標并且不用支持12的引導對那些目標進行選擇。瀏覽服務器90不對用戶16提供建議。所找到的目標如描述、流程圖、程序等可通過瀏覽服務器90得到檢查,并且目標上的工具操作能被起動。仍然參看圖6,該瀏覽服務器90以起動瀏覽器框92開始。當瀏覽服務器90開始時,在方框93和94用戶16能搜索和選擇系統(tǒng)數(shù)據(jù)庫36中的目標。當選中該目標時則能在方框95上顯示一張菜單,該菜單可用于對該目標的操作。方框96起動工具22并在方框98中向支持12報告這一事實。這樣使支持依據(jù)所知道發(fā)生的事件能觀察系統(tǒng)的一致性。于是,用戶16可以各種方式與支持系統(tǒng)8交互作用,其中之一是通過瀏覽服務器90且仍然得到支持的支持。
下面看圖7,這里顯示了一個工具功能調用流程圖。因為用戶16不用支持12的幫助能起動工具22,所以用戶16也能執(zhí)行不同的工具功能,這些功能不必作為建議顯示在由支持12處理的活動窗口中(如在上面瀏覽服務器情況中所述的)。于是,支持12和支持邏輯42必須能在任何給定時刻處理來自各種工具的事件。這樣做的可能性是由于描述某個事件出現(xiàn)時做什么的PDL說明(描述)僅涉及進程的當前狀態(tài),而不涉及如上所述活動已經(jīng)執(zhí)行的次序。因此,任何事件依據(jù)進程的狀態(tài)被解釋而不管支持依據(jù)建議是否發(fā)送它。
其結果是,為了工具設計者與支持12所加的規(guī)定一致,工具必須以下面的方式運行。首先,工具操作在方框370起動,并將這一事實報告給支持。起動之后,工具能接受方框371中的工具功能調用。工具功能或經(jīng)框372通過支持12或經(jīng)框374通過工具用戶界面被調用。接著,工具功能在框376執(zhí)行,且如果進程需要的話,其結果在框378報告給支持12。再有,與進程相關的工具功能(于是需向支持報告)在設計進程期間被確定。不斷循環(huán),且該工具為下一個工具從等待調用框371起動作好準備,或該工具停止在框380。
下面參見圖9,那里顯示了在本發(fā)明原型之一中所給的指定支持的典型進程說明的一實施例的PDL圖,它圖解說明一個秘書當處理一個會議時需要取的不同步驟。因為進程描述由圖形符號表達,所以圖9的流程圖采用下面討論的圖形符號。而且,系統(tǒng)8將圖形流程圖變換為如上所述由支持邏輯解釋程序能夠解釋的格式。
顯示在圖9-15中的文本信息是流程圖整個內容的部分視圖。每個圖形符號能有不同種類的文本信息附于它;如非形式的注釋,隱含或顯式規(guī)定的可執(zhí)行的編碼,文件的使用,參數(shù)說明等。為了使圖簡化和使它們更易閱讀,在圖9-15中出現(xiàn)的視圖僅僅顯示圖標的參數(shù)說明。在這種視圖中,變量和常數(shù)兩者作為參數(shù)指定,用第一個字符為問號來表示變量。在支持這種語言的圖形編輯器(graphicaleditor)中,這種視圖能變換為先前描述的任何其它視圖。
下面參見圖8,它進一步顯示了PDL圖標組成的例子。一個PDL的基本積木塊是活動結構,該結構描述了某個活動的條件和結果并且它取圖8所示的一般結構?;顒訄D標386在其一邊由前置條件圖標(preconditionicons)388包圍。該前置圖標描述了該活動被執(zhí)行的必要條件。例如,在圖11中,符號140、142和144全部是前置條件?;顒訄D標386對整個結構,即所有前置條件和結果起參考作用,結果圖標390能代表用戶16或自動通過支持12要執(zhí)行的操作。那兒也有許多不同的預先規(guī)定的代表特定條件和結果的圖標。如菜單圖標、文件圖標、時鐘圖標等。預定的可執(zhí)行的編碼、文件編制等附于那些圖標,并且參數(shù)能加給圖標。應當注意引進一個活動的所有變量都位于該活動中。
如上所述,對于支持為內部的影子目標是狀態(tài)信息的持有者。為了保持對文件、程序、不同的進程、子進程等的跟蹤,它們在支持中全部表示為影子目標。相應的實際目標一旦建立,這些影子目標就建立,在PDL中存在特定的圖標,如例示圖標(例示通常意味著從模板產生一個特定的例子,如影子目標的說明),這種例示圖標代表產生一個影子目標。在圖9中例示符號102的情況下,一個秘書任務作為舉例說明,該秘書任務圖一般描述了許多可能的任務,而且許多不同的會議能使用這說明進行安排,當執(zhí)行該說明來幫助用戶安排特定會議時,這種特定的會議安排任務必須有一個代表,即一個影子目標。例示符號102表示建立這種例子,然后,該例子能持有關于這種特定會議安排任務的狀態(tài)信息,并能與圖的其它部分發(fā)生聯(lián)系。
下面參看圖9A-9C的流程圖,所述進程涉及一個秘書安排一個業(yè)務會議等需要的任務。這些圖顯示了進程的不同狀況。最上面部分圖9A是進程起動條件的描述性圖示說明,而中間部分圖9B描述了進程細分成子進程。能使任何其它進程由支持系統(tǒng)8處理的秘書進程可包含幾個子進程。圖9B中圖示的子進程中材料子進程108、通知子進程116、會議子進程118、文本編輯子進程119,和會議記要處理子進程122。材料子進程108描述怎樣收集特定會議需要的材料,而通知子進程116描述怎樣發(fā)通知給會議的參加者。會議子進程118描述怎樣進行會議,而文本編輯子進程119描述怎樣進入文本(如,使用什么工具)。會議紀要處理子進程112描述如何處理書寫一個會議記要的分任務。下面部分圖9C描述了進程的停止條件。應該理解還有其它進程視圖(界面視圖,活動視圖,等)沒有表示在圖9A-9C中。
一旦例示的標準已得到滿足,例如,這種標準是一個進程提供的服務已被請求(如來自某個其它子進程的輸入),則每個子進程自動開始,進程或子進程序列也能被描述,并且在這種情況下,對于不斷進行進程的任務的重要事件是由先前進程報告事件的“完成”。由箭頭圖示標明的信息轉移,如圖9中“編輯”箭頭112和“材料完成”箭頭114,進一步描述了與描述并發(fā)任務的子進程相關的事件的交換。這種箭頭在圖中的語義并不重要,它僅僅是描述信息流的一種不正規(guī)的方法。信息的實際交換是由專家系統(tǒng)下的推理工具處理的,它們將在相應的子進程中詳細進行描述。
圖標100表示支持系統(tǒng)8通過接收一個起動進程的外部事件開始它的運行(如,對應于用戶建立一個新的會議安排任務);事件的參數(shù)是名(“啟動”),而進程的種類是動起(“秘書”)。例示出現(xiàn)在圖標102。符號104表示與秘書進程關聯(lián)的初始值的設定,并描述了進程狀態(tài)變化(進程的起動情況設為“真”)。活動圖標101,如上所述,表示整個活動。
下面參看圖9中所示的不同的箭頭,編輯箭頭112表明涉及由另一個子進程處理的業(yè)務的材料子進程。在這種情況下,根據(jù)材料子進程108使用文本編輯子進程119。該文本編輯子進程119描述了怎樣使用一個能夠并行并與系統(tǒng)中由其它子進程描述的活動同時執(zhí)行的文本編輯器。一旦材料子進程108和通知子進程116已完成它們的各自任務,就出現(xiàn)事件114和115。來自會議118的“會議記錄”和事件120表明來自會議的數(shù)據(jù)是可用的。會議數(shù)據(jù)由代表必須要做的會后(Postmeeting)工作的會議紀要處理子進程122來使用。編輯事件112導致文本編輯子進程119對文本進行進一步的編輯。于是,圖9圖示說明了在描述能并行執(zhí)行任務的子進程之間的事件交換。由于在材料子進程108與通知子進程116的任務之間明顯地缺乏任何要進行交換的同步事件,所以能夠并行產生。
在圖標124中,條件描述了任何子進程中暫停情況為“真”時的狀態(tài)。在圖標126中,條件描述了這樣一個必須是有利于這種活動的“協(xié)議處理”類的進程。在圖標128中,找到擁有暫停子進程的秘書進程(由?進程標識)。最后,在圖標130中該秘書進程暫停。
下面請看圖10,那里也圖示說明了本發(fā)明的處理數(shù)據(jù)的方法。這代表了圖9的通知子進程116的例示。于是,秘書任務必須已被起動,它由符號130和132表示(起動情況為真且進程種類為“秘書”)。當前置條件為真時,該活動開始,并且在符號136(該例的參考是“子進程”)中執(zhí)行通知子進程116的例示。然后,在符號138,通知子進程的起始值作為狀態(tài)信息被記錄。
下面參看圖11,那里更詳細地描述了本發(fā)明的處理數(shù)據(jù)的方法,尤其是更詳細地描述了一個編輯活動145。位于專家系統(tǒng)下面的機構將檢測什么時候活動的前置條件為真。該編輯活動145為可能時,符號140表示該通知子進程必須被起動。符號142表明需要暫時文件存貯的數(shù)據(jù)將通過當前活動產生并且因此,一個暫時文件名必須確定以便存貯這些信息(這種處理方式在這里還未表明的符號的編碼部分中進行描述)。接著,菜單114按照與用戶16的交互作用的說明進行操作。在PDL語言中,菜單符號概括了支持12與用戶16相互作用的方式,如能夠將活動表格提供給用戶16。首先,符號代表提供給用戶16的文本(這種特定例子中的“寫通知”)。該提供的文本描述了用戶16能夠或應該執(zhí)行的某個活動。該菜單144也蘊涵某個目標,如一個文件、編碼等,活動按照它執(zhí)行(在這一示例中暫時文件用“?暫時”表示)。進而,該菜單144代表某個條件。在用戶16明確地選擇活動表中的活動之前,該條件總是為“假”,而且結果,如執(zhí)行一個工具功能或一個狀態(tài)改變,是無效的。當用戶16選擇用戶界面中的活動時,該條件變?yōu)椤罢妗?,而其結果被執(zhí)行。在該示例中,當用戶16選擇了活動表中的寫通知選擇時,一個編輯事件以符號146送給(對應于圖9中的箭頭112)另一個請求編輯任務的子進程。該請求由文本編輯子進程(這里未圖示)處理,此時,起動編輯器,然后用戶16使用編輯器寫會議通知。
下面參看圖12,它進一步顯示了本發(fā)明的數(shù)據(jù)處理的詳細情況。通知子進程116的說明用包含檢索與誰參加會議有關的數(shù)據(jù)的活動150繼續(xù)進行。符號150表明如果進程的“其它”方面的狀態(tài)為“假”,則必須檢索信息。符號152能產生一個菜單窗口。對希望他們出席會議的那些人都要求進入此菜單窗口,然后使用由系統(tǒng)支持的基本的窗口化原語(Primitives)在圖標152的編碼圖中對該窗口進行描述。符號154代表通知子進程116的狀態(tài)并將已產生的檢索名(“其它”方面的狀態(tài)現(xiàn)在為真)符號化。該活動由下面與圖13關聯(lián)的活動來激活。
現(xiàn)在來看圖13,繼續(xù)說明通知進程。從符號160開始,檢測到一個來自已存貯在一文件中的另一子進程的事件。該信息來自文本編輯子進程119。在符號162處,系統(tǒng)執(zhí)行一個驗證所存文件是否與暫時文件名142是相同的文件的工作(這是進程的狀態(tài)信息部分)。接著系統(tǒng)檢索下一個條件是否滿足,即所有其它出席者是否都被考慮了,這發(fā)生在符號164。如果這不為真,那么圖12的活動被激活以便得到出席者。這里,位于專家系統(tǒng)下的目標驅動方面被應用,即,如果條件沒滿足而存在一個其結果滿足該條件的活動,該活動將被執(zhí)行。在符號166處,系統(tǒng)確定通知是否事先已送給出席者(這作為狀態(tài)信息記錄在“?文件”目標上)。這說明了整個支持系統(tǒng)8的無序特性。對于以并行方式和同時操作的每個進程和子進程,系統(tǒng)必須執(zhí)行檢查以確保自身工作不會重復,并由此不產生錯誤結果,也不減低系統(tǒng)的性能和降低系統(tǒng)的處理能力。于是,因只需要一個會議通知而由符號166執(zhí)行檢查。在滿足最后條件方面,菜單170向用戶16提供選擇“發(fā)送通知”活動171的選擇。在符號172處,進行本發(fā)明的支持發(fā)送通知并將它打印出來。符號172使裝載、郵寄和打印發(fā)送給所有必須參加者的通知符號化(這能使用UNIX的郵寄和打印服務來達到,它們也在圖標的編碼圖中再進行描述)。符號174記錄著該通知已按“?文件”目標發(fā)送的狀態(tài)信息,且由此這活動不能重復。
現(xiàn)在來看圖14,通知子進程的元件以圖示形式進一步細化了。符號180表示該通知的硬拷貝必須已建立的條件;換言之,該通知已打印(這出現(xiàn)在上述活動171中)。菜單182告訴用戶16該通知應當以所希望的位置被放到通知板上。該例中的活動184代表一個由支持系統(tǒng)8用所具有的工具不能支持的活動;而是必須由用戶16自己物理地保存該通知。因此,圖標186表示在這活動中只有發(fā)生一個內部狀態(tài)變化而不卷入外部工具。最后,參見圖15,活動194包含完成通知子進程在這里被圖示。當該通知已被發(fā)送和郵寄,則條件190和192為真。符號196停止該進程,而符號198記錄這種狀態(tài)變化。由于專家系統(tǒng)的觸發(fā)機構,它也能操作對這種事實有關系的進程事件?;剡^來看圖9,可見通知子進程116隨完成箭頭114之后產生會議118。于是,在出現(xiàn)事件198時會議118將作為示例說明并產生需要完成該會議的必要的步驟和任務。
一個符號標識符說明附在這里作為附件A。該說明定義了由圖8-15中圖示的支持系統(tǒng)8采用的圖形符號。用于本申請所設計的不同原型的執(zhí)行數(shù)據(jù)處理步驟的程序表也附在這里作為附件B和C被詳細說明。尤其是,附件B和C是為圖示說明按照PDL圖形語言以ProKappa語言產生編碼方法的程序表格,用以在本發(fā)明中使用的專家系統(tǒng)20中的運行。當由附件B和C的程序表定義的示例進程完全不同于圖8-15中所示的秘書進程的例子時,該表說明PDL定義的進程是如何來減少可執(zhí)行代碼的。
許多不同的活動已顯示在圖8-15中。它們在內部無序,因為它們的每一個的條件被測試是否成立而不管其它活動是否已進行。以這種方式,最終用戶方可獲得最大的靈活性。通過上述機制,能產生和修改對于不同任務的支持而不必改變所使用的不同工具。形式說明作為控制程序加給許多組成部分,它們描述了為了使單個的工具以集成的方式工作所需要的邏輯。
于是,至此已描述和圖示說明了一種系統(tǒng)開發(fā)支持的方法和裝置。然而,對于本技術領域中的普通技術人員,依據(jù)這里所述技術,除了那些特別提到的以外可做出種種修改和變化而不脫離本發(fā)明的實質概念。因此,很清楚這里描述的本發(fā)明的形式僅僅是作為示列而不打算作為本發(fā)明范圍的限定。
權利要求
1.一種根據(jù)一套過程為開發(fā)計算機產品而提供交互支持的方法,它包含將所述的這套過程定義為一個使用某種圖形語言的說明;用處理程序將所述的這套過程變換為一種可理解的格式;存貯上述被變換的說明;產生一個選擇菜單,所述選擇的每一個構成一個與根據(jù)所述的這套過程開發(fā)有關的行動的建議;挑選所述選擇中的一個;由至少起動一組系統(tǒng)工具中的一個或改變進程的狀態(tài)表示來響應所述選擇的挑選;通過監(jiān)測和存貯與根據(jù)所述的這套過程開發(fā)有關的每個事件來跟蹤由所述系統(tǒng)執(zhí)行的操作;對由所述系統(tǒng)工具執(zhí)行的所述操作的每一個進行解釋;自動地起動其它所述工具以響應所述解釋和跟蹤所述操作;和向用戶提供反饋。
2.如權利要求1所述方法,其特征在于,它進一步可包含動態(tài)更新活動窗口以響應所述系統(tǒng)工具的起動,所述動態(tài)更新允許用戶應答。
3.如權利要求1所述的方法,其特征在于,所述的這套過程還可包含一個進程,所述進程進一步包含包含在所述進程的說明中的一些子進程單元。
4.如權利要求1所述方法,其特征在于,它進一步可包含在所述工具起動和執(zhí)行之后在由所述包含在所述說明中的子進程描述的不同的信息單元之間執(zhí)行一致性檢驗的步驟。
5.如權利要求4所述方法,其特征在于,它進一步可包含報告由所述一致性檢驗步驟所發(fā)現(xiàn)的進程錯誤的步驟。
6.如權利要求1所述方法,其特征在于,它進一步可包含瀏覽步驟。
7.如權利要求6所述方法,其特征在于,所述瀏覽步驟可包含從與所述進程相關聯(lián)的數(shù)據(jù)庫中尋找和搜索目標;選擇性地觀察從所述數(shù)據(jù)庫搜索到的所述目標;選擇性地處理所述數(shù)據(jù)庫中的所述目標;選擇性地起動任一所述系統(tǒng)工具;和報告由瀏覽器起動的工具所執(zhí)行的活動。
8.如權利要求1所述方法,其特征在于,它進一步可包含通過UNIX外殼級獨立起動所述系統(tǒng)工具的步驟。
9.一種在一套過程開發(fā)期間提供交互支持的計算機系統(tǒng),所述系統(tǒng)包含存貯形式進程的裝置;把所述形式進程說明變換為可執(zhí)行格式的裝置;和一用戶界面。
10.如權利要求9所述計算機系統(tǒng),其特征在于,所述進程存貯裝置以所述形式進程說明的影子目標形式維持狀態(tài)信息以允許永久性存貯所述子進程的狀態(tài)。
11.如權利要求9所述計算機系統(tǒng),其特征在于,所述支持裝置包含一支持邏輯模塊;一支持邏輯解釋程序一電氣與所述邏輯解釋程序相關聯(lián)的數(shù)據(jù)庫;一電氣與所述邏輯解釋程序聯(lián)接的信息處理器;一組能由所述信息處理器同時進行訪問并能進行配置以執(zhí)行與進程有關的特定任務的工具。
12.如權利要求11所述計算機系統(tǒng),其特征在于,所述支持邏輯解釋程序可包含以圖形與所述系統(tǒng)的用戶聯(lián)絡的裝置。
13.如權利要求11所述計算機系統(tǒng),其特征在于,所述支持邏輯解釋程序可包含一個專家系統(tǒng)。
14.如權利要求11所述計算機系統(tǒng),其特征在于,所述工具并行操作以允許所述工具的每一個同時運行。
15.如權利要求9所述計算機系統(tǒng),其特征在于,所述用戶界面包括動態(tài)更新活動窗口以響應所述系統(tǒng)執(zhí)行的操作的裝置。
16.一種在數(shù)據(jù)處理系統(tǒng)中開發(fā)面向系統(tǒng)的進程的方法,該方法包含通過圖形語言形式上描述一個功能進程;將所述形式進程說明變換為處理器能理解的格式;將開發(fā)進展與用戶通信;在所述進程的子進程中使內在的條件規(guī)定得到滿足;表明所述條件規(guī)定的滿足情況;由每個所述子進程并行描述執(zhí)行任務;和根據(jù)每個子進程的完成停止所述執(zhí)行。
17.如權利要求16所述方法,其特征在于,它可進一步包含將活動變換進入子進程的一個層以便并行執(zhí)行活動的步驟。
18.如權利要求16所述方法,其特征在于,它進一步可包含定義表示所述子進程中內在的表達所述條件規(guī)定的規(guī)則的步驟。
19.如權利要求16所述方法,其特征在于,它可進一步包含分析所述形式進程說明的步驟。
20.如權利要求16所述方法,其特征在于,它進一步可包含解釋所述形式進程說明。
21.一種為開發(fā)計算機程序提供交互支持的系統(tǒng),它包含用于存貯以可理解的語言并可由計算機存貯描述所述開發(fā)的進程的形式說明的裝置;用于產生一個選擇菜單、所述選擇的每一個構成一個與所述開發(fā)有關的行動的建議的裝置;用于對所述選擇的某一個進行挑選的裝置;通過起動一組系統(tǒng)工具中的至少一個響應所述選擇的挑選的裝置;通過監(jiān)測和存貯由與所述開發(fā)有關的工具產生的每個事件而對執(zhí)行的操作進行跟蹤的裝置;對按照所述進程說明由所述系統(tǒng)工具執(zhí)行的每個所述操作進行解釋的裝置;自動起動其它所述工具以響應從所述解釋裝置和所述跟蹤操作的裝置發(fā)出的結果的裝置;和向用戶提供反饋的裝置。
22.如權利要求21所述系統(tǒng),其特征在于,它進一步可包含自動更新活動窗口響應所述系統(tǒng)工具的起動的裝置,所述動態(tài)更新允許用戶應答。
23.如權利要求21所述的系統(tǒng),其特征在于,所述進程存貯裝置進一步存貯由包含在所述進程說明中的子進程單元描述的信息單元。
24.如權利要求23所述的系統(tǒng),其特征在于,它進一步可包含由所述系統(tǒng)工具處理由所述子進程單元描述的信息單元的裝置。
25.如權利要求24所述的系統(tǒng),其特征在于,它進一步可包含由所述系統(tǒng)工具在由所述子進程單元描述的所述處理之后在信息單元之間執(zhí)行一致性檢驗的裝置。
26.如權利要求25所述的系統(tǒng),其特征在于,它進一步可包含報告由所述一致性檢驗裝置所發(fā)現(xiàn)的進程錯誤的裝置。
27.如權利要求21所述的系統(tǒng),其特征在于,它進一步可包含瀏覽裝置。
28.如權利要求27所述的系統(tǒng),其特征在于,所述瀏覽裝置包含從與所述開發(fā)計算機程序相關聯(lián)的數(shù)據(jù)庫中搜索和恢復目標的裝置;選擇地觀察從所述數(shù)據(jù)庫搜索的目標的裝置;選擇地處理所述數(shù)據(jù)庫中的所述目標的裝置;選擇地起動任一所述系統(tǒng)工具的裝置;和報告瀏覽時執(zhí)行的活動情況的裝置。
29.如權利要求21所述系統(tǒng),其特征在于,它進一步可包含通過UNIX外殼級獨立地起動所述系統(tǒng)工具的裝置。
30.一種數(shù)據(jù)處理系統(tǒng)中的系統(tǒng),它包含通過圖形語言描述功能進程的裝置;將所述功能進程說明變換為處理器可理解的格式的裝置;使所述功能進程的子進程中的內在條件規(guī)定得到滿足的裝置;表明所述條件規(guī)定的滿足的裝置;并行執(zhí)行由每個所述子進程描述的任務的裝置;和根據(jù)每個子進程的完成停止所述執(zhí)行的裝置;
31.如權利要求30所述系統(tǒng),其特征在于,它進一步可包含將活動映射為子進程的分層結構以便并行執(zhí)行活動的裝置。
32.如權利要求30所述系統(tǒng),其特征在于,它進一步可包含定義表達所述子進程中內在條件規(guī)定表示的規(guī)則的裝置。
33.如權利要求30所述系統(tǒng),其特征在于,它進一步可包含分析所述功能進程說明的裝置。
34.如權利要求30所述系統(tǒng),其特征在于,它進一步可包含對所述功能進程說明進行解釋的裝置。
全文摘要
本發(fā)明的方法和系統(tǒng)按照一套如用于軟件產品開發(fā)的過程以完成任務的方式支持用戶16。被開發(fā)軟件的進程描述用系統(tǒng)示例說明,其上的支持系統(tǒng)8向用戶16提供一系列涉及軟件開發(fā)的選擇。依次所選的選擇允許各種工具,其每個并行和同時運行用于開發(fā)軟件。系統(tǒng)在任何處理期間自動監(jiān)測和檢查進程并向用戶16提供出錯分析及建議可采取的行動。該系統(tǒng)提供靈活的支持而不需要用戶16去服從硬性的開發(fā)模式。
文檔編號G06F9/44GK1079830SQ9310616
公開日1993年12月22日 申請日期1993年5月20日 優(yōu)先權日1992年6月10日
發(fā)明者埃納爾·溫密爾 申請人:L·M·埃利克遜電話股份有限公司