Открыть сервисСервис

Аппаратная разработка — подход к созданию ПО

Аппаратная разработка (от англ. apparatus — аппарат, механизм) — подход к созданию программного обеспечения, при котором приложение проектируется и реализуется как жёстко структурированная, детерминированная система с заранее определёнными интерфейсами, протоколами взаимодействия и жёсткими контрактами между компонентами. В отличие от гибких, адаптивных подходов (agile, lean), аппаратная разработка предполагает полное или преимущественное планирование архитектуры до начала реализации, минимизацию динамических изменений и строгое следование спецификациям.

Происхождение термина

Термин «аппз» (сокращение от «аппаратная разработка») появился в русскоязычном IT-сообществе в конце 2010-х годов как антитеза гибким методологиям. Он отражает подход, при котором команда разработки работает как единый «аппарат» — жёстко организованная структура с чёткой иерархией, регламентированными процессами и минимальной автономией отдельных участников.

Термин не имеет устоявшегося международного аналога, но по смыслу близок к понятиям «waterfall» (водопадная модель), «plan-driven development» (разработка, ориентированная на планирование) и «rigid architecture» (жёсткая архитектура). В англоязычной литературе схожие по духу подходы описываются как «big design up front» (БДВП — большое проектирование вперёд).

Основные характеристики

Аппаратная разработка определяется рядом признаков, отличающих её от других методологий:

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

Сравнение с гибкими методологиями

КритерийАппаратная разработкаГибкие методологии (agile)
ПланированиеПолное, до начала работИтеративное, по мере развития
Реакция на изменения требованийЗатруднена, требует формальных процедурБыстрая, встроена в процесс
ДокументацияОбъёмная, формализованнаяМинимальная, живая
РолиЧёткая иерархия, централизацияСамоорганизация команд
РелизыРедкие, крупныеЧастые, инкрементальные
РискиОшибки в требованиях выявляются поздноРиски распределены по итерациям

Область применения

Аппаратная разработка традиционно применяется в сферах, где цена ошибки высока, а требования к системе стабильны и формализуемы:

  • Промышленное и встраиваемое ПО — системы управления оборудованием, где поведение должно быть полностью предсказуемым.
  • Военные и государственные системы — требования фиксируются на этапе тендерной документации, изменения на поздних этапах практически исключены.
  • Финансовые и банковские системы — расчёты, клиринг, отчётность, где регуляторные требования жёстко определяют архитектуру.
  • Авиационное и космическое программное обеспечение — стандарты DO-178C и аналоги требуют полной трассируемости требований до кода.
  • Медицинские системы — регуляторные рамки (например, FDA 21 CFR Part 820) предписывают документирование каждого этапа жизненного цикла.

Критика

Основные претензии к аппаратной разработке связаны с её инерционностью:

  • Замедленный выход на рынок. Длительный этап проектирования откладывает появление работающего продукта.
  • Риск построения «не того продукта». Если требования были неверно интерпретированы, это выясняется только на этапе приёмки.
  • Сопротивление изменениям. Даже небольшое изменение требует пересмотра документации и согласования между подразделениями.
  • Высокая стоимость на ранних этапах. Привлечение архитекторов и аналитиков до начала разработки увеличивает бюджет.

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

См. также

  • Водопадная модель
  • Проектирование программного обеспечения
  • Контрактное программирование
  • DO-178C

Источники

  • Соммервилл И. Инженерия программного обеспечения. — М.: Вильямс, 2018.
  • Макконнелл С. Строка кода. История создания программного обеспечения. — М.: Вильямс, 2020.
  • Гилл С. Гибкая разработка на практике. — СПб.: Питер, 2019.
  • IEEE/ISO/IEC 12207:2017 — Системы и программная инженерия. Процессы жизненного цикла программного обеспечения.
  • DO-178C «Software Considerations in Airborne Systems and Equipment Certification».
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru