2011-12-21 1 views
2

Есть ли какой-либо инструмент с открытым исходным кодом, который может преобразовывать OOP-код (независимо от языка программирования, например .NET, Java или PHP) в AOP?Инструмент для преобразования OOP-кода в AOP

+2

АОП применяет перекрестные помехи к коду. Предположительно, вы имеете в виду инструмент, который может найти общий код в приложении OOP и вывести его в один аспект? Я ожидаю, что вы будете использовать детектор клонов, чтобы найти общий код, но нет инструментов, которые я знаю, которые будут извлекать клоны в аспекты. –

+1

О «Предположительно, вы имеете в виду инструмент, который может найти общий код в приложении ООП, и вытащить его в один из аспектов« Да, я ищу тот, который показывает статистический анализ, а также после преобразования кода ООП в АОП. –

+2

Я знаю инструмент, который * может * сделать это, но это не с открытым исходным кодом. –

ответ

1

Вы хотите «AOPizer». Проблема вы, кажется, хотят решить две части:

  • Нахождение потенциально сквозную код в существующем приложении
  • Распаковка код на аспекты для данного языка

1) первой задачи требует, по существу, клон-детектор. Многие клон-детекторы только найти идентичный текст; они не будут очень полезны, потому что ваши аспекты, вероятно, имеют параметры, которые необходимо взять из кода. (Если вы собираетесь регистрировать аргументы функции , аспект должен быть каким-то образом параметризован этими аргументами). Итак, вам нужен детектор, который может найти параметризованные клоны. Вы также хотите, чтобы клоны были извлекаемыми из кода, поэтому все, что он находит, должно быть соответствует определенной четко определенной концепции на языке программирования (выражение, операторов, блок, ...) Многие клон-клон детекторы могут найти квоты с параметризованным по идентификатору, но не понимают структуру языка, и поэтому они не будут быть эффективными для этой задачи.

Наш CloneDR находит клоны, используя абстрактный синтаксис целевого языка , чтобы вести его; для этого требуются четкие языковые парсеры; он имеет такие синтаксические анализаторы для PHP, Java, VB.net и C#. Клоны его находок всегда соответствуют языковым структурам, определенным выше. Он найдет параметры, которые являются одиночными идентификаторами, или любой более крупной конструкцией langauge (выражение, утверждение и т. Д.), Которая последовательно изменяется в разных клонов. Он создает удобочитаемый отчет о наборах клонов и точное местоположение всех их экземпляров, а также точные значения параметров. Он также генерирует машиночитаемый отчет той же информации, позволяя другому инструменту воспользоваться процессом обнаружения. CloneDR использовался для поиска таких кросс-технологий в прошлом: From goals to aspects: discovering aspects from requirements goal models (Я автор CloneDR).

2) Вооружившись данными клонирования, теперь вам нужен инструмент, который может извлекать клоны в аспекты. Во-первых, вам нужно определить язык аспект, тогда вам понадобится инструмент, который может анализировать langauge, указывать клоны, абстрагировать/переводить их в такие аспекты. Я не знаю никаких инструментов, которые делают это напрямую, поэтому вам понадобится специальный инструмент, в котором есть все необходимое оборудование. Наш DMS Software Reengineering Toolkit спроектирован таким образом, чтобы создавать именно такие пользовательские инструменты. (Это удовлетворяет «моменту» части моего замечания, есть дополнительная работа, чтобы сделать то, что вы хотите). Фактически DMS используется для создания аспектных инструментов для языков, которые в настоящее время не имеют их; см. A technique for constructing aspect weavers using a program transformation engine. [Вам может быть неудивительно, что CloneDR фактически построен поверх DMS, и еще более удобный инженерный путь будет запускаться машиной CloneDR и передавать результаты непосредственно в произвольный код извлечения AOP, а не проходить промежуточный экспорт/импорт местоположений данных клонов).

Вы также хотели использовать с открытым исходным кодом (всякий раз, когда я вижу это, я читаю это как кодовые слова для «бесплатно»). Увы, эти инструменты не бесплатны. Они потребовали десятилетия инженерного уровня PhD для создания и полировки (некоторые из этих десятилетий были моими личными десятилетиями, я архитектор DMS), и у меня есть некоторые проблемы с идеей сделать это бесплатно. У них есть коммерческие лицензии, и их можно получить по тому, что мы считаем умеренными ценами за предоставленную стоимость (откровенно ИМХО значительная часть стоимости - это перспектива, позволяющая создавать эти инструменты в общем виде), и есть лицензии на исследования ,Свяжитесь с нами в автономном режиме для получения более подробной информации; см. мою биографию.

+0

Dr. Baxter, спасибо за подробную информацию. я свяжусь с вами в ближайшее время. –