Владимир Липаев - Очерки истории отечественной программной инженерии в 1940-е – 80-е годы
Ключевой проблемой на всех стадиях проектирования и производства заказных программных продуктов является предотвращение, диагностика, выявление и устранение дефектов и ошибок. Каждая ошибка в программном продукте может стимулировать отказы функционирования и даже катастрофы систем. Простейшие ошибки в программных продуктах зачастую приводят к авариям и катастрофам сложных систем с гибелью людей и дорогой техники. В нашей стране и в мире зарегистрировано множество случаев трагических катастроф в авиации и ракетной технике, причинами которых были элементарные ошибки в программах мобильных и бортовых ЭВМ. Прогнозирование и достижение высокого качества комплексов программ однозначно связано с предотвращением, регистрацией и ликвидацией причин возможных катастроф при их функционировании. Следует учитывать, что затраты на обнаружение и устранение дефектов быстро возрастают при приближении к завершающим этапам испытаний и сертификации сложных программных продуктов, прогнозирование и ликвидация ошибок должна быть доминирующей задачей обучения всех руководителей и специалистов каждого заказного проекта.
Гарантирование качества продукции осуществляется посредством сертификационных испытаний процессов производства комплексов программ, а также испытаний их результатов – программных продуктов. Процедуры сертификации должны подтверждать соответствие требованиям заказчика, посредством которых независимое от изготовителя и потребителя предприятие юридически удостоверяет в письменной форме, что состояние продукции и качество функционирования способно обеспечить стабильность характеристик изготовляемой продукции и соответствует установленным заказчиком требованиям к функциям, характеристикам качества и стандартам.
Для этого они должны проходить тщательные испытания в условиях их последующего применения, динамически имитирующих реальную внешнюю среду для генерации тестов и функционирования испытываемых комплексов программ. Требования и результаты реализация тестов должны полностью отражать возможность проверки утвержденных заказчиком требований к программному продукту, и соответственно, по сложности и трудоемкости, должны быть принципиально аналогичными разработке такого программного комплекса. Эти два представления программного продукта отличаются только формой описания их содержания: функциональным (процессным) или событийным (сценариями и результатами исполнения). Таким образом, формируется возможность выполнять испытания, выявлять и устранять ошибки, предотвращать катастрофы систем, а также достигать высокого уровня соответствия программного комплекса заданным требованиям.
Кроме сертификации технологических процессов и готовых программных продуктов для эффективного их производства, и применения в промышленности, необходима сертификация квалификации коллектива специалистов, реализующих эти процессы. Для этого следует их обучение и аттестация на допуск к участию в таких работах, требующих высоких уровней профессиональной и интеллектуальной квалификации. Они должны освоить, знать и уметь использовать методологию программной инженерии, методы программирования, верификации, тестирования и документирования программных компонентов и комплексов, а также основы сертификации производственных процессов и программных продуктов. Квалифицированным специалистам в промышленности следует учитывать юридическую ответственность за качество производства и продуктов, за результаты сертификации и достоверность документации при применении программных продуктов пользователями.
Сертификаты специалистов программных продуктов должны демонстрировать и создавать уверенность у руководителей и заказчиков, что они способны квалифицированно и своевременно выполнять порученные работы.
Заказные программные продукты должны проходить экономическое обоснование и прогнозирование выбора и применения комплексной системы качества, методологии и инструментальных средств, гарантирующих требуемые качество, надежность и безопасность функционирования программного продукта. Предсказуемые высокие экономические характеристик, качество производства компонентов, и программного продукта, должны сопровождать весь жизненный цикл сложных комплексов программ. Развитие экономики в этой области индустрии связано с большими профессиональными и психологическими трудностями, типичными для новых разделов современной науки и техники, проявляющимися на стыке различных областей методов и знаний. Широкий спектр технических характеристик таких объектов, количественных и качественных факторов, которые, с различных сторон, характеризуют содержание компонентов и комплексов программ, а также невысокая достоверность экономической оценки их значений, определяют значительную трудность при описании и измерении свойств, количества и качества сложных программных продуктов для их экономической оценки и прогнозирования характеристик качества.
Разработка больших комплексов программ реального времени в гражданских областях промышленности и применения ЭВМ в 1960-е – 70-е годы не была востребована. Это определялось ориентацией научных и учебных учреждений, а также предприятий гражданской промышленности на создание относительно небольших расчетных программ и способствовало их отставанию в индустрии проектирования крупных комплексов программ реального времени почти на десяток лет от оборонной промышленности. Только в 1980-е годы, при быстром прогрессе в микропроцессорной технике появилась возможность, и было востребовано создание крупных заказных программных продуктов для административных, финансовых, промышленных и иных систем. Однако положительный опыт и методология оборонной промышленности по программной инженерии и индустриальному созданию крупных комплексов программ оставались секретными, а методы разработки небольших программ оказались не применимыми или не эффективными. В дальнейшем многие отечественные специалисты и предприятия были вынуждены заново осваивать и развивать методологию индустриального проектирования и производства крупных заказных программных продуктов, в том числе с оглядкой на опыт оборонной промышленности прошлых лет.
В последние годы было разработано свыше 50-ти международных стандартов ISO, IEC, обеспечивающих систематизированный выбор необходимых требований и процессов, в зависимости от характеристик, функций и особенностей конкретных проектов, а также формирование на их базе проблемно-ориентированных профилей стандартов для определенных типов проектов и предприятий. Практическое применение стандартов, сосредоточивших мировой опыт создания различных крупных комплексов программ, способствовал значительному повышению производительности труда специалистов и качества создаваемых программных продуктов. В результате, оформились базовые понятия, процессы и нормативные документы, современной научно-технической и промышленной области знаний и применения программной инженерии. Таким образом, к настоящему времени существуют методологические и нормативные документы для освоения, применения и развития современной инженерной дисциплины создания крупных программных продуктов высокого качества.
Для отечественных специалистов ориентиром может служить, приведенный на задней обложке цикл современных учебников и монографий по программной инженерии. Опубликованы многочисленные (в основном переводные) монографии и учебники для подготовки специалистов разного уровня. В качестве основы для разработки учебных планов могут рассматриваться: международный стандарт – Свод знаний по программной инженерии – ISO 19759:2005 – ТО. – SWEBOK, а также «Рекомендации по преподаванию программной инженерии и информатики в университетах – SE2004 (пер. с англ. – М. 2007)». В 2011-м году утвержден Государственный образовательный стандарт 23000 Программная инженерия (см. приложение).
Приложение
Федеральный государственный образовательный стандарт высшего профессионального образования по направлению подготовки 231000 программная инженерия (квалификация (степень) «магистр»)