Как смоделировать различные возвращаемые значения функции в диаграмме деятельности UML?

Смотрите следующий код для примера. Как я могу смоделировать различные возвращаемые значения функции в диаграмме деятельности UML?

typedef enum {CLOSED, OPEN, UNKNOWN} sw_state_t;

sw_state_t read_input(int index)
{
    uint8_t sw_state;

    if (spi_read(&sw_state) == STATUS_OK) {
       if (sw_state & (1 << index))
           return CLOSED;
       else
           return OPEN;
    }

    return UNKNOWN;
}

Я хочу показать значение, которое возвращает функция. У меня есть блок Activity с одним входным ActivityParameter и одним выходным ActivityParameter.

Обновить

Имеет ли смысл следующая диаграмма?

3 ответа

Решение

Используйте объект данных, так как они являются выходными данными действий. Затем свяжите объект с деятельностью

Глядя на свою диаграмму, непосредственно перед каждым соответствующим ActivityFinal (возвращать OPEN, CLOSED, UNKNOWN) добавьте действие для возврата соответствующего объекта следующим образом. Затем подключите каждый объект с помощью OutputParameter.

введите описание изображения здесь

Я думаю, что ваша диаграмма слишком мелкозернистая. Зачем вам нужны внутренние органы?

Я бы сделал это просто так:

просто

  1. ваш пример с одной функцией слишком мал, более широкий контекст отсутствует. Каковы будут результаты использования функции read_input, последующие действия, как она интегрируется в окружающую систему. Как предполагает @PsiX, он, вероятно, слишком мелкозернистый. Без более широкого представления моделирование отдельных маленьких кусочков кода не имеет особого смысла.

  2. Я сам не эксперт, все еще учусь → некоторые ссылки на объяснения диаграмм действий, которые полезны на мой взгляд, особенно статьи Конрада Бока

    В вашем случае способ моделирования результата будет зависеть от того, как вы хотите моделировать остальное, от более широкого контекста.

  3. Если вы хотите сконцентрироваться на потоке управления, вы можете использовать, например, подход "отправить сигнал". Моделирование "отправить событие"/"получить событие" используется визуальным языком ARIS Event-Driven Process Chain (EPC), где он играет важную роль. Я не уверен, насколько хорошо это вписывается в концепцию диаграммы активности UML, но кажется, что это "законно"

    сосредоточиться на управлении потоком

  4. Если вы хотите сконцентрироваться на потоке данных, вы можете использовать способ работы электрических цепей (я так или иначе считаю, что он является источником концепции "булавки"). Деятельность будет отправлять токен данных через один из выходных контактов. Это установит один из выходных проводов высоко. Установите один из битов, верните одно значение перечисления.

    сосредоточиться на потоке данных

Другие вопросы по тегам