Кодирование с использованием диаграмм последовательности - PullRequest
4 голосов
/ 10 ноября 2008

Когда я учился в университете, лектор сказал, что некоторым людям удавалось кодировать с помощью диаграмм последовательности, мне это кажется хорошим способом программирования, но, конечно, дьявол кроется в деталях. У меня есть несколько вопросов.

  • Это действительно происходит или я неверно истолковать то, что он сказал?
  • Имеет кто-нибудь здесь на самом деле сделал это?
  • Это более продуктивно?
  • Какие недостатки?
  • Какие инструменты понадобятся при использовании Java?

Ответы [ 6 ]

9 голосов
/ 10 ноября 2008

Я обнаружил, что "нормальные" диаграммы последовательности почти всегда более трудны, чем они стоят (хотя я нашел их полезными для отображения потока данных в LINQ). Выполнение «грубой и готовой» схемы и объяснение ее (желательно лично, но с большим количеством слов в любом случае) работает лучше в моем опыте.

Я думаю, что было бы неплохо иметь диаграмму (или несколько), показывающую своего рода «вертикальный срез» вашего приложения - как каждый слой общается с другим, и, возможно, показывающий ход запроса / ответа в подходящих случаях. Однако это не обязательно должно быть на уровне «вызова отдельных методов и всегда на 100% точным» - важно убедиться, что вы передаете правильное общее впечатление, более важно, если читатель сможет погрузиться в реальный код.

Сказав все это, мои взгляды на UML в целом почти одинаковы, поэтому, если вы большой поклонник точных диаграмм, которые всегда тщательно синхронизируются с реальностью и т. Д., То воспринимайте все это как соль: )

4 голосов
/ 10 ноября 2008

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

1 голос
/ 10 ноября 2008

Я обнаружил, что диаграммы последовательности не подходят для реальных приложений, потому что:

  1. Я могу сделать это хорошо, используя схему на английском языке, объясняющую иерархию вызовов от слоя к слою, когда есть единый поток управления. Стили контуров в MS Word прекрасно работают здесь.

  2. Мое объяснение на английском языке содержит больше деталей и занимает меньше места, чем изображение UML.

  3. С английским я могу объяснить другие детали, такие как защитные условия и петли, лучше, чем диаграмма последовательности.

  4. Я могу написать схему быстрее, чем составить UML.

Если вам действительно нужна «картинка» с таким большим количеством деталей, возможно, диаграмма действий подойдет вам.

С другой стороны, диаграмма последовательности отлично подходит для общего обзора.

Что касается Java, моей проектной команде действительно нравится Джуд , поскольку он может реконструировать иерархию классов кодовой базы Java 5.

0 голосов
/ 08 декабря 2010

Диаграммы последовательности имеют свое место. Я никогда не беспокоился о том, чтобы синхронизировать диаграмму UML с изменениями кода. При этом я большой поклонник использования диаграмм последовательности в качестве инструмента мозгового штурма. Вы хотите, чтобы ваша команда поняла и согласилась с базовым процессом и структурой вызова. Когда вы также отслеживаете аргументы и создание экземпляра, это может выделить дыры в вашем понимании. Если вам нужны данные «x» в качестве аргумента, они либо локальные, либо должны быть переданы: «Мы запрашиваем данные отчета из базы данных, и нам необходимо отправить тип отчета, мы не забыли включить его в качестве входящий параметр, верно?

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

0 голосов
/ 11 ноября 2008

Диаграммы последовательности работают для процедурных языков. Они не так полезны для ОО языков.

0 голосов
/ 11 ноября 2008

Диаграмма последовательности покажет взаимодействие, которое обычно является одним путем в вашем коде. С другой стороны, ваш код должен определять каждый путь, каждое условие if-then-else, ребро и т. Д. Вы можете показать все эти вещи на диаграммах последовательности, но они, как правило, становятся слишком сложными и громоздкий. Я бы порекомендовал вам использовать диаграммы последовательности, чтобы помочь визуализировать ваш код на этапе проектирования, если это полезно для вас, но это настолько далеко, насколько вам, вероятно, следовало бы зайти.

...