Я могу сказать как минимум три:
- Требуется много времени, чтобы диаграмма была разумной и синхронизированной с фактическим кодом. Диаграммы UML не запускаются, но требуют много времени. Так что они хороши только в том случае, если размер вашей организации может с ними справиться.
- Вы не можете представить каждое условие на диаграмме последовательности. Это невозможно, если вы хотите доставить. Таким образом, диаграммы состояний должны отражать основные факты, а не все возможные результаты.
- Хорошее программное обеспечение UML стоит денег, и для его освоения требуется некоторое время.
Итак, я думаю, что UML хорош как дополнительная роль в документации, и только если это позволяет размер вашей организации.
Решения... ну, в конце концов, диаграмма - это просто способ передать информацию высокого уровня другому человеку в пространстве или времени (например, это может быть вы через год). Экстремальное программирование переносит бремя поиска информации с мертвого дерева на живой мозг. Конечно, предполагается, что живой мозг никогда не забывает и никогда не сдается. Экстремальное программирование использует избыточность, чтобы уменьшить влияние таких событий. В крупной компании сильный раунд увольнений может уничтожить целые команды, поэтому хранение информации в мозгу может быть рискованным. С другой стороны, у крупных компаний есть человеческая сила, поэтому диаграмма.
Кроме того, как указывает WDuffy, если вы дизайнер и вам нужно сообщить команде программистов, что им нужно реализовать, гораздо проще использовать диаграмму UML. Конечно, у небольшой компании с небольшой командой, как правило, небольшие цели, и вы можете организовать людей с другим стилем. Небольшая компания UMLing будет производить только UML-диаграммы своего революционного продукта, а потом обанкротится.
UML не хорош и не плох. Это может быть хорошим инструментом, но его нужно использовать в надлежащем контексте.
Не хватает функций?
ну, я обнаружил, что UML сильно нацелен на объектно-ориентированное видение мира. Наша компания в основном разрабатывалась на Python, уделяя особое внимание подпрограммам на уровне модулей. Объекты представляли собой легковесные контейнеры данных, но вся логика выполнялась на уровне модулей. Трудно правильно смоделировать этот стиль реализации на уровне UML, если только вы не прибегнете к некоторым «хакам» в терминологии. Я предполагаю, что в UML сложно моделировать функциональные или процедурные языки.
Еще одна вещь, которую я нахожу раздражающей, — это предположение о моделировании вариантов использования в виде диаграммы. По моему опыту, лучший способ рассказать о прецеденте — это написать короткий рассказ или краткий код, затрагивающий функцию, которую вы хотите передать. Рассказ должен быть коротким, максимум на одну страницу. У этого подхода есть два преимущества: если ваша история написана прозой, команда Q/A может легко ее прочитать и протестировать. Если ваша история — это код, вы можете поставить его в качестве функционального теста и запустить ночью. Диаграмма не удовлетворяет ни одной из этих потребностей в добавленной стоимости.
person
Stefano Borini
schedule
28.11.2009