很多企業(yè)已經(jīng)建立了許多龐大的計(jì)算機(jī)管理系統(tǒng),而且將不斷地推出新的系統(tǒng)。滿足經(jīng)營(yíng)的需求須不斷維護(hù)、改造計(jì)算機(jī)系統(tǒng),但同時(shí)又要不影響現(xiàn)行生產(chǎn),所以必須建立一整套機(jī)制來(lái)評(píng)價(jià)、控制和完成對(duì)系統(tǒng)的維護(hù)。在軟件維護(hù)過(guò)程中,提出程序與文檔合一的概念在軟件開發(fā)的同時(shí)建立動(dòng)態(tài)文檔。 程序與文檔合一概念的提出 一、目前軟件的狀況
程序與文檔的形式分離,不僅是用各自獨(dú)立的形式存放,而且使用不同的工具在不同的時(shí)間里書寫和檢索。維護(hù)程序時(shí)不能方便地得到文檔的幫助,不能同步修改文檔。
程序與文檔的內(nèi)容分離,由于程序與文檔采用不同的描述,既有計(jì)算機(jī)語(yǔ)言也有自然語(yǔ)言。維護(hù)過(guò)程中不能及時(shí)、一致地更新文檔或程序,使文檔不能準(zhǔn)確地描述程序而幾乎成為廢紙甚至帶來(lái)負(fù)面價(jià)值。
軟件開發(fā)與維護(hù)的分離,絕大多數(shù)軟件在設(shè)計(jì)、開發(fā)時(shí)不太考慮以后可能的修改,加大了軟件維護(hù)的難度,而且使維護(hù)容易引入新的錯(cuò)誤。
這些分離也表現(xiàn)在設(shè)計(jì)、開發(fā)的不同階段的文檔之間的不相容性,例如:需求分析說(shuō)明書是紙上的東西,在概要設(shè)計(jì)階段不能很好地繼承、利用需求分析說(shuō)明書,設(shè)計(jì)、編制概要設(shè)計(jì)時(shí)必須從零開始,需要重新分析、理解需求分析,這種思維上的脫節(jié),不僅延緩開發(fā)進(jìn)度、加重設(shè)計(jì)人員的負(fù)擔(dān),而且由于理解上的不同導(dǎo)致不同階段描述的對(duì)象有許多不相容情況。這些分離使得文檔在系統(tǒng)的設(shè)計(jì)、開發(fā)、維護(hù)中的作用下降,這也是很多軟件人員不愿意編寫文檔的主要原因。
二、程序與文檔合一的概念提出 怎樣才是好的文檔系統(tǒng)呢?應(yīng)當(dāng)具備以下屬性: 1. 能夠準(zhǔn)確地描述軟件、并且簡(jiǎn)單易懂; 2. 能夠迅速錯(cuò)誤定位、影響分析、修正設(shè)計(jì); 3. 能夠提高軟件維護(hù)質(zhì)量; 4. 能夠方便程序修改時(shí)理解程序。
為此提出了程序與文檔合一的概念。這概念使軟件成為真正意義上的軟件:程序+文檔,程序就是文檔,文檔集成在程序中。它要求在選擇開發(fā)環(huán)境時(shí)不僅要考慮環(huán)境對(duì)設(shè)計(jì)、開發(fā)的完美支持,而且要考慮對(duì)維護(hù)、文檔的支持;它要求軟件人員在設(shè)計(jì)、開發(fā)過(guò)程中要考慮維護(hù)問(wèn)題、文檔問(wèn)題;它要求程序與文檔存儲(chǔ)在同一位置、同一系統(tǒng)中;它要求使用相同工具進(jìn)行程序與文檔的書寫、檢索;它要求在編寫和維護(hù)程序的同時(shí)形成文檔,在書寫文檔時(shí)編寫、維護(hù)程序。程序與文檔合一的概念不僅存在于系統(tǒng)的設(shè)計(jì)、開發(fā)階段而且存在于系統(tǒng)的維護(hù)階段,它貫穿軟件的生命周期。
動(dòng)態(tài)文檔系統(tǒng)是建立在程序與文檔合一的概念基礎(chǔ)上的、文檔與程序一致的、簡(jiǎn)單易懂的聯(lián)機(jī)文檔系統(tǒng)。它包括構(gòu)件說(shuō)明與數(shù)據(jù)描述、對(duì)構(gòu)件與構(gòu)件之間、構(gòu)件與數(shù)據(jù)之間的關(guān)系進(jìn)行的描述。動(dòng)態(tài)文檔系統(tǒng)是提高了文檔的可用性、易用性和連貫性,使文檔更加有效,是解決維護(hù)問(wèn)題的有效途徑。
動(dòng)態(tài)文檔系統(tǒng)問(wèn)題分析 需要解決的問(wèn)題是:軟件文檔的內(nèi)容劃分與獲取、文檔的存儲(chǔ)與維護(hù)、文檔的檢索、軟件文檔的生成打印。
一、軟件文檔的內(nèi)容劃分成:語(yǔ)義文檔、結(jié)構(gòu)文檔、過(guò)程文檔 語(yǔ)義文檔是對(duì)軟件的功能、概念、總體設(shè)計(jì)、流程、規(guī)約等用自然語(yǔ)言的描述,是軟件人員根據(jù)規(guī)范在使用CASE工具編寫并填入程序的文檔,它也是為更全面的解釋文檔而靈活加入的額外信息。
結(jié)構(gòu)文檔是在軟件設(shè)計(jì)工具、開發(fā)環(huán)境中對(duì)象的屬性、構(gòu)件間接口、構(gòu)件間引用關(guān)系、軟件的結(jié)構(gòu)等的描述。利用詞法、語(yǔ)法分析程序?qū)φ麄€(gè)系統(tǒng)的對(duì)象、構(gòu)件進(jìn)行識(shí)別、分析,獲取上述描述并形成表格文件。
過(guò)程文檔是對(duì)軟件的設(shè)計(jì)、編碼、維護(hù)過(guò)程中形成的過(guò)程描述和程序注釋,如設(shè)計(jì)目的、設(shè)計(jì)人、時(shí)間等說(shuō)明,利用開發(fā)環(huán)境對(duì)軟件人員在設(shè)計(jì)、開發(fā)、維護(hù)過(guò)程中操作的記錄形成操作跟蹤。
二、程序與文檔的統(tǒng)一存儲(chǔ)與維護(hù) 根據(jù)程序與文檔合一的概念和文檔從程序中提取的要求,文檔必須存放在程序中,甚至文檔固有的源代碼中。結(jié)構(gòu)如此的程序源代碼的存儲(chǔ)必須采用一種新技術(shù)—對(duì)象倉(cāng)儲(chǔ)(Repository)技術(shù),而不能采用流式文件,這樣才能使程序與文檔既結(jié)合又分離。程序與文檔結(jié)合在一個(gè)對(duì)象倉(cāng)儲(chǔ)中,結(jié)合在統(tǒng)一的開發(fā)環(huán)境中;結(jié)合在修改代碼時(shí)可以同時(shí)修改文檔、修改文檔時(shí)可以同時(shí)人工檢查和修改程序,并在多次文檔生成而不會(huì)丟失手工輸入的文檔。程序與文檔應(yīng)當(dāng)分別存放在對(duì)象倉(cāng)儲(chǔ)中的不同表或不同的字段中,在編譯與運(yùn)行時(shí)分離。
三、文檔的檢索 對(duì)單個(gè)對(duì)象、構(gòu)件文檔的檢索方式是若于文檔存放在一個(gè)對(duì)象倉(cāng)儲(chǔ)中,它可以隨源代碼一起檢索和維護(hù)。這種檢索給分析和維護(hù)單個(gè)構(gòu)件、對(duì)象提供文檔支持。建立多種視圖、編寫程序?qū)φ麄€(gè)系統(tǒng)進(jìn)行文檔的檢索和獲取,完成對(duì)整個(gè)系統(tǒng)的分析,對(duì)整個(gè)系統(tǒng)進(jìn)行實(shí)時(shí)文檔支持。這將在例子中較詳細(xì)的描述。
四、軟件文檔的生成打印 編寫程序檢索和獲取整個(gè)系統(tǒng)的文檔,按照國(guó)家軟件標(biāo)準(zhǔn)的文檔式樣建立文檔模板并將按模板生成文檔和利用文字處理軟件強(qiáng)大的功能進(jìn)行創(chuàng)建、編輯文檔并打印。
根據(jù)上述分析,文檔分布和獲取對(duì)開發(fā)環(huán)境提出了要求:開發(fā)環(huán)境應(yīng)該是設(shè)計(jì)工具、開發(fā)工具的集成,應(yīng)該基于CASE技術(shù)、對(duì)象倉(cāng)儲(chǔ)技術(shù)、構(gòu)件技術(shù)、OLE技術(shù)?;贑ASE技術(shù)的開發(fā)環(huán)境;設(shè)計(jì)、開發(fā)、維護(hù)過(guò)程中形成的文檔并植入程序代碼中,使文檔成為程序的一部分。基于對(duì)象倉(cāng)儲(chǔ)技術(shù)的開發(fā)環(huán)境,將文檔與程序統(tǒng)一存儲(chǔ)在對(duì)象倉(cāng)儲(chǔ)中方便檢索?;跇?gòu)件技術(shù)的開發(fā)環(huán)境,便于識(shí)別、獲取構(gòu)件,分析、形成結(jié)構(gòu)文檔和過(guò)程文檔?;贠LE等技術(shù)使文檔可以很好地利用Word等文檔處理軟件。
動(dòng)態(tài)文檔系統(tǒng)的一個(gè)應(yīng)用實(shí)例 廣州電信科技開發(fā)有限公司自行設(shè)計(jì)、開發(fā)的名為九七系統(tǒng)的龐大的電信管理計(jì)算機(jī)系統(tǒng)自1997年投產(chǎn)驗(yàn)收后,將長(zhǎng)期用于生產(chǎn),維護(hù)工作非常重要和緊迫。這為動(dòng)態(tài)文檔系統(tǒng)提供了需求和試驗(yàn)場(chǎng)所。在長(zhǎng)期維護(hù)的過(guò)程中,體會(huì)到好文檔的重要性并提出了程序文檔合一的概念,這為動(dòng)態(tài)文檔系統(tǒng)提供了理論基礎(chǔ)。九七系統(tǒng)是使用Uniface開發(fā)環(huán)境。這種開發(fā)環(huán)境采用了CASE技術(shù)、對(duì)象倉(cāng)儲(chǔ)技術(shù)、構(gòu)件技術(shù),這為動(dòng)態(tài)文檔系統(tǒng)提供了技術(shù)支撐。
一、廣州電信動(dòng)態(tài)文檔系統(tǒng)的建立步驟 1. 理解Uniface、Oracle工具的開發(fā)環(huán)境,規(guī)劃語(yǔ)義文檔在各級(jí)對(duì)象中存放的表與字段,并根據(jù)工具的特性制定填寫的規(guī)則。
2. 尋找結(jié)構(gòu)文檔、過(guò)程文檔在Uniface、Oracle工具中存放的表與字段。
3. 在設(shè)計(jì)、開發(fā)和維護(hù)軟件的過(guò)程中對(duì)這些表或字段按照規(guī)則進(jìn)行填寫。
4. 建立一整套模板使文檔結(jié)構(gòu)與信息源建立映像,包括:數(shù)據(jù)字典模板、設(shè)計(jì)文檔模板、結(jié)構(gòu)文檔模板、開發(fā)過(guò)程文檔模板等。
5. 將這些模板組裝成文檔系統(tǒng),并使它獨(dú)立于開發(fā)目標(biāo)系統(tǒng)。
廣州電信動(dòng)態(tài)文檔系統(tǒng)的組成可以分為文檔查詢、維護(hù)記錄查詢、文檔生成。
文檔查詢不僅包括構(gòu)件說(shuō)明與數(shù)據(jù)描述,而且包括對(duì)構(gòu)件與數(shù)據(jù)之間的關(guān)系的描述,是實(shí)時(shí)的聯(lián)機(jī)文檔查詢系統(tǒng)。維護(hù)記錄查詢是對(duì)軟件維護(hù)過(guò)程中的各個(gè)環(huán)節(jié)進(jìn)程進(jìn)行記錄與追蹤,用于規(guī)范維護(hù)工作。它包括問(wèn)題報(bào)告、問(wèn)題分析、錯(cuò)誤定位、維護(hù)設(shè)計(jì)、維護(hù)執(zhí)行、確認(rèn)測(cè)試、維護(hù)評(píng)審、維護(hù)提交、問(wèn)題跟蹤等。文檔生成則是根據(jù)需要實(shí)時(shí)生成軟件設(shè)計(jì)說(shuō)明書。
二、程序與文檔合一概念與動(dòng)態(tài)文檔系統(tǒng)的意義
廣州電信動(dòng)態(tài)文檔系統(tǒng)的基本任務(wù)是輔助錯(cuò)誤定位、維護(hù)影響分析、記錄維護(hù)進(jìn)程、生成文檔。使用Uniface的開發(fā)環(huán)境開發(fā)的,可以安裝在用Uniface開發(fā)的不同的應(yīng)用系統(tǒng)中。該系統(tǒng)已經(jīng)在九七計(jì)費(fèi)系統(tǒng)的維護(hù)中發(fā)揮重要作用。
它推崇的程序與文檔合一的概念,提出文檔就是程序,程序就是文檔的思路,文檔融合在程序中的構(gòu)思并已實(shí)現(xiàn),這一概念指導(dǎo)了軟件人員進(jìn)行有效地工作。合一的概念貫穿了設(shè)計(jì)、開發(fā)、維護(hù)整個(gè)軟件周期,保證了文檔之間的繼承性和一致性,在設(shè)計(jì)、開發(fā)每一階段是繼承前階段的程序和文檔的結(jié)果。這樣極大地消除了程序與文檔、文檔與文檔之間的不一致性,加快了軟件設(shè)計(jì)進(jìn)度,提高了軟件開發(fā)、維護(hù)的質(zhì)量。它是軟件工程在具體應(yīng)用中的一種嘗試,它從程序文檔合一的角度出發(fā),進(jìn)一步規(guī)范軟件設(shè)計(jì)、開發(fā)、維護(hù)。程序文檔合一的概念為軟件開發(fā)環(huán)境發(fā)展提供了一種思路;設(shè)計(jì)更好的對(duì)象倉(cāng)儲(chǔ)來(lái)滿足開發(fā)、維護(hù)人員對(duì)程序文檔合一的概念的需求。
動(dòng)態(tài)文檔系統(tǒng)的局限與發(fā)展 廣州電信動(dòng)態(tài)文檔系統(tǒng)有很大的局限性,只能用于Uniface或Oracle開發(fā)的系統(tǒng)中。目前的廣州電信動(dòng)態(tài)文檔系統(tǒng)的構(gòu)件的識(shí)別與獲取主要依賴開發(fā)工具提供的構(gòu)件和構(gòu)件的特征進(jìn)行識(shí)別的。這種動(dòng)態(tài)文檔系統(tǒng)難以在一些3GL工具—未使用對(duì)象倉(cāng)儲(chǔ)技術(shù)、構(gòu)件技術(shù)開發(fā)的軟件—中實(shí)現(xiàn)程序與文檔的合一與分離。大型軟件系統(tǒng)的環(huán)境是復(fù)雜的,往往采用了多種開發(fā)環(huán)境,如何對(duì)其他開發(fā)環(huán)境進(jìn)行支持還要進(jìn)行技術(shù)探討和實(shí)踐上的摸索。
另一個(gè)局限問(wèn)題是目前的動(dòng)態(tài)文檔系統(tǒng)描述的是程序文檔,其主要在編碼、維護(hù)的過(guò)程中進(jìn)行建設(shè),系統(tǒng)進(jìn)入維護(hù)階段使用。如何使動(dòng)態(tài)文檔系統(tǒng)不僅對(duì)軟件維護(hù)階段進(jìn)行支持,而且對(duì)軟件的設(shè)計(jì)、開發(fā)階段進(jìn)行更多的支持?一種可能的解決途徑是將軟件復(fù)用技術(shù)拓寬到包括文檔復(fù)用,包括程序復(fù)用、程序文檔復(fù)用和設(shè)計(jì)文檔復(fù)用,而且將動(dòng)態(tài)文檔系統(tǒng)建立在基于這種軟件復(fù)用系統(tǒng)之上。
|