**Диаграмма переходов состояний** является графической формой предоставления конечного автомата - математической абстракции, используемой для моделирования детерминированного поведения технических объектов или объектов реального мира.  
На этапе анализа требований и определения спецификаций диаграмма переходов состояний демонстрирует поведение разрабатываемой программной системы при получении управляющих воздействий. Под управляющими воздействиями или сигналами в данном случае понимают управляющую информацию, получаемую системой извне. Например, управляющими воздействиями считают команды пользователя и сигналы датчиков, подключенных к компьютерной системе. Получив такое управляющее воздействие, разрабатываемая система должна выполнить определенные действия и или остаться в том же состоянии, или перейти в другое состояние взаимодействия с внешней средой.  
Для построения диаграммы переходов состояний необходимо в соответствии с теорией конечных автоматов определить: основные состояния, управляющие воздействия (или условия перехода), выполняемые действия и возможные варианты переходов из одного состояния в другое.  
Условные обозначения, используемые при построении диаграмм переходов состояний:
- Терминальное состояние:  
	![Терминальное состояние](../Pictures/13_01.%20Терминальное%20состояние.png)
- Промежуточное состояние:  
	![Промежуточное состояние](../Pictures/13_02.%20Промежуточное%20состояние.png)
- Переход:  
	![Переход](../Pictures/13_03.%20Переход.png)
  
Если программная система в процессе функционирования активно не взаимодействует с окружающей средой (пользователем или датчиками), например, использует примитивный
интерфейс и выполняет некоторые вычисления по заданным исходным данным, то диаграмма переходов состояний обычно интереса не представляет. В этом случае она демонстрирует только последовательно выполняемые переходы: из исходного состояния в состояние ввода данных, затем после выполнения вычислений - в состояние вывода и, наконец, в состояние завершения работы.  
![Диаграмма переходов состояний ПО, активно не взаимодействующего с окружающей средой](../Pictures/13_04.%20Диаграмма%20переходов%20состояний%20ПО,%20активно%20не%20взаимодействующего%20с%20окружающей%20средой.png)  
Для интерактивного программного обеспечения с развитым пользовательским интерфейсом основные управляющие воздействия - команды пользователя, для программного обеспечения реального времени - сигналы от датчиков и/или оператора производственного процесса. Общим для этих типов программного обеспечения является наличие состояния ожидания, когда программное обеспечение приостанавливает работу до получения очередного управляющего воздействия. Для интерактивного программного обеспечения наиболее характерно получение команд различных типов, а если это еще и программное обеспечение реального времени - однотипных сигналов (либо от многих датчиков, либо требующих продолжительной обработки).  
![Диаграмма переходов состояний ПО, активно взаимодействующего с окружающей средой](../Pictures/13_05.%20Диаграмма%20переходов%20состояний%20ПО,%20активно%20взаимодействующего%20с%20окружающей%20средой.png)  
В отличие от интерактивных систем для систем реального времени обычно установлено более жесткое ограничение на время обработки полученного сигнала программного обеспечения. Такое ограничение часто требует выполнения дополнительных исследований поведения системы во времени, например, с использованием сетей Петри или марковских процессов.  
К программному обеспечению, требующему уточнения особенностей поведения посредством построения диаграммы переходов состояний, относится и программное обеспечение, ориентированное на работу в сети. При этом отдельно строят модели поведения сервера и клиента, представляя сообщения, передаваемые между ними, в виде управляющих воздействий.  
**Пример:** рассмотрим диаграмму переходов состояний для программы построения графиков функций одной переменной. Программа относится к классу интерактивных, соответственно на этапе анализа и определения спецификаций целесообразно уточнить поведение программы на уровне интерфейса с пользователем, тем более, что наличие простого интерфейса оговорено в техническом задании. Один из возможных вариантов диаграммы переходов состояний программы:  
![Диаграмма переходов состояний](../Pictures/13_06.%20Диаграмма%20переходов%20состояний.png)  
Полученную диаграмму переходов состояний следует согласовать с заказчиком программного обеспечения.