Введение

Архитектор систем – специалист в области информационно-коммуникационных технологий. Архитекторы систем определяют архитектуру компьютеризированной системы (то есть системы, состоящей из программного и аппаратного обеспечения) для удовлетворения определенных требований. Эти определения включают в себя: декомпозицию системы на компоненты, взаимодействие компонентов и интерфейсы (включая взаимодействие с внешней средой, особенно с пользователями), а также технологии и ресурсы, которые будут использоваться при проектировании и реализации. Работа архитектора систем должна быть направлена на предотвращение проблем при реализации и обеспечивать возможность внесения непредвиденных изменений и расширений на последующих этапах. В силу обширного опыта, необходимого для этой работы, архитектор систем обычно является высококвалифицированным специалистом с глубокими, но общими знаниями в области аппаратного и программного обеспечения, а также схожих (пользовательских) систем. Прежде всего, архитектор систем должен хорошо разбираться в предметной области пользователей. Например, архитектор системы управления воздушным движением должен быть не просто поверхностно знаком со всеми задачами этой системы, включая задачи пользователей всех уровней. Должность архитектора систем подразумевает более высокий уровень ответственности за проектирование, чем у инженера-программиста или программиста, хотя повседневные задачи могут пересекаться.

Архитектор систем: темы

Архитектура больших систем была разработана как способ работы с системами, которые слишком велики, чтобы их можно было охватить умом, не говоря уже о проектировании. Системы такого масштаба стремительно становятся стандартом, поэтому архитектурные подходы и архитекторы востребованы как никогда для решения проблем, возникающих в крупных и очень крупных системах. Как правило, чрезмерно крупные системы приводятся к "человеческим" масштабам с помощью многоуровневого подхода, где каждый уровень состоит из ряда понятных подсистем, каждая из которых имеет своего ведущего инженера и/или архитектора. Завершенный уровень на одном этапе представляется как функциональный "компонент" более высокого уровня (и может полностью исчезнуть на верхних уровнях).

Пользователи и спонсоры

Архитекторы должны понимать потребности людей и разрабатывать продукты, которые будут удобны в использовании, функциональны и эстетически привлекательны. Хороший архитектор также является ключевым хранителем видения пользователей относительно конечного продукта и процесса формирования требований на основе этого видения и их реализации. Архитекторы не придерживаются жёстких процедур. Они взаимодействуют с пользователями и заказчиками в очень интерактивной и достаточно неформальной манере – вместе они выявляют реальные требования, необходимые для проектируемой (конечной) системы. Архитектор должен постоянно поддерживать связь с конечными пользователями и ведущими системными инженерами. Следовательно, архитектор должен досконально знать среду и проблемы пользователей, а также инженерную среду возможных вариантов решения.

Требования высокого уровня

Спецификация пользовательских требований должна быть совместным продуктом пользователей и архитектора: пользователи предоставляют свои потребности и список пожеланий, а архитектор – знания о том, что, вероятно, окажется реализуемым в рамках ограничений по стоимости, времени и другим факторам. Когда потребности пользователей преобразуются в набор высокоуровневых требований, наступает оптимальный момент для написания первой версии приемочных испытаний, которые впоследствии должны постоянно поддерживаться в актуальном состоянии в соответствии с требованиями. Это позволит пользователям четко понимать, что они получат. Это также служит защитой от нетестируемых требований, недопониманий и разрастания требований. Разработка инженерных требований первого уровня – это не только аналитическая задача, и в ней должны участвовать как архитектор, так и инженер. Если для соблюдения ограничений необходимо идти на компромиссы, архитектор должен обеспечить, чтобы конечный продукт и общий облик не слишком отклонялись от изначальных намерений пользователей. Инженер должен сосредоточиться на разработке конструкции, которая оптимизирует ограничения, но при этом обеспечивает работоспособность, надежность, расширяемость и устойчивость продукта. Предоставление пользователям необходимых услуг – это основная функция спроектированной системы. Однако, по мере того как системы становятся все больше и сложнее, и их фокус смещается от простых аппаратных и программных компонентов, применение традиционных принципов разработки систем оказывается недостаточным. Необходимо применять более общие принципы архитектуры систем, аппаратного и программного обеспечения при проектировании (под)систем. Архитектуру также можно рассматривать как упрощенную модель готового конечного продукта, основная функция которой – определение компонентов и взаимосвязей между ними, чтобы обеспечить целостность, полноту и соответствие конечного результата изначальному видению пользователей, особенно в отношении компьютерного человеческого интерфейса. Она также используется для обеспечения совместимости и желаемого взаимодействия компонентов. Необходимо различать архитектуру мира пользователей и архитектуру спроектированной системы. Первая представляет и решает проблемы и задачи в мире пользователя, и в основном отражается в компьютерном человеческом интерфейсе (CHI) спроектированной системы. Спроектированная система представляет собой инженерные решения – то, как инженер предлагает разработать, выбрать и объединить компоненты технической инфраструктуры для поддержки CHI. В отсутствие опытного архитектора часто возникает путаница между этими двумя архитектурами. Инженер мыслит в категориях аппаратного и программного обеспечения и технического пространства решений, в то время как пользователи могут думать о решении задачи перемещения людей из точки А в точку Б за разумное время и с разумными затратами энергии, или о предоставлении необходимой информации клиентам и сотрудникам. Ожидается, что системный архитектор объединит знания об архитектуре мира пользователей и об архитектурах (всех потенциально полезных) инженерных систем. Первая – это совместная работа с пользователями, вторая – с инженерами. Результатом является набор высокоуровневых требований, отражающих потребности пользователей, которые могут быть использованы инженерами для разработки требований к системному проектированию. Поскольку требования меняются в ходе проекта, особенно длительного, архитектор необходим до тех пор, пока система не будет принята пользователем: он гарантирует, что все изменения и интерпретации, внесенные в процессе разработки, не искажают точку зрения пользователей.

