Лучшим и самым оптимальным способом (если не брать во внимание научно-технический прогресс и постоянное развитие IT-технологий, которые способствуют повышению качества характеристик программ) повышения надёжности программного обеспечения является строжайший контроль продукции на выходе с предприятия.
В последние годы сформировалась комплексная система управления качеством продукции TQM (Totaly Quality Management), которая концептуально близка к предшествующей более общей системе на основе стандартов ИСО серии 9000. Система ориентирована на удовлетворение требований потребителя, на постоянное улучшение процессов производства или проектирования, на управление процессами со стороны руководства предприятия на основе фактического состояния проекта. Основные достижения TQM состоят в углублении и дифференциации требований потребителей по реализации процессов, их взаимодействию и обеспечению качества продукции. Системный подход поддержан рядом специализированных инструментальных средств, ориентированных на управление производством продукции. Поэтому эта система пока не находит применения в области обеспечения качества жизненного цикла программных средств.
Применение этого комплекса может служить основой для систем обеспечения качества программных средств, однако требуется корректировка, адаптация или исключение некоторых положений стандартов применительно к принципиальным особенностям технологий и характеристик этого вида продукции. Кроме того, при реализации систем качества необходимо привлечение ряда стандартов, формально не относящихся к этой серии и регламентирующих показатели качества, жизненный цикл, верификацию и тестирование, испытания, документирование и другие особенности комплексов программ.
Активные методы повышения надежности ПС совершенствуются за счет развития средств автоматизации тестирования программ. Сложность ПС и высокие требования по их надежности требуют выработки принципов структурного построения сложных программных средств, обеспечивающих гибкость модификации ПС и эффективность их отладки. К таким принципам в работе относят:
- модульность и строгую иерархию в структурном построении программ;
- унификацию правил проектирования, структурного построения и взаимодействия компонент ПС;
- унификацию правил организации межмодульного интерфейса;
- поэтапный контроль полноты и качества решения функциональных задач.
Несмотря на очевидную актуальность, вопрос надежности программного обеспечения не привлекает должного внимания. Вместе с тем, даже поверхностный анализ проблемы с теоретико-вероятностной точки зрения позволяет выявить некоторые закономерности.
В заключение можно подвести итог:
1. В соответствии с классической работой Г. Майерса:
· В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать;
· Отказ программного обеспечения - это появление в нем ошибки;
· Надежность программного обеспечения - есть вероятность его работы без отказов в течении определенного периода времени, рассчитанного с учетом стоимости для пользователя каждого отказа.
2. Из данных определений можно сделать важные выводы:
· Надежность программного обеспечения является не только внутренним свойством программы;
· Надежность программного обеспечения - это функция как самого ПО, так и ожиданий (действий) его пользователей.
3. Основными причинами ошибок программного обеспечения являются:
· Большая сложность ПО, например, по сравнению с аппаратурой ЭВМ;
· Неправильный перевод информации из одного представления в другое.
[1] Г. Майерс. Надежность программного обеспечения. Москва, Мир, 1980 год.
[2] Р. Гласс. Руководоство по надежному программированию. Москва, «Финансы и статистика», 1982 год.
[3] В. Турский. Методология программирования. Москва, Мир, 1981 год.
[4] В. Феллер. Введение в теорию вероятностей и ее приложения. Т.1. Москва; изд.: «Мир». 1967 год.