Евгений Колесников 3 سال پیش
والد
کامیت
2105806c82

+ 0 - 2
articles/uml.md

@@ -12,8 +12,6 @@
 - группирующая – элемент, используемый для некоторого смыслового объединения элементов диаграммы;
 - поясняющая (аннотационная) – комментарий к элементу диаграммы.
 
-
-
 **Диаграмма** представляет собой группировку элементов нотации для отображения некоторого аспекта разрабатываемой информационной системы. Диаграммы представляют собой, как правило, связный граф, в котором сущности являются вершинами, а отношения – дугами. В следующей таблице дана краткая характеристика диаграмм UML:
 
 Диаграмма | Назначение

+ 159 - 1
articles/uml_activity.md

@@ -1 +1,159 @@
-# Диаграмма деятельности (activity)
+# Диаграмма деятельности (activity)
+
+<!-- https://sites.google.com/site/anisimovkhv/learning/pris/lecture/tema14/tema14_3 -->
+
+При моделировании поведения системы возникает необходимость не только представить процесс изменения ее состояний, но и детализировать особенности алгоритмической и логической реализации выполняемых системой операций. Для описания поведения системы и ее отдельных элементов (поведенческих моделей) в UML предусмотрено четыре вида диаграмм. Три из них ([диаграммы автоматов](../articles/uml_state.md), [последовательности и коммуникации](../articles/uml_sequence.md)) были рассмотрены ранее. Несмотря на то, что эти три вида диаграмм, так или иначе, отображают динамические аспекты системы, они недостаточно формальны для детального описания алгоритмов работы. В структурном подходе для этого применяются блок-схемы, диаграммы EPC и BPMN. В UML аналогом блок-схем являются диаграммы деятельности (активности), схожие с ними по своей семантике и выразительным средствам (набору элементов).
+
+Каждая диаграмма деятельности акцентирует внимание на последовательности выполнения определенных действий, которые в совокупности приводят к получению желаемого результата. Они могут быть построены для отдельного варианта использования, кооперации, метода и т. д. Диаграммы деятельности являются разновидностью диаграмм автоматов, но если на второй основное внимание уделяется статическим состояниям, то на первой – действиям.
+
+Графически диаграмма деятельности, как и диаграмма автоматов, представляется в виде ориентированного графа, вершинами которого являются действия или деятельности, а дугами – переходы между ними. Напомним, что в UML действие – это атомарная операция, выполнение которой не может быть прервано, а деятельность – составная операция, с возможностью ее прерывания. Переход к следующему действию или деятельности срабатывает сразу по их завершении.
+
+Основными элементами диаграммы являются:
+
+- исполняемые узлы;
+
+- объекты;
+
+- переходы;
+
+- управляющие узлы;
+
+- коннекторы;
+
+- группирующие элементы.
+
+1. К исполняемым узлам (англ. executable nodes) относятся действия (англ. action) и деятельности (англ. activity). На блок-схемах их аналогами являются процессы и предопределенные процессы. Обычное использование исполняемых узлов заключается в моделировании одного шага выполнения алгоритма (процедуры) или потока управления. Графически исполняемые узлы отображаются, как простые и составные состояния.
+
+	     	
+a) действие	     	б) деятельность
+Рис. 14.14. Примеры исполняемых узлов
+
+Внутри фигуры записывается выражение действия (англ. action expression), записываемое на естественном языке, некотором псевдокоде или языке программирования.
+
+2. К объектам относятся непосредственно объекты (англ. object) в традиционном понимании UML, отправка сигнала (англ. send signal), прием сигнала (англ. accept signal) и событие времени (англ. time event).
+
+	     		     		     	
+a) объект	     	б) посылка сигнала	     	в) прием сигнала	     	г) событие времени
+Рис. 14.15. Примеры объектов
+
+Отображение сигнала на диаграмме может вызвать затруднения - рисовать его как отправку или прием? В частности, сигнал «Заказ сформирован» может рассматриваться как в одном, так и в другом смысле. Если в результате действия генерируется сигнал для последующей обработки (из символа действия исходит стрелка и входит в символ сигнала), то он отображается как «отправка сигнала». Когда сигнал поступает на обработку (из символа сигнала исходит стрелка и входит в символ действия), то он отображается как «прием сигнала».
+
+3. Переход (англ. transition или activity edge), как и на диаграмме автоматов, отображается ассоциацией. На диаграммах деятельности различают следующие виды переходов.
+
+	     		     	
+a) поток управления	     	б) объектный поток	     	в) поток прерывания или исключения
+Рис. 14.16. Примеры переходов
+
+Поток управления (англ. control flow) представляет собой самый общий вид перехода и задает порядок выполнения операций. Когда на диаграмме необходимо помимо передачи управления отобразить и передачу информации, показывают объектный поток (англ. object flow). В этом случае ассоциации соединяются с символом «объекта» или специальными контактов (англ. pins), прикрепленными к границам действий. К границе действия может быть прикреплено несколько контактов с наименованиями отправляемых/получаемых данных (объектов). Поток прерывания (англ. interruptible flow), как правило, исходит из символа «прием сигнала», расположенного в прерываемой области, и входит в действие - обработчик прерывания. Поток исключения (англ. exception flow) используется так же, как и поток прерывания. Отличие прерывания от исключения состоит в том, что первое - это допустимое альтернативное событие в системе, а второе - ошибка при выполнении действия.
+
+4. Управляющим узлам (англ. control nodes) на диаграмме деятельности соответствуют псевдосостояния на диаграмме автоматов.
+
+Таблица 14.1. Соответствие между управляющими узлами и псевдосостояниями
+
+Обозначение	Наименование
+на диаграмме
+автоматов	на диаграмме
+деятельности
+	Начальное псевдосостояние
+(англ. initial pseudostate)	Начальный узел
+(англ. initial node)
+	Конечное состояние
+(англ. final state)	Завершение деятельности
+(англ. activity final)
+	Точка выхода
+(англ. exit point pseudostate)	Завершение потока
+(англ. flow final)
+	Ветвление
+(англ. fork pseudostate)	Ветвление
+(англ. fork node)
+	Соединение
+(англ. join pseudostate)	Соединение
+(англ. join node)
+	Выбор
+(англ. choice pseudostate)	Слияние / решение
+(англ. merge / decision node)
+5. Коннекторы (англ. connectors) выступают в качестве соединителей, применяемых на блок-схемах. Они используются для прерывания потока в одной части диаграммы и продолжении в другой, если диаграмма занимает несколько листов или отображение потока перенасыщает диаграмму. Коннектор представляется в виде круга, внутри которого пишется его идентификатор.
+
+	     	
+a) без коннекторов	     	б) с коннекторами
+Рис. 14.7. Пример использования коннекторов
+
+6. К группирующим элементам (англ. activity groups) относятся разделы деятельности (англ. activity partitions) и прерываемые регионы (англ. interruptible activity regions). Разделы деятельности обычно используют для моделирования бизнес-процессов или совместной работы нескольких сущностей (актеров, объектов, компонентов, узлов и т.д.). В этом случае диаграмма делится на разделы (области) вертикальными или горизонтальными линиями, в заголовке которых указываются имена сущностей, ответственных за выполнение действий внутри соответствующего раздела. Прерываемый регион группирует действия, обычная последовательность выполнения которых может прервана в результате наступления нестандартной ситуации (например, при оформлении кредита клиент от него отказывается). Он отображается четырехугольником со скругленными углами и штриховым контуром.
+
+ 
+
+14.6. Правила и рекомендации по разработке диаграмм деятельности
+
+ 
+
+При разработке диаграммы следует придерживаться следующих правил и рекомендаций [26].
+
+1. При построении диаграмм рекомендуется использовать классические принципы моделирования – декомпозиции и иерархического упорядочения. Т.е. при моделировании алгоритма вначале строится контекстная диаграмма с деятельностями, которые после детализируются с помощью соответствующих диаграмм декомпозиции.
+
+2. Количество пересечений линий следует минимизировать. При этом считается, что пересекающиеся линии не имеют логической связи друг с другом. Другими словами потоки данных или управления в местах пересечений не меняют своего направления.
+
+3. Если на диаграмме имеется ветвление / решение на параллельные или альтернативные потоки, то должно указываться и соответствующее соединение / слияние этих потоков.
+
+4. При использовании альтернативных потоков каждый из них должен быть специфицирован с помощью сторожевого условия. Сторожевые условия не должны допускать одновременного срабатывания двух и более переходов.
+
+5. В целях определения зоны ответственности (набора действий) сущностей рекомендуется использовать разделы деятельности.
+
+ 
+
+14.7. Примеры построения диаграмм деятельности
+
+ 
+
+На следующем рисунке показана упрощенная контекстная диаграмма определения допускаемых скоростей (диаграмма деятельности конструктора – метода инициализации объекта класса ru.iskraPUT.obrData.RachetVdop).
+
+
+
+Рис. 14.18. Контекстная диаграмма деятельности конструктора класса RachetVdop
+
+Вместо стереотипного символа, обозначающего деятельность, на диаграмме указан текстовый стереотип «subactivity».
+
+На следующем рисунке показана диаграмма декомпозиции для деятельности «Расчет допускаемых скоростей на перегонах».
+
+
+
+Рис. 14.19. Диаграмма декомпозиции «Расчет допускаемых скоростей на перегонах»
+
+Расчет допускаемых скоростей на прямых (слева) и в кривых (справа) участках пути распараллелен. Циклы по однородным участкам прямых и кривым смоделированы с помощью элемента «Слияние / Решение».
+
+Для каждого прямого участка пути определятся допускаемые скорости findVdop() в зависимости от конструкции верхнего строения пути (ВСП), а также заданных марки локомотива и типа вагонов. В качестве исходных данных для работы метода findVdop() принимаются:
+
+- объект normatLoc или normatVag, содержащий нормативные данные об установлении допускаемых скоростей для соответствующей марки локомотива или типа вагонов;
+
+- параметры верхнего строения пути для текущего однородного участка прямой:
+
+o тип рельсов tipRels;
+
+o приведенный износ рельсов privIsnos;
+
+o эпюра шпал epurChpal;
+
+o тип балласта tipBallast.
+
+Для локомотива и вагонов скорости могут определяться параллельно. Результат (скорости) запоминается в соответствующих объектах с помощью метода saveVdopVSP().
+
+Для каждой кривой вначале определяется величина прямой вставки d между текущей кривой и ближайшими кривыми, расположенными справа и слева от нее. Далее определяется тип кривой tipCurve (одиночная, сопряженная или составная) и в зависимости от него выполняется расчет пакета допускаемых скоростей:
+
+- по конструкции ВСП и локомотива;
+
+- конструкции ВСП и вагонов;
+
+- норме непогашенного ускорения;
+
+- норме скорости изменения непогашенного ускорения;
+
+- норме скорости подъема колеса на рельс.
+
+Допускаемые скорости по кривой запоминаются в соответствующих объектах с помощью метода saveVdopCurve().
+
+На следующем рисунке приведен пример диаграммы деятельности с разделами деятельности. На диаграмме упрощенно показан процесс комплексной оценки проектных решений по проектированию новых или реконструкции существующих железных дорог. Для автоматизации процесса используются системы, входящие в программно-технологический комплекс ИСКРА.
+
+
+
+Рис. 14.20. Диаграмма деятельности с разделами деятельности
+
+С помощью символов ветвления и соединения показана возможность параллельного выполнения операций и их зависимость друг от друга. Так формирование задания на тягово-экономические расчеты и непосредственно расчеты движения поездов возможны только после выполнения расчета допускаемых скоростей.

