Закон и алгоритм функционирования системы
Эти понятия описывают поведение системы на разных уровнях абстракции.
Закон функционирования задаёт устойчивую зависимость между состоянием системы, входами, внешней средой и результатом. Он отвечает на вопрос: «По каким правилам изменяется система?»
Алгоритм функционирования задаёт конкретную последовательность действий, которая реализует нужное поведение. Он отвечает на вопрос: «Что именно и в каком порядке выполняется?»
Модель
Поведение динамической системы можно условно записать так:
x(t + 1) = F(x(t), u(t), w(t))
y(t) = G(x(t), u(t))где:
x— внутреннее состояние;u— управляющее воздействие;w— внешнее возмущение;y— наблюдаемый результат;FиG— законы перехода состояния и формирования выхода.
Алгоритм конкретизирует вычисление F и G: какие данные прочитать, какие условия проверить, какое состояние сохранить и какой ответ вернуть.
Пример
Для очереди сообщений закон можно сформулировать так:
Подтверждённое сообщение не должно повторно выдаваться этому потребителю, а неподтверждённое после сбоя может быть доставлено снова.
Алгоритм реализации содержит уже конкретные шаги:
- получить сообщение;
- обработать его идемпотентно;
- сохранить результат;
- подтвердить позицию;
- при ошибке не подтверждать сообщение и применить политику повторов.
Один закон может быть реализован разными алгоритмами. Один и тот же алгоритм не гарантирует нужное свойство, если нарушены предпосылки — например, сохранение результата и подтверждение сообщения не согласованы.
Общие закономерности систем
Наборы «законов теории систем» в учебной литературе различаются, поэтому полезнее помнить смысл основных закономерностей.
Целенаправленность
Структуру и управление оценивают относительно цели. Оптимизация отдельного компонента может ухудшить результат всей системы, если локальная метрика не совпадает с общей.
Обратная связь
Управление требует информации о фактическом состоянии. Отрицательная обратная связь уменьшает отклонение, положительная — усиливает изменение.
Необходимое разнообразие
По закону Эшби управляющая часть должна иметь достаточно вариантов реакции, чтобы компенсировать разнообразие значимых состояний и возмущений объекта. Одна фиксированная реакция не справится со всеми режимами сложной системы.
Иерархия и декомпозиция
Сложную систему рассматривают через подсистемы и уровни управления. При этом свойства целого нельзя полностью вывести из свойств изолированных частей.
Эмерджентность
У системы появляются свойства, которых нет у каждого элемента отдельно. Например, надёжность кластера определяется не только надёжностью узлов, но и протоколом согласования, сетью и способом восстановления.
Гомеостаз
Система поддерживает важные параметры в допустимом диапазоне при внешних изменениях. В программной эксплуатации эту роль играют обратная связь, ограничения ресурсов, health checks, autoscaling и механизмы восстановления.
Развитие
Система и среда меняются, поэтому алгоритм, достаточный сегодня, может перестать удовлетворять цели после роста нагрузки, изменения входных данных или появления новых ограничений.
Как применять в анализе программной системы
- Назвать цель и наблюдаемый результат.
- Определить состояние, входы и внешние возмущения.
- Записать инварианты — что должно оставаться истинным.
- Описать алгоритм перехода между состояниями.
- Найти обратную связь и задержки в ней.
- Проверить граничные состояния и отказ компонентов.
- Сравнить фактическое поведение с законом и целью.
На собеседовании
Может ли один закон функционирования иметь несколько алгоритмов?
Да. Закон описывает требуемую зависимость или инвариант, а алгоритм — одну из реализаций. Алгоритмы сравнивают по корректности, сложности, устойчивости и стоимости.