Ошибки программного обеспечения
В широком смысле под ошибкой понимают неправильность, любое отклонение, искажение процесса выполнения программы.
Источники
Формулировка требований – неправильная запись требований к выполняемой задаче
Описание целей – неполное описание всех целей и задач
Спецификация проблемы(описание) – недостаточно полно отражены особенности выполнения задачи
Разработка компонентов(проектирование) – неправильное, неполное составление отдельных частей, модулей исходной задачи
Программы памяти – неправильная установка ячеек памяти или обращения к ним, как во всей программе так и отдельных ее частей
Изготовление документации – некорректное составление документов на программу, особенно много ошибок бывает в описании программы и в инструкции пользователю
Спецификация оборудования – недостаточно полно установлены особенности применяемого оборудования при решении исходных задач
Спецификация общего программного средства(описание особенностей применения) – не выявлены особенности данного программного средства
Спецификация языков программирования – неправильный выбор языка для выполнения исходной задачи
Применения программного изделия – неправильное применение исходной программы для решения более крупных задач
Корректировка программного изделия
Классификация ошибок
Технологические ошибки – возникают на любых этапах создания программы и составляют 5-10% ошибок от общего числа ошибок, обнаруженных при отладке. Выявление может быть автоматизировано и производится многократными перекрестными контролями для выяснения соответствия данных документации задачи.
Программные ошибки – по количеству и типу, в первую очередь, определяются степенью автоматизации программирования и глубиной формализованного контроля текстов программ. Количество ошибок зависит от квалификации разработчика, общего объема комплексов программ, от глубины логического и информационного взаимодействия модулей и т.п. Они появляются на стадии составлении программ и составляют 1/3 всех ошибок.
Программные ошибки могут классифицироваться по видам используемых операций на следующие группы:
Ошибки типов операций
Ошибки переменных
Ошибки циклов
Ошибки управления
Каждая программная ошибка влечет за собой необходимость изменения около 6-ти команд, что существенно меньше, чем при алгоритмических и системных ошибках. Устраняются во время отладки.
Алгоритмические ошибки – значительно труднее поддаются обнаружению методами формализованного контроля, чем предыдущие ошибки. К ним можно отнести прежде всего ошибки, обусловленные некорректной постановкой функциональных задач. Когда в спецификациях не полностью оговорены все условия, необходимые для правильного результата. Эти условия формируются и уточняются значительной частью в процессе тестирования и выявления ошибок в результатах функционирования программы. Ошибки обусловленные неполным учетом всех решений задач являются наиболее частыми в этой группе и составляют около 30% от общего количества ошибок на начальных этапах проектирования.
К алгоритмическим языкам следует отнести ошибки связей модулей и функциональной групп программ. Этот вид ошибок составляет 6-8% от общего числа ошибок. Их можно квалифицировать, как ошибки некорректной постановки задачи. Алгоритмические ошибки проявляются в неполном учете диапазонов изменения переменных, неправильной оценки точности используемых и получаемых величин, в неправильном учете связи между различными переменными, в неадекватном представлении формализованных условий решения задачи в спецификациях или схемах подлежащих программированию. Эти обстоятельства являются причиной того, что для исправления каждой алгоритмической ошибки приходится изменять около 14 команд.
Особую часть алгоритмических ошибок составляют просчеты доступных ресурсов. Из-за отсутствия данных о потреблении ресурсов для каждой задачи ведет к затруднению распределения ограниченных ресурсов ПК. В результате возникает либо недоиспользование, либо (в подавляющем большинстве случаев) нехватка ресурсов ПК для решения задач в первоначальном варианте.
4.Системные ошибки – определяются прежде всего неполной информацией о реальных процессах, происходящих в источниках и потребителях информации. Они возникают на начальных этапах проектирования, когда точно не сформулирована целевая задача всей системы. Во избежание этого замечания уточняются или конкретизируются технические задания или спецификации на отдельные программы и выявляются отклонения от уточненного задания, которые квалифицируются как системные ошибки.
При автономной и в начале комплексной отладки доля системных ошибок около 10%, но она возрастает до 30-40% на завершающих этапах комплексной отладки. В процессе эксплуатации системные ошибки преобладают – 80% всех ошибок. Для корректировки системных ошибок используют около 10 команд.