某企業(yè)經(jīng)過多年的信息化建設,存在大量的應用軟件系統(tǒng),為了保證這些系統(tǒng)的運行與維護,專門組建應用系統(tǒng)維護部門。該部門的主要工作是保證系統(tǒng)的正常運行、處理問題以及擴展這些應該系統(tǒng)的功能,以滿足企業(yè)業(yè)務功能的變化與擴展。 目前該部門存在人員流失、變更頻繁,文檔丟失或長期失于維護,維護成本愈來愈高等問題,具體表現(xiàn)為:
問題(1):隨著時間和人員的變動,程序被多人修改,往往導致程序難以理解,注釋混亂,流程復雜;
問題(2):隨著不斷修改程序和增加新的功能,模塊之間的耦合關系日益復雜,維護成本不斷增加。
這些問題導致新來的維護人員需要直接面對大量流程、結(jié)構(gòu)復雜的源程序,維護困難,往往一次改動需要設計大量的軟件模塊。
為解決應用系統(tǒng)維護部門面對的問題,企業(yè)信息部門組織了專門的專家討論會。各位專家一致認為,逆向工程與重構(gòu)工程是目前預防性維護采用的主要技術(shù),應該采用逆向工程的技術(shù)方法,重構(gòu)相關應用系統(tǒng)文檔,同時采用軟件重構(gòu)來降低軟件代碼的復雜性,最終降低維護成本。
【問題1】(8分) 軟件的逆向工程是分析已有程序,尋求比源代碼更高級的抽象表現(xiàn)形式。與之相關的概念包括軟件重構(gòu)、設計恢復、重構(gòu)工程等。請說明設計恢復中常見的恢復信息的4種級別。
【問題2】(11分) 重構(gòu)是對軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整,目的是不改變軟件功能的前提下,提高其可理解性,降低其修改成本。請說明軟件重構(gòu)的三個類別,并簡要說明常見的重構(gòu)方法。針對題干中的問題(1)和問題(2),宜采用何種重構(gòu)方法?
【問題3】(6分) 軟件重構(gòu)做出的修改可能導致程序運行變慢,但也更容易進行軟件的性能優(yōu)化和調(diào)整,請分析原因。