«Квант Программ»: системная инженерия как базовая основа инновационных разработок программного обеспечения сложных систем.
Рост масштабов и усложнение способов организации человеческой деятельности по созданию систем, повышение степени ответственности за её результаты, быстрое возрастание сложности возникающих при этом научных, технических и управленческих проблем привели к появлению в середине ХХ века новой прикладной системной методологии — системной инженерии.
Системная инженерия – это междисциплинарный подход к созданию комплексных сложных систем, которые соответствуют определенному набору экономических и технических требований.
Появление и возрастание роли системной инженерии — вполне закономерное явление, поскольку очевиден значительный рост сложности современных технических систем. Многие системы носят комплексный и мультидисциплинарный характер и взаимосвязанным образом включают в себя технические, информационные и организационные аспекты. Требования и спецификации проекта поступают с самых разных сторон и непрерывно меняются.
Практически значимые эффекты системная инженерия обеспечивает за счет использования общего междисциплинарного языка, позволяющего договориться участникам проекта, целенаправленного поиска и использования информации, уменьшающей проектные риски, исправления ошибок на как можно более ранней стадии, когда сделать это еще относительно дешево. Понимая под жизненным циклом развитие системы, продукта, услуги, проекта или другого созданного человеком объекта от появления замысла и формирования концепции до изъятия из обращения, системная инженерия в качестве цели управления жизненным циклом ставит достижение организацией состояния, когда она способна на выстроенной надлежащим образом методической основе выбирать и реализовывать эффективные процессы жизненного цикла. В результате система, представляющая интерес для заинтересованных сторон, развивается на протяжении жизненного цикла и приобретает способность удовлетворять установленным требованиям.
Сегодня мировое научное и индустриальное сообщества признают системную инженерию в качестве методологической основы организации и осуществления деятельности по созданию систем любого класса и назначения. Современная практика показывает, что 8% от стоимости проекта, затраченных на внедрение системной инженерии, дают экономию в 20% стоимости проектов, и на 50% увеличивают вероятность окончания проекта в срок.
С учетом сказанного, системная инженерия для компании «Квант Программ» стала сегодня важнейшей, ключевой дисциплиной, применение принципов которой является обязательным при разработке ПО для сложных систем.
Особенно интенсивно системная инженерия, в последнее время, развивается в сфере телекоммуникаций, информационных технологий и атомной энергетике, так как АЭС является одним из самых сложных энергетических объектов, с очень жесткими требованиями по безопасности, что является определяющим условием при разработки ПО (в том числе для средств оперативной диагностики (СОД) и АСУТП для АЭС).
Программное обеспечение является важнейшей частью любой разрабатываемой комплексной сложной системы. Надежное, безопасное конкурентоспособное ПО, соответствующее всем требованиям заказчика должно разрабатываться на тех же базовых принципах, что и система в целом.
Можно с полной ответственностью сказать, что квалификация системного инженера в нашей компании в настоящее время является высшей ступенью инженерной квалификации, а ниже перечисленные принципы системной инженерии становятся базовой основой при разработке ПО для сложных систем.
Базовые принципы системной инженерии:
- Переход от редукционистского к системному подходу
Системный подход декларирует важность цели разрабатываемой сложной системы, взаимодействия элементов для достижения этой цели, а не просто наличие произвольно выбранных частей. Любая система имеет надсистему и подсистемы, системы иерархичны. Границы системы с окружающими её системам важны и требуют явного определения: все участники междисциплинарного обсуждения должны говорить об одной и той же системе в одних и тех же границах, чтобы не подменять системы в ходе их обсуждения и разработки.
- Переход от структурного к процессному подходу
Главное, что происходит в системе — это её изменения во времени. Рассмотре- ния системы с точки зрения ее структуры (схемы, отражающей связи элементов подсистем) совершенно недостаточно, нужно рассматривать изменения во времени и взаимодействия, разворачиваемые во времени.
Этим требованиям отвечает концепция управления полным жизненным циклом продукта и все варианты проектного подхода.
- Переход от одной группы описаний ко множественности группописаний
Никакой одной профессиональной точки зрения недостаточно, чтобы получить более или менее полное реализационное описание системы. Для системы должны быть получены различные группы взаимосвязанных описаний, часто получаемые междисциплинарно. В системной инженерии это ISO 42010, стан- дарт архитектурных описаний.
- Переход от рабочего проектирования (конструирования, дизайна) к обязательному предварительному архитектурному
Вместо того, чтобы сразу работать с «кодами» программ, «чертежами» оборудования, «инструкциями» организации и прочими реализационными описаниями систем, для начала нужно сделать сущностное, не зависящее от деталей реализации описание создаваемой системы: архитектуру. Архитектура описывает основные подсистемы и их взаимодействие в языке, свободном от деталей реализации. Одной архитектуре может соответствовать множество разных реализаций. Архитектура более живуча, чем её реализации.
- Переход от непосредственной реализации к моделецентричной реализации
До строительства реальной системы, для начала создаются всевозможные модели системы — как абстрактные архитектурные, так и имитационные, зависящие от реализации. Эти модели представляют адекватное реальности подробное, вариативное описание системы, (то есть речь идет, прежде всего, об имитационном моделировании, включая имитационные прогоны архитектурных моделей). Сначала система «строится» в идеальном мире моделирования, и только затем в реальном мире: все ошибки убираются на этапе моделирования, а не на этапе реального воплощения. Описания системы (включая архитектурные описания) должны быть представлены не на естественном , а на формальном языке, подразумевающем возможность машинной обработки.
- Переход от документоцентризма к датацентризму
Различные описания системы должны храниться в виде взаимосвязанных отдельных информационных единиц-данных, готовых для объединения в той или иной форме — речь идет о хранении информации в виде базы данных и доступе к этой информации с разнообразными запросами. Работа с изменениями должна вестись в терминах отдельных данных, а не «документов».
- Переход от работы «для одного хозяина» к работе сомножеством заинтересованных сторон
Для любой системы всегда есть множество заинтересованных сторон, мнение которых нужно учитывать. Это означает, что требования к системе всегда противоречивы, исходят из самых разных источников, и нужна специальная работа по их согласованию — значительная часть этой работы сводится не к техническим решениям, а к проведению переговоров между заинтересованными лицами. Наличие множества заинтересованных в системе сторон существенно меняет содержание инженерной деятельности: эта деятельность по «инженерии требований» уже не проходит в области исключительно технических решений, а должна учитывать противоречивые интересы самых разных людей.
- Переход от «проверки» к раздельным верификации и валидации
Идея верификации (проверка на соответствие формальным требованиям) всем привычна. Однако такой проверки явно недостаточно: важно не столько соответствие требованиям, сколько то, чтобы системой можно было пользоваться — ибо при разработке системы ошибка могла закрасться в сами требования. Поэтому необходима не только верификация, но и валидация — проверка того, что требования конкретного внешнего потребителя или пользователя продукта, услуги или системы удовлетворены.
- Переход от методов жесткого планирования к использованию гибких методов
Тщательно разработанные планы являются заведомо неполными и неточными. С планами нужно работать как с «прогнозами», переходя к рискориентированным формам жизненного цикла, подразумевающим пошаговое выделение ресурсов на основе постоянного пересмотра структуры их выделения на основе непрерывно меняющихся оценок проектной ситуации.
- Переход от «технологического конвейера» к «заказам-поставкам»
В процессе управления жизненным циклом независимые действующие лица участвуют в процессе, выполняя контракт на оказание услуги по своей части участия в общем процессе. В системной инженерии этот вопрос обсуждается как отдельная группа контрактных практик, причем контракты могут быть не только явные между различными юридическими лицами, но и неявные внутри действующих лиц в рамках одной организации.
Перечисленные принципы являются основой реализации проектов компании по основным направлениям деятельности:
- Инновационные разработки в области программного обеспечения сложных систем;
- Разработка и адаптация баз данных для передачи информации;
- Адаптация программных интерфейсных модулей для программного обеспечения систем контроля;
- Создание виртуальных миров для промышленных систем и компьютерных игр;
- Создание систем дополненной реальности. Виртуализация реальных объектов промышленности и культуры;
- Разработка компьютерных игр различного назначения.