Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Все статьи »

Обсудить на форуме Обсудить на форуме

RRBridge - утилита для реверс-инжиниринга C# проектов в UML


RRBridge предназначен для реверс-инжиниринга C# проектов в UML-модель Rational Rose.

Назначение
RRBridge предназначен для реверс-инжиниринга C# проектов в UML-модель Rational Rose.


Благодарности
Оригинальная идея принадлежит Сергею Стрелкову (SStrelkov@croc.ru), реализовавшему макет реверс-инжиниринга проекта C# на скрипте Rational Rose.


Системные требования
RRBridge поддерживает:
• Microsoft Development Environment 2003 Version 7.1 (тестировался на  версии 7.1.3088)
• Rational Rose 2003 (тестировался на версии Enterprise Edition 8.0.0303.1400)


Использование
1. Открыть Solution c проектом(ами), подлежащими реверс-инжинирингу, в Microsoft Development Environment.

2. Запустить Rose, открыть модель (если собираетесь обновлять)

Внимание! Если Вы хотите открыть файл модели для ее обновления по текущему состоянию кода, то он не должен иметь признак "read only". В противном случае программа выдаст сообщение о невозможности получить ссылку на объект Rose.Application. При этом у Rose съезжает крыша и даже если открыть файл без
признака "read only" или создать новую модель, то получить ссылку на объект Rose.Application снова не удается. Приходится перезапускать Rose.

3. Запустить RRBridge.exe. При этом программа получает ссылки на открытые модель в Rose и solution в Microsoft Development Environment.

Внимание! Если запущены несколько экземпляров Rose или Microsoft Development Environment, то RRBridge получит ссылки на первые по времени запуска экземпляры.

4. Нажать кнопку "Update Rose Model"

5. В зависимости от размера проекта выпить от нескольких глотков до нескольких чашек кофе...


Файл конфигурации
В файле RRBridge.exe.config в элементе с ключом "IgnoreNamespace" через пробел перечисляются пространства имен, игнорируемые при реверс-инжиниринге. 
Рекомендуется заносить в этот перечень все сборки и пространства имен, включенные в проект(ы) через ссылки (References), так как на них не гарантируется корректный реверс-инжиниринг (вплоть до аварийной остановки приложения RRBridge).


Особенности обработки нереализованных элементов модели
При обработке элементов UML-модели, отсутствующих на момент проведения реверс-инжиниринга в коде, в зависимости от выбора пользователя производится или маркировка элементов стереотипом «not implemented», или удаление элементов.

При этом маркировка или удаление производиться только в пакетах модели, для которых есть соответствующие пространства имен в обрабатываемых проектах C#.


Ограничения
Ограничения в основном связаны с неполнотой объектной модели Microsoft Development Environment, которая используется для анализа структуры проектов и кода.

1. У перечислимых типов не определяется базовый тип членов перечисления (Отсутствует необходимое свойство в объекте DTE.CodeEnum).
2. У классов не определяется наличие модификаторов new и sealed (Отсутствуют необходимые свойства в объекте DTE.CodeClass).
3. У переменных классов не определяется наличие модификаторов readonly и volatile (Отсутствуют необходимые свойства в объекте DTE.CodeVariable).
4. У свойств классов не определяется наличие модификаторов sealed и override (Отсутствуют необходимые свойства в объекте DTE.CodeProperty).
5. У методов классов не определяется наличие модификаторов new, sealed, override, extern (Отсутствуют необходимые свойства в объекте DTE.CodeFunction).
6. Все модификаторы доступа, кроме public, protected, private отображаются в модели как "implementation" (Ограничение Rose - другие модификаторы не предусмотрены).
7. Индексеры (indexers) представляются как свойства с именем this (Ограничение объектной модели Microsoft Development Environment, вообще отсутствует специализированный объект для представления индексеров).
8. События (events) представляются как методы с стереотипом "event". Никакие другие параметры получить не удается, их можно внести в модель вручную, и при последующем реверс-инжиниринге ничто перетираться не будет. (Ограничение объектной модели Microsoft Development Environment, вообще отсутствует специализированный объект для представления событий).
9. Не поддерживаются атрибуты C# вообще (Ограничение Rose - непонятно как их представлять в конкретной реализации UML).


Известные проблемы
1. После завершения работы с RRBridge иногда не удается закрыть Rational Rose. То есть Rose игнорирует команду закрытия окна приложения или завершения.
2. Иногда (очень редко) в процессе реверс-инжиниринга генерируются исключения при обращении к объектам Microsoft Development Environment. В такой ситуации приходится повторять реверс-инжиниринг.

 

RRBridge.zip


Может пригодится:


Автор: ADobrovolsky
Прочитано: 6451
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру