Лет 10-ть назад было написано следующее:
1. Работа приложения описывается системой с конечным, дискретным набором состояний.
2. Также существуют активности - действия, выполняющие некоторые полезные функции системы и переводящие систему из одного состояния в другое.
3. Состояния характеризуются значениями атрибутов активных объектов системы и их текущими взаимосвязями, а также набором возможных активностей (в данном состоянии).
4. При переходе из состояния в состояние система может посылать обратные сообщения (нотификацию) для информирования интерфейса (GUI) о смене состояния.
5. Также при переходе из состояния в состояние система может посылать запросы на подтверждение (confirmation), которые также могут обрабатываться интерфейсом. Что немаловажно - подтверждение должно иметь некоторый описанный результат по умолчанию - на тот случай, если интерфейс его не обрабатывает (ну в самом деле - не должен же интерфейс заботиться об обработке всех подтверждений).
6. К визуальным элементам (кнопки, пункты меню и т.п.) привязываются активности, которые приводят к переходам, если эти активности доступны в текущем состоянии системы.
7. Состояния могут содержать подсостояния. Все активности доступные в родительском состоянии доступны и в дочерних, обратное неверно.
8. В целом - если два состояния характеризуются одинаковыми списками доступных активностей, приводящих к одним и тем же переходам, то эти два состояния, с точки зрения интерфейса, неразличимы.
9. Сама система (автомат) не выводит никаких информационных сообщений (кроме отладочных) или диалоговых окон. Окна привязываются к нотификациям и подтверждениям.
10. В каждом состоянии существует иерархия “активных” объектов (вложенная структура). Активности транслируются по этой иерархии, до их обработки или отказа от обработки. (Примеры “активных” объектов - Приложение -> Дерево папок - > Выбранная папка -> Текущий элемент папки, при этом если сначала выбрали “запрос”, а потом перешли на “документ”, то это два разных состояния, если над “запросом” и “документом” возможны различные операции.
-- это не потеряло актуальности и по сей день, чуть позже я постараюсь объяснить - почему.
Комментариев нет:
Отправить комментарий