葉明的javablog

          java學習天堂,個人關于其他blog:blog.javaworker.cn,歡迎大家訪問
          posts - 64, comments - 50, trackbacks - 0, articles - 3

          程序文檔合一與動態(tài)文檔

          Posted on 2006-03-16 13:01 天空蒼茫 閱讀(107) 評論(0)  編輯  收藏
          很多企業(yè)已經(jīng)建立了許多龐大的計算機管理系統(tǒng),而且將不斷地推出新的系統(tǒng)。滿足經(jīng)營的需求須不斷維護、改造計算機系統(tǒng),但同時又要不影響現(xiàn)行生產(chǎn),所以必須建立一整套機制來評價、控制和完成對系統(tǒng)的維護。在軟件維護過程中,提出程序與文檔合一的概念在軟件開發(fā)的同時建立動態(tài)文檔。

          程序與文檔合一概念的提出


          一、目前軟件的狀況


            程序與文檔的形式分離,不僅是用各自獨立的形式存放,而且使用不同的工具在不同的時間里書寫和檢索。維護程序時不能方便地得到文檔的幫助,不能同步修改文檔。


            程序與文檔的內容分離,由于程序與文檔采用不同的描述,既有計算機語言也有自然語言。維護過程中不能及時、一致地更新文檔或程序,使文檔不能準確地描述程序而幾乎成為廢紙甚至帶來負面價值。


            軟件開發(fā)與維護的分離,絕大多數(shù)軟件在設計、開發(fā)時不太考慮以后可能的修改,加大了軟件維護的難度,而且使維護容易引入新的錯誤。


            這些分離也表現(xiàn)在設計、開發(fā)的不同階段的文檔之間的不相容性,例如:需求分析說明書是紙上的東西,在概要設計階段不能很好地繼承、利用需求分析說明書,設計、編制概要設計時必須從零開始,需要重新分析、理解需求分析,這種思維上的脫節(jié),不僅延緩開發(fā)進度、加重設計人員的負擔,而且由于理解上的不同導致不同階段描述的對象有許多不相容情況。這些分離使得文檔在系統(tǒng)的設計、開發(fā)、維護中的作用下降,這也是很多軟件人員不愿意編寫文檔的主要原因。

          二、程序與文檔合一的概念提出


            怎樣才是好的文檔系統(tǒng)呢?應當具備以下屬性:
            1. 能夠準確地描述軟件、并且簡單易懂;
            2. 能夠迅速錯誤定位、影響分析、修正設計;
            3. 能夠提高軟件維護質量;
            4. 能夠方便程序修改時理解程序。


            為此提出了程序與文檔合一的概念。這概念使軟件成為真正意義上的軟件:程序+文檔,程序就是文檔,文檔集成在程序中。它要求在選擇開發(fā)環(huán)境時不僅要考慮環(huán)境對設計、開發(fā)的完美支持,而且要考慮對維護、文檔的支持;它要求軟件人員在設計、開發(fā)過程中要考慮維護問題、文檔問題;它要求程序與文檔存儲在同一位置、同一系統(tǒng)中;它要求使用相同工具進行程序與文檔的書寫、檢索;它要求在編寫和維護程序的同時形成文檔,在書寫文檔時編寫、維護程序。程序與文檔合一的概念不僅存在于系統(tǒng)的設計、開發(fā)階段而且存在于系統(tǒng)的維護階段,它貫穿軟件的生命周期。


            動態(tài)文檔系統(tǒng)是建立在程序與文檔合一的概念基礎上的、文檔與程序一致的、簡單易懂的聯(lián)機文檔系統(tǒng)。它包括構件說明與數(shù)據(jù)描述、對構件與構件之間、構件與數(shù)據(jù)之間的關系進行的描述。動態(tài)文檔系統(tǒng)是提高了文檔的可用性、易用性和連貫性,使文檔更加有效,是解決維護問題的有效途徑。

          動態(tài)文檔系統(tǒng)問題分析


            需要解決的問題是:軟件文檔的內容劃分與獲取、文檔的存儲與維護、文檔的檢索、軟件文檔的生成打印。

          一、軟件文檔的內容劃分成:語義文檔、結構文檔、過程文檔


            語義文檔是對軟件的功能、概念、總體設計、流程、規(guī)約等用自然語言的描述,是軟件人員根據(jù)規(guī)范在使用CASE工具編寫并填入程序的文檔,它也是為更全面的解釋文檔而靈活加入的額外信息。


            結構文檔是在軟件設計工具、開發(fā)環(huán)境中對象的屬性、構件間接口、構件間引用關系、軟件的結構等的描述。利用詞法、語法分析程序對整個系統(tǒng)的對象、構件進行識別、分析,獲取上述描述并形成表格文件。


            過程文檔是對軟件的設計、編碼、維護過程中形成的過程描述和程序注釋,如設計目的、設計人、時間等說明,利用開發(fā)環(huán)境對軟件人員在設計、開發(fā)、維護過程中操作的記錄形成操作跟蹤。

          二、程序與文檔的統(tǒng)一存儲與維護


            根據(jù)程序與文檔合一的概念和文檔從程序中提取的要求,文檔必須存放在程序中,甚至文檔固有的源代碼中。結構如此的程序源代碼的存儲必須采用一種新技術—對象倉儲(Repository)技術,而不能采用流式文件,這樣才能使程序與文檔既結合又分離。程序與文檔結合在一個對象倉儲中,結合在統(tǒng)一的開發(fā)環(huán)境中;結合在修改代碼時可以同時修改文檔、修改文檔時可以同時人工檢查和修改程序,并在多次文檔生成而不會丟失手工輸入的文檔。程序與文檔應當分別存放在對象倉儲中的不同表或不同的字段中,在編譯與運行時分離。

          三、文檔的檢索


            對單個對象、構件文檔的檢索方式是若于文檔存放在一個對象倉儲中,它可以隨源代碼一起檢索和維護。這種檢索給分析和維護單個構件、對象提供文檔支持。建立多種視圖、編寫程序對整個系統(tǒng)進行文檔的檢索和獲取,完成對整個系統(tǒng)的分析,對整個系統(tǒng)進行實時文檔支持。這將在例子中較詳細的描述。

          四、軟件文檔的生成打印


            編寫程序檢索和獲取整個系統(tǒng)的文檔,按照國家軟件標準的文檔式樣建立文檔模板并將按模板生成文檔和利用文字處理軟件強大的功能進行創(chuàng)建、編輯文檔并打印。


            根據(jù)上述分析,文檔分布和獲取對開發(fā)環(huán)境提出了要求:開發(fā)環(huán)境應該是設計工具、開發(fā)工具的集成,應該基于CASE技術、對象倉儲技術、構件技術、OLE技術。基于CASE技術的開發(fā)環(huán)境;設計、開發(fā)、維護過程中形成的文檔并植入程序代碼中,使文檔成為程序的一部分。基于對象倉儲技術的開發(fā)環(huán)境,將文檔與程序統(tǒng)一存儲在對象倉儲中方便檢索。基于構件技術的開發(fā)環(huán)境,便于識別、獲取構件,分析、形成結構文檔和過程文檔。基于OLE等技術使文檔可以很好地利用Word等文檔處理軟件。

          動態(tài)文檔系統(tǒng)的一個應用實例


            廣州電信科技開發(fā)有限公司自行設計、開發(fā)的名為九七系統(tǒng)的龐大的電信管理計算機系統(tǒng)自1997年投產(chǎn)驗收后,將長期用于生產(chǎn),維護工作非常重要和緊迫。這為動態(tài)文檔系統(tǒng)提供了需求和試驗場所。在長期維護的過程中,體會到好文檔的重要性并提出了程序文檔合一的概念,這為動態(tài)文檔系統(tǒng)提供了理論基礎。九七系統(tǒng)是使用Uniface開發(fā)環(huán)境。這種開發(fā)環(huán)境采用了CASE技術、對象倉儲技術、構件技術,這為動態(tài)文檔系統(tǒng)提供了技術支撐。

          一、廣州電信動態(tài)文檔系統(tǒng)的建立步驟


            1. 理解Uniface、Oracle工具的開發(fā)環(huán)境,規(guī)劃語義文檔在各級對象中存放的表與字段,并根據(jù)工具的特性制定填寫的規(guī)則。


            2. 尋找結構文檔、過程文檔在Uniface、Oracle工具中存放的表與字段。


            3. 在設計、開發(fā)和維護軟件的過程中對這些表或字段按照規(guī)則進行填寫。


            4. 建立一整套模板使文檔結構與信息源建立映像,包括:數(shù)據(jù)字典模板、設計文檔模板、結構文檔模板、開發(fā)過程文檔模板等。


            5. 將這些模板組裝成文檔系統(tǒng),并使它獨立于開發(fā)目標系統(tǒng)。


            廣州電信動態(tài)文檔系統(tǒng)的組成可以分為文檔查詢、維護記錄查詢、文檔生成。


            文檔查詢不僅包括構件說明與數(shù)據(jù)描述,而且包括對構件與數(shù)據(jù)之間的關系的描述,是實時的聯(lián)機文檔查詢系統(tǒng)。維護記錄查詢是對軟件維護過程中的各個環(huán)節(jié)進程進行記錄與追蹤,用于規(guī)范維護工作。它包括問題報告、問題分析、錯誤定位、維護設計、維護執(zhí)行、確認測試、維護評審、維護提交、問題跟蹤等。文檔生成則是根據(jù)需要實時生成軟件設計說明書。


          二、程序與文檔合一概念與動態(tài)文檔系統(tǒng)的意義


            廣州電信動態(tài)文檔系統(tǒng)的基本任務是輔助錯誤定位、維護影響分析、記錄維護進程、生成文檔。使用Uniface的開發(fā)環(huán)境開發(fā)的,可以安裝在用Uniface開發(fā)的不同的應用系統(tǒng)中。該系統(tǒng)已經(jīng)在九七計費系統(tǒng)的維護中發(fā)揮重要作用。


            它推崇的程序與文檔合一的概念,提出文檔就是程序,程序就是文檔的思路,文檔融合在程序中的構思并已實現(xiàn),這一概念指導了軟件人員進行有效地工作。合一的概念貫穿了設計、開發(fā)、維護整個軟件周期,保證了文檔之間的繼承性和一致性,在設計、開發(fā)每一階段是繼承前階段的程序和文檔的結果。這樣極大地消除了程序與文檔、文檔與文檔之間的不一致性,加快了軟件設計進度,提高了軟件開發(fā)、維護的質量。它是軟件工程在具體應用中的一種嘗試,它從程序文檔合一的角度出發(fā),進一步規(guī)范軟件設計、開發(fā)、維護。程序文檔合一的概念為軟件開發(fā)環(huán)境發(fā)展提供了一種思路;設計更好的對象倉儲來滿足開發(fā)、維護人員對程序文檔合一的概念的需求。

          動態(tài)文檔系統(tǒng)的局限與發(fā)展
            廣州電信動態(tài)文檔系統(tǒng)有很大的局限性,只能用于Uniface或Oracle開發(fā)的系統(tǒng)中。目前的廣州電信動態(tài)文檔系統(tǒng)的構件的識別與獲取主要依賴開發(fā)工具提供的構件和構件的特征進行識別的。這種動態(tài)文檔系統(tǒng)難以在一些3GL工具—未使用對象倉儲技術、構件技術開發(fā)的軟件—中實現(xiàn)程序與文檔的合一與分離。大型軟件系統(tǒng)的環(huán)境是復雜的,往往采用了多種開發(fā)環(huán)境,如何對其他開發(fā)環(huán)境進行支持還要進行技術探討和實踐上的摸索。


            另一個局限問題是目前的動態(tài)文檔系統(tǒng)描述的是程序文檔,其主要在編碼、維護的過程中進行建設,系統(tǒng)進入維護階段使用。如何使動態(tài)文檔系統(tǒng)不僅對軟件維護階段進行支持,而且對軟件的設計、開發(fā)階段進行更多的支持?一種可能的解決途徑是將軟件復用技術拓寬到包括文檔復用,包括程序復用、程序文檔復用和設計文檔復用,而且將動態(tài)文檔系統(tǒng)建立在基于這種軟件復用系統(tǒng)之上。


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 黄龙县| 宜昌市| 河北区| 宜兰县| 色达县| 璧山县| 镇宁| 庆阳市| 容城县| 深水埗区| 调兵山市| 伽师县| 延长县| 和平县| 兴仁县| 崇仁县| 嘉义市| 双牌县| 宣武区| 钦州市| 灵丘县| 思茅市| 武强县| 天峨县| 务川| 榆树市| 漯河市| 梁河县| 旅游| 富阳市| 谷城县| 河源市| 若尔盖县| 罗城| 穆棱市| 广宗县| 泊头市| 嘉义县| 元谋县| 江门市| 苏尼特左旗|