Разработка программного обеспечения обычно направлена на согласование спецификаций с реализацией.
По этой причине мы проектируем программное обеспечение в соответствии со спецификациями, а затем реализуем его на основе этого проекта. Затем мы используем тесты для подтверждения того, что реализация соответствует спецификациям, корректируя реализацию при наличии расхождений или уточняя спецификации, если они неоднозначны.
Это можно назвать инженерией, основанной на спецификациях и реализации.
В отличие от этого, при обсуждении программного обеспечения сегодня все большее значение приобретает пользовательский опыт.
Более того, именно поведение программного обеспечения, а не его реализация, фактически формирует пользовательский опыт.
Следовательно, за рамками спецификаций и реализации существуют опыт и поведение.
Таким образом, я считаю, что стоит изучить концепцию инженерии опыта и поведения (Experience & Behavior Engineering), которая основана на опыте и поведении.
Жидкое ПО (Liquidware)
Инженерия опыта и поведения является нереалистичным подходом при использовании традиционных методов разработки программного обеспечения.
Это связано с тем, что она требует улучшения пользовательского опыта без строгих границ или функциональных разделений в спецификациях. Случайный запрос пользователя на улучшение его опыта может даже потребовать отмены всего ранее разработанного программного обеспечения.
С другой стороны, если наступит время, когда автоматизация разработки программного обеспечения на основе агентов с использованием генеративного ИИ станет обыденностью, перестройка целых программных систем будет приемлемой.
Более того, в такую эпоху, оснастив выпущенное программное обеспечение чат-ботом с ИИ-инженером, можно предположить, что мы вступим в эру "жидкого ПО", где пользовательский интерфейс может быть изменен в соответствии с предпочтениями каждого пользователя.
Жидкое ПО означает нечто более гибкое, чем традиционное программное обеспечение, идеально подходящее каждому индивидуальному пользователю.
Когда наступит эта эра автоматизированной разработки и жидкого ПО, инженерная парадигма спецификаций и реализации устареет.
Вместо этого мы перейдем к парадигме инженерии опыта и поведения.
Что такое поведение?
Проще говоря, поведение — это состояние, которое меняется со временем.
И тестирование поведения — это не что иное, как тестирование этого изменяющегося во времени состояния.
Более того, тестирование поведения не сводится к подтверждению соответствия спецификации, определяющей, как происходят переходы состояний. Вместо этого, поведение тестируется на основе качества пользовательского опыта.
Конечно, если существуют ошибки, которые приводят к выполнению системой непреднамеренных операций пользователем или разработчиком, это также значительно ухудшает пользовательский опыт. Поэтому тестирование поведения включает проверку функционального соответствия и функциональной валидности.
После выполнения этих базовых функциональных требований акцент смещается на тестирование высококачественного поведения с точки зрения пользовательского опыта.
Идеальный опыт
Для человека идеальный пользовательский опыт — это управление собственным телом в хорошем состоянии здоровья.
Подумайте вот о чем: каждый день мы управляем сложным, но при этом сильно ограниченным и лимитированным телом весом в десятки килограммов, используя его для целенаправленной деятельности.
Если бы кто-то попытался управлять такой тяжелой, сложной и сильно ограниченной системой для выполнения желаемых действий, опыт, как правило, был бы довольно плохим.
Однако, пока мы не чувствуем себя плохо, мы движем это тяжелое, сложное и сильно ограниченное тело так, будто оно невесомо, манипулируем им так же легко, как простым механизмом, и не обращаем внимания на его ограничения и лимиты, как будто их не существует.
Это и есть идеальный опыт.
Стремясь к высококачественному поведению, возможно, удастся обеспечить опыт, сопоставимый с управлением собственным телом.
Иными словами, даже если система медленно обрабатывает данные, сложна в функциональности и имеет множество ограничений и лимитов, можно будет реализовать абсолютно безстрессовый опыт использования жидкого ПО.
В заключение
Идеальное жидкое ПО будет предлагать опыт, сродни управлению нашим собственным телом.
Такое жидкое ПО станет для нас чем-то вроде тела.
Каждый раз, когда идеальное жидкое ПО будет распространяться или его функции будут улучшаться, это будет ощущаться так, будто наши собственные тела расширяются.