[發明專利]一種軟件重構位置確定方法及裝置在審
| 申請號: | 201410058144.2 | 申請日: | 2014-02-20 |
| 公開(公告)號: | CN103853554A | 公開(公告)日: | 2014-06-11 |
| 發明(設計)人: | 張重峰 | 申請(專利權)人: | 上海大唐移動通信設備有限公司;大唐移動通信設備有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 劉松 |
| 地址: | 200233 上*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 軟件 位置 確定 方法 裝置 | ||
技術領域
本發明涉及計算機軟件領域,尤其涉及一種軟件重構位置確定方法及裝置。
背景技術
重構指對軟件代碼做任何更動以增加可讀性或者簡化結構而不影響輸出結果。在極限編程或其他敏捷方法學中,重構常常是軟件開發循環的一部分:開發者輪流增加新的測試和功能,并重構代碼來增進內部的清晰性和一致性。
重構既不修正錯誤,又不增加新的功能性,是用于提高代碼的可讀性或者改變代碼內部結構與設計,并且移除死代碼,使其在將來更容易被維護。
重構代碼可以是結構層面或是語意層面的重構,不同的重構手段施行時,可能是結構的調整或是語意的轉換,但前提是不影響代碼在轉換前后的行為。特別是,在現有的程序的結構下,給一個程序增加一個新的行為可能會非常困難,因此開發人員可能先重構這部分代碼,使加入新的行為變得容易。
識別程序中哪些地方存在不合理、哪些代碼需要被重構是重構的難點,因為對于不合理的理解取決于很多因素,在很大程度上存在主觀性。因此,如何自動識別重構對象是限制重構技術發展的瓶頸。目前,主要依靠人工識別,這樣不但效率低,而且正確性不高,從而制約了重構技術的發展。因此,自動地識別重構對象對重構技術的發展非常重要。
識別重構對象的方法之一是靜態分析。Kamiya等人首先提出一種自動識別克隆代碼的技術,這是自動化識別重構對象的雛形。他們通過一些規則,把源程序轉換成token(符號),然后分析這些token,從中找出克隆的代碼。根據這種靜態分析的思想,他們開發出能夠自動識別克隆代碼的工具,這是一種早期的自動識別重構對象的工具。Kataoka等人利用動態分析技術,開發出能夠自動檢測程序中不變量的工具,它指導目標程序去跟蹤一些興趣變量,然后在這些變量上運行一些測試套件,最后推斷出哪些變量是不變量。
度量技術也是重構識別的重要方法。如Chidamber等提出的代碼行度量可反映一個類中的方法與屬性之間交互的緊密程度。Briand等提出一種針對類的接口的度量,來分析這個類的接口定義的是否合理。Sheetz等通過扇出度量,來反應一個類與外界的耦合度,這可以幫助識別程序中類間交互的不合理之處。這些方法都可用來輔助維護人員識別程序中的不合理之處。
但是,靜態分析只能靜態的對現有代碼進行分析,而不能分析程序運行流的狀態,故能識別出一些克隆代碼或不合理的代碼,而不能直接支持重構。這需要加入經驗分析,進一步識別出可利用何種重構技術來對現有代碼進行調整。
動態分析技術雖然加入程序運行時信息,但它限于識別不變量的重構,對其他重構沒有很好的支持。而這種重構技術在應用過程,對于降低軟件復雜度,提高軟件的內部質量的支持不是很理想,對軟件的改善效果不明顯。
發明內容
本發明實施例提供一種軟件重構位置確定方法及裝置,以實現對軟件中需要重構的地方進行較好的識別。
本發明實施例提供的一種軟件重構位置確定方法,包括:
在程序依賴圖或系統依賴圖上對軟件程序進行設定粒度的程序切片,獲得具有多個節點以及表示節點間的依賴關系的連接路徑的面向對象系統依賴圖;
根據面向對象系統依賴圖,確定相應粒度的每兩個元素間的依賴值為兩個元素對應的節點間的最短路徑中所包括的連接路徑的權值的和;
根據所述依賴值確定各元素之間的依賴度;
確定兩個元素之間的依賴度達到設定條件且兩個元素不在軟件的同一模塊中時,確定其中的至少一個元素需要進行重構。
在對軟件進行程序切片后,根據面向對象系統依賴圖確定相應粒度的每兩個元素間的依賴值,進而確定兩個元素間的依賴度,若兩個元素之間的依賴度達到設定條件且兩個元素不在同一模塊中,則可以確定其中的至少一個元素需要進行重構,進而實現對軟件中需要重構的地方進行較好的識別。
進一步,為了提高所確定的依賴值的準確性,所述根據面向對象系統依賴圖,確定相應粒度的每兩個元素間的依賴值為兩個元素對應的節點間的最短路徑中所包括的連接路徑的權值的和前,還包括:
確定要確定依賴值的兩個元素為元素A和元素B;
確定在面向對象系統依賴圖中,元素A無后繼節點,且元素B是元素A的后向切片中的一點;或者確定在面向對象系統依賴圖中元素A的所有后繼節點到元素B的路徑都經過元素A。
更進一步,為了提高所確定的依賴值的準確性,還包括:
確定在面向對象系統依賴圖中,元素A無后繼節點,且元素B不是元素A的后向切片中的一點時,確定元素A和元素B之間的依賴值為正無窮;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海大唐移動通信設備有限公司;大唐移動通信設備有限公司,未經上海大唐移動通信設備有限公司;大唐移動通信設備有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410058144.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:超市進銷存系統
- 下一篇:具有預定義警告的業務管理系統