+ 172 - 1
articles/uml_sequence.md

@@ -1,2 +1,173 @@
-# Диаграмма последовательности
+# Диаграммы взаимодействия (последовательности и коммуникации)
 
+## Общие сведения о диаграммах взаимодействия
+
+Реализация отдельного варианта использования требует участия и взаимодействия определенных экземпляров актеров и классов. Наиболее подходящий инструмент для описания такого взаимодействия – это диаграммы последовательности и коммуникации, которые, по сути, отображают одну и ту же информацию. В связи с этим большинство Case-средств позволяет после построения одной из диаграмм автоматически получить другую, а также выполнять синхронизацию этих диаграмм между собой.
+
+Общими элементами диаграмм являются:
+
+- экземпляры актеров и объекты, участвующие во взаимодействии;
+- сообщения, передаваемые между экземплярами актеров и объектами.
+
+Экземпляры сущностей отображаются стандартно (экземпляр актера – человечком, экземпляр класса (объект) – прямоугольником или графическим стереотипом класса анализа). В то же время следует помнить, что экземпляр – это конкретная реализация соответствующей сущности (актера, класса, узла и т. д.). Чтобы учесть этот нюанс на диаграммах, имя экземпляра подчеркивается и может обозначаться следующими способами.
+
+Способ обозначения | Характеристика | Пример
+-------------------|----------------|--------
+Имя объекта`:`Имя класса | Полное обозначение. | Вася`:`Программист
+`:`Имя класса | Анонимный объект. | `:`Программист
+Имя объекта | Предполагается, что имя класса известно. | Вася
+Имя объекта`:` | Объект-сирота. | Считается, что имя класса неизвестно.	Вася`:`
+
+Для объектов, кроме имени, могут указываться также некоторые важные для взаимодействия атрибуты и их значения.
+
+Взаимодействие между экземплярами актеров и объектами моделируется посредством передачи сообщений. Сообщение (англ. message) – это спецификация факта передачи информации между сущностями с ожиданием выполнения определенных действий со стороны принимающей сущности. Сущность, отправляющую сообщение, называют клиентом, а принимающую – сервером. Таким образом, сообщения не только передают некоторую информацию, но и требуют или предполагают выполнения сервером определенных действий или передачу (возврат) клиенту необходимой информации. Если принимающей сообщение сущностью является объект, то оно представляет собой операцию (метод) объекта-сервера. Прием сообщения обычно трактуется, как возникновение события на сервере. Сообщения изображаются стрелкой с обязательным указанием направления (остриё стрелки указывает на принимающую сторону) и спецификации.
+
+Ниже рассматриваются особенности построения диаграмм взаимодействия.
+
+## Назначение и состав диаграммы последовательности
+
+**Диаграмма последовательности (sequence diagram)** наглядно отображает временной аспект взаимодействия. Она имеет два измерения. Одно измерение (слева-направо) указывает на порядок вовлечения экземпляров сущностей во взаимодействие. Крайним слева на диаграмме отображается экземпляр актера или объект, который является инициатором взаимодействия. Правее отображается другой экземпляр сущности, который непосредственно взаимодействует с первым и т.д. Второе измерение (сверху-вниз) указывает на порядок обмена сообщениями. Начальному моменту времени соответствует самая верхняя часть диаграммы. Масштаб на оси времени не указывается, поскольку диаграмма отображает лишь временную упорядоченность взаимодействия типа «раньше-позже».
+
+На диаграмме последовательности отображается ряд специфичных элементов, которые отсутствуют на диаграмме коммуникации.
+
+1. **Линия жизни** (англ. lifeline) отображается штриховой вертикальной линией, соединенной с соответствующим экземпляром сущности. Линия жизни служит для обозначения периода времени, в течение которого экземпляр может потенциально участвовать во взаимодействии. Если он существует в течение всего взаимодействия, то и его линия жизни должна продолжаться от самой верхней части диаграммы до самой нижней.
+
+    Не обязательно создавать все объекты в начальный момент времени. Отдельные объекты в системе могут создаваться по мере необходимости, существенно экономя ресурсы системы и повышая ее производительность. В этом случае объект изображается не в верхней части диаграммы, а в том месте, где он создается. Для обозначения факта уничтожения объекта в UML используется специальный символ **X**. Как правило, уничтожаются объекты, созданные на основе граничных и управляющих классов. Экземпляры актеров и объекты классов сущностей остаются в системе после окончания взаимодействия.
+
+    ![Примеры отображения экземпляров сущностей, линии жизни и символа уничтожения объекта](../img/uml_sequence_01.png)
+
+2. Как было отмечено выше, взаимодействие между экземплярами моделируется через обмен **сообщениями**. Сообщения могут быть следующих видов:
+
+    ![](../img/uml_sequence_02.png) – синхронное сообщение (англ. synchronous message). Клиент посылает сообщение серверу и **ждёт**, пока тот примет и обработает сообщение. Как правило, один объект передает синхронное сообщение второму, второй – третьему и т.д., образуя вложенный поток сообщений. В любом случае клиент, инициирующий поток сообщений, должен дождаться его завершения, т.е. возврата управления. Это самый распространенный тип сообщений;
+
+    ![](../img/uml_sequence_03.png) – асинхронное сообщение (англ. asynchronous message). Клиент посылает сообщение серверу и, не дожидаясь ответа, продолжает выполнять следующие операции;
+
+    ![](../img/uml_sequence_04.png) – возвращающее сообщение (англ. reply message), обозначающее возврат значения или управления от сервера обратно клиенту. Стрелки этого вида зачастую отсутствуют на диаграммах, поскольку неявно предполагается их существование после окончания процесса выполнения операции.
+
+    В отдельных случаях объект может посылать сообщения самому себе (вызывать собственные методы), инициируя так называемые **рефлексивные** сообщения.
+
+    Сообщения, получаемые от внешнего источника (англ. found message) и передаваемые внешнему приемнику (англ. lost message), должны, соответственно, начинаться и заканчиваться закрашенным кружком.
+
+    UML регламентирует также два часто встречаемых вида сообщений - на создание и уничтожение объектов. Первое отображается как возвращающее сообщение со стереотипом «create», второе - как синхронное сообщение со стереотипом «destroy». После получения сообщения на уничтожение объекта его линия жизни заканчивается символом X.
+
+    Каждое сообщение должно иметь имя по одному из следующих вариантов:
+
+    - произвольная строка текста. Применяется на начальных стадиях проектирования или концептуальных диаграммах;
+    - указание стереотипа для некоторых стандартных действий:
+        * «create» (англ. – создать) – возвращающее сообщение, требующее создания объекта;
+        * «destroy» (англ. – уничтожить) – синхронное сообщение с требованием уничтожить соответствующий объект;
+        * «call» (англ. – вызвать) – синхронное сообщение, требующее выполнения операции принимающего объекта;
+        * «send» (англ. – послать) – асинхронное сообщение, обозначающее посылку сигнала серверу;
+        * «return» (англ. – возвратить) или «reply» (англ. – ответить)– возвращающее сообщение;
+    - указание спецификации вызываемого метода объекта-получателя в формате:
+
+        `[переменная =] имя([список параметров]) [:возвращаемое значение]`.
+
+    **Переменная** - переменная или атрибут объекта-отправителя, которому будет присвоен результат вызываемого метода.
+
+    **Имя сообщения** (обязательный параметр) – имя вызываемого метода объекта-получателя.
+
+    **Список аргументов** – список аргументов, разделенных запятыми и передаваемых для выполнения метода.
+
+    **Возвращаемое значение** – константа или имя переменной, являющиеся результатом вызываемого метода.
+
+3. Отправка и прием сообщений сопровождаются активностью объектов. Для явного выделения этого факта, на диаграмме можно использовать **фокус управления** (англ. focus of control). Он изображается в форме вытянутого узкого прямоугольника, верхняя сторона которого обозначает начало получения фокуса управления объекта (начало активности), а нижняя сторона – окончание фокуса управления (окончание активности). Условные операторы, циклы, рекурсия и вызов собственных методов (отправка рефлексивных сообщений) инициируют вложенные потоки управления у одного и того же объекта, что можно отобразить на диаграмме с помощью вложенных фокусов управления.
+
+    ![Примеры отображения сообщений и фокуса управления](../img/uml_sequence_05.png)
+
+4. Для моделирования особенностей взаимодействия (условных операторов, циклов и т.п.) вместо вложенных фокусов управления лучше использовать **фрагменты** (англ. fragments). Фрагмент отображается прямоугольной рамкой вокруг сообщения (группы сообщений) с указанием в левом верхнем углу типа фрагмента.
+
+    ![Пример отображения фрагмента](../img/uml_sequence_06.png)
+
+    UML определяет следующие типы фрагментов:
+
+    - alt (alternatives) - вызовы альтернативных сообщений (выполнение взаимоисключающих операций). Альтернативные сообщения (группы сообщений) отделяются друг от друга горизонтальными штриховыми линиями. Используется для моделирования условного оператора (if-then-else) и операторов выбора (case или switch);
+
+    - opt (option) - вызов дополнительного сообщения (группы сообщений) при некотором условии. Аналогичен фрагменту с типом «alt» для случая, когда используется сокращенный условный оператор (if-then);
+
+    - par (parallel) - параллельная обработка сообщений. Параллельно обрабатываемые сообщения (группы сообщений) отделяются друг от друга горизонтальными штриховыми линиями;
+
+    - loop - циклическая обработка сообщений. Используется для моделирования циклов;
+
+    - break - досрочное прерывание обработки сообщений при некотором условии. Используется как составная часть других фрагментов (как правило, «loop»);
+
+    - critical - эксклюзивно обрабатываемое сообщение (группа сообщений). Используется как составная часть других фрагментов (как правило, «par»). Подразумевает приостановку обработки любых сообщений в более общем фрагменте на время обработки сообщений внутри подфрагмента «critical»;
+
+    - neg (negative) - сообщение или событие, сгенерированное в результате невозможности обработки другого принятого сообщения. Например, если при запросе пароля getPassword() истекло время на его ввод, то вместо возврата пароля будет сгенерировано сообщение «время вышло» (англ. «timeout»);
+
+    - assert (assertion) - сообщение (группа сообщений), выполняемое после предварительной проверки некоторого условия. Если условие отрицательно, то сообщение не посылается. В программировании такой прием часто используется для локализации ошибок;
+
+    - strict - строгая последовательная обработка сообщений. Последовательно обрабатываемые сообщения (группы сообщений) отделяются друг от друга горизонтальными штриховыми линиями и обрабатываются строго по очереди сверху-вниз;
+
+    - seq (sequencing) - нестрогая последовательная обработка сообщений. Сообщения (группы сообщений) отделяются друг от друга горизонтальными штриховыми линиями и могут обрабатываться в произвольном порядке за исключением сообщений, принимаемых одним объектом;
+
+    - ignore - игнорирование сообщений. После слова «ignore» в фигурных скобках перечисляются сообщения, возникновение которых во фрагменте потенциально возможно наряду с явно отображенными и которые должны быть проигнорированы;
+
+    - consider - игнорирование других сообщений. После слова «consider» в фигурных скобках перечисляются сообщения, которые явно отображены во фрагменте, а также возникновение которых во фрагменте потенциально возможно наряду с явно отображенными. Остальные потенциально возможные сообщения должны быть проигнорированы;
+
+    - ref (reference) - ссылка на часть взаимодействия, определенную в другом месте (на другой диаграмме). Данный элемент подобен предопределенным процессам на блок-схемах или скрытым составным состояниям на диаграммах автоматов.
+
+## Назначение и состав диаграммы коммуникации
+
+В отличие от диаграммы последовательности на диаграмме коммуникации основное внимание уделяется структуре взаимодействия. Помимо общих элементов (экземпляров актеров, объектов и сообщений) между участниками взаимодействия отображаются ненаправленные ассоциации, над которыми указываются передаваемые ими сообщениями. Другой отличительной особенностью является использование в спецификации сообщений нумерации, отражающей порядок их выполнения.
+
+Проектировщикам диаграмма коммуникации может дать богатый материал о распределении обязанностей между объектами. Так, например, если диаграмма напоминает форму звезды, то можно сделать вывод, что система сильно зависит от центрального объекта. В этом случае стоит подумать о более равномерном распределении обязанностей между участниками взаимодействия. Или, наоборот, если в системе хранится и обрабатывается конфиденциальная информация, то большинство сообщений должно проходить через ядро безопасности – классы, отвечающие за идентификацию, аутентификацию и, возможно, шифрование / расшифрование данных.
+
+## Рекомендации по разработке диаграмм взаимодействия
+
+При разработке диаграмм следует придерживаться следующих правил и рекомендаций.
+
+1. Для выбранного варианта использования необходимо перенести с диаграммы классов анализа все участвующие в нем классы, а с диаграммы вариантов использования – актеров.
+
+2. На диаграмме коммуникации между классами следует отобразить ассоциации, перенесенные с диаграммы классов анализа, а также добавить ассоциации, связывающие актеров с граничными классами.
+
+3. Для отображения основного и альтернативного потоков событий (наборов сообщений) в рамках варианта использования следует использовать фрагмент с типом «alt».
+
+4. На стадии анализа имена сообщениям можно давать произвольно (например, «Записать данные о клиенте») или в виде стереотипов. В дальнейшем (в модели проектирования) имена сообщений должны соответствовать методам классов.
+
+5. Имена сущностей на диаграммах (экземпляры актеров и объекты) должны быть подчеркнуты и обозначены соответствующим образом.
+
+6. На диаграммах последовательности символ уничтожения объектов следует задавать только для тех объектов, которые во время взаимодействия действительно уничтожаются. Экземпляры актеров и объекты классов сущностей (долгоживущая информация), как правило, существуют до начала и после окончания взаимодействия. Для них символ уничтожения не показывается. Объекты граничных и управляющих классов, напротив, в большинстве случаев создаются на момент взаимодействия и по его окончанию уничтожаются. В связи с этим для них требуется отображать символ уничтожения.
+
+## Примеры построения диаграмм взаимодействия
+
+На следующем рисунке с помощью диаграммы последовательности показано взаимодействие при выполнении процедуры идентификации/аутентификации пользователя, которая возможна двумя способами: путем ввода имени и пароля или с использованием ID-карты.
+
+![Пример диаграммы последовательности](../img/uml_sequence_07.png)
+
+На следующих рисунках показаны диаграммы последовательности и коммуникации, показывающие процесс загрузки данных из таблицы с сервера БД в оперативную память клиента (кэширование). Диаграммы созданы методом обратного проектирования (реинжиниринга) на основе реального программного кода. На диаграмме последовательности некоторые программные конструкции отображены не с помощью фрагментов, а с помощью вложенных фокусов управления.
+
+![Пример диаграммы последовательности](../img/uml_sequence_08.png)
+
+Пример диаграммы коммуникации
+
+![Пример диаграммы коммуникации](../img/uml_sequence_09.png)
+
+Табличные данные после загрузки заносятся в атрибут *data* объекта **propertyTable**, представляющий собой двумерный массив объектов `Object[][]`.
+
+Во взаимодействии участвуют следующие объекты:
+
+- Object – инициирует загрузку данных;
+- propertyTable – хранит описание таблицы и ее полей, а также загруженные данные в атрибуте data;
+- connectDB – отвечает за установку, поддержку и закрытие соединения с БД;
+- statement – выполняет и возвращает результаты запросов к БД.
+
+Инициировать загрузку могут объекты разных классов, поэтому объект **Object** не сопоставлен с каким-либо классом. Остальные объекты относятся к конкретным классам. После двоеточия у этих объектов показана вложенность по пакетам, а после последней точки – имя класса, экземпляром которого они являются.
+
+Во взаимодействии следующая последовательность сообщений (вызова методов):
+
+- Object инициирует загрузку данных getData();
+- создается соединение с БД в виде объекта connectDB посредством вызова конструктора класса ConnectDB. Созданный объект запоминается в переменной connect;
+- создается объект statement для выполнения запросов к БД и запоминается в переменной statement;
+- посредством вызова метода checkChangeData() проверяется признак изменения данных на сервере. Если данные изменились, то;
+    * из атрибута data объекта propertyTable удаляются старые данные clear();
+    * выполняется запрос к БД executeQuere() и запрошенные данные запоминаются в переменной rs;
+    * в цикле while() записи из переменной rs переносятся в атрибут data с помощью метода add();
+- удаляется объект statement – на диаграмме указано стереотипное сообщение «destroy»;
+- закрывается соединение с БД closeConnect().
+
+В качестве иллюстрации правил построения диаграммы последовательности на ней показаны:
+
+- два варианта создания объекта – с помощью конструктора `<constructor>()` для объекта connectDB и с помощью стереотипного сообщения «create» для объекта statement;
+- два варианта уничтожения объекта – с помощью вызова деструктора closeConnect() для объекта connectDB и с помощью стереотипного сообщения «destroy» для объекта statement;
+- два варианта вызова методов, возвращающих значения – вызов конструктора объекта connectDB с занесением результата (созданного объекта) в переменную connect с помощью двух сообщений и выполнением запроса к БД executeQuere() с занесением результата в переменную rs с помощью одного сообщения.

