Значительную помощь при локализации ошибок в программах оказывает рациональное размещение дампов, т.е. команд или подпрограмм печати, печатающих данные для распознавания и обнаружения ошибок. Например, при размещении дампов для проверки правильности организации циклов места их расположения целесообразно выбирать таким образом, чтобы они идентифицировали максимально возможное число циклов, а число точек, в которых расположены дампы, было при этом минимальным. Задача формулируется с использованием диагностической модели программы <Х, V, Г1, Г2, Г3, Г4> как задача о покрытии множества дуг, образующих циклы, таким образом, чтобы число дуг покрывающего набора было минимальным и не было ни одного цикла, для которого хотя бы одна дуга не вошла в набор.
Процесс локализации ошибок на этапе отладки является наиболее сложным для автоматизации. Системы автоматизации процессов локализации ошибок, известные в настоящее время, позволяют организовать прерывание программы, проводить выдачу или изменение значений переменных, моментальные снимки путей при реализации программы и т.п.
Одним из наиболее перспективных методов локализации ошибок по результатам тестирования является чтение программы в обратном направлении. Этот метод позволяет формализовать процессы определения областей локализации ошибок и определения места расположения ошибки в комплексе программ с применением аппарата специальных сетей Петри. Сети строятся на основании графовой модели блок-схемы комплекса программ, на которой отображены информационные связи. Введение специальной системы маркировки сетей Петри, отображающей вершины реализованного маршрута обработки информации и ошибочные результаты теста, позволяет на основе построения деревьев достижимости автоматически определить область локализации и место расположения ошибки в комплексе программ.
Большое число, разнообразие типов и трудоемкость обнаружения ошибок в сложных комплексах программ АСУ обусловливают повышенные требования к этапу системной отладки, целью которой является проверка выполнения комплексом программ всех функций, предусмотренных техническим проектом системы, и установления соответствия полученных результатов поставленным целям и задачам.
Системная отладка проводится путем последовательного сопряжения программных модулей. При этом выбор последовательности объединения модулей является одним из важнейших решений, поскольку он определяет сложность и трудоемкость тестирования, типы необходимых инструментов тестирования, а также тщательность и экономичность всего этапа системной отладки. Особенностью этого этапа является необходимость выявления не только программных, но и сложных алгоритмических ошибок. Такие ошибки возникают при объединении отдельных программных модулей в комплексы из-за неправильной организации передач управления и информации между модулями, отсутствия достоверной информации о необходимых временных ресурсах ЭВМ и ресурсах памяти для отдельных задач и их совокупностей, неправильного распределения функций между модулями комплекса и др.
Основными методами, используемыми на этапе системной отладки, являются методы анализа и тестирования.
Методы анализа применяют на начальном и завершающем этапах системной отладки. На начальном этапе анализируется текст программы, строится ее модель, определяются некоторые характеристики (сложность, избыточность) , составляется план проведения отладочных работ. На завершающем этапе анализируется эффективность комплекса программ, полученного в процессе системной отладки.
Методы тестирования используют для оценки степени готовности комплекса программ к передаче в режим эксплуатации; в основе методов лежит сбор и анализ данных о характеристиках поведения комплекса по результатам его реализации в известных условиях при заданных входах (тестах).
На этапе системной отладки тестирование обеспечивает исследование причин различных аномалий в поведении программы, оценку времени, объема памяти и других ресурсов, необходимых на различных этапах реализации программы, оценку эффективности систем защиты и средств восстановления, оценку поведения программы при неблагоприятных внешних условиях и недостоверных исходных данных и т.п.
Анализ целей, технологии, моделей и методов проведения системной отладки позволяет выделить ряд этапов отладочных работ и последовательность их проведения (рис. 1).
На первом этапе на основании анализа текста программы выявляются программные ошибки, возникающие при объединении программных модулей в комплекс или не выявленные в процессе программной отладки (в том числе некоторые ошибки зацикливаний, лишние и тупиковые операторы и т.п.). Эти ошибки обнаруживаются без применения ЭВМ в статике либо при наличии соответствующего программного обеспечения на основании информации, полученной при трансляции с помощью ЭВМ. Кроме того, на этом этапе строится модель программного комплекса. В качестве моделей, используемых при составлении тестов и локализации ошибок, применяют графовые модели: детальные блок-схемы комплекса программ и его частей, детальные блок-схемы отдельных программных модулей.
Составление плана системной отладки предусматривает выбор стратегии проведения отладочных работ, т.е. определение состава и последовательности отлаживаемых подструктур, обеспечивающих оптимальные временные или стоимостные характеристики системной отладки. В настоящее время применяются различные стратегии системной отладки: "сверху - вниз", "снизу – вверх" и их различные модификации. Реализация любой стратегии требует разбиения комплекса программ на части, автономной отладки полученных частей, последовательного объединения автономно отлаженных частей и их совместной отладки вплоть до исходного комплекса программ.
Рис. 1
Множество стратегий системной отладки определяется множеством возможных вариантов разбиения и объединения структурного графа С, вершинами которого являются программные модули комплекса, а дугами – связи по управлению между ними. Любая mn-стратегия задает множество подграфов разбиения графа GРm= {Р1, ..., Pv, ..., Pmn} и последовательность объединения этих подграфов до исходной графовой структуры
При этом задача выбора оптимальной стратегии системной отладки по критерию минимума времени на ее проведение формулируется следующим образом:Найти
– время и стоимость разбиения при использовании mn-стратегии; - время и стоимость объединения при использовании mn-стратегии; Сзад. – допустимые затраты на проведение системной отладки.На втором этапе системной отладки выявляются ошибки, связанные с просчетами в использовании ресурсов вычислительной техники по памяти (физической реализуемости комплекса программ). Эти ошибки обнаруживают путем анализа спецификаций комплекса программ (использование внешних запоминающих устройств), а также на основании информации компиляторов об объемах оперативной памяти, необходимой для размещения комплекса программ в процессе его функционирования.
На третьем этапе системной отладки на основании анализа результатов тестирования времени функционирования, тестирования согласованности по управлению и информации, тестирования функций выявляются и устраняются ошибки, связанные с просчетами в использовании ресурсов вычислительной техники по времени, ошибки сопряжений и ошибки в выполнении основных функций комплекса программ.
На четвертом этапе осуществляется проверка требований по обеспечению защиты от несанкционированного доступа (тестирование защиты), по обеспечению сохранности программных модулей и информационных массивов (тестирование средств восстановления), по обеспечению надежностных характеристик (тестирование надежности). Кроме того, на этом этапе может быть проведена проверка поведения системы при неблагоприятных внешних условиях (тестирование конфликтных ситуаций) и недостоверных исходных данных.
На пятом этапе проводится анализ эффективности комплекса программ, полученного в процессе системной отладки. При этом обычно используется подход, когда эффективность комплекса программ характеризуется суммарными затратами на его проектирование и отладку.
Некоторые ошибки сопряжений программных модулей могут быть выявлены в процессе компиляции комплекса программ. По результатам тестирования комплекса программ на этапе системной отладки осуществляется предварительная оценка характеристик эффективности защиты, средств восстановления, надежности; полная оценка этих характеристик может быть проведена лишь на этапе опытной эксплуатации на основе статистических характеристик тестирования на полноразмерных массивах исходных данных.
Одним из основных направлений сокращения трудоемкости и времени этапа подготовки программ является автоматизация программирования. Системы автоматизации программирования представляют собой совокупность алгоритмических и программных средств, предназначенных для автоматизации процесса разработки программ, т.е. перевода исходных алгоритмов на машинный язык. В общем случае система автоматизации программирования состоит из одного или нескольких входных языков (проблемно- и машинно-ориентированных), системы трансляции программ с этих языков, системы структурного контроля и системы выпуска технической документации. Система автоматизации программирования обеспечивает получение синтаксически, семантически и структурно корректных программ, а также технической документации на программы и их характеристики.