Новости
Новости ИСП РАН
Программная инженерия
Программная инженерия − это область компьютерной науки и технологии, которая занимается построением программных систем, настолько больших и сложных, что для этого требуется участие слаженных команд разработчиков различных специальностей и квалификаций. Обычно такие системы существуют и применяются долгие годы, развиваясь от версии к версии, претерпевая на своем жизненном пути множество изменений, улучшение существующих функций, добавление новых или удаление устаревших возможностей, адаптацию для работы в новой среде, устранение дефектов и ошибок. Суть методологии программной инженерии состоит в применении систематизированного, научного и предсказуемого процесса проектирования, производства и сопровождения программных комплексов реального времени. Управление промышленным проектированием и производством - это особый вид рациональной, коллективной деятельности, включающей постановку задач, подготовку решений, планирование, организацию и стимулирование компетентных специалистов, контроль хода работ и использования ресурсов при создании сложных систем и продуктов. Задачи целевого управления такими работами - сводить воедино усилия руководителей, исполнителей - специалистов разной квалификации, подрядчиков и субподрядчиков, добиваясь, чтобы они выступали как целевая «команда», а не как разрозненная группа функциональных специалистов с индивидуальными целями. Они характеризуются производственно-техническим, организационным и социальным единством, которое определяется комплексом средств производства, обладающих технологической взаимосвязью отдельных этапов производственных процессов, в результате которых используемые на предприятии объекты и процессы превращаются в готовую продукцию.
Массовое создание сложных программных продуктов промышленными методами и большими коллективами специалистов вызвало необходимость их четкой организации, планирования работ по требуемым ресурсам, этапам и срокам реализации. Для решения этих задач в программной инженерии формируется новая область знания и научная дисциплина − экономика жизненного цикла программных комплексов, как часть экономики промышленности и вычислительной техники в общей экономике предприятий. Объективно положение осложнено трудностью измерения экономических характеристик таких объектов. Широкий спектр количественных и качественных показателей, которые с различных сторон характеризуют содержание этих объектов, и невысокая достоверность оценки их значений, определяют значительную дисперсию при попытках описать и измерить экономические свойства создаваемых или используемых крупных комплексов программ. Вследствие роста сфер применения и ответственности функций, выполняемых программами, резко возросла необходимость гарантирования высокого качества программных продуктов, регламентирования и корректного формирования требований к характеристикам реальных комплексов программ и их достоверного определения. В результате специалисты в области теории и методов, определяющих качество продукции, вынуждены осваивать область развития и применения новых, специфических объектов – программных продуктов и систем в целом, и их качества при использовании. Сложность анализируемых объектов – комплексов программ и психологическая самоуверенность ряда программистов в собственной «непогрешимости», часто приводят к тому, что реальные характеристики качества функционирования программных продуктов остаются неизвестными не только для заказчиков и пользователей, но также для самих разработчиков. Отсутствие четкого декларирования в документах понятий и требуемых значений характеристик качества программных комплексов вызывает конфликты между заказчиками-пользователями и разработчиками-поставщиками из-за разной трактовки одних и тех же характеристик.
Руководство производственного предприятия должно быть уверено, что требования заказчика полностью поняты и могут быть удовлетворены. Предприятие должно установить общесистемные процедуры для управления требованиями и документами, необходимыми для функционирования системы проектирования и производства, обеспечивающей уверенность, что документы анализируются, при необходимости уточняются и снова утверждаются. Управление специалистами необходимо для гарантирования, что они являются компетентными для осуществления своей деятельности, на основе соответствующего образования, подготовки, мастерства и опыта при проектировании и производстве заказанной продукции.
Методы программной инженерии поддерживают и конкретизируют технологический процесс, а также отслеживают значения качества компонентов на этапах жизненного цикла производства. Для каждого проекта, выполняющего ответственные функции, должны разрабатываться и применяться система качества, специальные планы и Программа, методология и инструментальные средства разработки и испытаний, обеспечивающие требуемые качество, надежность и безопасность функционирования программных продуктов. Эти методы и процессы позволяют разработчикам и заказчикам программных продуктов более корректно взаимодействовать при определении и реализации требований контрактов и технических заданий.
Для эффективного процесса изготовления определенного продукта и его реализация в конкретных условиях предприятия, необходимо создание соответствующей технологии его проектирования и производства. Технология производства - это методы, технические, инструментальные средства и система взаимосвязанных способов изготовления продукции и выполнения установленного вида работ. Технология должна включать весь перечень последовательных операций по превращению исходного замысла проекта, требований заказчика и потребителей, в готовый продукт, с указанием методов, типа и характеристик инструментов, которыми специалисты пользуются на каждом этапе производства.
Организация технологии проектирования и производства - система мер, направленных на рационализацию взаимодействия в пространстве и времени материальных компонентов и специалистов, занятых в процессе производства. Дифференциация коллективного труда предполагает разделение производственного процесса на отдельные части (процессы, операции) и их закрепление за соответствующими подразделениями и специалистами предприятия. В практической деятельности по организации производства, приоритет должен отдаваться тому методу, который обеспечит наилучшие экономические и социальные характеристики производственного процесса.
Основные концепции программной инженерии сконцентрировались и сформализовались в целостный комплекс систематизированных международных стандартов, охватывающих и регламентирующих практически все процессы жизненного цикла сложных программных средств. Несколько десятков стандартов этого комплекса допускают целеустремленный отбор необходимых процессов, в зависимости от характеристик и особенностей конкретного проекта, а также формирование на их базе проблемно-ориентированных профилей стандартов для определенных типов проектов и/или предприятий. Практическое применение профилей стандартов, сосредоточивших мировой опыт создания различных типов сложных комплексов программ, способствует значительному повышению производительности труда специалистов и качества создаваемых программных продуктов. Эти стандарты определяют модификацию, мобильность и возможность повторного применения программных компонентов и комплексов, их расширяемость и переносимость на различные аппаратные и операционные платформы, что непосредственно отражается на росте экономической эффективности технологий и процессов создания различных программных средств и систем. Для регламентирования процессов жизненного цикла такие профили стандартов должны адаптироваться и конкретизироваться применительно к определенным классам и функциям проектов, процессов и компонентов программных комплексов. При этом должна сохраняться концептуальная целостность применяемой совокупности стандартов и их эффективное, положительное влияние на процессы и результаты, на качество, надежность и безопасность программных продуктов при реальных ограничениях на использование доступных ресурсов проектов.
Организованные коллективы специалистов, применяющие регламентированные процессы программирования, верификации, тестирования и сопровождения программных комплексов и их компонентов обеспечивают заказчикам стабильные, предсказуемые результаты - программные продукты с требуемым качеством обработки технической информации. Основной интеллектуальный труд специалистов вкладывается в разработку функциональных алгоритмов и текстов программ, а также в их интеграцию, испытания, документирование на всех этапах проектирования и производства сложных программных продуктов. Большая сложность информации в таких системах определяет высокие затраты квалифицированного интеллектуального труда специалистов на комплексы программ, соответствующие требованиям к ним заказчиков и пользователей, необходимого для производства и материализации информации в программном продукте.
Многообразие классов и видов сложных комплексов программ, обусловленное различными функциями и сферами применения систем, определяет формальные трудности, связанные с методами и процедурами доказательства соответствия создаваемых и поставляемых программных продуктов условиям контрактов, требованиям заказчиков и потребителей. По мере расширения применения и увеличения сложности систем, выделились области, в которых дефекты, недостаточное качество комплексов программ или данных могут наносить катастрофический ущерб, значительно превышающий положительный эффект от их использования. В таких критических системах (например, управления атомными электростанциями, крупными банками или системами вооружения) недопустимы проявления катастрофических рисков функционирования программных продуктов при любых искажениях исходных данных, сбоях, частичных отказах аппаратуры, ошибках пользователей и других нештатных ситуациях.
Подобные риски комплексов программ могут определять безопасность функционирования объектов, предприятий и даже страны. Вследствие этого резко повысилась ответственность специалистов за качество результатов их труда и создаваемых программных продуктов. Это требует непрерывного совершенствования, обучения и повышения квалификации заказчиков, разработчиков и пользователей в области программной инженерии, освоения ими современных методов, процессов и международных стандартов, а также высокой корпоративной культуры коллективов специалистов, обеспечивающих жизненный цикл критических программных продуктов.
Для обучения, повышения квалификации и компетенции специалистов до уровня «магистров», подготовлен комплекс доступных учебников и монографий, содержащих полные электронные копии перечисленных ниже книг:
- Надежность и функциональная безопасность комплексов программ реального времени. - М.: 2013.
- Проектирование и производство сложных заказных программных продуктов. – М.: СИНТЕГ, 2011. – 408 с.
- Человеческие факторы в программной инженерии: рекомендации и требования к профессиональной квалификации специалистов. Учебник. – М.: СИНТЕГ, 2009. - 328 с.
- Экономика производства программных продуктов. Издание второе - М.: СИНТЕГ, 2011. - 358 с.
- Тестирование компонентов и комплексов программ. Учебник. – М.: СИНТЕГ, 2010. – 400 с.
- Сопровождение и управление конфигурацией сложных программных средств. - М.: СИНТЕГ, 2006. - 372 с.
- Сертификация программных средств. Учебник. – М.: СИНТЕГ, 2010. - 348с.