2011-12-21 37 views
2

是否有任何可以將OOP代碼(不考慮編程語言,即.NET,Java或PHP)轉換爲AOP的開源工具?用於將OOP代碼轉換爲AOP的工具

+2

AOP將橫切關注點應用於代碼。大概你的意思是一個工具,可以找到跨OOP應用程序的通用代碼,並將其拉出一個方面?我希望你能夠使用克隆檢測器來查找通用代碼,但是我不知道哪些工具會將克隆提取到方面。 – 2011-12-21 05:35:55

+1

關於「大概你的意思是一個工具,可以找到跨OOP應用程序的通用代碼,並將其拉出到一個方面」是的,我正在尋找一個顯示統計分析,以及將OOP代碼轉換成AOP後。 – 2011-12-21 05:42:02

+2

我知道一個工具可以*做到這一點,但它不是開源的。 – 2011-12-21 08:34:58

回答

1

你想要一個「AOPizer」。你似乎想解決的問題有兩個部分:

  • 可能找到跨領域的代碼在現有的應用程序
  • 代碼提取到的方面爲語言

1)的第一項任務基本上需要克隆檢測器。許多克隆檢測器只有 找到相同的文本;這些將不會很有幫助,因爲您的方面可能 具有必須從代碼中取得的參數。 (如果您打算記錄 函數參數,則必須通過這些參數以某種方式參數化該方面)。 所以你想要一個可以找到參數化克隆的檢測器。你也希望 這些克隆可以從代碼中提取,所以無論它發現需要的什麼, 都對應於編程語言中的一些明確定義的概念(表達式, 語句,塊,...)許多基於標記的克隆檢測器可以找到參數化的標識符克隆,但不瞭解語言結構,因此它們不會對此任務有效。

我們的CloneDR使用目標語言 的抽象語法找到克隆以指導它;這需要精確的語言解析器;它有用於PHP,Java,VB.net和C#的解析器。它發現的克隆總是對應於上面定義的語言結構。它將查找單個標識符的參數,或者在整個克隆中始終變化的任何較大的語言結構(表達式,語句等)。它生成一個人類可讀的克隆集報告以及所有實例的精確位置以及確切的參數值。它還生成相同信息的機器可讀報告,使其他工具能夠利用檢測過程。過去,CloneDR一直用於尋找這種交叉技術:From goals to aspects: discovering aspects from requirements goal models(我是CloneDR的作者)。

2)用克隆數據武裝起來,您現在需要一個可以將克隆抽取到方面的工具。首先,您需要定義方面語言,然後您需要一個可以解析語言的工具,針對克隆,將它們抽象/翻譯成這些方面。我知道沒有現成的工具直接執行此操作,因此您需要一個具有所有必要工具的自定義工具。我們的DMS Software Reengineering Toolkit是專爲建立這樣的定製工具而設計的。 (這符合我評論的「可能」部分;還有其他工作要做,以獲得你想要的)。實際上,DMS已經被用來爲目前沒有它們的語言構建方面工具;見A technique for constructing aspect weavers using a program transformation engine。 [您可能不會感到奇怪的是,CloneDR實際上是建立在DMS之上的,並且更好的工程路徑將運行CloneDR機器,並將結果直接傳遞給自定義的AOP提取代碼,而不是通過中間導出/導入的克隆數據位置)。你也想要開源(每當我看到這個,我把它當作「免費」的代碼字)。唉,這些工具不是免費的。他們需要幾十年的博士水平工程才能建立和打磨(這些年來的幾十年是我個人的幾十年;我是DMS的設計師),我有一些免費的想法。他們確實有商業許可證,並且可以根據我們認爲價值適中的價格獲得所提供的價值(坦率地說,恕我直言,價值的重要部分是允許這些工具以一般方式建立的觀點),並且有研究許可證。欲瞭解更多詳情,請聯繫我們看到我的生物。

+0

巴克斯特博士,非常感謝細節。我會盡快與您聯繫。 – 2011-12-23 05:07:25