RRBridge - утилита для реверс-инжиниринга C# проектов в UML
RRBridge предназначен для реверс-инжиниринга C# проектов в UML-модель Rational Rose.
Назначение
RRBridge предназначен для реверс-инжиниринга C# проектов в UML-модель Rational Rose.
Благодарности
Оригинальная идея принадлежит Сергею Стрелкову, реализовавшему макет реверс-инжиниринга проекта 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. В такой ситуации приходится повторять реверс-инжиниринг.
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
- 2024-05-27 » Подборка сервисов для расшифровки аудио в текст
- 2024-05-27 » PostgreSQL 16. Изоляция транзакций. Часть 2
- 2024-05-06 » Как настраивать конверсионные стратегии: работа над ошибками
- 2024-04-22 » Комментирование кода и генерация документации в PHP
Кто мало хочет, тот дешево стоит |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.