Команда сложной подсистемыХотя разумная цель состоит в том, чтобы иметь в основном поточно-ориентированные команды, маловероятно, что это будет единственный тип команд. По мере того как решения становятся все более масштабными и сложными — часто включающими сочетание аппаратных и программных компонентов, — они, вероятно, будут включать подсистемы. Создание и эксплуатация некоторых из этих подсистем требует специальных знаний и опыта. Skelton и Pais признают это, определяя цель команды сложной подсистемы:
Команда сложной подсистемы отвечает за создание и поддержание части системы, которая в значительной степени зависит от специальных знаний, в той степени, что большинство членов команды должны быть специалистами в этой области знаний, чтобы понимать и вносить изменения в подсистему.
Требование чтобы поточно-ориентированные команды приобретали и поддерживали необходимые навыки до необходимого уровня квалификации во всех потенциальных подсистемах, создало бы слишком большую когнитивную нагрузку. Из-за нее команды будут не в состоянии сосредоточиться на области, которую они действительно могут освоить. Вместо этого команды сложных подсистем берут на себя большую часть этой нагрузки, беря на себя ответственность за создание и обслуживание тех частей системы, которые требуют глубоких и постоянных технических знаний.
Команда сложной подсистемы может создавать такие вещи, как:
- Узкоспециализированные системные компоненты, часто используемые в нескольких системах
- Элементы критически важных для безопасности систем, которые имеют высокую стоимость сбоя
- Специальные алгоритмы или бизнес-правила, которые имеют решающее значение для пригодности использования в данной области
- Часть киберфизической системы (например, модуль управления двигателем в автономном транспортном средстве)
Хотя все решения могут быть разложены на подсистемы, не все из них требуют команд сложной подсистемы. Уровень знаний, сложность и риск должны быть единственными решающими факторами для создания таких команд.
Такой подход контрастирует с традиционными компонентными командами, что может быть оправдано по другим веским причинам, таким как повторное использование или архитектурная целостность. В качестве примерного руководства, один ART должен содержать не более 1-3 команд сложных подсистем.
Обязанности и поведение команд сложных подсистем включают в себя:
- Создавать, эксплуатировать и поддерживать сложную подсистему – распознавать и применять критические технические элементы, которые они создают.
- Поддерживать свой уровень знаний – продолжать развивать знания и навыки, необходимые для работы в этой области подсистемы.
- Сотрудничать с поточно-ориентированными командами - убеждаться, что подсистемы разработаны в соответствии с требованиями заказчика.
- Эффективно планировать и устанавливать приоритеты – приводить дорожную карту подсистемы в соответствие с потребностями поточно-ориентированных команд.
- Разрабатывать подходящие интерфейсы – скрывать сложную природу подсистем за хорошо документированными, простыми в использовании интерфейсами.
- Брать на себя ответственность за встроенное качество - обеспечивать качество, производительность и архитектурную надежность подсистемы.