http://metapractice.livejournal.com/371985.htmlВ этой теме будем пытаться переложить технологии, методологии, различные теории и практики программирования для моделирования человеческих активностей. В этом проходе попытаемся разобраться с UML.
Типы диаграмм
(Картинки и цитаты из книги Фаулера)Слева направо, сверху вниз:Диаграмма: Структурная диаграмма и Диаграмма поведенияСтруктурная диаграмма: Диаграмма классов, Компонентная диаграмма, Композитная диаграмма структуры, Диаграмма развёртывания, Диаграмма объектов, Диаграмма пакетовДиаграмма поведения: Диаграмма активности, Диаграмма варианта использования, Диаграмма автомата состояний, Диаграмма взаимодействияДиаграмма взимодействия: Диаграмма последовательности, Диаграмма коммуникации, Обзорная диаграмма взаимодействия, Временнáя диаграмма
Диаграмма классов
A class diagram describes the types of objects in the system and the various kinds of staticrelationships that exist among them. Class diagrams also show the properties and operations of aclass and the constraints that apply to the way objects are connected. The UML uses the termfeature as a general term that covers properties and operations of a class.Диаграмма классов описывает типы объектов в системе и различные виды статических отношений, которые между ними существуют. Диаграмма классов также показывает свойства и операции классов и ограничения, которые применимы к связям между объектами. UML использует термин характеристика (feature) как общий термин, покрывающий свойства и операции класса.
Диаграмма последовательности
Interaction diagrams describe how groups of objects collaborate in some behavior. The UMLdefines several forms of interaction diagram, of which the most common is the sequence diagram.Typically, a sequence diagram captures the behavior of a single scenario. The diagram shows anumber of example objects and the messages that are passed between these objects within the usecase.Диаграммы взаимодействия описывают, как группы объектов сотрудничают по ходу некоего поведения. UML определяет несколько разных форм диаграмм взаимодействия, наиболее общепринятая из которых диаграмма последовательности. Типично, диаграмма последовательности ухватывает поведение по ходу одного сценария. Диаграмма показывает несколько образцов объектов и сообщения, которые передаются между этими объектами в рамках варианта использования.
Диаграмма объектов
An object diagram is a snapshot of the objects in a system at a point in time. Because it showsinstances rather than classes, an object diagram is often called an instance diagram.Диаграмма объектов является снимком объектов в системе в заданный момент времени. Поскольку она показывает экземпляры, а не классы, диаграмму объектов часто называют диаграммой экземпляров.
Диаграмма пакетов
A package is a grouping construct that allows you to take any construct in the UML and group itselements together into higher-level units. Its most common use is to group classes, and that's theway I'm describing it here, but remember that you can use packages for every other bit of the UMLas well.Пакет это группирующая конструкция, которая позволяет вам взять любую конструкцию UML и сгруппировать её элементы вместе в элементы более высокого уровня. Его наиболее частое использование — для группировки классов, и именно в таком ключе я описываю его здесь, но помните что вы также можете использовать пакеты для любого другого кусочка UML.A package diagram shows packages and their dependencies. [...] If you have packages for presentation and domain, you have a dependencyfrom the presentation package to the domain package if any class in the presentation package has adependency to any class in the domain package. In this way, interpackage dependencies summarizethe dependencies between their contents.Диаграмма пакетов показывает пакеты и их зависимости. [...] Если у вас есть пакеты для представления и для предметной области, у вас есть зависимость от пакета представления к пакету предметной области, если какой бы то ни было класс в пакете представления имеет зависимость к какому бы то ни было классу в пакете предметной области. В таком ключе, взаимозависимость пакетов резюмирует зависимости между их содержимым.
Диаграмма развёртывания
Deployment diagrams show a system's physical layout, revealing which pieces of software run onwhat pieces of hardware.Диаграммы развертывания показывают физическую компоновку системы, раскрывая какие части программного обеспечения исполняются на каких частях аппаратного.
Диаграмма варианта использования
As I said earlier, the UML is silent on the content of a use case but does provide a diagram formatfor showing them [...]. Although the diagram is sometimes useful, it isn't mandatory. Inyour use case work, don't put too much effort into the diagram. Instead, concentrate on the textualcontent of the use cases.Как я сказал раньше, UML молчит касательно содержания варианта использования, но всё же предлагает формат диаграмм для их представления [...]. Хотя такая диаграмма иногда полезна, она не обязательна. В своей работе над вариантом использования, не вкладывайте слишком много труда в диаграмму. Вместо этого, сконцентрируйтесь на текстовом содержании варианта использования.
Диаграмма автомата состояний
State machine diagrams are a familiar technique to describe the behavior of a system. Variousforms of state diagrams have been around since the 1960s and the earliest object-orientedtechniques adopted them to show behavior. In object-oriented approaches, you draw a statemachine diagram for a single class to show the lifetime behavior of a single object.Диаграммы автомата состояний являются привычной техникой описания поведения системы. Различные формы диаграмм состояний имели место примерно с 1960-х и первые объектно-ориентированные техники заимствовали их для иллюстрации поведения. В объектно-ориентированном подходе, вы рисуете диаграмму автомата состояний для отдельного класса, чтобы показать жизненный цикл поведения отдельного объекта.
Диаграмма активности
Activity diagrams are a technique to describe procedural logic, business process, and work flow. Inmany ways, they play a role similar to flowcharts, but the principal difference between them andflowchart notation is that they support parallel behavior.Диаграммы активности являются техникой для описания процедурной логики, бизнес-процессов, производственных процессов. Во многих аспектах они играют роль, близкую к блок-схемам, но принципиальная разница между ними и блок-схемами заключается в поддержке параллельного поведения.
Диаграмма коммуникации
Communication diagrams, a kind of interaction diagram, emphasize the data links between thevarious participants in the interaction. Instead of drawing each participant as a lifeline and showingthe sequence of messages by vertical direction as the sequence diagrams does, the communicationdiagram allows free placement of participants, allows you to draw links to show how the participantsconnect, and use numbering to show the sequence of messages.Диаграммы коммуникации, разновидность диаграм взаимодействия, подчёркивают во взаимодействии каналы передачи данных между разными участниками. Вместо того, чтобы изображать каждого участника как линию жизненного цикла и показывать последовательность сообщений упорядочиванием вдоль вертикали, как делает диаграмма последовательности, диаграмма коммуникации дозволяет свободное расположение участников, позволяя вам изображать связи для того, чтобы показать как участники соединяются, и использовать нумерацию, чтобы показать последовательность сообщений.
Композитная диаграмма структуры
One of the most significant new features in UML 2 is the ability to hierarchically decompose a classinto an internal structure. This allows you to take a complex object and break it down into parts.Одна из наиболее значительных новых возможностей в UML 2 — возможность иерархически раскладывать класс на составляющую его внутреннюю структуру. Это позволяет вам взять сложный объект и разбить его на части.
Диаграмма компонентов
Other than the icon, components don't introduce any notation that we haven't already seen.Components are connected through implemented and required interfaces, often using the ball-and-socket notation (page 71) just as for class diagrams. You can also decompose components by usingcomposite structure diagrams.Компоненты не вводят никаких новых обозначений к тем, что мы уже видели, кроме как иконку. Компоненты соединяются через реализованные и требуемые интерфейсы, часто используя знак "шарнира" (стр. 71), в точности как диаграммы классов. Вы также можете разложить компоненты на составные части, используя копозитную диаграмму структуры.
Диаграмма сотрудничества
Collaborations have been around since UML 1, but I admit I've hardly used them, even in mypatterns writing. Collaborations do provide a way to group chunks of interaction behavior when rolesare played by different classes. In practice, however, I've not found that they've been a compellingdiagram type.Диаграммы сотрудничества существовали со времён UML 1, но, признаться, я их редко использовал, даже в моих описаниях паттернов. Диаграммы сотрудничества действительно дают способ сгруппировать фрагменты поведения по взаимодействию, когда роли разыгрываются разными классами. На практике, однако, я не обнаружил чтобы они были притягательным типом диаграмм.
Обзорная диаграмма взаимодействия
Interaction overview diagrams are a grafting together of activity diagrams and sequence diagrams.You can think of interaction overview diagrams either as activity diagrams in which the activities arereplaced by little sequence diagrams, or as a sequence diagram broken up with activity diagramnotation used to show control flow. Either way, they make a bit of an odd mixture.Обзорные диаграммы взаимодействия являются прививкой диаграмм активности к диаграммам последовательности. Вы можете думать об обзорной диаграмме взаимодействия либо как о диаграмме активности, в которой активности заменены маленькими диаграммами последовательности, либо как о диаграмме последовательности, разбитой разметкой диаграммы активности, используемой чтобы показать поток управления. В любом случае, они представляют собой немного странную смесь.
Временная диаграмма
Timing diagrams are another form of interaction diagram, where the focus is on timing constraints:either for a single object or, more usefully, for a bunch of objects. Let's take a simple scenario basedon the pump and hotplate for a coffee pot. Let's imagine a rule that says that at least 10 secondsmust pass between the pump coming on and the hotplate coming on. When the water reservoirbecomes empty, the pump switches off, and the hotplate cannot stay on for more than 15 minutesmore.Временны́е диаграммы являются иной формой диаграмм взаимодействия, фокусирующейся на временных ограничениях: либо для отдельного объекта, либо, что более полезно, для кучи объектов. Возьмём простой сценарий, включающий насос и нагревательный элемент кофемашины. Положим, правило говорит, что по меньшей мере 10 секунд должны пройти между включением насоса и включением нагревательного элемента. Когда водный резервуар опустошается, насос выключается, и нагревательный элемент не может оставаться включенным более чем ещё на 15 минут.
BPMN
Основная цель BPMN — создание стандартного набора условных обозначений, понятных всем бизнес-пользователям. Бизнес-пользователи включают в себя бизнес-аналитиков, создающих и улучшающих процессы, технических разработчиков, ответственных за реализацию процессов и менеджеров, следящих за процессами и управляющих ими. Следовательно, BPMN призвана служить связующим звеном между фазой дизайна бизнес-процесса и фазой его реализации.
Диаграммы активности ...принципиальная разница между ними и блок-схемами заключается в поддержке параллельного поведения.Это не так.В блок-схемах предусмотрено описание параллельного поведения. По крайней мере в действующем стандарте, который ГОСТ-1990 он же ИСО 1985г.
Всё же ключевой вопрос остался - что такое у нас "класс" и "объект". Уже отмечали, что диаграммы такого толка нам нужны "от моделистов для моделистов". Но каждый отдельный объект - это что такое, в самом общем плане? Это ИНСТРУМЕНТ какой-то? Или это СУБЪЕКТ?Наверное, это всё же инструмент, а субъектов мы обозначаем также, как программисты обозначают на диаграммах "пользователей".Но дальше у нас встаёт другая проблема - у нас каждый "объект" не понятно где "живёт". Как мы выяснили, "инструмент" может быть:- чисто "материальным" (штука во внешнем мире)- "материализованным", т.е. иметь материальную символическую форму, но при этом "идеальное" содержание (например формула как реальная надпись на листе с внутренним смыслом "в голове")- "идеальным"-представляемым во внешнем мире поверх реальных объектов- "идеальным"-внутренним не соотнесённым с реальными объектамиХм, вообще в программировании объекты тоже живут не понятно где. То ли на диске, то ли в памяти, то ли передаются по каналам связи и т.д. Так что такая дилемма тоже имеет место. Надо подумать, может и можно один в один перенести будет диаграммы в наше "измерение".
Всё же ключевой вопрос остался - что такое у нас "класс" и "объект". Уже отмечали, что диаграммы такого толка нам нужны "от моделистов для моделистов". Но каждый отдельный объект - это что такое, в самом общем плане? Это ИНСТРУМЕНТ какой-то? Или это СУБЪЕКТ?Классом в случае юмл-моделирования является любой объект некоей онтологии человеческой активности.Наверное, это всё же инструмент, а субъектов мы обозначаем также, как программисты обозначают на диаграммах "пользователей".Это может быть и то и то. Главное есть принципы, по которым составлена Общая Онтология Человеческой Активности ООЧА.Но дальше у нас встаёт другая проблема - у нас каждый "объект" не понятно где "живёт". Как мы выяснили, "инструмент" может быть: - чисто "материальным" (штука во внешнем мире)Ну, а у нас инструментом может быть "коммуникативный инструмент". Мы вслед за Бейтсоном фактически всегда рассматриваем процессы передачи информации и возникающих в результате изменений.- "материализованным", т.е. иметь материальную символическую форму, но при этом "идеальное" содержание (например формула как реальная надпись на листе с внутренним смыслом "в голове")Форма и содержание коммуникации. Нет проблем.- "идеальным"-представляемым во внешнем мире поверх реальных объектов- "идеальным"-внутренним не соотнесённым с реальными объектамиА по мне так никаких абсолютно идеальных объектов заводить не надо.Хм, вообще в программировании объекты тоже живут не понятно где. То ли на диске, то ли в памяти, то ли передаются по каналам связи и т.д. Так что такая дилемма тоже имеет место. Надо подумать, может и можно один в один перенести будет диаграммы в наше "измерение".Предварительно, идея переноса объектов в наше измерение выглядит привлекательно.