Введение
В областях автоматизации и инженерии, инженер-аппаратчик или архитектор аппаратного обеспечения охватывает области электроники и электротехники, с подспециализациями в аналоговых, цифровых или электромеханических системах. Архитектор систем оборудования или архитектор оборудования несет ответственность за: взаимодействие с системным архитектором или заинтересованными сторонами заказчика. В настоящее время крайне редко встречаются достаточно крупные и/или сложные аппаратные системы, требующие архитектора аппаратного обеспечения, которые не нуждались бы в значительном объеме программного обеспечения и системном архитекторе. Поэтому архитектор аппаратного обеспечения обычно взаимодействует с системным архитектором, а не напрямую с пользователями, спонсорами или другими заинтересованными сторонами заказчика. Однако, при отсутствии системного архитектора, архитектор аппаратных систем должен быть готов непосредственно взаимодействовать с заинтересованными сторонами заказчика для определения их (изменяющихся) потребностей, которые должны быть реализованы в аппаратном обеспечении. Архитектору аппаратного обеспечения также может потребоваться непосредственное взаимодействие с архитектором программного обеспечения или инженерами-программистами, или с другими инженерами-механиками или инженерами-электриками. Формирование требований к аппаратному обеспечению наивысшего уровня, основанных на потребностях пользователя и других ограничениях, таких как стоимость и сроки. Обеспечение согласованности, полноты, корректности и операционального определения этого набора высокоуровневых требований. Проведение анализа затрат и выгод для определения оптимальных методов или подходов к выполнению требований к аппаратному обеспечению, с максимальным использованием готовых коммерческих компонентов или уже разработанных решений. Разработка алгоритмов разбиения (и других процессов) для распределения всех текущих и прогнозируемых (аппаратных) требований по дискретным аппаратным разделам, чтобы минимизировать объем коммуникаций между разделами, а также между пользователем и системой. Разделение крупных аппаратных систем на подсистемы и компоненты (последовательные уровни), каждый из которых может быть обработан одним инженером или командой инженеров. Обеспечение разработки максимально надежной архитектуры аппаратного обеспечения. Формирование набора требований к приемочным испытаниям совместно с конструкторами, инженерами по тестированию и пользователем, определяющих соответствие всем высокоуровневым требованиям к аппаратному обеспечению, особенно в отношении пользовательского интерфейса. Создание продуктов, таких как эскизы, модели, предварительное руководство пользователя и прототипы, для постоянного информирования пользователя и инженеров и достижения согласия относительно разрабатываемой системы.
Interfacing with a systems architect or client stakeholders. It is extraordinarily rare nowadays for sufficiently large and/or complex hardware systems that require a hardware architect not to require substantial software and a systems architect. The hardware architect will therefore normally interface with a systems architect, rather than directly with user(s), sponsor(s), or other client stakeholders. However, in the absence of a systems architect, the hardware systems architect must be prepared to interface directly with the client stakeholders in order to determine their (evolving) needs to be realized in hardware. The hardware architect may also need to interface directly with a software architect or engineer(s), or with other mechanical or electrical engineers. Generating the highest level of hardware requirements, based on the user's needs and other constraints such as cost and schedule. Ensuring that this set of high level requirements is consistent, complete, correct, and operationally defined. Performing cost–benefit analyses to determine the best methods or approaches for meeting the hardware requirements; making maximum use of commercial off the shelf or already developed components. Developing partitioning algorithms (and other processes) to allocate all present and foreseeable (hardware) requirements into discrete hardware partitions such that a minimum of communications is needed among partitions, and between the user and the system. Partitioning large hardware systems into (successive layers of) subsystems and components each of which can be handled by a single hardware engineer or team of engineers. Ensuring that maximally robust hardware architecture is developed. Generating a set of acceptance test requirements, together with the designers, test engineers, and the user, which determine that all of the high level hardware requirements have been met, especially for the computer human interface. Generating products such as sketches, models, an early user's manual, and prototypes to keep the user and the engineers constantly up to date and in agreement on the system to be provided as it is evolving.
Предыстория
Архитектура крупных систем была разработана как способ управления системами, которые слишком велики, чтобы их можно было представить, не говоря уже о разработке. Системы такого масштаба стремительно становятся стандартом, поэтому архитектурные подходы и архитекторы все более востребованы для решения проблем, возникающих в крупных системах.
Пользователи и спонсоры
Инженеры как группа не имеют репутации комфортного понимания и реагирования на человеческие потребности или разработки продуктов, которые были бы удобны и эстетически приятны для людей. Ожидается, что архитекторы будут понимать человеческие потребности и разрабатывать функциональные и эстетически привлекательные продукты. Хороший архитектор – это посредник между пользователем/заказчиком и инженерами, и даже между инженерами разных специальностей. Хороший архитектор также является главным хранителем видения пользователя относительно конечного продукта – и процесса получения требований на основе этого видения и их реализации. Выяснение того, чего пользователи/заказчики действительно хотят, а не того, что они говорят, что хотят, – это не инженерное дело, это искусство. Архитектор не следует строгой процедуре. Он/она взаимодействует с пользователями/заказчиками в очень интерактивном режиме – вместе они выявляют истинные требования, необходимые для разрабатываемой системы. Архитектор аппаратного обеспечения должен постоянно поддерживать связь с конечными пользователями (или системным архитектором). Поэтому архитектор должен хорошо разбираться в среде и проблемах пользователя. Инженеру же достаточно глубоко знать пространство возможных инженерных решений.
Требования высокого уровня
Пользователь/спонсор должен рассматривать архитектора как представителя пользователя и предоставлять все данные через архитектора. Прямое взаимодействие с инженерами проекта обычно не рекомендуется, поскольку вероятность взаимного недопонимания очень высока. Спецификация пользовательских требований должна быть результатом совместной работы пользователя и аппаратного архитектора (или системного и аппаратного архитекторов): пользователь предоставляет свои потребности и список пожеланий, а архитектор – знания о том, что, вероятно, удастся реализовать в рамках бюджетных и временных ограничений. Наилучшее время для написания первой версии приемочных испытаний – когда потребности пользователя преобразуются в набор высокоуровневых требований; впоследствии эти испытания необходимо постоянно актуализировать в соответствии с требованиями. Это позволит пользователю быть абсолютно уверенным в том, что он получит. Это также служит защитой от нетестируемых требований, недоразумений и разрастания требований. Разработка первоначального уровня требований к аппаратному обеспечению – это не только аналитическая задача, она должна включать в себя как аппаратного архитектора, так и инженера. Если для соблюдения ограничений, таких как стоимость, сроки, энергопотребление или габариты, необходимо пойти на компромиссы, архитектор должен убедиться, что конечный продукт и общий внешний вид не слишком отклоняются от первоначальных намерений пользователя. Инженер должен сосредоточиться на разработке конструкции, которая оптимизирует ограничения, но обеспечивает работоспособность и надежность продукта. Архитектор в первую очередь заботится о комфорте и удобстве использования продукта, а инженер – о его производительности и пригодности к производству. Предоставление пользователю необходимых услуг – это истинное назначение спроектированной системы. Однако, по мере того как системы становятся все больше и сложнее, и их акцент смещается от простых аппаратных компонентов, применение традиционных принципов разработки аппаратного обеспечения становится недостаточным. Необходимо применять более общие принципы аппаратной архитектуры к проектированию (под)систем. Аппаратная архитектура также является упрощенной моделью готового конечного продукта. Ее основная функция – определение компонентов аппаратного обеспечения и взаимосвязей между ними, чтобы вся система представляла собой последовательное, полное и корректное отражение замысла пользователя, особенно в отношении компьютерного человеко-машинного интерфейса. Она также используется для обеспечения совместимости и правильного взаимодействия компонентов. Необходимо различать архитектуру мира пользователя и спроектированную аппаратную архитектуру. Первая представляет и решает проблемы и задачи в мире пользователя и в основном отражается в компьютерно-человеческих интерфейсах (CHI) спроектированной системы. Спроектированная система представляет собой инженерные решения – то, как инженер предлагает разработать, выбрать и объединить компоненты технической инфраструктуры для поддержки CHI. В отсутствие архитектора существует тенденция к смешению этих двух архитектур, поскольку инженер мыслит в терминах аппаратного обеспечения, а пользователь может думать о решении задачи перемещения людей из точки А в точку Б за разумное время и с разумными затратами энергии, или о предоставлении необходимой информации клиентам и сотрудникам. Ожидается, что аппаратный архитектор будет обладать знаниями как об архитектуре мира пользователя, так и обо всех потенциально полезных архитектурах аппаратной инженерии. Первая – это совместная работа с пользователем, вторая – с инженерами. Результатом является набор высокоуровневых требований, отражающих потребности пользователя, которые инженеры могут использовать для разработки требований к проектированию аппаратных систем. Поскольку требования меняются в ходе проекта, особенно длительного, архитектор необходим до тех пор, пока аппаратная система не будет принята пользователем: архитектор – лучшая гарантия того, что никакие изменения и интерпретации, внесенные в процессе разработки, не исказят точку зрения пользователя.
Анализ затрат и выгод
Большинство инженеров-аппаратчиков – специалисты. Они глубоко разбираются в применении принципов проектирования и разработки аппаратного обеспечения, применяют свои знания на практике – то есть решают реальные задачи, оценивают соотношение затрат и выгод различных решений в своей области аппаратного обеспечения и обеспечивают корректную работу разработанных устройств. Архитекторы аппаратного обеспечения – это специалисты широкого профиля. От них не требуется быть экспертами в какой-либо конкретной аппаратной технологии или подходе, но ожидается, что они будут обладать знаниями во многих областях и смогут оценить их применимость к конкретным ситуациям. Они также применяют свои знания на практике, но оценивают соотношение затрат и выгод различных решений, используя разные аппаратные технологии, например, разработанные специально для проекта и коммерчески доступные компоненты, и гарантируют, что система в целом соответствует ожиданиям пользователя. Многие готовые или уже разработанные аппаратные компоненты могут быть выбраны независимо, исходя из таких ограничений, как стоимость, время отклика, пропускная способность и т.п. В некоторых случаях архитектор может самостоятельно собрать конечную систему. В противном случае ему может потребоваться помощь инженера-аппаратчика для выбора компонентов, а также для проектирования и создания специализированных функций. Архитекторы (или инженеры) также могут привлекать специалистов – в области безопасности, связи, специализированного оборудования, графики, эргономики, тестирования и оценки, контроля качества, RMA, управления интерфейсами и т.д. Эффективной команде архитекторов аппаратного обеспечения необходим оперативный доступ к специалистам в критически важных областях.
Разделение и слоивание
Архитектор, планирующий строительство, работает над общим проектом, обеспечивая его удобство и функциональность для будущих обитателей. В то время как для постройки частного дома может хватить одного архитектора, для решения сложных задач, возникающих при проектировании нового высотного здания, потребуется команда инженеров. Если проект достаточно масштабный и сложный, отдельные части архитектуры могут быть спроектированы как компоненты. Например, при строительстве жилого комплекса может быть один архитектор, ответственный за весь комплекс, и отдельные архитекторы для каждого типа зданий, входящие в состав архитектурной группы. Крупные аппаратные системы также требуют архитектора и значительного инженерного потенциала. Если спроектированная система достаточно велика и сложна, главный архитектор аппаратных систем может делегировать часть работы подчиненным архитекторам, хотя все они могут быть членами единой архитектурной команды. Однако архитектора ни в коем случае нельзя рассматривать как руководителя инженерных работ. Архитектор должен распределять аппаратные требования между основными компонентами или подсистемами, которые находятся в зоне ответственности одного инженера-аппаратчика, менеджера по проектированию или подчиненного архитектора. В идеале, каждый такой аппаратный компонент/подсистема должен быть достаточно автономным, чтобы его можно было протестировать как отдельный модуль, не прибегая к тестированию всей системы целиком, используя лишь простую тестовую среду для подачи имитированных входных данных и регистрации выходных. То есть, для проектирования и создания подсистемы управления данными для системы управления воздушным движением не обязательно понимать принципы работы этой системы. Достаточно знать ограничения, в рамках которых подсистема должна функционировать. Хороший архитектор гарантирует, что система, какой бы сложной она ни была, строится на основе относительно простых и "чистых" концепций для каждой (под)системы или уровня, понятных всем, особенно пользователю, без специальной подготовки. Архитектор использует минимум правил, чтобы обеспечить четкое определение и отсутствие кустарных решений, обходных путей, упрощений или запутанных деталей и исключений в каждой части системы. По мере изменения потребностей пользователей (после внедрения и эксплуатации системы) гораздо проще развивать простую концепцию, чем ту, которая перегружена исключениями, особыми случаями и множеством оговорок. Многоуровневая аппаратная архитектура важна для поддержания достаточной простоты на каждом уровне, чтобы она оставалась понятной для одного специалиста. При переходе на более высокие уровни целые системы нижних уровней становятся простыми компонентами верхних уровней и могут полностью исчезать на самых высоких уровнях.
Испытание на прием
Приемочные испытания всегда остаются основной ответственностью архитектора (архитекторов). Это главный способ, с помощью которого архитектор докажет заказчику, что аппаратное обеспечение соответствует первоначальному проекту и что все подчиненные архитекторы и инженеры достигли поставленных целей. Крупные проекты, как правило, динамичны и в процессе реализации могут потребоваться изменения, инициированные заказчиком (например, в связи с изменением его задач), или ожидаемые от заказчика (например, по соображениям стоимости или сроков). Однако приемочные испытания должны постоянно поддерживаться в актуальном состоянии. Они являются основным средством информирования заказчика о характеристиках готового продукта. И они служат главной целью, к которой весь подчиненный персонал должен стремиться при проектировании, разработке и тестировании.
Хорошая связь с пользователями и инженерами
Архитектор использует эскизы, модели, чертежи. Архитектор аппаратных систем должен использовать эскизы, модели и прототипы для обсуждения различных решений и результатов с пользователем или системным архитектором, инженерами и подчиненными архитекторами. Ранняя черновая версия руководства пользователя неоценима, особенно в сочетании с прототипом. Следует явно избегать использования (инженерных) требований как средства общения с пользователями. Хорошо составленный набор требований или спецификация понятен лишь инженерному сообществу, подобно тому, как юридический контракт понятен юристам.