2015-01-09 2 views
0

Я пытаюсь разработать свои приложения, прежде чем писать код. Я создал диаграмму классов всех классов, которые собираюсь использовать, а затем сгенерировал код из них, используя Astah.сохранить диаграмму классов и код синхронизированы

Проблема возникает, когда я хочу изменить метод какого-либо класса или добавить новый. Я должен сделать это дважды: один раз на диаграмме классов и один раз в исходном коде. Несколько эволюций такого рода продолжаются, диаграмма классов становится легко устаревшей.

Есть ли какой-то подход, чтобы избежать этого? Могу ли я обновить уже существующий код из диаграммы деятельности?

Спасибо заранее

+0

«Я слишком ленив», не очень мотивирует других людей к помощи. Почему ты что-то делал/должен был помогать _lazy_ парню? Подсказка: найдите «обратную инженерию» в '[uml]' помеченные старые вопросы, отфильтрованные на языке программирования, который вы используете – xmojmr

+0

На самом деле это очень плохая практика в программировании, чтобы сделать то же самое два раза, поэтому я надеюсь, что люди поймут. Тем не менее, спасибо за ваш намек. Я проверю это. –

+0

Я не перепробовал повторное использование кода при программировании. Я поставил под сомнение ваши собственные исследовательские усилия (как в http://stackoverflow.com/help/how-to-ask). Оптимизируйте и оцените свои ресурсы (жизнь, время), но не ленитесь и не просите других людей выполнять вашу работу. Без указания языка и отображения некоторых частей кода и диаграмм, о которых вы говорите, этот вопрос слишком широк и слишком абстрактен. См. Также http://agilemodeling.com/essays/bestPractices.htm – xmojmr

ответ

0

Для ответа на ваш вопрос, мне кажется, уместно рассмотреть способ используется UML.

В UML distilled, Мартин Фаулер рассматривает три варианта с использованием UML:

  1. Эскиз
  2. Blueprint
  3. EXECUTABLE UML

1. Эскиз

Эскиз использования UML удобно для refactoring программы, практика Фаулер seriously interested in. В общем, уместно иметь синтетическое восприятие существующей программы.

2. Blueprint

Blueprint в некотором смысле академического использование языка. Основная проблема заключается в эволюции программного обеспечения: модели нужно пересмотреть с кодом, чтобы не стать наследием.

3. Исполняемый UML

Исполняемый UML является своего рода экстремальной практики языка, на котором он и становится основным способом выражения для программы. В этом контексте программа обычно генерируется из исходной модели UML, которая содержит всю информацию о программном обеспечении. Исходный код - это только переходная форма программного обеспечения. Программное обеспечение развивается вместе с моделью, код генерируется снова. Это возможно только при полном UML-моделировании программного обеспечения. В нескольких словах это радикальное использование UML.

Я считаю, что различие между этими тремя способами использования UML является уместным соображением об общем использовании UML.

UML в качестве интерфейса для исходного кода модификации

Однако я понимаю, что вы ищете: там должен быть еще один (четвертый) способ использования UML, в качестве интерфейса для модификации исходного кода.Несколько решений, но ни один не очень удобно, вот инициативы я идентифицированные:

  • Green UML затмение плагин в Университете Буффало, который использует свой собственный редактор диаграмм класса
  • Code Canvas был исследовательский проект от Microsoft, а не UML, но интересной, статья доступна в the ACM communications
  • BlueJ является очень легким IDE, включая редактор диаграммы класса, модифицирующих исходный код
  • Coffea UML является личным проектом

Несколько слов здесь о Coffea. Его целью было связать функции рефакторинга Eclipse JDT с редакторами диаграмм Eclipse UML2Tools. Он корректно работал с редактором диаграмм классов. Моя цель состояла в том, чтобы распространить его на диаграмму деятельности. К сожалению, UML2Tools стали прежними с тех пор. Coffea не мертв, а почти. Я отделил основные функции UML2 от редакторов UML2Tools. Мои намерения подробно описаны на сайте проекта. Однако я работаю над этим в свободное время, и у меня есть другие профессии.

UML может использоваться как интерфейс для модификации исходного кода тогда и только тогда, когда модификация относится только к одному аспекту (например, поведенческому или структурному). Было бы совершенно невозможно получить исчерпывающую версию программного обеспечения за пределами исполняемого UML. Предполагаемый редактор для такой цели был бы комбинацией нескольких диаграмм, что было бы очень сложно. Такой редактор должен быть близок к режиму эскиза, описанному Фаулером.

Заключение

К сожалению, я думаю, что UML в качестве интерфейса для модификации исходного кода в настоящее время что-то Теоретико. Основной задачей было бы интегрировать модификацию с исходной моделью UML (ваш случай). Учитывая разнообразие инструментов UML, я думаю, что использование FULLER UML - единственное серьезное решение. Кажется, вы можете использовать только Astah для исполняемого UML. Я даже не уверен, что инструмент предоставляет все возможности для этого.

+0

Спасибо за ваш ответ, возможно, мне нужно изменить мой подход. –

+0

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

Смежные вопросы