![《軟件系統(tǒng)開發(fā)技術(shù)》課件第10章_第1頁](http://file4.renrendoc.com/view14/M01/39/01/wKhkGWbarTeAPxVIAAF6mtnP3Qg774.jpg)
![《軟件系統(tǒng)開發(fā)技術(shù)》課件第10章_第2頁](http://file4.renrendoc.com/view14/M01/39/01/wKhkGWbarTeAPxVIAAF6mtnP3Qg7742.jpg)
![《軟件系統(tǒng)開發(fā)技術(shù)》課件第10章_第3頁](http://file4.renrendoc.com/view14/M01/39/01/wKhkGWbarTeAPxVIAAF6mtnP3Qg7743.jpg)
![《軟件系統(tǒng)開發(fā)技術(shù)》課件第10章_第4頁](http://file4.renrendoc.com/view14/M01/39/01/wKhkGWbarTeAPxVIAAF6mtnP3Qg7744.jpg)
![《軟件系統(tǒng)開發(fā)技術(shù)》課件第10章_第5頁](http://file4.renrendoc.com/view14/M01/39/01/wKhkGWbarTeAPxVIAAF6mtnP3Qg7745.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
10.1計算機(jī)輔助軟件開發(fā)10.2需求分析和規(guī)格說明工具10.3概要設(shè)計工具——AIDES系統(tǒng)10.4詳細(xì)設(shè)計工具——SDL/PAD系統(tǒng)10.5編程工具——程序綜合器10.6檢驗和測試工具10.7維護(hù)工具10.8面向?qū)ο箝_發(fā)和維護(hù)的工具10.9軟件開發(fā)環(huán)境計算機(jī)近二十年來廣泛應(yīng)用于各行各業(yè),使這些領(lǐng)域的工作得以自動化。例如,許多飛機(jī)、汽車、拖拉機(jī)就是由先進(jìn)的CAD/CAM系統(tǒng)設(shè)計和制造的。CAD/CAM(CornputerAidedDesign/ComputerAidedMa.nufacturing,即計算機(jī)輔助設(shè)計/計算機(jī)輔造制造)系統(tǒng)是一組集成化的工具,它們支持各種產(chǎn)品的規(guī)格說明、設(shè)計、分析和制造,從而減少或取消了生產(chǎn)過程中大量勞力密集的活動,對提高生產(chǎn)率和改進(jìn)產(chǎn)品質(zhì)量起了重要作用。l0.1計算機(jī)輔助軟件開發(fā)大型軟件系統(tǒng)的開發(fā)始終是一類勞力密集的活動,盡管7O年代以來出現(xiàn)了不少指導(dǎo)軟件開發(fā)的方法,且這些方法是有效的,但是實施這些方法涉及的許多工作是復(fù)雜而耗費(fèi)人工的。例如按照這些方法需要編寫大量高質(zhì)量的文檔,而且還需不斷對它們作修改。維持文檔內(nèi)部的一致性并使各種版本合理地配置就是一個特別困難的任務(wù),而人的能力畢竟
是有限的,因此由人來處理大規(guī)模的問題顯然難以保證質(zhì)量。在計算機(jī)產(chǎn)量猛增、軟件需求急劇上升,軟件技術(shù)人員緊缺的形勢下,人們認(rèn)識到對軟件開發(fā)必須采用類似CAD/CAM的技術(shù),也就是說必須為軟件開發(fā)提供良好的自動化工具。早期的自動工具集中用于開發(fā)期的后階段,最典型的例子是行文編輯程序、編譯程序、排錯程序等。提出軟件生命期模型以后,有一段時期一直沒有支持分析和設(shè)計的工具,70年代末,隨著各種需求分析方法和設(shè)計方法的提出,對需求分析工具、設(shè)計工具以至支持整個生命期的配套工具和集成化軟件開發(fā)環(huán)境的研究逐步形成高潮。目前,對軟件工具和環(huán)境的研究方興未艾,軟件產(chǎn)業(yè)界和學(xué)術(shù)界都有不少單位在從事這一課題的研究,已有一些工具作為產(chǎn)品在軟件市場上銷售,但它們的功能還比較簡單;一些大學(xué)、研究所雖也
研究出不少成果,且這些成果的面較廣,功能更高級,但一般還未能用到產(chǎn)業(yè)界。本章將分別介紹生命期各階段可使用的典型工具,特別是支持SA方法和SD方法的工具,由此,對軟件開發(fā)自動化的狀況可見一斑。限于篇幅,我們只討論這些工具的功能,
不再介紹它們的內(nèi)部實現(xiàn)。
SA方法是相當(dāng)實用的一種需求分析和規(guī)格說明方法,由于它簡單、易學(xué)易用,在國外軟件產(chǎn)業(yè)界已廣泛使用多年,人們對它的一般反映是:由于有了簡明清晰的需求說明書,所以方便了人際交流;又由于在開發(fā)早期就能從用戶那里獲得反饋,所以錯誤減少了,開發(fā)成本也有所下降。雖然SA方法是很有價值的,但它本身仍有其固有的問題:僅用筆和紙
來繪制和修改需求說明書很費(fèi)人工,而且錯誤多,檢查文檔的一致性和完整性很不容易,系統(tǒng)規(guī)模越大、需求說明書越詳細(xì)時,情況則更糟。這就妨礙了生產(chǎn)率和產(chǎn)品質(zhì)量的進(jìn)一步提高。人們意識到,自動工具有可能解決上述困難,本節(jié)將介紹兩個支持SA方法的工具。l0.2需求分析和規(guī)格說明工具10.2.1Tektronix的工具箱
美國Tektronix公司對SA方法進(jìn)行了仔細(xì)的分析,他們發(fā)現(xiàn)SA方法的下面3個方面是可以考慮自動實現(xiàn)的:
(1)圖形和文字編輯程序可以減少修改SA文檔的工作量。數(shù)據(jù)詞典和小說明可借助一般的文字編輯程序來建立和修改,專門的圖形編輯程序配上圖形終端等設(shè)備則可幫助人
們繪制數(shù)據(jù)流圖。由于數(shù)據(jù)流圖中各個成分所在的位置對文檔的可理解有一定的影響,如果圖形編輯程序能自動為各個成分定位,則效果會更好。
(2)SA文檔中某些類型的錯誤可以用計算機(jī)來檢查,例如上下兩層數(shù)據(jù)流圖對某個數(shù)據(jù)流的使用不一致,這種硬性錯誤就可用計算機(jī)來檢測。當(dāng)然涉及文檔語義的一些錯誤還是要由人來發(fā)現(xiàn),例如一個數(shù)據(jù)流的命名是否合適等。
既然SA文檔存放在計算機(jī)中,那就可由一個檢查工具來檢測文檔中的不一致性,當(dāng)然光是發(fā)現(xiàn)錯誤對維持一致性來說還不是令人滿意的,因為一個一致的SA文檔建立起來后,如果某個部分被修改了,整個文檔的一致性又會遭到破壞,所以如果能監(jiān)視對文檔的修改要求,并能自動導(dǎo)出文檔中受影響部分需作的相應(yīng)修改,則某種類型的不一致性就可
避免了。這類檢查工具可同編輯程序配合起來維持文檔的一致性,而不是簡單地發(fā)現(xiàn)不一致性。
(3)從SA文檔有可能自動導(dǎo)出SD方法的初始結(jié)構(gòu)圖。需求說明書寫成后,下一步就是設(shè)計了,接在SA方法后使用的往往是SD方法。從一套數(shù)據(jù)流圖自動導(dǎo)出初始結(jié)構(gòu)圖是有可能的,但導(dǎo)出過程需要一定的人工干預(yù),所以這個過程不是全部自動化的,研究有效的半自動轉(zhuǎn)換工具有一定難度,需要較高的投資。
在進(jìn)行了上述分析后,Tektronix公司先開發(fā)了編輯、檢查、格式化和文檔整理等一套自動工具,它們是用Modula-2編寫的,可在uNIx操作系統(tǒng)上運(yùn)行,并用Tektronix的圖形終端設(shè)備作為交互式圖示手段。這些工具可以個別使用,也可結(jié)合起來配套使用,下面分別介紹這四類工具及其協(xié)同工作的過程。
(1)編輯工具使用戶能交互地修改SA文檔,并負(fù)責(zé)導(dǎo)出維持文檔一致性所需的相應(yīng)修改要求。
編輯工具有2個:數(shù)據(jù)流圖編輯程序和文字編輯程序。前者是個專用的圖形編輯器,它用于建立和修改數(shù)據(jù)流圖,用戶可用鼠標(biāo)器來指定數(shù)據(jù)流圖中每個成分的位置;后者可
用于對數(shù)據(jù)詞典和小說明作修改。
編輯程序要對每個修改命令進(jìn)行分析,以便導(dǎo)出對整套SA文檔需作的相應(yīng)修改,文檔整理工具將檢驗并完成這些相應(yīng)修改要求。
(2)檢查工具用于檢測SA文檔中的錯誤。檢查工具有4個,它們分別對數(shù)據(jù)流圖、數(shù)據(jù)詞典、小說明和全套SA文檔進(jìn)行檢查。它能發(fā)現(xiàn)兩類錯誤,一類是違背SA方法規(guī)則的
硬性錯誤,如未定義的數(shù)據(jù)、只寫不讀的文件等;另一類是軟性錯誤,如一張數(shù)據(jù)流圖中畫有過多的加工等,這些軟性錯誤通常說明分析員未能很好地理解問題。
(3)格式化工具將數(shù)據(jù)流圖、數(shù)據(jù)詞典、小說明等的內(nèi)部表示轉(zhuǎn)換成適合于人們閱讀的形式,通常輸出是顯示在圖形終端上的。
(4)文檔整理工具檢查編輯工具導(dǎo)出的修改要求,并完成這些修改,從而維持全套SA文檔的一致性。例如,從一張數(shù)據(jù)流圖中刪去了一個加工,就應(yīng)將從屬于這個加工的所有
數(shù)據(jù)流圖及小說明刪去,還應(yīng)從數(shù)據(jù)詞典中刪去僅被這個加工及其下屬所使用的條目;又如某個加工的編號被修改后,其下屬的數(shù)據(jù)流圖及小說明的編號也應(yīng)作相應(yīng)的修改。編輯
工具負(fù)責(zé)導(dǎo)出這些相應(yīng)的修改要求,整理工具再驗證這些修改對維持一致性是否確實需要,然后完成這些修改。上述工具協(xié)同工作的過程如下(圖10.1):
(1)用戶用編輯工具以交互方式對數(shù)據(jù)流圖進(jìn)行修改,編輯工具負(fù)責(zé)維持?jǐn)?shù)據(jù)流圖的合理性,如每個數(shù)據(jù)流必須有其源點和終點,則只有在操作員指定其源點和終點之后,才能畫出一個數(shù)據(jù)流;如果源點或終點中的一個被刪去了,這個數(shù)據(jù)流亦自動被刪去。所以,某個修改對本張數(shù)據(jù)流圖的影響在編輯時立即完成,但對其他SA文檔的影響則由編輯工具導(dǎo)出相應(yīng)修改要求提交給整理工具來完成。
(2)編輯過程結(jié)束后,整理工具讀取導(dǎo)出的相應(yīng)修改要求,并據(jù)此對SA文檔的有關(guān)部分作修改。
(3)整理工作完成后,檢查程序開始工作,它對SA文檔作檢查。文檔中被發(fā)現(xiàn)的錯誤,有些可以自動糾正,有些則必須向操作員報告,由人決定如何修改,例如父圖和子圖
不平衡,糾正這種錯誤有多種可能,所以工具無法自動處理。
Tektronix公司試用這套工具之后,獲得了良好的效果,很明顯的一點變化是:以前,開發(fā)工作的瓶頸總是繪制和重畫數(shù)據(jù)流圖,用了工具后,瓶頸變?yōu)樵u審文檔所需的時間
了,可見這套工具對SA方法的實施起了積極作用。近年來,由于圖形顯示設(shè)備的圖形處理軟件的迅速發(fā)展,類似Tektronix工具箱的系統(tǒng)已開始在市場上出現(xiàn)。這些工具還具有多窗口處理能力,可以在不同的窗口同時顯示和處理上下幾層數(shù)據(jù)流圖及有關(guān)的數(shù)據(jù)詞典和小說明,實施SA方法就更方便了。l0.2.2PSL/PSA系統(tǒng)
使用SA方法除了繪制數(shù)據(jù)流圖之外,還要編寫一本數(shù)據(jù)詞典和一組小說明,小說明亦可像數(shù)據(jù)詞典那樣組織,即按編號或加工名的順序排列起來構(gòu)成一本詞典,每個小說明就是詞典中的一個條目。
對大型系統(tǒng)來說,詞典的容量一般比較寵大,所以人工維護(hù)一本詞典是很花時間也很單調(diào)乏味的,詞典經(jīng)多次修改后,其一致性、完整性也難以靠人工來檢查。我們可以用計
算機(jī)代替人來完成這項機(jī)械而繁瑣的工作,負(fù)責(zé)這種工作的程序系統(tǒng)稱為“詞典管理程序”,或簡稱“詞典”。一個“詞典管理程序”應(yīng)具有下列基本功能:
(1)規(guī)定一套詞典條目的格式,即為數(shù)據(jù)流、文件、數(shù)據(jù)項、加工等幾種類型的條目各規(guī)定一組語法。
(2)接受上述格式的詞典條目作為輸入。
(3)具有編輯的手段:如對詞典條目進(jìn)行插入、刪除、修改等。
(4)具有一定的一致性、完整性檢查能力,即能發(fā)現(xiàn)并報告一些錯誤,如語法不正確、重復(fù)定義、循環(huán)定義等。
(5)能夠產(chǎn)生各類查閱報告、詞典清單等。
“詞典管理程序”是一種有效的工具,近年來已研制出多種不同類型的詞典管理程序,其功能從簡到繁各不相同,PSL/PSA就是在詞典管理的思想上開發(fā)出來的一個有代表性的系統(tǒng)。
PSIJ/PSA是美國密執(zhí)安大學(xué)ISDOS(1nformationsystemDesignOptimizationSystem)項目組研制的一個系統(tǒng),研制這個系統(tǒng)的目的是為分析員提供需求文檔的編寫和檢查的工具。
PSIJ(Probl.emStatementLanguage)是一種問題說明語言,它可以按一定的語法描述用戶對系統(tǒng)的功能要求和性能要求。PSA(Probl.emStatementAnalyz—er)是問題說明分析器,它可以對用PSI。書寫的文本進(jìn)行分析,產(chǎn)生許多有用的報告,圖10.2是PSL/PSA系統(tǒng)的示意圖。
PSL/PSA將軟件系統(tǒng)中的每個成分看作是一個“對象”,對象之間有特定的聯(lián)系,每個對象本身又有特定的性質(zhì)。以圖3.2為例,?分類”、“報名”、“帳目”、“學(xué)生”、“報名單”、“發(fā)票”、……都是對象,對象分成加工和數(shù)據(jù)兩大類,圖3.2中的“分類”、“報名"等屬于加工類,其余屬于數(shù)據(jù)類。圖10.2
PSL是一種形式化的需求描述語言,它從系統(tǒng)的輸入輸出流、系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流程、系統(tǒng)規(guī)模、系統(tǒng)動態(tài)、系統(tǒng)性質(zhì)、項目管理等8個方面描述系統(tǒng)中的每一個對象,包括它們的種種性質(zhì)以及它們之間的聯(lián)系。對每個對象的一段PSI。描述就構(gòu)成了一個詞典條目。
PSIJ描述一個數(shù)據(jù)對象的語法如表10.1所示。表10.1中第一行指出了數(shù)據(jù)對象的名字。第二、三行描述了數(shù)據(jù)的結(jié)構(gòu),即這個數(shù)據(jù)由哪些數(shù)據(jù)項組成,它本身又是什么數(shù)據(jù)的一部分,第四、五、六行描述了數(shù)據(jù)的流程,即它由哪個加工產(chǎn)生,被哪個加
工修改,又被哪個加工使用……等。
PSL描述一個加工的語法如表10.2所示。表中第一行指出了加工的名字。第二、三行描述了系統(tǒng)的輸入輸出流,即這個加工產(chǎn)生什么數(shù)據(jù)輸出到系統(tǒng)外面,這個加工從系統(tǒng)外接受什么數(shù)據(jù)等。第四行描述了這個加工的邏輯,加工邏輯可用自然語言或結(jié)構(gòu)化語言描述。第五、六、七行描述數(shù)據(jù)流程,即這個加工產(chǎn)生什么數(shù)據(jù),修改什么數(shù)據(jù),使用什么數(shù)據(jù)等。第八、九行指出了系統(tǒng)的結(jié)構(gòu),即這個加工有哪些子加工,它本身是哪個加工的一部分等。第十行說明這個加工執(zhí)行的頻率,如每天發(fā)生多少次等。最后三行是系統(tǒng)動態(tài)方面的描述,如這個加工被什么事件激發(fā),這個加工的開始將引起什么事件,加工的結(jié)束又會引起什么事件等等。在用SA方法分析大型的數(shù)據(jù)處理系統(tǒng)時,借助PSL/PSA這個工具,我們就可以一邊對用戶的數(shù)據(jù)處理活動作由頂向下逐層分解,一邊將分析過程中遇到的數(shù)據(jù)流、文件、加工等對象用PSL描述出來,并將這些描述輸入到PSL/PSA系統(tǒng)。PSA.將對輸入信息作詞法、語法、一致性和完整性檢查,防止相互矛盾的或錯誤的信息進(jìn)入文檔中,然后保存這些描述信息,這就形成了一個用計算機(jī)管理的詞典,或稱“文檔庫”。
當(dāng)需要修改對系統(tǒng)的描述時,PSA可以根據(jù)要求對文檔庫中的內(nèi)容作編輯修改,同時進(jìn)行種種檢查,以維持文檔的一致性。需求分析階段結(jié)束后,PSA可以根據(jù)分析員要求以標(biāo)準(zhǔn)格式輸出全部文檔。由于PSL是一種形式化的語言,有確定的語法,可以被計算機(jī)處理,所以PSA可以幫助分析員對用PSL書寫的文檔進(jìn)行查閱分析,產(chǎn)生從不同側(cè)面觀察系統(tǒng)的各種報告。其中,有些報告只是將文檔庫中的信息原封不動地取出制成報表,有些需對信息重新排列,有些則涉及復(fù)雜的分析。例如,PSA可以列出名為XXX的對象的所有屬性,或者列出同XXX有關(guān)的所有對象,這些功能可以幫助分析員對文檔作有選擇的閱讀PSA還可以產(chǎn)生描述系統(tǒng)中成分間交叉引用關(guān)系的報告,數(shù)據(jù)/加工關(guān)系表和數(shù)據(jù)/元素關(guān)系表就是兩個典型例子。數(shù)據(jù)/加工關(guān)系表用矩陣表示數(shù)據(jù)同加工間的相互關(guān)系(表10.3),表中最左邊列出了數(shù)據(jù)型對象(另有編號一數(shù)據(jù)名表指出編號同數(shù)據(jù)名的對應(yīng)),最上面一行列出了加工型對
象(另有編號一加工名表指出編號同加工名的對應(yīng)),表中的字母描述了數(shù)據(jù)I和加工J的關(guān)系:字母R表示數(shù)據(jù)I被加工J接收或使用,字母u表示數(shù)據(jù)I被加工J修改,字母D表示數(shù)據(jù)I由加工J導(dǎo)出或產(chǎn)生……。數(shù)據(jù)/元素關(guān)系表用矩陣描述數(shù)據(jù)對象所含的元素,也描述了多個數(shù)據(jù)對象含有公共元素的情況(表10.4),表中最左邊列出了數(shù)據(jù)元素(即數(shù)據(jù)項),最上面列出了數(shù)據(jù)對象(另有編號一元素名表和編號一數(shù)據(jù)名表指出編號同元素或數(shù)據(jù)的對應(yīng)),表中第l行第J列的*號表示數(shù)據(jù)J中含有元素I。
PSA產(chǎn)生的上述報表,可以幫助分析員進(jìn)一步理解需求文檔,它們不僅在需求分析階段,而且在整個生命期間都是很有用的,例如對系統(tǒng)作維護(hù)修改時,根據(jù)數(shù)據(jù)/加工關(guān)系表就可確定數(shù)據(jù)I修改的影響范圍,以便決定必須重新設(shè)計哪些加工。由于詞典條目中包含了對數(shù)據(jù)流程的描述,所以PSA還可根據(jù)詞典的內(nèi)容打印出數(shù)據(jù)流圖,這些圖可能要分別打印在幾張紙上,按打印在紙上的標(biāo)記將幾張紙拼接起來,就可得到一張完整的數(shù)據(jù)流圖。
PSL/PSA系統(tǒng)使人們用統(tǒng)一的方式來理解和表達(dá)一個數(shù)據(jù)處理系統(tǒng),并發(fā)揮了計算機(jī)的特長來維護(hù)需求文檔庫,使需求文檔標(biāo)準(zhǔn)、一致、完整,并且能反映系統(tǒng)的最新狀況。
PSL/PSA系統(tǒng)的作用是多方面的,無論從詞典管理、文檔編輯、文檔檢查、文檔理解和維護(hù)等哪一角度來看,它都是一個良好的工具。PSL/PSA系統(tǒng)是軟件工具中的一個杰出代表,目前在IBM、uNIVAc等大型機(jī)上都可配備PSL/PSA系統(tǒng)。
SD方法在l974年提出之后,受到人們的普遍關(guān)注,經(jīng)多年使用后,其效果是明顯的。
SD方法使設(shè)計文檔標(biāo)準(zhǔn)化,提高了軟件的可理解性和可維護(hù)性,而開發(fā)成本卻降低了。但是使用SD方法也有一些問題,第一是大型系統(tǒng)的結(jié)構(gòu)圖很復(fù)雜,其典型尺寸約為20英尺(6.096m)長、l0英尺(3.048m)高,包含了成百上千個模塊,所以繪制、修改并維持其正確性既化人工又很困難;第二是SD方法的一些設(shè)計技巧雖然概念上是自然的,但是沒有嚴(yán)格的定義,所以實際使用并非容易,對經(jīng)驗不足的人尤其如此,例如塊間聯(lián)系、塊內(nèi)聯(lián)系的類型、作用范圍/控制范圍等問題備人可以有不同解釋,難以客觀地進(jìn)行評價。l0.3概要設(shè)計工具——AIDES系統(tǒng)這些問題帶來的后果是開發(fā)人員將設(shè)計看成是額外的負(fù)擔(dān),于是往往僅繪制一個極粗糙的結(jié)構(gòu)圖后就急于去編程,想在編程中再來完成設(shè)計,這就難以保證產(chǎn)品的質(zhì)量;又由于設(shè)計員難以了解整個系統(tǒng)的結(jié)構(gòu),往往只是“改進(jìn)”他自己的子系統(tǒng),這樣使整個系統(tǒng)的設(shè)計質(zhì)量遭受損失。所以隨著SD方法的推廣,開發(fā)支持SD方法的自動工具勢在必行。美國Hughes飛機(jī)公司80年代初在VAX11/780機(jī)上開發(fā)了AIDES(AutomatedInterac—tiveDesignandEvaluationSystem)系統(tǒng)。AIDES一方面是一個典型的信息處理系統(tǒng),它具有一些常規(guī)的功能,如交互式編輯、報告產(chǎn)生、數(shù)據(jù)庫管理等;另一方面,它又是一個“計算機(jī)輔助設(shè)計”系統(tǒng),因為它具有設(shè)計文檔編寫、結(jié)構(gòu)圖自動圖形布局、設(shè)計標(biāo)準(zhǔn)強(qiáng)制、設(shè)計配置控制、設(shè)計復(fù)雜性度量和可測試性度量等性能。AIDES可以輔助設(shè)計人員用SD方法以交互方式對軟件系統(tǒng)作模塊分解,系統(tǒng)的反饋信息基本是圖形的,圖10.3是AIDES的示意圖。
圖10.3
AIDES包括兩個部分:結(jié)構(gòu)圖圖示系統(tǒng)(SCG。)和設(shè)計質(zhì)量度量系統(tǒng)(DQM)。
結(jié)構(gòu)圖圖示系統(tǒng)SCG(StructureCha,rtGraphicsSystem)具有下列功能:
1)交互式結(jié)構(gòu)圖編輯:操作員只要發(fā)出一條命令“建立一個模塊”,系統(tǒng)就會自動問模塊的名字和調(diào)用的模塊等,然后在文檔中插入有關(guān)信息并修改屏幕上的圖形;屏幕上還能。同時顯示模塊的文字信息(功能、輸入和輸出等)。
2)窗口設(shè)置:通過窗口用戶可以選擇觀看整張結(jié)構(gòu)圖的一部分,窗口還可以伸縮,因此可以粗看整張結(jié)構(gòu)圖的形態(tài),也可細(xì)看某個局部。
3)結(jié)構(gòu)圖自動布局:按照某種標(biāo)準(zhǔn)為結(jié)構(gòu)圖中各個成分自動定位,使各模塊盡可能勻稱合理地排列,因此結(jié)構(gòu)圖比較美觀清晰,便于閱讀理解。
4)設(shè)計文檔整理:全部設(shè)計文檔(包括結(jié)構(gòu)圖和模塊說明)保存在一個關(guān)系型數(shù)據(jù)庫中,需要時可以打印或顯示。
5)查詢報告:系統(tǒng)可以回答“有多少個模塊調(diào)用×××模塊”、“哪些模塊使用×××數(shù)據(jù)”等查詢。
此外,SCG還有配置控制和將幾個子樹裝配成整個系統(tǒng)等其他功能。
AIDES的另一部分是DQM,它是對設(shè)計質(zhì)量作定量分析的工具。在軟件生命期中應(yīng)該對軟件質(zhì)量盡早進(jìn)行評價,因為越到生命期后期,修改系統(tǒng)所需的開支越大。概要設(shè)計完成后,軟件結(jié)構(gòu)方面必有一些錯誤或缺陷存在,如果設(shè)計質(zhì)量不高,后面程序的質(zhì)量也不會高,因此在運(yùn)用SD方法進(jìn)行模塊分解時,應(yīng)該進(jìn)行質(zhì)量評價。
SD方法用塊間聯(lián)系、塊內(nèi)聯(lián)系、扇入、扇出、……等特性對設(shè)計質(zhì)量進(jìn)行評價,然而,SD方法尚無嚴(yán)密的理論基礎(chǔ),上述特性亦無嚴(yán)格的定義,所以對設(shè)計方案的評價還是相當(dāng)困難的,人們希望對設(shè)計方案也能像對程序一樣采用一些定量的評價方法。設(shè)計質(zhì)量度量系統(tǒng)DQM(DesignQualityMetricSystem)是一個初步的研究性系統(tǒng),其目的是尋找定量描述設(shè)計質(zhì)量的手段。DQM根據(jù)結(jié)構(gòu)圖的樹深度、非純度和扇入/扇出等特性,產(chǎn)生描述結(jié)構(gòu)圖復(fù)雜性、塊間聯(lián)系和總扇入/扇出特征的數(shù)字,并立即反饋給設(shè)計人員。所以,DQM同SCG結(jié)合起來,設(shè)計人員就不僅能交互式地建立結(jié)構(gòu)圖,而且立即可獲知設(shè)計方案的質(zhì)量,并再次調(diào)用SCG,對結(jié)構(gòu)圖中質(zhì)差的部分作修改,這樣SD方法設(shè)計技巧的運(yùn)用就有了保證。定量分析方法目前尚不成熟,DQM采用的定量評價標(biāo)準(zhǔn)是通過對軟件作統(tǒng)計得到的,顯然有片面性,但在大多數(shù)情況下,可望給出令人滿意的結(jié)果,這些結(jié)果對設(shè)計及以后的維護(hù),都有一定的參考價值。
AIDES系統(tǒng)提交使用之后,獲得了良好的效果。據(jù)稱,文檔編寫人工減少了95%,整個設(shè)計階段的人工減少了30%,而設(shè)計質(zhì)量和文檔質(zhì)量卻顯著提高了。詳細(xì)設(shè)計常用的描述方式包括流程圖、盒圖、問題分析圖和程序設(shè)計語言(PDL)等,本節(jié)介紹一個支持問題分析圖的工具系統(tǒng)。
問題分析圖(PAD)用順序、選擇、循環(huán)等三種標(biāo)準(zhǔn)圖式描述一個模塊內(nèi)部的執(zhí)行過程廣而且用“走樹”規(guī)則(TreeWalk)可以機(jī)械地將PAD翻譯成編程語言。顯然,我們可以研制以下2種工具來支持PAD方法:
·圖形和文字編輯器。10.4詳細(xì)設(shè)計工具——SDL/PAD系統(tǒng)◆從PAD自動產(chǎn)生程序的程序生成器。
日本日立公司80年代初在M系列機(jī)上開發(fā)了一個試驗性的系統(tǒng)SDL/PAD(SoftwareDesignLanguage/PAD),該系統(tǒng)接受用SD方法確定的模塊說明書,然后輔助設(shè)計人員以交
互方式進(jìn)行詳細(xì)設(shè)計(采用PAD或SDL描述法),繼而可以直接產(chǎn)生用編程語言書寫的程序。
SDL/PAD系統(tǒng)的主要功能包括:
(1)交互式地建立和編輯每個模塊的詳細(xì)設(shè)計文檔(即模塊內(nèi)部執(zhí)行過程的描述);詳細(xì)設(shè)計可用文字(SDL)或圖形(PAD)方式輸入。SDL是一種類似于PDI。的語言,系統(tǒng)可以
發(fā)現(xiàn)文檔中的不完整性,如未定義的數(shù)據(jù)、未確定的處理過程等。
(2)輸出用PAD描述的全套詳細(xì)設(shè)計文檔。
(3)從PAD自動產(chǎn)生用高級語言(女IJPL/I、PASCAl。、FORTRAN等)編寫的源程序。
(4)從源程序產(chǎn)生用PAD書寫的相應(yīng)詳細(xì)設(shè)計文檔。
(5)統(tǒng)一管理設(shè)計文檔。在SDL/PAD系統(tǒng)的支持下,詳細(xì)設(shè)計和編程的難度大大降低了,其工作過程如下:
(1)設(shè)計人員交互地輸入詳細(xì)設(shè)計方案。
(2)系統(tǒng)輸出用PAD表示的圖形化文檔供設(shè)計人員復(fù)查并及時糾正錯誤。
(3)系統(tǒng)自動產(chǎn)生源程序。
(4)編譯程序?qū)⒃闯绦蚍g成機(jī)器代碼。
如果程序中有錯誤,可以回到第(2)步再作修改。
SDL/PAD系統(tǒng)還可以用來對軟件作維護(hù)。維護(hù)工作中一個普遍存在的問題是維護(hù)人員往往只修改程序而不愿意修改文檔,造成文檔陳舊、與程序不符,所以系統(tǒng)的可維護(hù)性
日趨下降。為了解決這個問題,SDL/PAD有一個附加的功能,即從源程序(任意源程序,不必是SDL/PAD本身產(chǎn)生的源程序)產(chǎn)生相應(yīng)的PAD,因此設(shè)計員就可以在PAD這一層而
不是在程序這一層進(jìn)行修改,使維護(hù)的難度大大降低,其工作過程如下:
(1)系統(tǒng)對源程序作分析,產(chǎn)生相應(yīng)的PAD。
(2)設(shè)計人員對PA_D作交互式地修改。
(3)系統(tǒng)將修改后的PAD翻譯成新的源程序。
由于SDI/PAD實現(xiàn)了詳細(xì)設(shè)計文檔同程序間的雙向自動轉(zhuǎn)換,所以使詳細(xì)設(shè)計結(jié)果同程序結(jié)合成一體;軟件開發(fā)時,人工只需做到詳細(xì)設(shè)計這一步;維護(hù)又可在詳細(xì)設(shè)計這一較高的層次進(jìn)行,所以提高了生產(chǎn)率并改進(jìn)了軟件質(zhì)量(據(jù)日立公司統(tǒng)計,使用SDL/PAD系統(tǒng)可使設(shè)計人工減少40%,周期縮短30%);SDL/PAD還迫使設(shè)計人員使用、SP方法,并維持與程序的最新版本相一致的設(shè)計文檔。
對詳細(xì)設(shè)計的另一種描述方式——PDI。,類似SDL/PAD的試驗性系統(tǒng)也有不少,它們都具有PDL編輯和將PDL。翻譯成編程語言的功能,這里不再介紹。編程階段考慮的問題包括:程序的建立和修改、程序的翻譯、程序的連接裝配等。早在60年代,人們已開發(fā)了行文編輯程序、編譯程序和格式化程序(能產(chǎn)生用縮排法排列的源程序清單)等工具來支持編程活動。在這些早期工具的支持下,編程工作是這樣進(jìn)行的:
先調(diào)用編輯器建立源程序,再退出編輯器并調(diào)用編譯器產(chǎn)生目標(biāo)程序,程序執(zhí)行時如發(fā)現(xiàn)錯誤又要調(diào)用編輯器再編輯,退出編輯器后再調(diào)用編譯器重新編譯……如此反復(fù)。這種工作方式可用圖10.4說明。l0.5編程工具——程序綜合器圖10.4上述編程方式具有明顯的缺點:
(1)工作方式復(fù)雜,反復(fù)調(diào)用和退出編輯器、編譯器、連結(jié)程序有諸多不便。
(2)工作效率不高,由編輯器產(chǎn)生的源程序一般含有許多語法錯誤,這些錯誤要到編譯時才被發(fā)現(xiàn),再回過頭來糾正。
(3)程序員不得不一絲不茍地認(rèn)真對待標(biāo)點符號、保留字的拼寫、括號配對等繁瑣的細(xì)節(jié)。
(4)工作量大,例如一個幾萬行的源程序,其中每個字符必須由程序員逐個鍵入,可以想象,打字量是多么大!所以,為了提高生產(chǎn)率,降低編程工作的復(fù)雜性,必須對圖l0.4的工作方式作改革。
對傳統(tǒng)的編程方式作分析后,可以看出關(guān)鍵問題在于編輯器不懂得程序的結(jié)構(gòu),它將程序看作為普通的字符序列,所以不能發(fā)現(xiàn)其中的語法錯誤。解決問題的途經(jīng)在于使編輯
器具有編程語言的句法知識。如果使編輯器具有面向語言的句法結(jié)構(gòu),就可以大大減輕程序員拘泥于語言細(xì)節(jié)的負(fù)擔(dān),這就是語法制導(dǎo)編輯器(Syntax—DirectedEditor)的由來。美國Cornell大學(xué)的程序綜合器、Carneige—Mellon大學(xué)的Gandalf系統(tǒng)是這方面研究工作的典型代表,下面介紹Cornen大學(xué)的程序綜合器。
程序綜合器(Programsynthesizer)是建立在uNIx上的一個交互式編程環(huán)境,它能輔助程序員進(jìn)行程序的建立、編輯、執(zhí)行和排錯等多種活動。這個系統(tǒng)的基本思想是將程序理
解為由許多語法對象組成的一個層次結(jié)構(gòu),而不是一般的字符序列,這樣,編輯、執(zhí)行和排錯均可在該編程語言的句法結(jié)構(gòu)指導(dǎo)下進(jìn)行。在綜合器中,程序是由模板和短語兩類成分嵌套構(gòu)成的一個層次結(jié)構(gòu)。模板是語句的語法輪廓,它包括關(guān)鍵字、匹配括號和標(biāo)點符號,模板的格式是事先定義的,它體現(xiàn)了編程語言的語法。例如,對PASCAL語言來說,條件句的模板是:
IF(條件)
THEN(語句)
ELSE(語句)
循環(huán)句的模板是:
WHILE(條件)
DO(語句)
在模板的括號內(nèi),又可插入新的模板或短語,所以,模板的作用是為語法單元的插入提供一個不可改變的框架。短語是用戶打入的任意字符串,包括賦值語句、表達(dá)式、變量表等。
利用綜合器建立程序時,程序不再以行文方式逐行輸入,而是用由頂向下逐步加細(xì)的方式建立,即在先前已進(jìn)入的模板框架中逐步插入新的模板和短語。程序員用簡單的命令(如菜單選擇)就可建立模板。由于模板是事先規(guī)定的,而且在特定的上下文中可供選用的模板也是事先按語法規(guī)定的,所以產(chǎn)生的程序不會有語法錯誤;對于輸入的短語,綜合器立即調(diào)用語法分析程序進(jìn)行語法檢查,所以,即使是不完整的程序片斷,其語法卻總是正確的。用綜合器對程序作修改時,總是刪除或插入整個模板或短語,而在對個別短語進(jìn)行修改之后,又要立即進(jìn)行語法檢查,這就保證了在編輯過程的每一步,程序的語法結(jié)構(gòu)始終是正確的,即修改不會引起語法錯誤。
例如,將條件句
IFK>O
THENX:=A
ELSEX:=B
改為放在循環(huán)句
REPEAT
(語句)
UNTILN=0由于在編輯過程中,程序一直被維持成一種可解釋的形式(語法樹),所以編輯結(jié)束后,程序立即就可執(zhí)行,即使是不完整的程序片斷,亦同樣可執(zhí)行。當(dāng)遇到尚未輸入的待
填部分時,程序被暫時掛起,等所需的語法單元填入后,再恢復(fù)執(zhí)行。程序執(zhí)行時如因某種原因需要掛起,控制會回到編輯器,顯示中止執(zhí)行的原因及中止的位置,程序員對程序
修改后,又可同未被修改的部分連接并繼續(xù)執(zhí)行,如此反復(fù),直到程序最終完成,所以在綜合器的控制下,程序的編輯、執(zhí)行能很方便地交替進(jìn)行。綜合器還有豐富的源程序級排錯功能,如通過窗口觀察運(yùn)行中的程序、監(jiān)視變量在運(yùn)行中的變化情況、控制執(zhí)行速率(全速、單步等)、逆向執(zhí)行(REDO/UNDO)……等。上述功能都是以語法結(jié)構(gòu)為單位的。源程序級的這些排錯手段可以幫助程序員分析故障原因,較快地找出其中的錯誤。
實現(xiàn)綜合器的關(guān)鍵是:程序在機(jī)器內(nèi)部不是用行文形式而是用結(jié)構(gòu)樹來表示,每個模板和短語都是結(jié)構(gòu)樹上的一個結(jié)點,結(jié)點帶有許多屬性,編輯、執(zhí)行、排錯等功能均以此
語法樹為操作對象來進(jìn)行。綜合器的使用,為編程帶來許多便利:
(1)由于不必?fù)?dān)心會產(chǎn)生瑣碎的語法錯誤,程序員不用再拘泥于種種語法細(xì)節(jié)(如分隔符是句號還是分號),而可將精力集中于更需智力的地方。
(2)由于模板是事先定義的,所以縮排方式可自動保證,這就提高了程序的可讀性。
(3)由于用簡單的命令(如菜單選擇)就可插入一個較復(fù)雜的模板,不必再逐個打入每一字符,因此減少了打字量,即提高了工作效率又避免了打字錯誤。當(dāng)然,綜合器最有意義的長處是:由于不完整的程序亦可以執(zhí)行,所以它有效地支持由頂向下逐步加細(xì)的編程方法。
程序綜合器用統(tǒng)一的用戶界面集程序的建立、編輯、編譯、運(yùn)行、測試、排錯等工具于一體,以語法樹作為公共數(shù)據(jù)被各個工具共同操作,這樣的系統(tǒng)比一般工具箱又前進(jìn)了一步,由于它為程序員創(chuàng)造了一個良好的工作環(huán)境,所以通常稱之為編程環(huán)境。本書第六章已指出在軟件生命期中,檢驗和測試是很重要但又極耗人工的活動,完全憑借人工則效率低效果又差,所以其中一部分工作應(yīng)該自動化。例如讓自動工具對程序作分析,發(fā)現(xiàn)某種類型的錯誤,對可能的錯誤(可疑的地方)作提示,為選擇測試用例提供有用的信息,記錄和統(tǒng)計測試結(jié)果等。
70年代末,有關(guān)檢驗和測試工具的研究已取得不少成果,一些試驗性的工具系統(tǒng)大量出現(xiàn),例如靜態(tài)分析工具DAVE和FACES、動態(tài)分析工具PET、符號執(zhí)行工具DISSECT以及集成化的測試系統(tǒng)SADAT等。本節(jié)將介紹其中的一部分。10.6檢驗和測試工具10.6.1靜態(tài)分析工具
檢驗的一種手段是靜態(tài)分析,即人工對程序或需求說明書、設(shè)計文檔等資料作評審,6.2介紹了人工評審的方法,這種方法是有效的,但由于人類能力的局限,其效果畢竟是
有限的。如果需求說明書、設(shè)計文檔等能用形式化或半形式化(格式化)的方式描述,則可以由自動工具對其作一些檢查。此時被檢查的文檔或程序本身不必運(yùn)行,它們只是作為一份文本供自動工具閱讀和檢查,所以稱“靜態(tài)分析”。
10.2和10.3介紹的工具系統(tǒng)都具有靜態(tài)分析功能,如PSL/PSA系統(tǒng)能對用PSI。描述的用戶需求作一致性和完整性檢查,也可以作數(shù)據(jù)和加工的交叉引用分析:Tektronix的工具箱能對需求作一致性、完整性分析;AIDES能對設(shè)計文檔作某些檢查或進(jìn)行設(shè)計質(zhì)量的定量分析。
至于對程序作靜態(tài)分析的工具就更多了,因為程序是由形式化的編程語言精確地書寫的,所以可用自動工具對它作多種分析,例如:
(1)靜態(tài)錯誤分析,這包括對程序作引用分析、界面分析、類型和量綱分析、表達(dá)式分析等,其目的是發(fā)現(xiàn)某種類型的錯誤。
(2)一般情況分析,這包括對程序作數(shù)據(jù)流分析、程序結(jié)構(gòu)分析、事件順序分析、符號交叉引用分析,其目的不是發(fā)現(xiàn)錯誤,而是獲得反映程序功能、結(jié)構(gòu)的一般信息。
(3)符號執(zhí)行,即用符號作為變量的值,以符號形式計算表達(dá)式,以便證明程序的部分正確性,這是一種介于測試和正確性證明之間的技術(shù)。下面對靜態(tài)錯誤分析的幾種功能作些解釋。
引用分析的注意點是變量被賦值、引用和去值(過程中的局部變量在過程結(jié)束時被去值)的順序。在程序的任一條路徑中一個變量被賦值、引用和去值的順序應(yīng)該遵從下面兩
條規(guī)則:
(1)引用前必須先賦值,而且在此期間沒有去值。
(2)賦值后,在再賦值或去值前應(yīng)該被引用。如果對變量的使用違反了這兩條規(guī)則就稱為“引用反常”,如違背第一條規(guī)則,則說明一定有錯誤存在;違背第二條規(guī)則雖不一定有錯誤,但這樣做是浪費(fèi)時間的,所以是一個可疑之處。
觀察下面一段FORTRAN程序:
SUBROUTINES(A,B)
VOLT=A+B
B=VOLTS
RETURN
END只要順序掃視這個程序就會發(fā)現(xiàn)其中有兩處出現(xiàn)“引用反?!保鹤兞縑OLTS沒賦值就被引用,而變量VOLT則在賦值后,一直沒被引用。
造成“引用反?!钡脑蛲亲兞棵磳戝e,變量名的沖突使用,沒有為變量賦初值或語句位置錯等。
界面分析可以對設(shè)計文檔或程序進(jìn)行,其注意點是模塊間界面一致性,例如形式參數(shù)和實在參數(shù)的個數(shù)、類型、維度是否一致等。下面介紹靜態(tài)分析工具中兩個典型的代表:FAcEs和DAVE。
FAcES(FORTRANAutomatedCodeEvaluationSystem,即FORTRAN自動程序評價系統(tǒng))由美國加州大學(xué)(伯克萊分校)在70年代末開發(fā),用于FORTRAN程序的測試和維護(hù)。
它本身用FORTRlAN編寫,較易于移植,在IBM、uNIVAc、CDC等大型機(jī)上均可實現(xiàn)。
FACES的前端部分是二個語言處理器,它掃視被檢驗的FORTRAN程序并產(chǎn)生一些表格存放在數(shù)據(jù)庫中,其中主要的表格有:
(1)符號表,它記錄程序中的變量名、語句標(biāo)號、子程序名等信息。
(2)引用表,它記錄程序中引用上述符號名的情況,如哪個賦值句引用某個變量,哪個語句調(diào)用某個子程序等,引用表同符號表中用鏈表連接。
(3)結(jié)點表,它用有向圖的方式把程序的流程結(jié)構(gòu)記錄下來。
顯然,這些表格包含了程序的結(jié)構(gòu)、功能等總的信息,F(xiàn)ACES的主體部分以這些信息為基礎(chǔ),完成下列功能:
(1)評價程序總的質(zhì)量。①查找可能含有錯誤的結(jié)構(gòu),這是指語法上雖然正確,但邏輯上可疑的結(jié)構(gòu),例如向子程序傳送的參數(shù)是常數(shù)就是一個可疑之處。
②查找多余的即不可能達(dá)到的程序段。
③檢查每個循環(huán)嵌套、終止的性質(zhì)。
④檢查模塊中局部變量的使用是否出現(xiàn)“引用反?!薄?/p>
⑤在模塊間、公共數(shù)據(jù)塊間作界面分析。
⑥檢查程序是否符合編程標(biāo)準(zhǔn)。
(2)回答查詢。例如列出使用某個變量名的所有語句,或列出某語句修改后可能影響的所有變量名。
(3)產(chǎn)生各種交叉引用表和程序結(jié)構(gòu)圖。例如產(chǎn)生“變量/語句交叉引用表”、“子程序調(diào)用順序表”、“公共塊/子程序交叉引用表”、……等。
這些功能不僅對測試,而且對程序的評價和維護(hù)都是很有用的。
我們可以把FAcES看成是編譯程序的擴(kuò)充。編譯程序可以發(fā)現(xiàn)語法錯誤,F(xiàn)ACES則能進(jìn)一步找出一些編譯程序不能發(fā)現(xiàn)的邏輯錯誤。
FACES的效果可用下面的事實說明:美國國家航天局首次使用FACES時,對一個大型FORTRAN程序作分析,在每200個語句中約發(fā)現(xiàn)了一個錯誤;在對空中飛船的軟件作分
析時,在6.5%的語句中查出了問題。有人用FACES檢查FACES本身的一個新版本,結(jié)果查出變量名拼寫錯、公共塊中變量位置錯等4個錯誤,這4個錯誤一般不會影響系統(tǒng)的運(yùn)
行,所以用人工恐難發(fā)現(xiàn),自動工具的威力由此可見一斑。另一個類似的系統(tǒng)DAVE由美國Colorado大學(xué)在1976年開發(fā),這是對FORTRAN程序作分析的工具,它本身用FORTRAN編寫,在CDC等機(jī)器上實現(xiàn)。
DAVE對程序作分析的焦點是查找其中的“引用反?!保l(fā)現(xiàn)錯誤后,DAVE打印有關(guān)信息,以便幫助程序員分析造成錯誤的原因。DAVE的作用也可看成是編譯程序的某種擴(kuò)充。DAVE還有其它功能,如符號執(zhí)行等。
DAVE的使用效果是相當(dāng)好的,有人用DAVE檢查某程序,而該程序已投入實際使用數(shù)月余,被認(rèn)為是“沒有錯誤”的,但DAVE發(fā)現(xiàn)了其中的一處“引用反?!?,錯誤原因是變量名拼寫錯了。10.6.2動態(tài)分析工具
動態(tài)分析的基本思想是使程序有控制地運(yùn)行,并從多種角度觀察程序運(yùn)行時的行為。
我們完全可以用一些自動工具來記錄、監(jiān)視、統(tǒng)計程序的運(yùn)行情況,最典型的方法是在被測程序的某些位置插入一些裝置,程序運(yùn)行時,這些裝置就能發(fā)揮監(jiān)視作用,運(yùn)行結(jié)束后,它們就能對測試情況作出報告。下面介紹的覆蓋監(jiān)視工具和動態(tài)斷言處理器都采用了這種方法。程序評價和測試系統(tǒng)PET(ProgramEvaluatorandTesterSystem)是動態(tài)分析工具的一個代表,它是美國McDonaldDouglas公司在70年代末開發(fā)的一個覆蓋監(jiān)視工具,已在IBM、uNIVAc、CDC等大型機(jī)上實現(xiàn),其功能是支持對FORTRAN程序采用白盒法測試,可以監(jiān)視測試的實際覆蓋程度。白盒法考慮的是對程序路徑的覆蓋,而對一個邏輯比較復(fù)雜的程序,設(shè)計一組測試用例,使其達(dá)到某種覆蓋標(biāo)準(zhǔn)是極為困難的;另外,由于程序中含有錯誤,實際覆蓋程度同預(yù)期覆蓋程度是否相符也是值得懷疑的。
PET能監(jiān)視測試的實際覆蓋程度,根據(jù)PET、提供的信息,測試人員就能適當(dāng)?shù)刈芳右恍y試用例,使測試真正達(dá)
到所需的覆蓋標(biāo)準(zhǔn),因而PET能有效地支持白盒法的實施。
PET的功能包括:
·監(jiān)視測試的覆蓋情況;
·提供程序執(zhí)行時的信息,輔助排錯;
·收集程序執(zhí)行時的信息,輔助文檔編寫。
PET的工作過程如下:
(1)對被測試源程序作預(yù)處理,它自動地在程序的
特定位置插入下面3種探測器:
①在程序的分支和匯合點插入“執(zhí)行計數(shù)探測器”。
②在非簡單賦值句(簡單賦值句指下標(biāo)運(yùn)算或?qū)⒊?shù)賦給變量的賦值句)后插入“讀變量值探測器”,它將記錄變量的首次、末次、最大、最小的值。③在循環(huán)句中插入“讀控制變量值探測器”,它將記
錄循環(huán)控制變量的首次、末次、最大、最小的值。
這些探測器可能是直接將某個計數(shù)器加一的一段源程序;也可能是一個子程序調(diào)用語句,該子程序負(fù)責(zé)記錄首次、末次等值。
圖l0.5說明了對下面這段FORTRAN程序插入探測器的情況:
N=l00
5DOl5I—J,N,K
IF(I—K)10,l0,l5
l0C=A(I)*B(I)+C圖10.5l5
B(1)=I
N=50
在圖10.5中,虛線框表示探測器,其中圓形是執(zhí)行計數(shù)探測器,矩形是讀變量值探測器,菱形是讀控制變量值探測器。
(2)預(yù)處理后的源程序經(jīng)編譯,并同上述子程序連接后投入運(yùn)行。程序運(yùn)行時,這些探測器從多個側(cè)面對程序的動態(tài)行為作深入的觀察,并收集和統(tǒng)計有關(guān)信息。
(3)一組測試結(jié)束后,PET輸出詳細(xì)的或匯總性的報告,例如:某一語句執(zhí)行的次數(shù),某一轉(zhuǎn)移發(fā)生的次數(shù)及其在總數(shù)中所占的百分比,某賦值句的數(shù)值范圍,循環(huán)控制變量的值范圍,某子程序被調(diào)用的次數(shù),某子程序運(yùn)行的時間……等。這些信息說明了測試的覆蓋情況,也反映了程序運(yùn)行時的各種特征,對人們繼續(xù)追加測試用例、排錯和優(yōu)化都有指導(dǎo)意義。
PET這類工具被稱為“自度量系統(tǒng)”(Self—Metricsystem),因為FOR.TRAN源程序被它裝上探測器后,就能自行收集、記錄各種運(yùn)行時的度量指標(biāo)。美國波音公司研制的動態(tài)斷言處理器也是一個有代表性的工具,它是一個對FORTRAN程序作動態(tài)分析的試驗性系統(tǒng)。
6.1已指出,程序正確性證明是一種很有前途的檢驗技術(shù),它可用數(shù)學(xué)方法證明對所有可能的輸入數(shù)據(jù),某些斷言必定成立,遺憾的是這一技術(shù)目前尚未成熟,還不適用于大型的系統(tǒng)。
既然嚴(yán)格證明程序的正確性尚有困難,退一步說,是否有可能在程序運(yùn)行時,部分地檢查某些斷言的正確性呢?如果這些斷言不成立,可以肯定程序中有錯誤;如果斷言成立,雖不能認(rèn)為程序正確,但也可以增加我們對這個程序的信心。動態(tài)斷言處理器就是在這種思想啟發(fā)下研制的一類系統(tǒng),它們能在程序運(yùn)行時,檢查事先指定的一些斷言是否成立,因此有助于復(fù)雜系統(tǒng)的檢驗、排錯和維護(hù)。下面介紹波音公司研制的動態(tài)斷言處理器,它的工作原理如下:
(1)在使用該系統(tǒng)之前,程序員應(yīng)在源程序中預(yù)先說明變量應(yīng)滿足的邏輯條件,稱為“斷言”。斷言用FORTRAN中的注釋句按一定格式書寫,稱“斷言語句”。“斷言”分局部性和全程性兩類。局部性斷言描述的是在程序某個位置上,一些變量應(yīng)符合的邏輯條件,例如I<10,A(6)≠0,數(shù)組A的所有元素均大于零等。局部性斷言寫在程序的相應(yīng)位置上,上述3個斷言的斷言語句格式是:
CASSERTLOCAl(I.LT.10)
CASSERTLOCAL(A(6).NE.0)
CASSERTLOCAL(A(*.*).GT.0)程序員在重要的循環(huán)或過程之入口和出口處,或在一些可能引起異常的關(guān)鍵算法之前,均可指出局部性斷言,如在賦值句A=B/z之前,設(shè)置斷言語句:
CASSERTLOCAL(Z.NE.0)
全程性斷言描述的是在程序運(yùn)行過程中變量始終應(yīng)滿足的邏輯條件,例如變量I、J、K只能取0至100間的值,變量KK、NN只能取2、4、6、8這4個值。全程性斷言寫在程序的說明部分,上述兩個斷言的斷言語句格式是:
CASSERVALUES(1,J,K)(0:100)
CASSERTVALUES(KK,NN)(2,4,6,8)程序員在每個變量、數(shù)組的說明之后,都可寫上反映其全程特性的斷言。
(2)動態(tài)斷言處理器對FORTRAN源程序中的注釋句先作預(yù)處理,為每個斷言插入一段相應(yīng)的檢驗程序。
(3)經(jīng)預(yù)處理的程序運(yùn)行時,這些檢驗程序就會檢查程序的實際執(zhí)行情況與斷言所規(guī)定的邏輯狀態(tài)是否一致;對局部性斷言,每當(dāng)程序執(zhí)行到這個位置時,相應(yīng)的檢驗程序就要工作;對全程性斷言,則在變量被賦值后(即每次修改后)相應(yīng)的檢驗程序就進(jìn)行工作。動態(tài)斷言處理器將統(tǒng)計檢驗的結(jié)果(即斷言成立或不成立的次數(shù)),在發(fā)現(xiàn)斷言不成立
的情況下,還將收集當(dāng)時的現(xiàn)場信息,如有關(guān)變量的狀態(tài)等。系統(tǒng)也可按測試人員的要求,在某個斷言不成立的次數(shù)已達(dá)指定值時中止程序的運(yùn)行并隨即輸出統(tǒng)計報告。
(4)一組測試結(jié)束后,系統(tǒng)將統(tǒng)計結(jié)果、現(xiàn)場情況輸出供測試人員分析。
動態(tài)斷言處理器能夠檢查程序的動態(tài)特性是否同程序員的設(shè)想相符,這類系統(tǒng)可稱為“自驗證系統(tǒng)”(Self-ValidatingSystem),因為被測程序經(jīng)它預(yù)處理后,能自行驗證程序運(yùn)行時的行為是否正確。當(dāng)然這類工具只能作部分驗證,同程序正確性證明是完全不同的。用于測試的自動工具還有很多,例如模塊驅(qū)動工具、測試數(shù)據(jù)生成程序、環(huán)境模擬程序,還有輔助排錯的工具等,讀者可參閱參考文獻(xiàn)。近年來又出現(xiàn)了將多種測試工具融
為一體的集成化測試系統(tǒng),例如德國IDT開發(fā)的SADAT系統(tǒng),它集成了靜態(tài)分析、動態(tài)分析、符號執(zhí)行和測試數(shù)據(jù)生成等功能,各種功能用統(tǒng)一的命令語言調(diào)用,各個工具都使用公共數(shù)據(jù)庫中的信息,比分散的工具獲得了更好的效果。軟件維護(hù)工具可以分為兩類:一類是屬于維護(hù)技術(shù)方面的,另一類是屬于維護(hù)管理方面的。
l0.7.1維護(hù)技術(shù)工具
從7.3.2的介紹可以知道:維護(hù)的主要過程是理解現(xiàn)有系統(tǒng),修改現(xiàn)有系統(tǒng)和重新確認(rèn)修改后的系統(tǒng)。
在理解現(xiàn)有系統(tǒng)階段可使用的工具有:
·各類預(yù)處理程序;10.7維護(hù)工具
·代碼格式美化程序;
·代碼標(biāo)準(zhǔn)化監(jiān)測程序;
·程序設(shè)計風(fēng)格轉(zhuǎn)換程序;
·語言加工程序;
·流程圖顯示程序。
例如,在uNIx操作系統(tǒng)下,支持c語言的代碼格式美化程序CB(CBeautifier)、C交叉引用程序CXREF(CCrossReference)以及C流程圖程序CFI。Ow(CFlOWGraph)。在修改現(xiàn)有系統(tǒng)階段可使用的工具有:
·聯(lián)接編輯程序;
·正文編輯程序;
·分析波動效應(yīng)的程序;
·重編譯程序;
·版本控制程序。
例如,在UNIX操作系統(tǒng)下的部分重編譯程序make以及源代碼控制程序SCCS(SourceCodeControlSystem)。在重新確認(rèn)修改后的系統(tǒng)階段可使用的工具有:
·各種測試程序;
·驗證程序;
·質(zhì)量保證程序;
·各類比較程序;
·維護(hù)數(shù)據(jù)庫程序。
下面介紹一個軟件理解的維護(hù)工具。
由于維護(hù)人員有時并不是系統(tǒng)開發(fā)人員,因此,要理解軟件系統(tǒng)必須要有足夠的文檔資料。由于種種原因,可能得不到全部文檔說明資料,最多只有系統(tǒng)的源程序。在這種情況下,就需要借助于軟件理解工具。作為一個大型軟件理解工具,應(yīng)能達(dá)到以下目標(biāo):
·協(xié)助維護(hù)人員對軟件結(jié)構(gòu)進(jìn)行分解;
·協(xié)助維護(hù)人員跟蹤軟件單元的數(shù)據(jù)流和控制流;
·將軟件按逐步抽象的方法進(jìn)行邏輯上的綜合,并可用邏輯注解語句來表達(dá);
·將理解后的軟件內(nèi)容、結(jié)構(gòu)予以文檔化和作為資源輸出;
南京大學(xué)計算機(jī)系曾在IBM/PC上開發(fā)了一個理解PASCAL源程序的理解工具TAUS,工具的主要結(jié)構(gòu)如圖10.6所示。圖中各部分的功能是:圖10.6
(1)元語言分析程序。它是產(chǎn)生目標(biāo)語言(如PASCAL語言)的語法驅(qū)動表的生成程序。它接受用元語言書寫的目標(biāo)語言的語法和部分語義描述,經(jīng)過分析,生成語法驅(qū)動表。它提供用戶一個能支持多種語言的統(tǒng)一接口。
(2)裝載分析程序。它接受需要理解的目標(biāo)源程序,按照語法驅(qū)動表進(jìn)行分析。它自動對程序進(jìn)行靜態(tài)分析,生成一系列內(nèi)部文檔存入文檔庫。源程序的內(nèi)部表示為:語句一行號一類型號,它記錄了每一行源程序及其位置,同時也記錄了它的嵌套層次、邏輯注解內(nèi)容和語句類型號(相當(dāng)于PDL控制結(jié)構(gòu)的一個編號)。
(3)文檔庫。它用IBM/PC文件系統(tǒng)來實現(xiàn),由裝載分析程序送入文檔,并可為命令管理程序訪問。
(4)命令管理程序。它包括多窗口管理、命令分析和處理(共72種命令,包括裝載命令、窗口管理命令、分析和理解命令以及輔助命令)。
TAUS的主要功能是:
(1)程序結(jié)構(gòu)的觀察。它可顯示程序結(jié)構(gòu)樹、過程調(diào)用關(guān)系、程序單元的控制流圖、控制流所隱藏的信息和控制流路徑。
(2)源程序觀察。它能進(jìn)行變量的定義及引用,數(shù)據(jù)結(jié)構(gòu)的顯示,按層次結(jié)構(gòu)顯示源代碼,還可進(jìn)行過程的數(shù)據(jù)接口顯示和過程調(diào)用者以及被調(diào)用者的顯示。
(3)源程序和控制流圖的顯示。
(4)控制流和數(shù)據(jù)流的跟蹤和回溯。
(5)程序復(fù)雜性參數(shù)的觀察。
(6)變量和過程名的修改。
(7)交互地加入或修改程序的注解。
(8)各種維護(hù)文檔輸出,其中包括格式化的源程序、信息隱藏后的源程序、源程序的框圖二信息隱藏后的源程序框圖、層次結(jié)構(gòu)圖、源程序及目標(biāo)過程之間的搜索路徑、數(shù)據(jù)接口圖、過程名字表、變量定義和引用表、復(fù)雜性參數(shù)和注解表等。10.7.2維護(hù)管理工具
維護(hù)管理方面的工具主要用于支持有關(guān)事務(wù)處理、資料分析和統(tǒng)計工作。目前用于維護(hù)管理方面的自動工具還較少,主要有以下幾種:
·問題報告編輯器;
·維護(hù)狀態(tài)報告編輯器;
·程序改變報告編輯器;
·文件管理工具;
·數(shù)據(jù)收集和統(tǒng)計工具;
·維護(hù)日志。與傳統(tǒng)的開發(fā)和維護(hù)工作相類似,開發(fā)和維護(hù)面向?qū)ο蟮能浖瑯右蕾囉诠ぞ?。開發(fā)人員需要對代碼的快速訪問,需要有在類層次結(jié)構(gòu)中航行(navigation)的能力,也需要有關(guān)于類和方法的快速、增量化的編譯。此外,在對象之間大量的、以消息的形式出現(xiàn)的通信和性能調(diào)整(PerformanceTunning),也是經(jīng)常需要的。
目前,面向?qū)ο筌浖幕鹃_發(fā)與維護(hù)工具主要是:瀏覽程序(Browsers)、檢閱程序(Inspectors)、性能剖析程序(Profi1ers)和排錯程序(Debuggers)等。這些工具是以功能分類的,但實際上目前商品化的工具通常以上述幾種工具集形式出現(xiàn)。l0.8面向?qū)ο箝_發(fā)和維護(hù)的工具10.8.1瀏覽程序
面向?qū)ο蟮某绦蛟O(shè)計語言的優(yōu)點之一是具有類庫。類的使用與一般程序員所具有的過去的開發(fā)經(jīng)驗不同。例如,在閱讀程序的源代碼以及利用程序中的邏輯關(guān)系來跟蹤控制流
等方面,都不能按以往的經(jīng)驗來進(jìn)行,程序員必須學(xué)會在系統(tǒng)中的類之間“航行”。
瀏覽程序是一種交互式工具,用于在類庫和構(gòu)架中航行。一個典型的瀏覽程序能夠提供以下信息:
·類之間的關(guān)系;
·類中的消息和方法;
·類中的實例變量;
·消息的發(fā)送者;
·消息的接收者;
·
方法的實現(xiàn)代碼。
第一個瀏覽程序是為Smalltalk—80開發(fā)的Objectworks,這種瀏覽程序是早期面向?qū)ο蟪绦蛟O(shè)計工具的一個代表。隨著研究和應(yīng)用的不斷發(fā)展,這樣瀏覽程序又有了發(fā)展,ParcPlaceSystems公司的ObjectworksforC++,就是移植和擴(kuò)充這種瀏覽程序的一種范例。
Borland公司的BorlanC++3.0在其集成開發(fā)環(huán)境中設(shè)置了一個基于Windows3.0的瀏覽程序,與ObjectworksforC++中的瀏覽程序不同的是,它把類層次結(jié)構(gòu)和類中的方法分為兩層來顯示;另外,它允許用鼠標(biāo)在源代碼中選擇所關(guān)心的標(biāo)識符(如類名、方法名等)來查看對應(yīng)的源代碼。但是,由于BorlandC++3.0是一個基于編譯的系統(tǒng),所以只能在程序的可執(zhí)行代碼上進(jìn)行瀏覽,并且要求編譯時進(jìn)行編譯開關(guān)的選擇,以使得關(guān)于類層次結(jié)構(gòu)的信息保持在目標(biāo)代碼中。
還有一些工具提供的是類的圖形化視圖。如Eiffel開發(fā)環(huán)境中的GOOD(GraphicsforObject—OrientedDisign)。對于某一類,GOOD可顯示它所有的父類和顧客。10.8.2檢閱程序
過程化語言中的檢閱程序,是在單步執(zhí)行一個程序時,用來查看和修改數(shù)據(jù)值的工具。面向?qū)ο蟪绦蛟O(shè)計語言中的檢閱程序也有類似的功能,它主要是用來查看和修改對象的實例變量值。
在BorlandC++3.0的排錯程序中,選擇View窗口就可激活它內(nèi)含的一個檢閱程序。
檢閱程序的另一個例子是Smalltalk-80嵌在瀏覽程序Objectworks中的檢閱程序。如果程序員要檢閱某一個類中實例變量的當(dāng)前值,那么這時在屏幕上,其背景中顯示的就是瀏覽程序查看類、消息和和方法的情況;前景即為檢閱程序打開的,以類命名窗口,其中列出了該類的實例變量。當(dāng)在窗口左部選擇了一個實例變量時,窗口的右部就顯示該實例變量的當(dāng)前值。10.8.3性能剖析程序
性能剖板程序是用來分析程序性能的一種主要工具,用以指出在一個程序中哪里的運(yùn)行開銷大,這在實時應(yīng)用系統(tǒng)的開發(fā)中是非常重要的。在這種信息的幫助下,開發(fā)者可以確認(rèn)程序中需要改善性能的部分。面向?qū)ο蟪绦蛟O(shè)計語言的剖析程序與面向過程語言的剖析程序只有很小的區(qū)別。對于一個過程化的程序,在典型情況下剖析程序要產(chǎn)生一個報
告,指出該程序中每個過程被調(diào)用的次數(shù)以及每個過程的執(zhí)行時間占總執(zhí)行時間的百分比。而對于一個面向?qū)ο蟮某绦?,剖析程序所提供的也是類似的信息,所不同的是用消?/p>
的發(fā)送代替了過程的調(diào)用。
Smalltalk環(huán)境還有一個稱為Spy的剖析程序,它可以分析一個代碼塊并給出一個報告,指出這個代碼塊中的消息發(fā)送序列,以及對每個消息求值時間所占的百分比。面向Ac—
tor語言的剖析程序可產(chǎn)生一個報告,列出一個程序在執(zhí)行過程中每個方法的執(zhí)行次數(shù)。性能優(yōu)化的重點是那些執(zhí)行次數(shù)較多的方法。
Borlandc++2.0和3.0都提供了剖析程序TurboProfiler,其功能也是類似的。l0.8.4排錯程序
排錯程序是對運(yùn)行中的程序進(jìn)行有控制地執(zhí)行和檢查的工具,是經(jīng)常使用的一種工具。一種排錯程序的功能強(qiáng)弱,很大程度上取決于它以不同的方式進(jìn)行測試時查看程序的
能力。面向?qū)ο蟮呐佩e程序提供了對非過程化的程序單元與關(guān)系的查看支持,如類、類與子類的關(guān)系、消息與方法的聯(lián)系等。在其他方面,面向?qū)ο蟮呐佩e程序與傳統(tǒng)的排錯程序
沒有太大的區(qū)別。
Smalltalk/V中的排錯程序,是面向?qū)ο笈佩e程序中的一種范例。在該排錯程序中主要有5種服務(wù):Wa1kback將顯示一組消息發(fā)送信息,最上面是最近發(fā)出的消息,以便及時回顧程序已經(jīng)完成的工作,如果進(jìn)一步選擇某個回步,則會顯示相應(yīng)的信息;BreakPoints將顯示所有設(shè)置了斷點的方法和對應(yīng)類名和方法選擇者,如果進(jìn)一步選擇了某個斷點,則顯示對應(yīng)方法的源代碼(在一個方法中設(shè)置斷點,為的是在進(jìn)入這個方法時停止執(zhí)行);Hop執(zhí)行正在運(yùn)行程序的下一個表達(dá)式;Skip執(zhí)行被選方法中的下一個表達(dá)式,或者執(zhí)行到下
一個斷點,這取決于誰先出現(xiàn);Jump則是執(zhí)行到下一個斷點。對于混合式面向?qū)ο蟪绦蛟O(shè)計語言,排錯程序必須具有對其中的過程化結(jié)構(gòu)和面向?qū)ο蠼Y(jié)構(gòu)都能進(jìn)行排錯的功能。例如,Borlandc++2.0和3.0的排錯程序TurboDebugger,
就是在原來過程化語言(如Turboc,TurboPascal等)排錯程序的基礎(chǔ)上,增加了支持C++面向?qū)ο蠼Y(jié)構(gòu)和支持Windows3.0的特性后產(chǎn)生的。與傳統(tǒng)的軟件開發(fā)相類似,工具在面向?qū)ο蟪绦蛟O(shè)計中也扮演著一種重要的角色。但是,關(guān)于面向?qū)ο蠓治龊驮O(shè)計的研究還處于初級階段,還沒有像結(jié)構(gòu)化分析和設(shè)計那樣形
成被廣泛接受的方法論,因而,相應(yīng)的工具主要支持的是程序設(shè)計,這是發(fā)展過程中不可避免的問題。隨著研究和應(yīng)用的不斷深入,面向?qū)ο蟮姆治龊驮O(shè)計將會形成若干種被廣泛
接受的方法論,相應(yīng)的工具也會不斷涌現(xiàn)。大型軟件系統(tǒng)的復(fù)雜性往往不是來自其算法,而是來自其規(guī)模。由于人類本身的弱點,同處理小問題不同,人工處理大規(guī)模的問題往往會束手無措,或犯許多錯誤?;谟嬎銠C(jī)的處理大量數(shù)據(jù)的特長,“軟件開發(fā)需要一套良好的自動工具”這一觀點,已被軟件界普遍接受,因為計算機(jī)處理大問題和小問題的方式基本是一樣的。
從早期的編輯程序、連接程序、編譯程序、排錯程序開始,直至前幾節(jié)介紹的各種系統(tǒng),我們已熟悉了不少自動工具,此外還有其他工具,如數(shù)據(jù)庫設(shè)計工具等,這些工具的
使用大大提高了軟件生產(chǎn)率并改進(jìn)了軟件的質(zhì)量。10.9軟件開發(fā)環(huán)境然而,事物總是不斷向前發(fā)展的,軟件工程這門年青而又有前途的學(xué)科更是如此,上述自動工具經(jīng)一個時期的使用后,人們發(fā)現(xiàn)了下列不足之處:
(1)每個工具只支持生命期中的個別工作,例如PSL/PSA只支持需求描述,AIDES只支持設(shè)計,PDL工具只支持詳細(xì)設(shè)計等,它們不能支持整個生命期的活動。
(2)各種工具不統(tǒng)一,它們分別建立在不同的機(jī)器、不同的操作系統(tǒng)上,用不同的語言編寫,使用的方式也各不相同,所以不能兼容,難以集成為一體。認(rèn)識到分散工具的不足之后,人們很自然地希望研制能支持整個生命期的、配套成龍的綜合性工具系統(tǒng),這就出現(xiàn)了“軟件開發(fā)環(huán)境”的概念,這方面的研究工作在80年代初
達(dá)到高潮。
軟件開發(fā)環(huán)境(SoftwareDevelopme
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級下冊聽評課記錄表
- 魯教版地理七年級下冊7.1《自然特征與農(nóng)業(yè)》聽課評課記錄
- 生態(tài)修復(fù)資源共享合同(2篇)
- 甲乙方協(xié)議書(2篇)
- 2025年硫酸黏菌素類產(chǎn)品合作協(xié)議書
- 七年級數(shù)學(xué)上冊第29課時和、差、倍、分問題聽評課記錄新湘教版
- 新版華東師大版八年級數(shù)學(xué)下冊《17.3.2一次函數(shù)的圖象1》聽評課記錄21
- 統(tǒng)編版初中語文八年級下冊第五課《大自然的語言》聽評課記錄
- 七年級(人教版)集體備課聽評課記錄:1.2.1《有理數(shù)》
- 人教部編版歷史七年級下冊第15課 《明朝對外的關(guān)系》 聽課評課記錄10
- 2024變電站無人機(jī)巡檢系統(tǒng)規(guī)范第1部分:技術(shù)規(guī)范
- 機(jī)動車商業(yè)保險條款(2020版)
- 《大小比較》(說課課件)二年級下冊數(shù)學(xué)西師大版
- 張五常子女和婚姻合約中的產(chǎn)權(quán)執(zhí)行問題
- 口腔粘膜常見疾病
- 校園安全派出所
- 餐廳值班管理培訓(xùn)
- XXXX無線維護(hù)崗位認(rèn)證教材故障處理思路及案例分析
- 酒店春節(jié)營銷方案
- 營銷管理方案中的定價策略與盈利模式
- 2024年西寧城市職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
評論
0/150
提交評論