11 - 2016

Наука — не искусство

Мирко Бейкер

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

Существуют популярные мифы, в которых программирование воспринимается исключительно как труд одинокого программиста, работающего методом проб и ошибок. Это и истории о «героических кодерах», которые не спят круглые сутки и в одиночку устраняют возникающие проблемы, и рассказы о невероятном успехе приложений для смартфонов, написанных одним человеком, который и получил всё богатство и славу. Но для любого мало­мальски крупного проекта такой подход не годится: там работает большая группа программистов, создающих сложные системы, нередко обеспечивающие безопасность эксплуатации изделия.

Разработка программного обеспечения — это наука, а не искусство. Такие организации, как NASA, создали принципы построения типовых процессов разработки эффективного и высококачественного программного обеспечения. Подобные процессы крайне важны в оборонной и авиационно­космической отраслях, при создании систем управления промышленным оборудованием, проектировании медицинской техники, в энергетике и автомобилестроении — словом, везде, где необходим поиск компромисса между сложностью, затратами и рисками.

Управление требованиями к сложному программному обеспечению, изделию 
и его системам на всех этапах жизненного цикла

Управление требованиями к сложному программному обеспечению, изделию и его системам на всех этапах жизненного цикла

Однако во всех перечисленных отраслях риски остаются высокими. Разработчики вынуждены постоянно снижать себестоимость, при том что сложность непрерывно растет. Например, при проектировании автомобилей требуется согласовать множество отдельных процессов разработки программного кода, а также объединить их с процессами создания механических узлов и систем. Дело в том, что в большинстве таких узлов присутствует встроенное программное обеспечение, а конструирование автомобиля — это не только достижение высоких ходовых качеств. Автомобилестроение превращается в производство не просто автомобилей, но еще и электроники, причем основано оно на новейших, революционных технологиях. При этом выпускаемые автомобили должны иметь высокие технические характеристики и отвечать всем требованиям безопасности.

В связи с этим подходящие средства управления жизненным циклом изделия представляют собой интегрированные системы, объединяющие различные инженерные дисциплины и обеспечивающие передачу информации между ними. Это позволяет добиться высокой эффективности и прослеживаемости на всех этапах процесса разработки.

Просто автомобиль или сложная интернет­система?

Пока автомобили с системами помощи водителю и с автопилотом — это исключительные случаи, однако электромобили и машины с гибридным приводом уже привели к появлению новых конструкторских задач. Например, рассмотрим трансмиссию. Это одна из многих систем автомобиля, требующих исключительной точности управления: нельзя пропустить ни одного сигнала или неверно отреагировать на поступающие данные. Но трансмиссию невозможно рассматривать отдельно от других узлов автомобиля. Если в гибридной трансмиссии при торможении энергия возвращается в аккумулятор, то необходимо установить дополнительные датчики и контролировать уровень заряда батареи и оптимальность расхода энергии во всем автомобиле в целом, так как от этого зависит запас хода. Кроме того, требуется интеграция с информационными системами, а также с системами навигации и управления автомобилем. Именно здесь новые функции объединяются с традиционными системами развлечения пассажиров и точками управления. При этом крайне важно спроектировать интерфейс пользователя так, чтобы он не отвлекал водителя излишней сложностью и не приводил к возникновению аварийных ситуаций на дороге.

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

Когда­то автомобили были чисто механическими конструкциями, а сегодня они превратились в сложные системы с миллионами строк программного кода, которые лишь случайно снабдили колесами. Трудно найти другое изделие, в котором объем программного обеспечения был бы столь же велик, как в автомобиле, — он превышает объем программ самолета­истребителя! Сегодня из 500 тыс. различных нормативных требований к новым автомобилям до 90% относится не к механическим узлам, а к электрике и программному обеспечению. При этом написать код один раз под конкретную модель автомобиля не получится. Хотя автомобилестроение и переходит на единые платформы, общие для разных моделей, каждая платформа существует в десятках, если не сотнях различных исполнений. Такую платформу нельзя рассматривать как просто набор механических узлов, которые проектируются и испытываются по отдельности, а затем соединяются вместе на последнем этапе разработки. Необходимы компьютерные средства моделирования и испытаний не только механических систем изделий, но и управляющих программ.

Результаты испытаний и отчеты связаны с соответствующими требованиями, методиками и исходными файлами, что обеспечивает полную прослеживаемость

Результаты испытаний и отчеты связаны с соответствующими требованиями, методиками и исходными файлами, что обеспечивает полную прослеживаемость

Создание программного кода — лишь один из этапов процесса, начинающегося с проектирования общей архитектуры и структуры систем, а также описания отдельных узлов каждой системы. Вместо фрагментарной и разрозненной разработки механических узлов и программного кода требуется параллельный подход. Кроме того, в ходе всего процесса разработки нужна тесная интеграция моделей механических и электрических узлов с моделями программного обеспечения, поддерживающая контроль объединенных проектных решений. Разработка на основе моделей предусматривает применение системоориентированного подхода на более высоком уровне — при конструировании не только трансмиссии, систем безопасности и развлечений, но и всего автомобиля в целом.