Анализ затрат и выгод

Архитекторы – это специалисты широкого профиля. От них не требуется быть экспертами в какой-либо одной технологии, но ожидается, что они будут обладать знаниями о многих технологиях и смогут оценивать их применимость к конкретным ситуациям. Они также применяют свои знания на практике, но оценивают соотношение затрат и выгод различных решений, использующих разные технологии, например, аппаратное обеспечение, программное обеспечение или ручные методы, и обеспечивают, чтобы система в целом соответствовала ожиданиям пользователей. Многие готовые или уже разработанные аппаратные и программные компоненты могут быть выбраны независимо, исходя из таких ограничений, как стоимость, скорость отклика, пропускная способность и т.д. В некоторых случаях архитектор может самостоятельно (почти) полностью собрать конечную систему. Или же ему может потребоваться помощь инженера по аппаратному или программному обеспечению для выбора компонентов, а также для проектирования и создания специализированных функций. Архитекторы (или инженеры) также могут привлекать к работе других специалистов – в области безопасности, защиты информации, связи, специализированного оборудования, графики, эргономики, тестирования и оценки, контроля качества, надежности, ремонтопригодности, доступности, управления интерфейсами и т.п. Эффективной команде системных архитекторов необходимо иметь доступ к специалистам в критически важных областях по мере необходимости.

Разделение и слоивание

Архитектор, планирующий строительство, работает над общим проектом, обеспечивая его удобство и функциональность для будущих обитателей. В то время как для постройки частного дома может быть достаточно одного архитектора, для решения сложных задач, возникающих при проектировании нового высотного здания, потребуется множество инженеров. Если проект достаточно масштабный и сложный, отдельные части архитектуры могут быть разработаны как независимые компоненты. Например, при строительстве жилого комплекса может быть один архитектор для всего комплекса и отдельные архитекторы для каждого типа здания, работающие в составе архитектурной команды. Крупные автоматизированные системы также требуют архитектора и значительного инженерного потенциала. Если спроектированная система достаточно велика и сложна, системный архитектор может передать часть работы архитектору аппаратного обеспечения и/или архитектору программного обеспечения, хотя все они могут быть членами единой архитектурной команды. Архитектор должен распределить системные требования между основными компонентами или подсистемами, которые находятся в зоне ответственности одного инженера по аппаратному или программному обеспечению, или руководителя инженерной группы и его команды. Однако архитектора ни в коем случае нельзя рассматривать как инженерного руководителя. (Если объект достаточно велик и/или сложен, главный архитектор делегирует части работы более специализированным архитекторам.) В идеале, каждый такой компонент/подсистема должен быть достаточно автономным, чтобы его можно было протестировать как целостный элемент, отдельно от всей системы, используя простую тестовую среду для подачи имитированных входных данных и регистрации выходных. То есть, для проектирования и создания подсистемы управления данными системы управления воздушным движением не обязательно понимать, как работает сама система управления воздушным движением. Достаточно знать ограничения, в рамках которых подсистема должна функционировать. Хороший архитектор гарантирует, что система, какой бы сложной она ни была, строится на основе относительно простых и "чистых" концепций для каждой (под)системы или уровня и легко понятна всем, особенно пользователям, без специальной подготовки. Архитектор должен минимизировать использование эвристик, чтобы обеспечить четкое определение каждого раздела и исключить из него кустарные решения, обходные пути, упрощения или запутанные детали и исключения. По мере изменения потребностей пользователей (после внедрения и эксплуатации системы) гораздо проще развивать простую концепцию, чем ту, которая перегружена исключениями, особыми случаями и множеством оговорок. Многоуровневая архитектура важна для поддержания достаточной простоты каждого уровня, чтобы он оставался понятным для одного человека. При переходе на более высокие уровни целые системы нижних уровней становятся простыми компонентами верхних уровней и могут полностью исчезнуть на самых высоких уровнях.

Испытание на прием

Приемочное тестирование является ключевой ответственностью системного архитектора. Это основной способ, с помощью которого руководитель программы продемонстрирует пользователям, что система соответствует первоначальному замыслу и что все участвующие архитекторы и инженеры достигли поставленных целей.

Связь с пользователями и инженерами

Архитектор использует эскизы, модели и чертежи. Архитектор автоматизированных систем (или программного обеспечения или аппаратного обеспечения) должен использовать эскизы, модели и прототипы для обсуждения различных решений и результатов с пользователями, инженерами и другими архитекторами. Ранняя черновая версия руководства пользователя неоценима, особенно в сочетании с прототипом. Тем не менее, важно создать работоспособный и хорошо написанный набор требований или спецификацию, которые будут достаточно понятны заказчику (чтобы он мог правильно их утвердить), но требования ключевых пользователей должны быть зафиксированы в предварительном руководстве пользователя для обеспечения ясности. При этом необходимо использовать точный и однозначный язык, чтобы у разработчиков и других исполнителей не возникало сомнений в значениях или намерениях. В частности, все требования должны быть проверяемыми, а первоначальный проект плана тестирования должен разрабатываться параллельно с требованиями. Все заинтересованные стороны должны утвердить описания приемочных испытаний или их эквиваленты в качестве единственного критерия соответствия требованиям в начале проекта.

Метафора архитектора

Использование любой формы слова "архитектор" регулируется "законами о титулах" во многих штатах США, и для его использования необходимо иметь лицензию архитектора зданий. В Великобритании совет по регистрации архитекторов не распространяет ограничения на использование слова "архитектор" применительно к программному обеспечению и ИТ.