например, в программе есть несколько оператор присваивания для
одной переменной, то история изменения значения переменной (т. е.
поток данных) определяется тем, в каком порядке выполняются
присваивания (т. е. потоком управления). Но это зависимость по
данным между операторами непосредственно в тексте программы
отражается далеко не так явно, как зависимость по управлению.
115
Довольно давно была предложен двойственный способ определения
программы: явно указывается зависимость по данным, т. е. поток
данных, а поток управления определяется потоком данных. Например,
самый простой способ определить поток управления по потоку данных
такой: для всех шагов алгоритма известно, какие данные являются
входными (какие переменные используются), а какие данные являются
выходными (какие переменные вычисляются). Поток управления
определяется так: шаг алгоритма выполняется, как только все его
входные данные определены (см. для сравнения врезку "Диаграммы
потоков данных" в разд. 2.2.6).
При объектно-ориентированном подходе к моделированию поток данных — это
изменение состояний объектов во времени, и описание такого изменения
существенным образом характеризует поведение. Для описания данной
характеристики поведения в UML используются понятия траектория объекта и
объект в состоянии.
Объект в состоянии — это объект некоторого класса, про который известно, что
он находится в определенном состоянии в данной точке вычислительного
процесса.
Синтаксически объект в состоянии изображается, как обычно, в виде
прямоугольника и его имя подчеркивается, но дополнительно после имени объекта
в квадратных скобках пишется имя состояния, в котором в данной точке
вычислительного процесса находится объект. В некоторых случаях состояние
объекта не важно, например, если достаточно указать, что в данной точке
вычислительного процесса создается новый объект данного класса, и в этом случае
применяется обычная нотация для изображения объектов. Важно подчеркнуть, что
объект в состоянии на диаграммах деятельности "по определению" считается
состоянием, т. е. вершиной графа модели, которая может быть инцидентна
переходам, правда переходам особого рода
Траектория объекта
116
— это переход особого рода, исходным и/или целевым
состоянием которого является объект в состоянии.
115
Это обстоятельство является источником болезненных ошибок в программах. Например,
типичная ошибка: использование неинициализированной переменной, т. е. использование в
вычислениях значения переменной до того, как это значение было определено.
116
Некоторые авторы предпочитают использовать слово "поток", поскольку словосочетания "поток
данных" и "поток управления" являются давно и хорошо устоявшимися терминами. Мы все-таки
остановились на термине "траектория объекта", поскольку "поток объекта" по-русски звучит уж
очень нескладно, хотя и соответствует устоявшейся традиции.