RRBridge – утиліта для реверс-інжинірингу C # проектів в UML, Різне, ASP, статті




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>

*

*