Как мне заниматься распределенной UML-разработкой (а-ля FOSS)? - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть проект UML (созданный в IBM Rational System Architect / Modeler, поэтому хранящийся в их формате XML), который стал довольно большим. Кроме того, теперь он содержит несколько фрагментов, которые другие группы хотели бы использовать повторно. Я родом из опыта разработки программного обеспечения (особенно FOSS) и пытаюсь понять, как использовать это в качестве аналогии здесь. Проблема, с которой я сталкиваюсь, похожа на проблему Хрупкий базовый класс .

Позвольте мне начать с того, как это работает в объектно-ориентированной (скажем, Java или Ruby) экосистеме FOSS:

  1. Группа 1 публикует некоторый «базовый» пакет, скажем «net/smtp версия 1.0»
  2. Группа 2 включает пакет net/smtp 1.0 группы 1 в библиотеке поставщика своего программного проекта
  3. В какой-то момент группа 1 создает новую ветку 2.0 net/smtp, которая нарушает обратную совместимость (скажем, удаляет старый класс или метод или перемещает класс из одного пакета в другой). Они говорят пользователям версии 1.0, что она устареет через год.
  4. Группа 2, когда у них есть время, обновляется до net/smtp 2.0. Когда они помещают новый пакет, их компилятор (или набор тестов для Ruby) сообщает им о несовместимости. Они действительно должны внести некоторые изменения вручную, но все изменения находятся в коде, в виде простого текста, среды, с которой они довольно хорошо знакомы. Кроме того, они могут часто использовать свою функцию IDE (или текстового редактора) «global-search-and-replace», как только выясняют, какие исправления.

Когда мы пытаемся применить эту модель к UML в RSA, мы сталкиваемся с некоторыми проблемами. RSA поддерживает некоторые довольно мощные рефакторинги, но, похоже, они работают, только если у вас есть доступ на запись к всем фрагментам. Если я переименую класс в одном пакете, RSA может переименовать ссылки, но только в одно и то же время. Очень сложно взглянуть на основной источник (XML) и выяснить, что сломано. Устранить такую ​​проблему в самом редакторе RSA означает множество нажатий - нет хорошего эквивалента «глобального поиска и замены», по крайней мере, после неполного рефакторинга.

Похоже, что их настоящим камнем преткновения является то, что RSA предполагает, что вы хотите выполнять все ваши редактирования с использованием их графического интерфейса, но это делает некоторые операции непомерно трудными.

У кого-нибудь есть примеры проектов UML с открытым исходным кодом, которые преодолели эту проблему? Какие стратегии они используют для информирования об изменениях?

1 Ответ

0 голосов
/ 18 ноября 2009

Пакеты - это ссылки на удаленные модели, т. Е. Хранящиеся в собственном emx, не включенные напрямую. Тогда просто поделитесь моделями через CVS / SVN и управляйте ими отдельно? Изменения будут распространяться таким образом, модели могут ссылаться на файлы моделирования, которые не обязательно должны быть все в одном файле.

Если у вас уже есть вышеперечисленное, пожалуйста, уточните потребности. Должен ли он быть в реальном времени и / или вне RSM для разработчиков, у которых нет инструмента. Можете ли вы привести пример того, что «ломается» или требует «тонны нажатия на вещи»? Я уже сталкивался с этой проблемой и решил ее несколькими способами в зависимости от своих потребностей и ограничений.

  1. (Способ выше)
  2. Разбейте проект на маленькие файлы, но это одна большая модель. (Решает только несколько вопросов)
  3. Напишите плагин eclipse / RSM для синхронизации, это для ограниченных, но важных межпроектных связей. Например, имейте общий набор компонентов или ресурсов, которые модели должны использовать повторно.

Опять же, имея больше информации, я могу дать лучший ответ, ссылки на FOSS позволяют предположить, что вам нужна слабая связь / повторное использование / расширение объекта, но реальные примеры RSM могут помочь больше. Я могу обновить свой ответ, если вы настроите свой вопрос и дадите мне знать.

...