- •Лекции по курсу «Технология программирования». Два подхода к разработке программных средств
- •Основные задачи, решаемые при разработке пс
- •Основные понятия и определения, используемые при разработке сложных кп
- •Особенности кп срмв.
- •Основные требования к кп срмв
- •Жизненный цикл сложных кп
- •Каскадная модель жизненного цикла
- •Итеративная модель (Спиральная модель) разработки по
- •Документация на сложные кп
- •Примеры итеративных процессов разработки
- •Виды программ и программных документов
- •Пояснительная записка
- •Техническое задание
- •Стадии разработки
- •Общие требования к программным документам
- •Спецификация
- •Формуляр
- •Текст программы
- •Описание программы
- •Программа и методика испытаний
- •Руководство системного программиста
- •Руководство оператора
- •Типовая структура программы и программного модуля
- •Понятие резидентных и кросс–систем автоматизации
- •Проблемы стандартизации при разработки пс
- •Принципы разработки больших кп
- •Принципы организации коллективов разработчиков кп
- •Тестирование и отладка по
- •Принципы тестирования.
- •Критерии тестирования Критерии «Черного ящика»:
- •Критерии «Белого ящика»:
- •Виды тестирования
- •Основные способы получения эталонов
- •Типичные ошибки при проектировании кп
- •Технологические ошибки
- •Программные ошибки
- •Алгоритмические ошибки
- •Системные ошибки
- •Динамика изменения количества сложныхошибок кп при отладке
- •Определение рациональной длительности отладки
- •Основные принципы отладки
- •Методы отладки
- •Принципы отладки
- •Принципы комплексной отладки и испытаний кп
- •Комплексная отладка
Технологические ошибки
В настоящее время технологические ошибки в реальных системах составляют ничтожную величину и могут быть вызваны лишь сбоями при перенесении исполняемого кода с каких-либо носителей в память ВС. Однако они могут существовать и в ряде систем, в основном СРМВ, где вводятся дополнительный контроль при занесении программ в память. Наиболее простым и в тоже время практически исчерпывающим является использование контрольных сумм.
Для АИС технологические ошибки также не являются определяющими, как правило они естественным образом достаточно быстро выявляются и для их исправления достаточно лишь перезагрузить программу.
Программные ошибки
Эти ошибки в значительной степени определяются степенью автоматизации при разработке программ. Разработка программ на ЯВУ позволяет снизить количество ошибок в 10-20 раз по сравнению с программами, разработанными на Assembler. Опыт показывает, что у опытных программистов обычно получается 1-2% неверных операторов (не синтаксических ошибок). 1 программная ошибка приводит, как правило, к изменению нескольких операторов, но самое печальное, что исправление ошибок очень часто приводит к возникновению новых ошибок.
Алгоритмические ошибки
Этот тип ошибок очень трудно поддается обнаружению методами формализованного контроля, как правило, применяемым при отладке, что связано с трудностью получения полных и достоверных эталонов для сложных КП.
Системные ошибки
Определяется, как правило, на последних этапах отладки, что часто приводит к тяжелейшим и даже катастрофическим последствиям. Еще одна трудность при определении подобных ошибок состоит в сложности получения некоторых режимов реальных объектов (например, сближение самолетов), поэтому при отладке часто используют модели.
Динамика изменения количества сложныхошибок кп при отладке
Исследования в динамике изменения ошибок позволяет получить важные данные для оценки уровня отлаженности КП, а также для определения необходимых ресурсов при проектировании КП в заданные сроки.
Длительность отладки зависит от допустимого значения не выявленных ошибок, при котором разработку можно считать законченной. Показателем отлаженности может быть вероятность обнаружения ошибок в программе в течение некоторого времени или интенсивность потока искажения результатов в период эксплуатации за счет не выявленных ошибок. Подобный подход представляется весьма удобным и разумным, но на практике получение количественных оценок весьма затруднено.
Существует жестокая корреляция между 3 видами проявления ошибок:
Суммарным количеством ошибок в КП имеющихся к определенному времени.
Количеством ошибок в КП выявляемых в единицу времени при постоянных усилиях (затратах).
Количеством искажений результатов на выходе КП из-за не выявленных ошибок.
Под постоянными усилиями будем понимать постоянство затрат ресурсов, как человеческих, так и материальных и временных. Человеческие ресурсы определяются количеством людей, занятых в отладке, и их квалификацией. Материальные ресурсы определяются количеством аппаратных и программных средств, используемых при отладке.
Если отладка ведется при постоянных усилиях, то можно предположить, что вероятность обнаружения ошибок в первом приближении определяется количеством ошибок в КП. Количество обнаруженных ошибок в единицу времени пропорционально количеству имеющихся ошибок в программе. Считая, что каждая обнаруженная ошибка устраняется, количество ошибок КП уменьшается и, следовательно, интенсивность их обнаружения должна экспоненциально убывать в зависимости от длительности отладки τ:
λ=λо*exp(-α*τ), (1)
где λо – интенсивность появления ошибок в начале отладки, λ – интенсивность обнаружения и устранения ошибок в единицу времени.α – некая константа, определяемая постоянными усилиями и соответственными затратами ресурсов.
В качестве показателя отлаженности КП можно было бы взять предельную интенсивность выявления ошибок, значение которой, в «теории», можно было бы получить из оценки допустимости потерь от воздействия не выявленных ошибок в процессе эксплуатации. Однако определение таких показателей на практике нереально. Поэтому в реальной жизни время завершения отладки осуществляется по совместному решению заказчика и исполнителя.
Выражение (1) абсолютно правильно отражает характер изменения ошибок во времени при сделанных нами предположениях, но не отражает реальное количество ошибок в системе. Это объясняется тем, что различные составляющие КП используются с различной частотой. Примерно с такой же частотой они тестируются, что является вполне разумным.
Причиной этого явления является воздействие входных типовых ситуаций, вызывающих выполнение сравнительно ограниченного круга функциональных программ, которые наиболее тщательно тестируются. В других частях программ, которые функционируют (а соответственно и тестируются) реже, может сохраниться большее количество ошибок. Физически мы не можем проверить все сочетания входных переменных. .При этом в режиме эксплуатации получаем
λэ = k*λо*exp(-λ*τ), (2)
т.е. реальных ошибок в kраз больше чем мы можем предположить.
Исследования, проведенные в условиях практической отладки, показывают, что k~100.
Выражения (1) и (2) вообще правильно показывает изменение количества ошибок и интенсивностей выявления ошибок в процессе отладки. Однако их использование на практике практически невозможно.