+ 2 - 0
articles/uml_state.md

@@ -1,5 +1,7 @@
 # Диаграмма состояний
 
+<!-- https://sites.google.com/site/anisimovkhv/learning/pris/lecture/tema12/tema12_3 -->
+
 После создания одной или нескольких диаграмм вариантов использования системный аналитик с заказчиком определяют приоритетность проработки вариантов использования и детализируют их. Главная цель данной процедуры – поиск ответа на вопрос: «В процессе какого поведения система обеспечит необходимую функциональность?».
 
 В UML имеется несколько видов диаграмм, позволяющих детализировать варианты использования, – это диаграммы поведения. В связи с этим могут использоваться разные способы детализации:

+ 115 - 0
articles/wireframe.md

@@ -0,0 +1,115 @@
+# Прототипы экранов и окон пользовательского интерфейса (wireframe)
+
+<!-- https://www.internet-technologies.ru/articles/kak-sozdat-poleznyy-wireframe.html -->
+
+Wireframe? Что это такое?  **Wireframe** - это основа структурированного цифрового проекта, один из самых ранних и наиболее важных этапов проектирования.
+
+<!-- * Что дает wireframe?
+* Создание wireframe
+* Процесс разработки wireframe
+    * Инвентаризация контента
+    * Визуальная иерархия
+    * Wireframe контента
+    * Детальный wireframe
+    * Простейший прототип -->
+
+## Что дает wireframe?
+
+Wireframe использует заполнители, такие как поля с метками, для представления контента, который будет добавлен позже.
+
+Дизайнеры используют wireframe из-за следующих преимуществ:
+
+* **Структурированный дизайн**. Вы знаете, где все будет размещаться, еще до перехода к конкретным техническим деталям.
+* **Создание основы на раннем этапе**. Меню навигация и макет определяют, как будет разрабатываться остальная часть проекта. Если есть проблема, лучше выявить ее в начале, а не на этапе детализированного прототипа.
+* **Дизайн сфокусирован на контенте**.
+* **Больше возможностей для креатива и экспериментов**. Wireframe легко создавать. Поэтому вы можете экспериментировать, не затрачивая много времени и усилий.
+
+**Wireframe** - это скелет дизайна.
+
+## Создание wireframe
+
+Wireframe могут быть созданы с помощью редактора изображений, специализированных инструментов или даже нарисованы на бумаге. Рассмотрим преимущества и недостатки каждого метода.
+
+**Бумага** - самая простая форма wireframe. По сути это просто более продвинутый эскиз. Когда вы хотите проанализировать несколько идей, прежде чем выбрать лучшую, можно довольно быстро создать wireframe на бумаге.
+
+Можно использовать программное обеспечение для презентаций, такое как Keynote или Powerpoint. Но при этом усложняется работа над проектом в команде, так как придется отправлять wireframe по электронной почте.
+
+![](../img/wireframe_01.webp)
+
+Некоторые дизайнеры предпочитают делать все в графических редакторах, таких как Sketch или Photoshop.
+
+Выбор платформы - это только начало. Рассмотрим весь процесс создания поэтапно.
+
+## Процесс разработки wireframe
+
+Этапы создания:
+
+* Инвентаризация контента.
+* Визуальная иерархия.
+* Wireframe контента.
+* Детальный wireframe.
+* Простейший прототип.
+
+Теперь рассмотрим каждый этап более подробно.
+
+### Инвентаризация контента
+
+Сначала нужно создать каталог контента, который представляет собой набор всех публикаций и их организацию.
+
+![](../img/wireframe_02.webp)
+
+Каталог контента представляет собой таблицу, в которой перечислены все материалы, которые нужно использовать, разделенные по страницам. Каталог контента помогает разрабатывать контент-ориентированный дизайн и понять, какие элементы являются наиболее важными.
+
+Для создания хорошего каталога контента можно следовать этой последовательности действий:
+
+* Перечислите весь контент с помощью URL-адресов и кратких описаний.
+* Организуйте элементы контента сначала по темам.
+* Определите каждый элемент контента на подходящую страницу, выписав дубликаты, которые относятся к нескольким страницам.
+* Проинспектируйте каталог контента на наличие ненужного материала. Удалите контент, который не нужен.
+* Если нужно, назначьте ответственных за определенные разделы или категории материалов.
+
+В дальнейшем мы будем использовать каталог контента для создания визуальной иерархии.
+
+### Визуальная иерархия
+
+Благодаря каталогу контента, включающему в себя все элементы, легче определить, какие из них наиболее важны для каждой страницы.
+
+Теперь необходимо распределить каждый элемент на первичные, вторичные или третичные элементы. Это можно сделать с помощью электронной таблицы.
+
+![](../img/wireframe_03.webp)
+
+### Wireframe контента
+
+Определите первую версию wireframe с блоками контента.
+
+![](../img/wireframe_04.webp)
+
+Wireframe контента определяет только то, где размещаются данные, а не то, как они будут представлены. Для этого подходят сетки, если используемый вами инструмент поддерживает их.
+
+![](../img/wireframe_05.webp)
+
+Когда сначала создаете wireframe для самого маленького экрана, вы можете расставить приоритеты. Альтернативой является одновременное проектирование всех элементов с последующим вычитанием менее важных. Но подобный подход часто приводит к необходимости отката.
+
+После того, как вы разработаете базовый макет, можно начинать добавлять дополнительную информацию.
+
+### Детальный wireframe
+
+Теперь нужно указать, где размещаются отдельные ссылки, иконки и изображения. При этом wireframe должен быть «мягким». Детальный каркас по-прежнему использует заполнители, блоки и неопределенные кнопки.
+
+![](../img/wireframe_06.webp)
+
+Не забывайте о потоках пользователей, так как они помогают оптимизировать размещение элементов. На этом этапе можно начать использовать шаблоны сканирования и более точно определить визуальную иерархию.
+
+### Простейший прототип
+
+Мы настоятельно рекомендуем преобразовать wireframe в простейший прототип, чтобы можно было начать тестирование как можно скорее.
+
+С помощью правильной платформы вы легко сможете добавлять интерактивность, иногда даже просто перетаскивая элементы. Несмотря на то, что это базовая интерактивность, на ней можно будет достаточно точно определить проблемы юзабилити. Особенно в макете и навигации. Оптимизация этих областей и является целью wireframe.
+
+![](../img/wireframe_07.webp)
+
+Метод быстрого прототипирования позволяет за минимальное время создавать прототипы, тестировать их, а затем использовать полученные результаты в проектировании еще до начала разработки. Это позволяет улучшать дизайн в процессе разработки, вместо того, чтобы тестировать уже готовый продукт.
+
+Используйте простейший прототип, чтобы уточнить основные моменты проекта. Когда это будет сделано, вы сможете перейти к визуальному дизайну.
+
+![](../img/wireframe_08.png)

