Представьте, что вы хотите зарядить телефон, но у зарядного устройства и смартфона разные разъёмы. Или вы садитесь в новый автомобиль и не можете сразу понять, как включить фары. Почему так происходит? Всё дело в интерфейсе!
Когда мы взаимодействуем с любой системой, мы не видим её внутреннее устройство – для нас это чёрный ящик. Но чтобы система работала, у неё должны быть понятные точки взаимодействия. Эти точки определяются через интерфейсы. При описании системы как чёрного ящика нас интересует только то, как система взаимодействует с внешним миром, не вдаваясь во внутреннее устройство. Вот несколько описаний системы как чёрного ящика:
- Описание функции системы, где функция – это то, что система делает во внешнем мире.
- Описание интерфейсов системы, где интерефейс – это то, через что происходит взаимодействие с внешним миром.
- Описание состояний системы – в каких состояниях система может находиться.
- Характеристики системы (предметы интересов) – какие свойства системы влияют на её работу.
Интерфейсы в реальном мире, у системы. Интерфейс — это место взаимодействия модулей, а само взаимодействие идёт согласно описанию.
Описания здесь — это описание интерфейса. Интерфейс буквально присутствует в физическом мире есть, а описание интерфейса – это описание правил и стандартов взаимодействия системы с внешним миром. Это описание существует как ментальная или информационная концепция.
Чтобы взаимодействие действительно происходило, нужен интерфейсный модуль – физический объект, реализующий интерфейс. Описание интерфейса определяет, как должно происходить взаимодействие, а интерфейсный модуль обеспечивает физическое выполнение этих правил.
Описание интерфейсов – это часть описания системы, но не сама система. Он определяет, как можно подать данные в систему, как получить результаты её работы и какие ограничения на вход и выход существуют.
Пример: Автомобиль как система. В этой системе описание интерфейса – это, например, описание правил взаимодействия водителя с автомобилем. Оно определяет, какие действия должен выполнить водитель, чтобы передать команды машине. Например, описание интерфейса управления автомобилем включает в себя правило: «поворот устройства управления направлением изменяет курс движения», «нажатие устройства ускорения увеличивает скорость», «активация устройства запуска приводит в действие двигатель». В свою очередь, интерфейсный модуль – это физический объект, реализующий вышеописанный интерфейс. В автомобиле такими модулями являются руль (устройство управления направлением), педаль газа (устройство ускорения), кнопка запуска двигателя.
При этом здесь концепция “черного ящика” объясняет, что водитель не видит, как функционирует автомобиль или как двигатель преобразует топливо в движение, но через интерфейсные модули взаимодействует с системой, то есть управляет автомобилем. Интерфейсный модуль может быть частью системы, чей интерфейс рассматриваем. Например, у автомобиля — это руль, который взаимодействует с человеком-водителем.
В этом примере можно выделить следующие интерфейсы и их интерфейсные модули:
– физический интерфейс описывается правилами взаимодействия с механическими элементами управления, интерфейсные модули – педали, руль, кнопки на панели;
– информационный интерфейс описывается правилами предоставления водителю данных о состоянии автомобиля, интерфейсные модули – спидометр, индикаторы топлива, дисплей приборной панели;
– энергетический интерфейс описывается правилами подачи энергии в автомобиль, интерфейсные модули – топливный бак, зарядный порт электромобиля;
– голосовой интерфейс описывается правилами голосового взаимодействия с автомобилем, интерфейсный модуль микрофон, голосовой процессор, акустическая система.
Если бы каждая машина имела уникальный интерфейс управления, водителям пришлось бы переучиваться перед каждой поездкой. Именно стандартизация интерфейсов делает вождение понятным и универсальным.
Таким образом, выделяем три разных понятия — интерфейс, описание интерфейса и интерфейсный модуль. Интерфейсы в реальном мире, у системы. Правила и стандарты описывают интерфейсы. Интерфейсные модули – это физические объекты, которые реализуют интерфейс. Описание интерфейса – это часть описания системы как черного ящика, но не сама система. Без интерфейсов системы не могут взаимодействовать друг с другом или с пользователями. Мы живём в мире интерфейсов – от автомобилей и гаджетов до языка и социальных взаимодействий. И чем лучше продуман интерфейс, тем легче и удобнее работать с системой!