Новые автомобили включают в себя механические и электрические системы, процессы проектирования которых традиционно управляются в среде управления жизненным циклом изделия (PLM), а также программный код, разработка которого ведется при помощи систем управления жизненным циклом приложений (ALM). Эффективная разработка таких автомобилей с соблюдением ожидаемых потребителями сроков и достижением высокого уровня инновационности и безопасности — задача непростая. Для ее решения нужны средства, объединяющие разработки механических узлов и программного кода на основе самых современных приемов работы.

Логику работы множества программных модулей создают большие группы программистов, а это требует четкого понимания, кто же отвечает за разработку конкретного модуля по мере роста масштабов проекта. Кроме того, необходимо регрессивное тестирование, чтобы вносимые изменения не приводили к появлению опасных побочных эффектов. Для повышения эффективности требуется автоматическая проверка безопасности кода, причем применительно ко всем вариантам исполнения базовой платформы автомобиля, чтобы вносимые изменения не приводили к негативным последствиям. В любой момент может возникнуть необходимость «оглянуться назад» и выяснить, кто утвердил проектное решение, какая именно комбинация узлов проходила испытания и в каком порядке следует устранять выявленные дефекты. Для этого требуются средства прослеживания процессов проектирования всех механических, электрических и программных составляющих автомобильных систем управления.

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

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

Чтобы не отстать от высоких темпов развития отрасли, в проектировании автомобилей следует широко применять численное моделирование со сбором данных при натурных испытаниях и их последующим анализом. Это позволит проверять каждое изменение в программном коде и убедиться в его совместимости со всей линейкой выпускаемых моделей, платформ и вариантов. В случае автомобилей с автопилотом и систем помощи при вождении сбор результатов испытаний должен распространяться на все возможные территории будущей эксплуатации автомобиля: в различных странах существует разная культура вождения, есть различия в правилах дорожного движения и нормах безопасности.

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

Испытания и проверки всех этих моделей должны выполняться совместно, при помощи интегрированных с PLM­системой инструментов разработки ПО. Такие инструменты, в свою очередь, следует интегрировать между собой, чтобы обеспечить контроль и послеживаемость требований, технических характеристик и потоков информации между различными моделями в рамках согласованного процесса, а не разрозненной последовательности действий. Подобная прослеживаемость должна быть сквозной и распространяться на этапы технико­экономического обоснования эскизного проекта, конструирования систем и, все в большей степени, — на этап эксплуатации. При этом все работы должны выполняться как можно быстрее.

Скорость и устойчивость

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

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

Процесс разработки следует рассматривать и как науку, и как инженерное дело. Только такой подход позволит справиться с растущей сложностью, снизить себестоимость и повысить темпы работ. Кроме того, необходимы эффективные и четко структурированные процессы создания программного обеспечения. Замыкание контура обратной связи предусматривает сбор требований к изделию (на решение этой задачи требуется всё больше времени), изготовление, испытания, проверка программного кода на соответствие требованиям и повышение уровня унификации. Все это приводит к росту производительности, эффективности и прослеживаемости.

Автомобилестроение движется по пути стандартизации. Появляется все больше стандартов ISO, относящихся к безопасности, эргономике, техническим характеристикам, вопросам экологии и методикам испытаний. Стандарты разрабатывают и такие партнерства, как AUTOSAR (стандарт открытой архитектуры автомобильных систем). Чтобы гарантировать соблюдение всех стандартов, требуется внедрить сертифицированные процессы разработки программного обеспечения.

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

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

Переходи на цифровые технологии, создавай прорывные инновации — или уходи с рынка

Большинство эксплуатируемых сегодня автомобилей создавались «изнутри» — начиная с двигателя и трансмиссии. Однако новые машины проектируются «снаружи», чтобы дизайн соответствовал всё возрастающим ожиданиям потребителей. Писать отдельный программный код для каждого конкретного случая стало невозможным. Необходим интегрированный, сквозной и системоориентированный подход к проектированию, при котором разработка программного обеспечения рассматривается просто как еще одна инженерная дисциплина. Нужны специальные средства, позволяющие справляться с высокой сложностью создания встроенного программного обеспечения.

Автомобильные предприятия превращаются в профессиональные разработчики программ. Возникает потребность в интегрированных системах конструкторско­технологической подготовки производства, охватывающих весь жизненный цикл как механических, так и цифровых компонентов изделия — от замысла до разработки, изготовления, технического обслуживания, ремонта, текущих обновлений и улучшений. Информация передается на следующий этап, повышая эффективность, производительность, а также идет в обратном направлении, обеспечивая прослеживаемость.

Возрастающие темпы революционных изменений — как технологий, так и моделей ведения бизнеса — диктуют создание систем, поддерживающих новые, более гибкие приемы работы. Новые способы получения экономической отдачи — единственный путь к сохранению высокой конкурентоспособности. Одна­единственная инновация способна уничтожить целые рынки. Поэтому непрерывные улучшения и быстрое создание новых технологий становятся вопросом жизни и смерти. Всё большее количество изделий нельзя отнести только к механике или только к программному обеспечению. Это комбинация того и другого. Изделия становятся всё более компактными и интеллектуальными. Их работа всё в большей степени зависит от встроенных микропроцессоров и программного обеспечения, а сложность постоянно возрастает. При этом потребители хотят приобретать уникальные изделия, изготовленные по сделанному на сайте заказу, да еще и поставляемые в кратчайшие сроки. И если вы не сможете предложить подобный сервис своим потребителям, за вас это сделает кто­то другой.