- •Кризис программирования и способ выхода из него
- •Модель cmm-sei
- •Управление качеством разработки программного продукта с помощью системы стандартов iso 9001
- •Примерная структура процесса и организации, занимающейся разработкой программных продуктов
- •Контрольные вопросы
- •Оценка технических, нетехнических и финансовых ресурсов для выполнения программного проекта
- •Оценка возможных рисков при выполнении программного проекта
- •6.5. Составление временного графика выполнения программного проекта
- •Собираемые метрики, используемые методы, стандарты и шаблоны
- •Контрольные вопросы
- •Конструирование прототипа
- •Составление спецификаций по требованиям заказчика
- •Собираемые метрики, используемые методы, стандарты и шаблоны
- •Контрольные вопросы
- •Эволюция разработки программного продукта
- •Структурное программирование
- •Объектно-ориентированное проектирование
- •Собираемые метрики, используемые методы, стандарты и шаблоны
- •Контрольные вопросы
- •Тестирование
- •Разработка справочной системы программного продукта. Создание документации пользователя
- •Создание версии и инсталляции программного продукта
- •Собираемые метрики, используемые методы, стандарты и шаблоны
- •Контрольные вопросы
- •Виды тестирования
- •Программные ошибки
- •Тестирование документации
- •Разработка и выполнение тестов
- •Требования к хорошему тесту
- •Классы эквивалентности и граничные условия
- •Тестирование переходов между состояниями
- •Условия гонок и другие временные зависимости
- •Нагрузочные испытания
- •Прогнозирование ошибок
- •Тестирование функциональной эквивалентности
- •Регрессионное тестирование
- •Собираемые метрики, используемые методы, стандарты и шаблоны
- •Контрольные вопросы
- •1. Подготовительная работа, предусматривающая:
- •Контрольные вопросы
- •Классификация поставляемых программных продуктов
- •Действия, выполняемые при поставке программного продукта
- •Контрольные вопросы
- •Основные понятия о надежности программных продуктов и методах ее обеспечения
- •Методы обеспечения надежности на различных этапах жизненного цикла разработки программного продукта
- •Прогнозирование ошибок
- •Шаблон для учета итоговых сведений об ошибках
- •Предотвращение ошибок
- •Шаблон для учета действий по предотвращению ошибок на этапах составления требований, проектирования и разработки
- •Устранение ошибок
- •Обеспечение отказоустойчивости
- •Инструменты, обеспечивающие надежность программных продуктов. План обеспечения надежности
- •Контрольные вопросы
Основные понятия о надежности программных продуктов и методах ее обеспечения
Надежность считается ключевым показателем качества ПП. Особое внимание обеспечению надежности ПП уделяется в силу того, что этот показатель наиболее важен для конечного пользователя, а факторы качества, связанные с изменением ПП и разработкой его новых версий, имеют определяющее значение для разработчиков ПП и групп технической поддержки. Вряд ли кому понравится программа либо полностью неработоспособная, либо некорректно работающая.
На рис. 13.1 представлена топология факторов качества, предложенная Р.Макколом, Б.Ричардсом и С.Уолтерсом в 1977 г.
Издание «IEEE. Standart Glossary of Software Engineering Terms» («IEEE. Перечень стандартных терминов, используемых в программной инженерии») определяет надежность ПП как способность системы или ее компонента выполнять требуемые функции в заданных условиях на протяжении указанного периода времени. Степень надежности ПП непосредственно зависит от совершенства процесса разработки. Основной показатель, влияющий на надежность ПП — сложность разрабатываемых программ.
Процесс создания надежного ПП в отличие от аппаратного обеспечения не зависит от времени, что демонстрируют модели надежности аппаратного обеспечения и ПП, имеющие вид традиционных U-образных кривых, представленных соответственно на рис. 13.2 и 13.3, где — планируемое число сбоев.
Рис. 13.2. U-образная кривая надежности аппаратного обеспечения
Методы оценки надежности ПП окончательно еще не разработаны, однако если не выполнять адекватную оценку данных о случившихся сбоях, невозможным становится и выполнение расширенных статических моделей, требующихся для анализа реальной степени надежности. До сих пор еще не был разработан ни один надежный количественный метод оценки надежности, не содержащий чрезмерное число ограничений.
Степень надежности ПП можно улучшать с помощью различных методов, тем не менее, трудно достичь нужного соотношения между временем разработки, ее бюджетной стоимостью и кажущейся высокой ценой, уплаченной за достигнутую надежность ПП.
В отличие от аппаратного обеспечения ПП с течением времени не «изнашивается», просто выявляются все новые и новые его дефекты. Изображенная на рис. 13.3 U-образная кривая демонстрирует распределение сбоев на протяжении эксплуатации про граммы. Проявление сбоев в ПП отличается от характера сбоев аппаратуры, причем их вероятность всегда выше нуля.
Рис. 13.3. U-образная кривая надежности программных продуктов
При определении размера требуемых инвестиций для обеспечения желаемой надежности ПП необходимо учитывать вопросы, связанные с риском появления ненадежных программ. Баланс между затратами и достигаемой надежностью при проектировании ПП определяется критерием уменьшения указанного риска. Если достигаемая надежность не позволяет значительно уменьшить риск, то на ее обеспечение не стоит тратить дополнительных средств.
Большинство проблем надежности ПП не являются жизненно важными. Основная масса проблем, связанных с достижением надежности, относится к тестированию ПП.
Остановимся на рассмотрении четырех методов, обеспечивающих создание высоконадежного ПП:
прогнозирование ошибок — создание моделей надежности, анализ исторических данных, сбор информации об ошибках, профилирование операционной среды;
предотвращение ошибок — использование формальных методов, повторное использование программ, применение инструментов конструирования программ;
устранение ошибок — формальное инспектирование, верификация и аттестация;
обеспечение отказоустойчивости — использование методов мониторинга, верификация решений, анализ избыточности, исключительных ситуаций.
