計算機軟體設計的探討論文
計算機技術的發展帶來了全社會的變革,人們的生活對計算機的依賴越來越強,所使用的軟體也越來越複雜,對開發軟體所使用的技術也要求越來越高。下面是小編給大家推薦的,希望大家喜歡!
篇一
《淺談計算機軟體重構技術》
摘要:本文闡述了軟體重構技術的現狀,研究意義和發展前景。
關鍵詞:軟體重構 原型開發 簡化 複用 測試
1、軟體重構的定義
軟體維護最初最貼切的形容就是“打補丁”,所有的維護工作採用的都是一種消極但快速的方法。如果發現系統有問題,維護人員就快速找到這個問題,然後修改原始碼,解決這個問題。如果要新增一個新的功能,那就找到一個相似的模組,修改程式碼以後放進去。這樣反覆多次之後,系統變得越來越臃腫,越來越難於理解,維護也越來越艱難、越來代價越高。人們期望解決這一問題的根本辦法,於是軟體重構技術應運而生。通過這種技術,使得編碼更加謹慎合理,編碼時如果非常小心,則程式碼會具有良好的形狀和味道,在修改新增程式碼前,通過檢視程式碼的形狀和味道來決定是否進行更新。如果程式碼不容易被理解,則必須重構程式碼以使得維護變得容易,再進行相應的擴充套件和更新。
軟體重構是指在不改變軟體的功能和外部可見性的情況下,為了改善軟體的結構,提高清晰性、可擴充套件性和可重用性而對軟體進行的改造。簡而言之,重構就是改進已經寫好的軟體的設計。也就是說,改進後的軟體其原有的功能和行為都不改變,改變的僅僅是程式內部的編碼。重構是在原始碼級別上進行的,目的是使原有的程式碼在重構後具有良好的程式結構。
2、軟體重構的意義
計算機技術的發展帶來了全社會的變革,人們的生活對計算機的依賴越來越強,所使用的軟體也越來越複雜,對開發軟體所使用的技術也要求越來越高。面向物件開發方法等有利於軟體利用的方法和技術得到了廣泛的運用。但同時也顯示出一些弊端。為了開發出使用方便,利於維護的軟體系統,軟體開發人員希望把初始系統設計得儘可能的完美、靈活、具有良好的可擴充套件性。這不僅要求軟體開發人員具有較高的軟體設計能力,而且,再完美的設計也不可能完全適應未來的需求變化。解決這一問題的方法是軟體工程中的原型開發方法,在原型開發方法中,系統開發人員首先快速開發出一個系統原型提供給使用者使用,通過使用者在使用過程中的不斷反饋來對系統進行修改直到最後開發出系統的成熟版本。軟體擴充套件是在軟體重構的基礎上完成的。在需要擴充套件時,使用軟體重構方法和重構工具,採取提取抽象資料型別、提取介面等技術對程式碼結構進行改造,以利於軟體的維護、功能的增加等活動。
對於已經投入使用的系統,由於需求、業務、法規等因素的變化,也會因此而改變,需要在原有的系統上進行修改和擴充。在維護過程中可能會遇到設計風格不一致、過時的程式語言、系統文件過時,不完整和難於理解的問題。這時候,為也延長舊系統的生命週期,降低系統維護成本。就可以採用以原有系統進行重構的方法對軟體進行重構,使其在改善程式結構的基礎上適應需求的變化。
軟體重構也能為程式設計師的編碼帶來好處,首先,可以簡化設計,重構允許系統設計剛好滿足現有需求,不必過多考慮未來的需求,降低了系統設計的複雜程度,當有新的需求時,可以利用重構技術,快速進行設計擴充套件。其次,可以增強程式的可讀性,便於理解他人的程式設計目的,利於快速開發軟體系統。再者,軟體重構可以使程式的結構更加清晰,減少程式設計過程中出現的問題,並且,由於重構是建立在嚴格的測試之上的,所以能夠快速發現問題。將複雜的軟體測試分解為遞進式的簡單測試,降低了測試的複雜度。最重要的是重構可以使得程式碼的可理解性大大提高,原因在於,重構技術支援更小的類、更短的方法、更少的區域性變數、更小的系統耦合,重構可以讓程式設計師養成良好的程式設計習慣。
3、軟體重構的研究現狀
軟體重構的研究緊緊圍繞以下幾個方面展開,目前已經取得了一些成果。
1基本重構方法和複合重構方法的研究,如Opdyke針對C++語言定義的一組基本重構方法,在其中定義的每個基本重構方法中,由前提條件和執行動作組成。在進行重構時以每個基本方法為重構的最小單位。通過執行動作對程式的修改步驟進行描述,前提條件是用來保證程式行為的不變。將這些基本重構方法組合起來形成複合重構,就可以用來解決複雜的重構問題。Roberts等人受Opdyke研究的啟發,對基本重構方法進行了改進,增加了後置條件約束,討論了複合結構中基本重構之間的依賴性問題,提出了計算複合重構前置條件的計算方法,並開發了針對Smalltalk的重構輔助工具。
2不良程式結構的探查和整理。如冗餘程式碼探查和消除、類層次的整理、橫切關注的探查和封裝等。其中冗餘程式碼的探查和消除主要使用字串比較的方法,類層次的整理主要使用“漸進增加類”演算法實現,而橫切叛黨的探查和封裝主要使用面向方面範型進行研究和實踐。
3程式理解方法和工具。要進行軟體維護和軟體重構必須在理解程式結構的基礎上施行。除了針對程式程式碼中的不良程式結構進行探查,還需要圍繞程式的設計模型進行分析。如Pauw等人開發的Ovation系統,使用了執行模式檢視在不同的抽象層次上對程式的執行進行視覺化,並對生成的模型進行一些操作。Storey等人開發Rigi逆向工程環境則使用有向圖表示軟體構件和它們之間的關係。
4面向典型設計的重構方法。如Tokuda和Batory探討了採用手工方式對程式應用設計模式的重構的方法,他們通過實驗指出:一個典型的系統在使用重構和引入設計模式後,可以明顯地增加軟體質量。Tonella和Potrich提出了從C++程式碼中自動抽取UML互動圖的方法。這個基於靜態的程式分析技術的方法,基本可以描述在任何輸入下程式的結果。將物件互動圖的抽取過程分兩步:第一步,從原始碼中推斷出程式所建立的物件和程式中變數;第二步,把方法的每一個呼叫分解成互動過程中包含的傳送類和接收類。
5軟體重構輔助工具。如Opdyke開發的重構輔助工具C++重構工具,Roberts等人開發的Smalltalk Refactory Browser等。這些工具雖然沒能成為實用的工具,但卻是後續研發工作的基礎。
點選下頁還有更多>>>
計算機硬軟體的維護與維修研究論文