Доброго времени суток.
Есть проект, который будет включать в себя программно-аппаратный комлекс. Сам я программист. С такими большими проектами дел не имел. До этого справлялся наброском "в тетрадке". Однако, теперь без UML не обойтись. В сети нашёл множество сайтов по этой тематике. Однако, между ними множество различий, которые со стороны вовсе не понятны. Пытаюсь составить диаграммы в Visio 2010. Возникает множество попутных вопросов, которые хаотическим гуглением не решаются, а наооборот запутываются.
Вроде это полный комлпект UML диаграмм:
- Use case diagram (диаграммы прецедентов)
- Deployment diagram (диаграммы топологии)
- State Maсhine diagram (диаграммы состояний)
{Statechart diagram (диаграмма состояний) / Activity diagram (диаграммы активности)}
- Interaction diagram (диаграммы взаимодействия)
- Sequence diagram (диаграммы последовательностей действий)
- Collaboration diagram (диаграммы сотрудничества)
- Class diagram (диаграммы классов)
- Component diagram (диаграммы компонентов)
Без чего из этого списка можно обойтись, а что нужно обязательно?
P.S. Подскажите, пожалуйста, простенькую книжку для начинающих актуальную для UML 2.2.
Зависит от цели, которую вы перед собой ставите. Если нужно моделировать устройство и поведение объектов, то самые распространённые и удобные:
- диаграмма состояний (state machine diagram aka диаграмма конечного автомата), показывающая возможные состояния объекта и пути перехода из одного состояния в другое;
- диаграмма деятельности (activity diagram aka блок-схема алгоритма), показывающая последовательность выполнения и условия переходов;
- диаграмма последовательности (sequence diagram - неудачное название), показывающая порядок взаимодействия между объектами.
Диаграмму последовательности правильнее было бы назвать диаграммой взаимодействия (interaction diagram), но это название уже оказалось занято другой диаграммой, которую использовать я очень не рекомендую из-за её неудобочитаемости. Они показывают одно и то же, но sequence diagram использует ось времени для изображения последовательности действий, а на interaction diagram порядок действий показывается цифрами возле стрелок - читать невозможно, буэ.
Их, на самом деле, достаточно в большинстве случаев. Они были изобретены задолго до UML, интуитивно понятны и знакомы большинству людей с техническим образованием. По моему мнению, специфичными для UML элементами в них лучше не злоупотреблять.
Для более высокого уровня абстракции (обзор системы, выявление требований) ещё очень полезны диаграммы:
- диаграмма вариантов использования (use case diagram) - позволяет проиллюстрировать, что кому из пользователей нужно от системы. Приверженцы модели use case в этом месте могут возмутиться, но imho возможности применения этой диаграммы простираются далеко за пределы собственно вариантов использования. С её помощью можно анализировать и возможности, и функции, и ожидания от системы, и ещё много чего.
- диаграмма развёртывания (deployment diagram) - позволяет проиллюстрировать, как логические объекты соотносятся с физическими (например, какие программные компоненты на каких серверах выполняются).
Если нужно документировать нижний, программный, уровень, то пригодятся диаграммы классов и пакетов. Они, на самом деле, тоже были изобретены до UML, но тут уже следование нотации может оказаться полезным. Это не столько диаграммы, сколько визуально структурированный текст.
Когда вы продумываете структуру классов, диаграммы классов можно рисовать на бумаге и потом выбрасывать, а то, что пойдёт в документацию, лучше генерировать прямо из кода.