Архитектура для жизни
Как системный подход помогает управлять городами
Все вокруг построено согласно определенной архитектуре: здания и города, печатные платы устройств и протоколы, по которым они подключаются к интернету — и даже карьера бывает подчинена корпоративной архитектуре. О чем бы мы ни говорили, структурный подход облегчает процесс работы и позволяет добиться лучшего результата. В материале, подготовленном вместе с компанией Huawei, N + 1 рассказывает, что за проблемы решает архитектурный подход в IT (и не только) и какой путь к сегодняшнему дню прошли умные системы управления городами.
Подход ко всему
Когда говорят об «архитектуре», в первую очередь на ум приходят города. Бывает, что решения архитекторов не лишены изъянов, но постройки становятся культовыми. Яркий пример — Пизанская башня. Иногда архитекторы забывают, что строят здания не в Minecraft, и тогда появляется что-то вроде отеля Вдара в Лас Вегасе, чьи изогнутые зеркальные стены превращают окрестные улицы в горящий ад. Порой архитекторов осеняют действительно интересные идеи — например, позволить пешеходам самостоятельно вытоптать тропинки, после чего замостить их, как это произошло в университете штата Огайо.
От архитектурных объектов требуется соответствовать назначению и приносить пользу, выдерживать нагрузки и быть эстетически приятными. В цифровом мире архитектура должна соответствовать тем же требованиям — разве что эстетическая красота заменяется понятностью и удобностью для пользователя.
Безусловно, можно написать программу для себя или небольшой коммерческий проект, вообще не обращая внимания на архитектуру. Однако при создании сложных систем необходимо учитывать тысячи параметров и обеспечивать взаимосвязь между множеством компонентов. Здесь не обойтись без четко прописанного плана, который описывал бы как состав компонентов, так и взаимодействие между ними. Таким планом и является архитектура системы. Это верно для любых сложных объектов и систем, создаваемых человеком — не зря целые книги посвящают архитектуре предприятий, процессоров и информационных систем, а Международная организация по стандартизации (ISO) выпустила отдельный стандарт ISO/IEC/IEEE 42010:2011 «Системная и программная инженерия. Описание архитектуры».
Кстати, согласно ISO, определение архитектуры звучит так: «Архитектура (системы) — фундаментальная организация системы, реализованная в ее компонентах, их взаимосвязях друг с другом и с окружающей средой, и руководящие правила проектирования и развития системы».
В вычислительных машинах архитектурный подход появился раньше, чем некоторые города на карте. Задолго до трудов фон Неймана в переписке его обсуждали Чарльз Бэббидж и Ада Лавлейс, которые вместе работали над несостоявшимся проектом аналитической машины — прообразом современного компьютера. Конрад Цузе описывал архитектурный подход при патентовании первой версии своей вычислительной машины Z1. Впрочем, архитектуры современных интеллектуальных систем имеют мало общего с этим механическим устройством.
Архитектурный подход к созданию ПО был сформирован гораздо позже. В конце 1960-х это сделал голландский математик и исследователь структурного программирования Эдсгер Дейкстра. Возникновение подобной инициативы было связано с ростом сложности задач, которые решались с помощью компьютеров, и необходимого для этого программного обеспечения.
Сегодня в большинстве случаев ПО создается по принципу экономии времени программиста. Тогда же время вычислительных машин стоило дороже времени программиста, не говоря уже о технических ограничениях ЭВМ середины прошлого века. В итоге разработчики не имели иного выхода, кроме жесткой оптимизации кода. Парадигма структурного программирования, предложенная Дейкстрой, имела своей целью не только повысить производительность труда программистов, но и сократить число ошибок при разработке, а также упростить дальнейшую отладку и модификацию больших программных комплексов.
Маленькие части большого целого
Каждый из компонентов объемного проекта в IT выполнен по собственной архитектуре: процессор, макетная плата, сетевое размещение, облачные вычисления и нейросети. Более того, для каждого из них существует не одна, а множество архитектур. От архитектора цифровой системы требуется сделать трудный, но правильный выбор.
Взять, к примеру, RISC и CISC архитектуры процессоров. Едва ли можно сказать, что одна лучше другой. CISC процессоры более производительны, поскольку несколько команд в них можно заменить одной аналогичной. Однако стоят они дороже и потребляют больше энергии, чем RISC процессоры, которые благодаря экономичности и более демократичной стоимости популярны в мобильных устройствах. Инженеру же необходимо понять, какая архитектура лучше подойдет его проекту.
Можно выделить три важнейших комплекса технологий, находящихся в основании современных интеллектуальных систем: программное обеспечение, нейросети и облачные технологии.
Архитектура ПО
Архитектура ПО во многом опирается на логические схемы, в которых рассматриваются элементы программ и связи между ними. При этом выбор архитектуры диктуют множество факторов: это и используемый язык программирования, и устройство, для которого создается приложение, и внешние взаимодействия приложения, например, подключения к базам данных и использование сторонних API. Но некоторые архитектуры вполне универсальны.
Например MVC, или Модель-Вид-Контроллер, в которой данные приложения, пользовательский интерфейс и управляющая логика размещены в разных компонентах, благодаря чему их можно модифицировать независимо. В свою очередь эти компоненты тоже имеют свою архитектуру.
Чем сложнее приложение и выше требования к эффективности работы ПО, тем на более мелкие части эти компоненты могут быть разбиты. Как и архитекторы университета штата Огайо, разработчики программного обеспечения смотрят на цифровые тропинки, протоптанные их пользователями, и в обновлениях учитывают пользовательский опыт, чтобы взаимодействие с программой было максимально быстрым и простым. Архитектура, такая как MVC, серьезно упрощает работу, ведь для изменения интерфейса достаточно изменить одну компоненту — Вид.
Архитектура нейросетей
В мире нейросетей новые архитектуры постоянно появляются в ответ на актуальные задачи. Понятие нейросети было введено в 1943 году Мак-Каллоком и Питтсом и относилось к задаче формализации человеческого мозга.