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

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*