BIN
img/uml_sequence_01.png


BIN
img/uml_sequence_02.png


BIN
img/uml_sequence_03.png


BIN
img/uml_sequence_04.png


BIN
img/uml_sequence_05.png


BIN
img/uml_sequence_06.png


BIN
img/uml_sequence_07.png


BIN
img/uml_sequence_08.png


BIN
img/uml_sequence_09.png


BIN
img/wireframe_01.webp


BIN
img/wireframe_02.webp


BIN
img/wireframe_03.webp


BIN
img/wireframe_04.webp


BIN
img/wireframe_05.webp


BIN
img/wireframe_06.webp


BIN
img/wireframe_07.webp


BIN
img/wireframe_08.png


+ 9 - 6
readme.md

@@ -77,19 +77,22 @@ http://sergeyteplyakov.blogspot.com/2014/01/microsoft-fakes-state-verification.h
     
 1. [Анализ предметной области. Основные понятия системного и структурного анализа.](articles/5_1_1_4_analiz.md)
 
-1. [UML](articles/uml.md)
+1. [UML](./articles/uml.md)
 
 1. [Диаграмма вариантов использования (прецедентов, use case)](articles/5_1_1_10_uml_use_case.md)
 
-1. [Спецификация вариантов использования (прецедентов)](articles/5_1_1_10_uml_uc_spec.md)
+2. [Спецификация вариантов использования (прецедентов)](articles/5_1_1_10_uml_uc_spec.md)
 
-1. [Диаграмма состояний](./articles/uml_state.md)
+3. [Диаграмма состояний](./articles/uml_state.md)
 
-<!-- 1. [Диаграмма последовательности] -->
+4. [Прототипы экранов и окон пользовательского интерфейса (wireframe)](./articles/wireframe.md)
 
-<!-- 1. [Диаграмма коммуникациии] -->
+<!-- 4. [ДИАГРАММЫ КЛАССОВ АНАЛИЗА] дальше используются обозначения из этой диаграммы -->
+
+5. [Диаграммы взаимодействия (последовательности и коммуникации)](./articles/uml_sequence.md)
+
+<!-- 5. [Диаграмма деятельности](./articles/uml_activity.md) недописана  -->
 
-<!-- Диаграмма анализа -->
 
 1. [Диаграмма классов](./articles/uml_class_alt.md)