Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
129
Добавлен:
09.05.2015
Размер:
122.88 Кб
Скачать

11.2. Программные ошибки

Типичные ошибки в программных комплексах. Статистические характеристики ошибок могут служить ориентиром для разработчиков при распределении усилий на создание программ. Кроме того, характеристики ошибок в процессе проектирования программ помогают:

  1. оценивать реальное состояние проекта и планировать трудоемкость и длительность до его завершения;

  2. рассчитывать необходимую эффективность средств оперативной защиты от невыявленных первичных ошибок;

  3. оценивать требующиеся ресурсы ЭВМ по памяти и производительности с учетом затрат на устранение ошибок;

  4. проводить исследования и осуществлять адекватный выбор показателей сложности компонент и КП, а также некоторых других показателей качества.

Анализ первичных ошибок в программах производится на двух уровнях детализации:

  1. дифференциально — с учетом типов ошибок, сложности и степени автоматизации их обнаружения, затрат на корректировку и этапов наиболее вероятного устранения;

  2. обобщенно — по суммарным характеристикам их обнаружения в зависимости от продолжительности разработки, эксплуатации и сопровождения комплекса программ.

Технологические ошибки документации и фиксирования программ в памяти ЭВМ составляют 5...10 % от общего числа ошибок, обнаруживаемых при отладке [12]. Большинство технологических ошибок выявляется автоматически формализованными методами.

Программные ошибки по количеству и типам в первую очередь определяются степенью автоматизации программирования и глубиной формализованного контроля текстов программ. Количество программных ошибок зависит от квалификации разработчиков, от общего объема комплекса программ, от глубины логического и информационного взаимодействия модулей и от ряда других факторов. При разработке программ на автокодах программные ошибки можно классифицировать по видам используемых операций на следующие группы: ошибки типов операций; ошибки переменных; ошибки управления и циклов.

В комплексе программ информационно-справочных систем эти виды ошибок близки по удельному весу, однако для автоматизации их обнаружений применяются различные методы. На начальных этапах разработки и автономной отладки модулей программные ошибки составляют около 1/3 всех ошибок. Ошибки применения операций на начальных этапах разработки достигают 14 %, а затем быстро убь-1вают при повышении квалификации программистов. Ошибки в переменных составляют около 13 %, а ошибки управления и организации циклов—около 10 %. Каждая программная ошибка влечет за собой необходимость изменения около шести команд, что существенно меньше, чем при алгоритмических и системных ошибках. На этапах комплексной отладки и эксплуатации удельный вес программных ошибок падает и составляет около 15 и 3 % соответственно от общего количества ошибок, выявляемых в единицу времени.

Алгоритмические ошибки значительно труднее поддаются обнаружению методами формализованного автоматического контроля, чем предыдущие типы ошибок. К алгоритмическим следует отнести прежде всего ошибки, обусловленные некорректной постановкой функциональных задач, когда в спецификациях не полностью оговорены все условия, необходимые для получения правильного результата. Эти условия формируются и уточняются в значительной части в процессе тестирования и выявления ошибок в результатах функционирования программ. Ошибки, обусловленные неполным учетом всех условий решения задач, являются наиболее частыми в этой группе и составляют до 70 % всех алгоритмических ошибок или около 30 % общего количества ошибок на начальных этапах проектирования.

К алгоритмическим ошибкам следует отнести также ошибки связей модулей и функциональных групп программ. Этот вид ошибок составляет 6...8 % от общего количества, их можно квалифицировать как ошибки некорректной постановки задач. Алгоритмические ошибки проявляются в неполном учете диапазонов изменения переменных, в неправильной оценке точности используемых и получаемых величин, в неправильном учете связи между различными переменными, в неадекватном представлении формализованных условий решения задачи в спецификациях или схемах, подлежащих программированию, и т. д. Эти обстоятельства являются причиной того, что для исправления каждой алгоритмической ошибки приходится изменять в среднем около 14 команд, т. е. существенно больше, чем при программных ошибках.

Особую часть алгоритмических ошибок составляют просчеты в использовании доступных ресурсов ВС. Одновременная разработка множества модулей различными специалистами затрудняет оптимальное распределение ограниченных ресурсов ЭВМ по всем задачам, так как отсутствуют достоверные данные потребных ресурсов для решения каждой из них. В результате возникает либо недоиспользование, либо (в подавляющем большинстве случаев) нехватка каких-то ресурсов ЭВМ для решения задач в первоначальном варианте. Наиболее крупные просчеты обычно происходят при оценке времени реализации различных групп программ и при распределении производительности ЭВМ.

Системные ошибки в сложных комплексах программ определяются прежде всего неполной информацией о реальных процессах, происходящих в источниках и потребителях информации. Кроме того, эти процессы зачастую зависят от самих алгоритмов и поэтому не могут быть достаточно определены и описаны заранее без исследования функционирования комплекса программ во взаимодействии с внешней средой. На начальных стадиях проектирования не всегда удается точно сформулировать целевую задачу всей системы, а также целевые задачи основных групп программ, и эти задачи уточняются в процессе проектирования. В соответствии с этим уточняются и конкретизируются технические задания или спецификации на отдельные программы и выявляются отклонения от уточненного задания, которые могут квалифицироваться как

системные ошибки.

При автономной и в начале комплексной отладки доля системных ошибок невелика (около 10 %), но она существенно возрастает (до 35...40 %) на завершающих этапах комплексной отладки. В процессе эксплуатации системные ошибки являются преобладающими (около 80 % от всех ошибок). Следует также отметить большое количество команд, корректируемых при исправлении каждой ошибки (около 25 команд на одну ошибку).

Убывание ошибок в комплексе программ и интенсивности их обнаружения не беспредельно. После отладки в течение некоторого времени интенсивность обнаружения ошибок при самом активном тестировании снижается настолько, что коллектив, ведущий разработку, попадает в зону нечувствительности к ошибкам и отказам. При такой интенсивности отказов трудно прогнозировать затраты времени, необходимые для обнаружения очередной ошибки. Создается представление о полном отсутствии ошибок, о невозможности и бесцельности их поиска, поэтому усилия на отладку сокращаются и интенсивность обнаружения ошибок еще больше снижается. Этой предельной интенсивности обнаружения отказов соответствует наработка на обнаруженную ошибку, при которой прекращается улучшение характеристик комплекса программ на этапах отладки и испытаний у заказчика.

Соседние файлы в папке разработка и стандартизация