Что такое системная инженерия и зачем она нужна?

Системная инженерия – это знания о принципах функционирования сложных систем и умение их создавать, а также практики, выросшие из этих знаний.
Где-то в 50-е годы системы пересекли «предел сложности»: большинство людей уже не могли в одной своей голове уместить атомную станцию или космический корабль. Тогда ученые и опытные инженеры сформулировали принципы и подходы к работе с такими штуками, которые не умещаются в голове. Так стали появляться первые инженерные стандарты — сначала национальные, а потом и международные.

системная инженерия

Вокруг международных стандартов образовалась большая инженерная тусовка “National engineering group”, превратившаяся со временем в INCOSE (International Council on Systems Engineering) — Международный совет по системной инженерии.

Практически всё в мире — это системы: технические, программные, аппаратные системы, есть также организационные системы, бизнес-системы и пр. Системная инженерия (СИ) — это способность в любой системе увидеть цели ее создания и свойства, которыми она должна обладать, чтобы соответствовать этим целям. Только после этого можно применить к ней инженерные знания. Многие инженеры интуитивно так и делают, но в СИ это происходит осознанно.

Может ли существовать «несистемная инженерия»? Конечно. Мы спокойно можем писать на Java, не зная СИ. Но если мы хотим писать огромные проекты — правильно, структурно, в больших командах — то чем более системно мы подходим к написанию кода, тем лучше он масштабируется.

Инженеров — тысяча разновидностей: инженер-программист, инженер-строитель, инженер по аэродинамике… Каждый делает небольшие системы в своей сфере, а вот собирать из них сложные, междисциплинарные успешные системы умеет далеко не каждый. Это задача СИ. Переход от одиночного инжиниринга, где делаются обычные маленькие системы, без всякого системного мышления и вполне успешно, к созданию больших масштабируемых многоуровневых систем — это сложный процесс, и почти нигде этому специально не учат. В результате многие архитекторы, тимлиды, СТО-самоучки и другие люди, «исполняющие обязанности» системных инженеров, вынуждены открывать для себя методы работы со сложными системами самостоятельно, через боль и грабли.

В разработке программных продуктов системные инженеры обычно прячутся под хитрыми названиями вроде Product Manager или Product Owner. Они должны видеть общую картину, от продвижения продукта на рынок до тех сотрудников, которых надо нанять. Но чаще всего большую роль «видящего» разбивают на несколько маленьких ролей. СТО отвечает за технологии и компетенции, Product Manager — за продвижение продукта и функциональную структуру, архитектор — за структурную архитектуру и т. д. 

Если компания нашла талантливого самоучку, который может держать все эти роли в голове, значит, ей повезло. В более «традиционных» областях разработки роль системного инженера часто выпадает самому опытному инженеру команды, тому, кто «больше всех видел» и успел разобраться в разрабатываемой системе и ее окружении чуть больше, чем все остальные. И то, и другое – тупиковый путь, в первую очередь потому, что разработка системного видения в обоих случаях является побочной; основная роль каждого из упомянутых выше специалистов – воплощение конкретных требований «здесь и сейчас». При этом часто эти требования низкого качества и с неясной мотивацией. В результате, когда такой специалист уходит или просто отвлекается на что-то другое, компания теряет знания о собственных продуктов. В особо запущенных случаях это приводит к тому, что кодовая база и предыдущие разработки становятся полностью бесполезными, и работу приходится начинать с нуля.

системная инженерия

Эта диаграмма должна отражать различные факторы, влияющие на успешность боевых действий стран НАТО в Афганистане. Она была продемонстрирована офицерам штаба на одном слайде Power Point. Один из офицеров заметил: «Как только мы поймем эту диаграмму, то можно считать, войну выиграли» (“Once we understand this chart, we’ve won the war”)

Нет, системный инженер — это не господь бог, который всё видит и понимает. Таких людей, скорее всего, не существует. Системный инженер осознаёт основные принципы работы системы и двигает её к успеху, при этом ему не надо глубоко копать код или бизнес-домен. Детали мы отдаём специалистам, оставляя себе общую картину.

Если человек уже изучил все необходимые ему по работе технологии и практики и хочет развиваться дальше, но достигает уровня, когда отдача от новых умений и книг небольшая — вот в этот момент можно попробовать СИ. Она дает совершенно новый, контринтуитивный взгляд на то, что уже было изучено и понято.

Одна из причин, почему системных инженеров не любят, в том, что мы — очень медленные. Пока мы не разберёмся с «использующей системой» (системой, в которой происходит эксплуатация нашей главной, «целевой системы»), проектировать не начинаем. Мы много думаем и мало делаем. Мы недостаточно «эджайл». Большинство устоявшихся вариантов системных процессов предполагают так называемую V-модель разработки. В этой модели уже на этапе проектирования создаются сценарии испытаний и методы эксплуатации – только так можно быть уверенным, что система не только делает то, что должна, но и не делает то, чего не должна. Существуют научные работы, которые убедительно доказывают: несколько большие трудозатраты на начальном этапе затем с лихвой окупятся упрощением следующих этапов работы.

системная инженерия

Преимущества системно-инженерных методов разработки уже давно осознали производители самых сложных продуктов: космических аппаратов, самолётов, автомобилей, промышленного оборудования и т.п. Еще 10 – 15 лет назад позволить себе нанимать системных инженеров и обеспечивать их необходимыми инструментами, а также тратить время на выполнение системно-инженерных процессов могли только они. Мир, однако, не стоит на месте: лучшие практики распространяются «вниз», захватывая все больше и больше областей человеческой деятельности, а инструменты становятся более многочисленными и дешевеют. Так что шанс поработать системным инженером теперь есть почти у каждого инженера или разработчика. Но сначала методы и концепции СИ нужно изучить.

Больше
о системной инженерии

Читайте наши посты и подписывайтесь на рассылку, чтобы быть в курсе самых свежих новостей из мира системной инженерии

Заказать тренинг по системной инженерии

Закажите тренинг по системной инженерии для своей компании или посетите наш открытый тренинг самостоятельно

Получить консультацию по системной инженерии

Обратитесь к нам по любым вопросам, связанным с системной инженерией, и мы поделимся своими экспертными знаниями

Наши тренинги по системной инженерии

0605_DCPro_Course_Icons_1.4 — копия

Методы определения опасностей и оценки рисков

0605_DCPro_Course_Icons_2.4 — копия

Методы причинно-следственного анализа

0605_DCPro_Course_Icons_6.4

Основы системной инженерии и системотехники

Оставить заявку на тренинг или бесплатную консультацию

получить программу тренинга