В данном посте опишу способ использования связей функционального взаимодействия (FunctionalExchanges), к которому я пришел на практике при работе в Capella.
Часто возникает ситуация, что результат одной функции используют несколько других функций. В некоторых ситуациях количество использующих функций может быть очень большим. Например, функция 1 Хранение файлов проекта. А другие функции используют эти файлы для выполнения каких-либо операций с ними.
Вариант 1. Для функции SystemFunction1 создаются отдельные выходные функциональные порты для каждой связи.
Вариант 2. Для функции SystemFunction1 создаются один выходной функциональный порт и все связи исходят из него
- Вариант 3 Используется элемент Dublicate для того чтобы размножать порты функционального взаимодействия
На данный момент я пришел к выводу, что правильно использовать Вариант 1.
Вариант 2 не удобен тем, что при автоматическом layout диаграмм, когда несколько связей выходят из одного порта, результирующие диаграммы получаются плохо читаемыми. Гораздо лучше воспринимаются диаграммы, когда одна связь выходит из одного порта.
Использование одного порта для нескольких связей не позволяет на следующей стадии размещения функций по компонентам распределить функциональные связи по нескольким компонентным связям (об этом я напишу еще позже)
Вариант 2 скорее всего может возникнуть у людей, с опытом программирования. Выходной порт воспринимается как результат функции. А входной порт как входной параметр. Предполагаю, что это не совсем верная интерпретация функциональных связей. Правильнее воспринимать функциональные связи между функциями как грани графа, отображающего инфорамцию о том как функции взаимосвязаны друг с другом.
Использование одного порта для нескольких связей не позволяет на следующей стадии размещения функций по компонентам распределить функциональные связи по нескольким компонентным связям (об этом я напишу еще позже)
Вариант 2 скорее всего может возникнуть у людей, с опытом программирования. Выходной порт воспринимается как результат функции. А входной порт как входной параметр. Предполагаю, что это не совсем верная интерпретация функциональных связей. Правильнее воспринимать функциональные связи между функциями как грани графа, отображающего инфорамцию о том как функции взаимосвязаны друг с другом.
Вариант 1, при желании, может быть легко (автоматически) превращен в Вариант 2. В Capella реализована возможность присвоения функциональным связям категорий. После этого на диаграмме можно "схлопнуть" связи выбранных категорий, отобразив вместо большого количества однотипных связей в виде одной связи с названием категории. В результате для Варианта 1 диаграмма превращается в следующую диаграмму
Вариант 3 хорошо читается на диаграммах, но не удобен при отображении функциональных взаимодействий на диаграммах последовательности. Дубликаты засоряют диаграмму. При попытке использования дубликатов, их становится реально много, что приводит к абсолютной не читаемости диаграмм последовательности.
Гораздо понятнее смотреть на диаграмму последовательности, получаемую при использовании Варианта 1 и 2
А вот так стоит поступать при переходе на следующий уровень декомпозиции функций при использовании Варианта 1. Выходные порты просто переносятся на вложенные функции.
| Evernote помогает вам помнить всё и без труда организовать свою жизнь. Загрузить Evernote. |







Комментариев нет:
Отправить комментарий