ПРОГРА́ММНЫЙ, —ая, —ое. 1. Прил. к программа. Дискуссия по программным вопросам. Программные установки партии. Программный центр радиовещания. Готовить к экзамену программный материал.
Все значения слова «программный»
ОШИ́БКА, -и, род. мн. —бок, дат. —бкам, ж. 1. Неправильность в какой-л. работе, вычислении, написании и т. п. Допустить ошибку. Грамматическая ошибка.
Все значения слова «ошибка»
-
Уже в 2010 г. блокчейн подтвердил свою эффективность при защите пользователей от программных ошибок.
-
Программные ошибки, проявляющиеся во время работы компьютера, обязательно связаны с обращением к какой-либо функции или команде операционной системы либо с запуском и работой прикладной программы.
-
Таким образом, исправление программных ошибок обходится, как правило, значительно дешевле, чем устранение аппаратных.
- (все предложения)
- программный код
- вредоносное программное обеспечение
- программное обеспечение
- программный модуль
- версия программного обеспечения
- (ещё синонимы…)
- ошибаться
- ошибочность
- неправильно
- промах
- опечатка
- (ещё ассоциации…)
- программное обеспечение
- разработка программного обеспечения
- разработать программное обеспечение
- (полная таблица сочетаемости…)
- большая ошибка
- ошибки прошлого
- исправление ошибок
- ошибка вышла
- совершать ошибку
- (полная таблица сочетаемости…)
- Разбор по составу слова «программный»
- Разбор по составу слова «ошибка»
- Как правильно пишется слово «программный»
- Как правильно пишется слово «ошибка»
На основании Вашего запроса эти примеры могут содержать грубую лексику.
На основании Вашего запроса эти примеры могут содержать разговорную лексику.
Перевод «программная ошибка» на английский
programming error
software bug
Причина — программная ошибка в модуле управления автоматической трансмиссией.
The reason is a software error in the automatic transmission control module.
Ревизионная комиссия провела расследование, в ходе которого было выявлено: причиной аварии послужила программная ошибка, из-за которой поступали неверные управляющие сигналы.
The Audit Commission conducted an investigation, during which it was revealed: the cause of the accident was a software error that caused incorrect control signals.
В 1991 году, во время войны в Персидском заливе, программная ошибка, проявившаяся в американской системе противоракетной обороны Patriot, привела к гибели 28 военнослужащих.
Even more serious during the Gulf War a software failure in the Patriot Missile System lead to the death of 28 soldiers.
Причиной стала программная ошибка в системе управления вентиляцией.
The reason was a programming error in the control system ventilation.
Вопрос изучили и стало понятно, что причиной является программная ошибка.
Ваш Fitbit также может страдать от аналогичной проблемы, из-за которой программная ошибка не позволяет ему нормально запускаться.
Your Fitbit might also be suffering from a similar issue, in which a software error is preventing it from starting normally.
Следует отметить, что это далеко не первая программная ошибка космического аппарата в истории, которая в итоге привела к его гибели.
It should be noted that this is not the first programming error of the spacecraft in history, which eventually led to his death.
Поскольку машины все чаще используются в автоматическом режиме, с бортовыми встраиваемыми системами или компьютерами, контролирующими их функционирование, программная ошибка может иметь серьезные последствия.
Since machines are increasingly being used in automated mode, with onboard embedded systems or computers controlling their functioning, a programming error can have drastic consequences.
Представитель Comcast Фред Де Андреа подтвердил, что программная ошибка произошла во вторник, около 9:30.
Comcast spokesman Fred DeAndrea confirmed the programming error occurred around 9:30 a.m.
«Это была просто программная ошибка в новой функции, которая, к сожалению, привела к существенной прорехе в безопасности.
«It was a simple programming error in a new feature, which unfortunately occurred in a security-relevant area.»
Но в это трудно поверить, по той же причине, по которой было бы трудно поверить, что программная ошибка в компьютере была исправлена не изменением программы, а выводом из строя какой-то части компьютера.
But it is hard to believe they really have, for the same reason it would be hard to believe a computer programming error was corrected not by altering the programming but by disabling a part of the computer.
Скорее всего, виновата какая-то программная ошибка.
Программная ошибка в коде online-кошелька привела к потере средств.
A software error in the online-wallet code resulted in a loss of funds.
23 Системный риск Программная ошибка Методологическая ошибка Телекоммуникационные ошибки
Systems risk: Programming error, model/ methodology error, IT systems failure, telecommunications failure
Программная ошибка в зенитном ракетном комплексе MIM-104 «Patriot», вызывавшая уход его системных часов на одну треть секунды за сто часов, привела к его неспособности обнаружить и перехватить летящую ракету.
The software error of a MIM-104 Patriot, caused its system clock to drift by one third of a second over a period of one hundred hours-resulting in failure to locate and intercept an incoming missile.
После этого при попытке открыть документ будет выходить программная ошибка.
The following error will occur when trying to create a document.
Ревизионная комиссия провела расследование, в ходе которого было выявлено: причиной аварии послужила программная ошибка, из-за которой поступали неверные управляющие сигналы.
The inspection committee conducted a research, during which they found that the cause of the accident was a programming error because of which a program received incorrect control signals.
Иногда программная ошибка или вирус могут также повредить ваш жесткий диск.
Sometimes a software or virus defect can also damage your hard drive.
«Это была аппаратная, а не программная ошибка.
Это может быть очень полезно, особенно если какая-то программная ошибка вызывает замедление работы вашего iPhone.
This can be very helpful especially if certain software bug is causing your iPhone to slow down.
Результатов: 40. Точных совпадений: 40. Затраченное время: 67 мс
Documents
Корпоративные решения
Спряжение
Синонимы
Корректор
Справка и о нас
Индекс слова: 1-300, 301-600, 601-900
Индекс выражения: 1-400, 401-800, 801-1200
Индекс фразы: 1-400, 401-800, 801-1200
Ошибка или программные ошибки или программное обеспечение аномалии часто также лук ( английский называется), термины из технологии программного обеспечения , с которой системными компонентами программного обеспечения, отклонение упомянутых требуемым или желаемым целевым состоянием для. Это может произойти, если z. Б. определенное определение спецификации неверно или было реализовано неправильно , и изначально приводит к состоянию внутренней ошибки в программе , что, в свою очередь, приводит к неожиданному поведению или результату при выполнении программы . Программное обеспечение с многочисленными ошибками иногда называют crapware под названием Воспринимаясь написано разработчиками как плохое ( английское дерьмо для дерьма ).
Для наиболее полного обнаружения и устранения ошибок программы, как правило, в процессах разработки программного обеспечения , т.е. ЧАС. Перед фактическим «продуктивным» использованием программного обеспечения пройдите этап проекта « тестирования программного обеспечения », во время которого проводится валидация. Ошибки, возникающие во время этого процесса, являются обычными, и цель тестирования — их найти, в то время как ошибки во время работы могут представлять собой критические аномалии / сбои в зависимости от эффекта ошибки. На практике компьютерные программы редко появляются без программных ошибок. Среди прочего известна качественная функция программ. плотность дефектов . Он описывает количество ошибок на 1000 строк кода ( килограмм строк исходного кода ) или на функциональную точку .
Так называемые отладчики , с помощью которых программа может выполняться и управляться шаг за шагом, полезны как специальные инструменты для поиска причин ошибок в программах . В случае особо важного программного обеспечения (например, системы управления воздушным судном) иногда проводится (сложная) формальная проверка .
Так называемые средства отслеживания ошибок (такие как Bugzilla или Mantis ) используются для записи и документирования . Сюда входят отчеты об ошибках, а также предложения по улучшению и запросы (так называемые запросы функций ) от пользователей или общих процессов. См. Также управление дефектами .
Процесс устранения ошибки программы в просторечии называется исправлением ошибок . В технических терминах результат улучшения называется исправлением ошибки, патчем или программным патчем .
Определения
Ошибка программы или программного обеспечения, основанная на общем определении слова » ошибка »
- «Несоблюдение требования (EN ISO 9000: 2005)».
В частности, ошибка определяется как
- «Отклонение ФАКТИЧЕСКИХ (наблюдаемых, определенных, вычисленных состояний или процессов) от ЗАДАЧИ (определенных, правильных состояний и процессов), если оно превышает предварительно определенный предел допуска [который также может быть 0]».
Согласно ISTQB , термин «ошибка» образован из следующих контекстов:
- неисправны действие (английский Error)
-
- «Действия человека, приводящие к возникновению состояния ошибки ([согласно IEEE 610])»
- … приводит к состоянию ошибки (англ. Defect)
-
- «Дефект (состояние внутренней неисправности) в компоненте или системе, который может нарушить требуемую функцию продукта …»
- эффект вина может (англ. Неудача) приводят к
-
- «Проявление внутренней ошибки в выполнении [программы] как некорректное поведение или результат либо как сбой системы».
- Пример деления на ноль : Неправильное действие: Ноль как возможное входное значение не проверялось / не исключалось; Статус ошибки: программа некорректна (возможно, незамеченная); Ошибка: ввод нулевого значения вызывает ошибку времени выполнения при выполнении команды .
Такие выражения, как проблема, дефект, отклонение, аномалия, дефицит также используются как в синоним для «ошибки» или в дополнение к нему. Это означает, что «серьезность ошибки» также может быть дифференцирована концептуально, например Б. нарушение правил стиля программирования , выдача неверных результатов или завершение программы .
«Ошибка» как синоним ошибки программы
Страница журнала релейного калькулятора Mark II Aiken с первой ошибкой (1947)
Слово « ошибка» в переводе с английского означает « Schnabelkerf ; Ошибка »и в просторечии« сельское членистоногое »или« (насекомоподобный) паразит ». На жаргоне американских инженеров значение «неисправность» или «ошибка конструкции» засвидетельствовано с конца 19 века; Это использование слова основано на (шутливой) идее о том, что маленький ползающий скот возится с коробкой передач, линией и т. Д. Самым старым свидетельством являются два письма Томаса Эдисона от 1878 года Уильяму Ортону , президенту телеграфной компании Western Union , и Тивадару Пушкашу , изобретателю телефонной станции , в которых говорится:
«[…] Я обнаружил« жучок »в своем аппарате, но не в самом телефоне. Он был из рода callbellum ».
«[…] Я нашел« жучок »в своем наборе, но не в самом телефоне. Он был из рода« callbellum »».
— Томас Эдисон в письме Уильяму Ортону от 3 марта 1878 г.
в качестве
«Первый шаг [во всех моих изобретениях] — это интуиция, и она приходит со всплеском, затем возникают трудности — эта штука выдает, и [это] тогда« жуки »- как называются такие маленькие ошибки и трудности — показывают самих себя […]. »
«Первым шагом [во всех моих изобретениях] является интуитивная мысль, которая приходит во время вспышки болезни, но затем возникают трудности — вещь перестает работать, и тогда [это]« ошибки »- как такие маленькие ошибки и трудности, которые называются — показать себя […] «.
— Томас Эдисон в письме Тивадару Пушкашу от 18 ноября 1878 г.
Эдисон не изобретатель, но, по крайней мере, ключевой свидетель значения этого слова, которое тогда было в ходу. Связь этого термина с компьютерами, возможно, восходит к пионеру компьютеров Грейс Хоппер . Они распространили историю о том, что 9 сентября 1945 года бабочка вызвала неисправность реле в компьютере- калькуляторе реле Mark II Aiken . Бабочка была удалена, засунута в журнал и сделана следующая запись: « Первый реальный случай обнаружения ошибки. (По-немецки: «Впервые на самом деле был обнаружен« паразит ».»). Легенда о нахождении этого термина сохраняется, хотя запись в журнале указывает, что этот термин уже использовался раньше. Вдобавок Грейс Хоппер ошиблась насчет года: инцидент на самом деле произошел 9 сентября 1947 года. Соответствующая страница журнала хранилась в Компьютерном музее ВМС США в Дальгрене , штат Вирджиния, до начала 1990-х годов . Эта страница журнала регистрации бабочек в настоящее время находится в Смитсоновском институте .
Типы ошибок
В программной инженерии (см. Также) различают следующие типы ошибок в программах:
- Лексические ошибки — это строки символов, которые нельзя интерпретировать, т.е. неопределенные идентификаторы (переменные, функции, литералы …)
- Синтаксические ошибки — это нарушения грамматических правил используемого языка программирования , например, неправильное использование зарезервированных символов (например, отсутствие скобок), конфликты типов, неправильное количество параметров.
Лексические и синтаксические ошибки обычно препятствуют компиляции ошибочной программы и поэтому обнаруживаются на ранней стадии. В языках программирования, которые интерпретируются последовательно , программа обычно завершается только в синтаксически / лексически неверном месте.
- Семантические ошибки — это ошибки, при которых запрограммированная инструкция является синтаксически правильной, но все же неверной с точки зрения содержания, например, путаница в коде команды, неправильный порядок параметров, который не может быть распознан синтаксически.
Логические ошибки заключаются в подходе к решению проблем, который неверен в деталях, например, из-за неправильного вывода , неверно интерпретированной спецификации или просто оплошности или типографской ошибки. Примеры: плюс вместо минуса, аменьшеменьшего / равны,т.д. терпимостиотношению к таким ошибкам и атрибутивной грамматикиязыков программирования, которыепредназначены для ограничения их, например, назначения совместимостис типами данных , являютсяочень разныезависимости на используемом языке программирования, и может быть трудно понять бреши в безопасности и вызвать сбои программы .- Ошибки проектирования — это ошибки в основной концепции, либо в определении требований к программному обеспечению, либо при разработке проекта программного обеспечения, на основе которого разрабатывается программа. Ошибки в определении требований часто возникают из-за незнания предметной области, для которой написано программное обеспечение, или из-за недопонимания между пользователями и разработчиками. С другой стороны, ошибки непосредственно в разработке программного обеспечения часто могут быть связаны с отсутствием опыта у разработчика программного обеспечения , неструктурированным программированием или последующими ошибками из-за ошибок в спецификации требований . В других случаях дизайн со временем разросся и со временем становится запутанным, что, в свою очередь, может привести к ошибкам проектирования при дальнейшей разработке программы. Часто программирование выполняется напрямую без правильной концепции , что может привести к ошибкам проектирования, особенно если программное обеспечение более сложное. Ошибки в определении требований, а также в разработке программного обеспечения часто возникают из-за нехватки средств или времени. Типичной ошибкой проектирования является повторение кода , которое не ведет напрямую к программным ошибкам, но может быть легко упущено из виду во время обслуживания программного обеспечения , модификации или расширения программного кода, что неизбежно приводит к нежелательным эффектам.
- Ошибка в концепции управления. Программа ведет себя не так, как ожидают отдельные или многие пользователи, хотя технически она работает безупречно.
Прочие условия ошибки
- Ошибки времени выполнения : хотя упомянутые выше ошибки означают, что программа действительно неисправна, которая либо не может быть выполнена, либо дает неверные результаты, «правильная» программа также может привести к ошибкам при ее выполнении. Ошибки времени выполнения — это все типы ошибок, которые возникают во время обработки программы. В зависимости от ситуации причиной может быть, например, неподходящая программная среда (например, неправильнаяверсия операционной системы , неверные параметры при вызове программы (также как подпрограммы ), неправильные входные данные и т. Д.)
- Ошибки времени выполнения могут проявляться по-разному. Программа часто демонстрирует нежелательное поведение, в крайних случаях выполнение программы прерывается («сбой») или программа переходит в состояние, в котором она больше не принимает вводимые пользователем данные («замораживание», «зависание»).
Пример воздействия программной ошибки
Если в языках программирования без автоматической сборки мусора (например, C или C ++ ) память больше не освобождается после использования, программа будет использовать все больше и больше памяти в долгосрочной перспективе. Такая ситуация называется утечкой памяти . Однако аналогичные проблемы могут возникать и в языках программирования с автоматической сборкой мусора (например, Java или C # ), если, например, объекты накапливаются неконтролируемым образом из-за низкоуровневого программирования . Еще более критичными являются области памяти, случайно освобожденные программистом , на которые часто все еще ссылаются висячие указатели , поскольку это может привести к полностью неконтролируемому поведению программного обеспечения. Поэтому некоторые среды выполнения обычно не допускают такие программируемые высвобождения памяти. Также есть ошибки во взаимодействии с другими программами.
- Ошибки в компиляторе, среде выполнения или других библиотеках. Такие ошибки обычно особенно трудно понять, потому что поведение программы в таких случаях не соответствует ее семантике. В частности, ожидается, что компилятор и среда выполнения будут особенно надежными.
- Ошибка регрессии ( регресс означает «шаг назад») — это ошибка, которая появляется только в более поздних версиях программы. Часто это необнаруженные побочные эффекты исправлений ошибок или изменений программ в других местах.
- Ошибки в результате физических условий эксплуатации. Широкий спектр событий, таких как электромагнитные поля, излучение, колебания температуры, вибрации и т. Д., Также может привести к ошибкам в системах, которые иначе сконфигурированы и работают в соответствии со спецификациями. Ошибки этого типа очень маловероятны, их очень трудно обнаружить и могут иметь фатальные последствия для приложений реального времени. Однако по статистическим причинам их нельзя исключать. Известное «падение бит» в памяти или на жестком диске из-за описанных влияний является, например, такой ошибкой. Как последствия такой ошибки (например, сбой системы или невозможность загрузки из-за того, что системный файл имеет был поврежден), от которого обычно очень трудно отличить другие программные ошибки, часто подозревают другую причину, тем более что такая ошибка часто невоспроизводима.
- Программные ошибки против программных ошибок: поскольку эти два термина не понимаются как синонимы, более широкое определение может также применяться к « программным ошибкам » — в соответствии с разницей в значении компьютерной программы и программного обеспечения : в соответствии с этим, ошибки или недостатки в документации также будут программные ошибки, независимо от того, привели ли они к ошибочным программам. Неправильные данные (этот термин также присваивается программному обеспечению в зависимости от определения) вряд ли следует рассматривать как ошибку программы, а скорее как ошибку программного обеспечения.
В некоторых проектах термин «ошибка» не используется, а скорее, например, в метабугах, в которых ошибка является элементом списка задач. В некоторых проектах вместо этого используется термин «проблемы», поскольку этот термин не ограничивается ошибками.
Конкретные примеры ошибок с определенным влиянием СМИ можно найти в списке примеров ошибок программ .
Экономический смысл
Программные ошибки — это гораздо больше, чем просто неприятные сопутствующие обстоятельства для разработчиков программного обеспечения; они вызывают значительные затраты с коммерческой и экономической точки зрения . Исследование IX 1/2006 показало, что z. B. следующие значения, определенные для Германии:
- Ежегодные убытки из-за программных ошибок в средних и крупных компаниях составляют около 84,4 млрд евро.
- Около 14,4 млрд евро ежегодно (35,9% бюджета ИТ) расходуется на устранение программных ошибок ;
- Потери производительности из-за сбоев компьютеров из-за неисправного программного обеспечения составляют около 70 миллиардов евро.
В том же исследовании также исследуется развитие качества программного обеспечения за период с 2002 по 2004 год. Результатом является:
- процент неудачных проектов вырос с 15% до 18%
- процент успешных проектов упал с 34% до 29%
- процент проектов с перерасходом средств увеличился с 43% до 56%
- доля проектов с отставанием в срок выросла с 82% до 84%
- доля проектов с подходящей функциональностью упала с 67% до 64%
Отчет Высшего аудиторского управления новых проектов (1985 г.) при федеральной администрации США показывает особенно большое количество неудач, согласно которым
- 27% оплаченного программного обеспечения так и не были доставлены,
- 52% никогда не работали,
- 18% были использованы только после капитального ремонта.
- Только 3% заказанного программного обеспечения соответствовали согласованным договорным условиям.
Standish Group International заявила: в среднем проекты превышают
- первоначально запланированная стоимость проекта на 89%
- назначенных приемов на 222%.
Евуси-Менах определила следующие факторы как причины отмены проекта из-за низкого качества программного обеспечения:
- Объективно неясно
- Неправильная занятость проектной команды
- Недостаточная гарантия качества
- Отсутствие технических ноу-хау
- Недостаточный учет исходной ситуации
- Отсутствие участия пользователя
Предотвращение и исправление программных ошибок
Как правило, чем раньше ошибка возникает в процессе разработки и чем позже она обнаруживается, тем больше времени потребуется на ее исправление.
Во время планирования
Самое главное — грамотное и грамотное планирование процесса разработки. Уже существует ряд процедурных моделей, из которых можно выбрать подходящую.
На этапе анализа
Одна из проблем состоит в том, что правильность программы может быть доказана только с помощью должным образом формализованной спецификации. Однако создание такой спецификации может быть столь же сложным и подверженным ошибкам, как программирование самой программы.
Развитие более абстрактных парадигмы программирования и программирование стилей , такие как функциональное программирование , объектно-ориентированное программирование , дизайн по контракту и аспектно-ориентированное программирование служит, помимо всего прочего, чтобы избежать ошибок и упростить поиск неисправностей. Подходящий метод должен быть выбран из доступных для решения проблемы. Важным моментом здесь является то, что опытные программисты должны быть доступны для соответствующей парадигмы, иначе часто возникает противоположный эффект.
Также очень полезно позволить инструментам разработки надежно и автоматически обрабатывать как можно больше задач по предотвращению ошибок. Б. облегчается с помощью структурного программирования . С одной стороны, это касается элементов управления, таких как правила видимости и безопасности типов , а также недопущения циклических ссылок, которые могут быть приняты компилятором перед переводом программ , а также элементов управления, которые могут выполняться только во время выполнения , например в качестве индекса проверки для полей данных или проверки типа для объектов объектно-ориентированного программирования.
На этапе проектирования
Эксперты по программному обеспечению согласны с тем, что практически каждая нетривиальная программа содержит ошибки. Поэтому были разработаны методы терпимого отношения к ошибкам в программах. Эти методы включают в себя защитное программирование , обработку исключений , избыточность и мониторинг программ (например, с использованием сторожевого таймера), а также проверку достоверности программы во время разработки и данных во время выполнения программы.
При программировании
Кроме того, предлагается ряд расширенных приложений, которые анализируют либо исходный код, либо двоичный код и пытаются найти ошибки, которые часто допускаются автоматически. В эту категорию входят программы для мониторинга выполнения, которые обычно надежно обнаруживают некорректные обращения к памяти и утечки памяти . Примерами являются свободно доступный инструмент Valgrind и коммерческий Purify . Другая категория тестовых программ включает приложения, которые статически анализируют исходный или двоичный код, например, обнаруживают и сообщают о незакрытых ресурсах и других проблемах. К ним относятся FindBugs , Lint и Splint .
При тестировании
Имеет смысл разрабатывать тест до самой программы. Это гарантирует , что тест не написано , что соответствует программе , которая уже была написана . Это можно сделать на этапе анализа или проектирования путем определения тестовых примеров на основе спецификации . Определение тестовых примеров на этой ранней стадии разработки программного обеспечения также позволяет проверить требования программы на тестируемость и полноту. Контрольные примеры, определенные на основе спецификации, являются основой для приемочных испытаний, которые постоянно совершенствуются в течение всего процесса разработки и z. Б. можно подготовить к автоматизации тестирования .
Некоторые поставщики программного обеспечения иногда проводят этапы тестирования публично и выпускают бета-версии, чтобы непредсказуемо разнообразные условия использования разных пользователей могли быть протестированы и прокомментированы ими самими.
Оперативный
Если во время работы возникает ошибка, необходимо попытаться минимизировать ее последствия и ограничить сферу своей деятельности путем создания «защитных стен» или «мер безопасности». Это требует, с одной стороны, способности обнаруживать ошибки, а с другой — способности адекватно реагировать на ошибку.
Примером обнаружения ошибок во время выполнения компьютерной программы являются утверждения , с помощью которых запрашиваются условия, которые всегда выполняются в соответствии с проектом программы. Другие механизмы — это обработка исключений, например ловушка и исключение.
Реализуя стойкую несущий код , программное обеспечение может гарантировать и обеспечить его надежность в определенной степени во время выполнения.
Безупречность
Полная свобода от ошибок для программного обеспечения, превышающего определенный предел сложности, практически недостижима и не поддается проверке. С увеличением сложности обзор уменьшается, особенно если программированием занимаются несколько человек. Даже дорогое или тщательно протестированное программное обеспечение содержит ошибки программирования. В случае программ, которые можно использовать, тогда говорят о надежности, а не об отсутствии ошибок . Программное обеспечение считается надежным, если ошибки возникают очень редко, причиняют лишь незначительные неудобства и не вызывают серьезных повреждений или убытков.
В особых случаях можно доказать, что программа не содержит ошибок (с учетом указанных требований). Особенно в областях, в которых использование программного обеспечения связано с высокими финансовыми, экономическими или человеческими рисками, такими как Например, в программном обеспечении, используемом в военных или медицинских целях или в аэрокосмической промышленности, также используется метод, называемый «(формальная) проверка », при котором правильность программного обеспечения доказывается математически. Однако из-за огромных усилий этот метод имеет узкие пределы, и поэтому его практически невозможно выполнять со сложными программами (см. Также предсказуемость ). Однако теперь есть инструменты, которые, согласно их собственной информации, могут быстро и надежно предоставить это свидетельство , по крайней мере, для частичных областей ( ошибок времени выполнения ).
Помимо математической проверки, существует также практическая форма проверки, которая описывается стандартом менеджмента качества ISO 9000 . С его помощью ошибка формально констатируется только в том случае, если требование не выполняется. И наоборот, результат работы (а значит, и программное обеспечение ) можно охарактеризовать как «безошибочный», если он явно соответствует всем требованиям. Выполнение требования определяется тестами . Если все тесты, определенные для требования, приносят ожидаемые результаты, требование выполнено. Если это относится к тестам всех требований (при условии правильного и полного тестирования), делается вывод об отсутствии ошибок в отношении требований. Если требования, на которых основаны тесты, ошибочны или неполны, программное обеспечение все равно не будет работать «должным образом».
Классификация дефектов
Ошибки , которые возникают , как правило , рассматриваются Системно в управлении ошибками . Согласно стандарту IEEE 1044 (классификация аномалий программного обеспечения) каждая ошибка проходит так называемый процесс классификации, состоящий из четырех этапов: распознавания, анализа (расследования), обработки (действие) и заключения (устранения). На каждом из этих этапов выполняется запись, классификация и определение воздействия административной деятельности.
Критерии, по которым можно классифицировать ошибки, включают: (с примерами):
- Тип ошибки: различаются: лексические ошибки (неизвестная ссылка), синтаксические ошибки (забытая точка с запятой), семантические ошибки (неправильное объявление ), ошибки времени выполнения (неверно отформатированные входные данные) и логические ошибки (плюс вместо минуса, цикл ошибки , …)
- причина ошибки: неточная спецификация, повернутые числа, неверная формула, непроверенные (неверные) входные данные …
- момент времени, в который произошла ошибка («неправильное действие»): Уже в спецификации программы, в черновике кода, в кодировке, …
- Время, в которое возникает ошибка («эффект ошибки»): фундаментальное различие возникает в зависимости от того, возникает ли ошибка во время разработки программы, например, во время тестирования (здесь это нормальный случай) или в продуктивной работе (где она часто представляет собой критическую ситуацию). вина).
- момент времени обнаружения: чем больше «время ожидания ошибки», тем больше времени требуется i. A. Корректирующее действие будет продолжено.
- последствия ошибки: ошибки отображения, неверные результаты, завершение программы, внешние эффекты …
- Трудоемкость и продолжительность устранения неполадок: минимальные … очень высокие; немедленно … очень долгое время;
- Статус обработки: выполнено, проверено, исправление выполняется , возможна повторная проверка , …, выполнено
С помощью показателей «результаты [и понимание ошибок] также должны способствовать поиску причин, стоящих за проблемами». «Классификация ошибок формирует основу для стандартизированных процедур обработки ошибок, а также поддерживает постоянное улучшение качества в смысле управления качеством ». Дополнительная информация по каждой ошибке, такая как подробное описание ошибки, затронутые программы, вовлеченные лица и т. Д., Сопровождает меры по устранению ошибок. устранение ошибок и их документирование. Для получения дополнительной информации см. Руководство BITKOM.
Для простоты программные ошибки в процессе обработки ошибок часто делятся только на категории / классы, такие как A, B, C … или 1, 2, 3 … и т. Д., В зависимости от серьезности ошибки, который также включает влияние ошибки и усилия, необходимые для ее исправления. Примеры см. В рекомендациях BITKOM, особенно в приложении.
Последствия ошибок программы
Последствия программных ошибок могут сильно различаться и проявляться по-разному. Если ошибки обнаруживаются в процессе разработки, последствия ошибки также ограничиваются пересмотром программного обеспечения (исправления кода, пересмотр концепции, документация …) — в зависимости от ситуации с большим или меньшим влиянием на бюджет проекта. и продолжительность проекта. С другой стороны, ошибки, которые обнаруживаются только в производственной эксплуатации, часто имеют более критический эффект, например, они могут вызвать сбои в процессе или простои производства, повредить имидж, привести к потере клиентов и рынков, вызвать обязательство регресса или даже поставить под угрозу существование компании. В худшем случае ошибки в технических приложениях могут привести к катастрофе.
Конкретные примеры программных ошибок и их последствий можно найти в списке примеров программных ошибок .
Воспроизводимость программных ошибок
Некоторые программные ошибки чрезвычайно трудно или невозможно надежно воспроизвести. Если ранее неудачный процесс повторяется при явно неизменных условиях, существует вероятность того, что эти ошибки больше не будут выражены. Есть две возможные причины такого поведения: с одной стороны, могут быть задержки между активацией ошибки и проблемой, которая в конечном итоге возникает, например, сбой программы, который скрывает действительную причину и затрудняет ее выявление. С другой стороны, другие элементы программной системы (оборудование, операционная система, другие программы) могут влиять на поведение ошибок в рассматриваемой программе. Примером этого являются ошибки, возникающие в параллельных средах при недостаточной синхронизации (точнее: последовательности ). Из-за возникающих условий гонки процессы могут обрабатываться в последовательности, которая приводит к ошибке времени выполнения. Если одно и то же действие повторяется, возможно, что порядок процессов будет другим, и проблем не возникнет.
Дальнейшие темы
- Чтобы узнать о принципе доставки «незрелого» программного обеспечения, см. Принцип банана # Банановая посуда .
литература
- Уильям Э. Перри: Тестирование программного обеспечения. Mitp-Verlag, Бонн 2002, ISBN 3-8266-0887-9 .
- Эльфрида Дастин, Джефф Рашка, Джон Пол: Автоматическое тестирование программного обеспечения. Порядок действий, обращение и исполнение. Springer, Berlin et al. 2001, ISBN 3-540-67639-2 .
- Джем Канер, Джек Фальк, Хунг Куок Нгуен: Тестирование компьютерного программного обеспечения. 2-е издание. John Wiley & Sons, Нью-Йорк, штат Нью-Йорк и др. 1999, ISBN 0-471-35846-0 .
веб ссылки
Викисловарь: ошибки — объяснение значений, происхождение слов, синонимы, переводы
- 25 самых опасных ошибок программирования (английский)
- SQS: Самые заметные программные ошибки 2012 года. В: Computerwoche. 17 января 2013, доступ к 20 января 2013 .
Индивидуальные доказательства
- ↑ а б в М. Пол, Т. Кумен, А. Спиллнер: Управление и оптимизация процесса тестирования. dpunkt.Verlag, Heidelberg 2002, ISBN 3-89864-156-2 .
- ↑ Spillner et al. Тест на практические знания по программному обеспечению — руководство по тестированию, читая образец гл. 1.1 Базовые знания / определение ошибок ( памятка от 17 декабря 2010 г. в Интернет-архиве ) (PDF) dpunkt.de
- ↑ Полный словарь Merriam-Webster (приложение для iOS, 2016): ошибка: а) насекомое или другое ползающее или ползающее беспозвоночное… б) любое из определенных насекомых, обычно считающихся особенно неприятными… в) насекомое отряда Hemiptera , особенно: член подотряда Heteroptera …
- ↑ Записки Томаса А. Эдисона, т. 4, изд. Пол Б. Исраэль, Балтимор и Лондон, 1993. Интернет [1]
- ^ Фред Р. Шапиро: этимология компьютерной ошибки: история и фольклор . В: Американская речь 62: 4, 1987, стр. 376-378.
- ↑ a b informatik.uni-oldenburg.de
- ↑ iX-Magazin , Study Software Test Management , ранее был доступен в IX Kiosk ( Memento от 9 января 2013 г. в Интернет-архиве )
- ↑ a b Wallmüller: Управление качеством программного обеспечения на практике, beck-shop.de (PDF; 612 kB), Hanser, Munich 2001, ISBN 978-3-446-21367-8 .
- ↑ Юнгингер: Ценностно-ориентированный контроль рисков в управлении информацией . 2005 г., ISBN 3-8244-8225-8 .
^ Тестирование программного обеспечения Георга Эдвина Таллера , проверка и валидация 2002, ISBN 978-3-88229-198-8 .
- ↑ my.safaribooksonline.com
- ^ Стандартная классификация программных аномалий IEEE. (PDF) Совет по стандартам IEEE, 1993, стр. 32 , по состоянию на 22 ноября 2014 г. (Белая книга; документ за Paywall).
- ↑ a b c Классификация дефектов программного обеспечения. BITKOM, декабрь 2007, архивируются с оригинала на апрель 16, 2019 ; доступ на 11 апреля 2021 года .
Ошибка, недостаток, сбой или сбой в компьютерной программе или системе
A Ошибка программного обеспечения — это ошибка, недостаток или сбой в компьютерной программе или системе, из-за которой она дает неверный или неожиданный результат или ведет себя непредусмотренным образом. Процесс поиска и исправления ошибок называется «отладка » и часто использует формальные методы или инструменты для выявления ошибок, а с 1950-х годов некоторые компьютерные системы были разработаны также для обнаружения, обнаружения или автоматического исправления различных компьютерные ошибки во время работы.
Большинство ошибок возникает из-за ошибок и ошибок, допущенных либо в проекте программы, либо в ее исходном коде, либо в компонентах и операционных системах, используемых такие программы. Некоторые из них вызваны тем, что компиляторы создают неправильный код. Программа, содержащая множество ошибок и / или ошибок, серьезно мешающих ее функциональности, называется ошибочной (дефектной). Ошибки могут вызывать ошибки, которые могут иметь волновой эффект. Ошибки могут иметь незначительные последствия или привести к аварийному завершению работы или зависанию компьютера. Другие ошибки квалифицируются как ошибки безопасности и могут, например, позволить злоумышленнику обойти контроль доступа, чтобы получить неавторизованные привилегии.
Некоторые программные ошибки связаны с катастрофами. Ошибки в коде, который управлял аппаратом Therac-25 лучевой терапии, были непосредственными причинами смерти пациентов в 1980-х годах. В 1996 г. ракета Европейского космического агентства стоимостью 1 миллиард долларов прототип Ariane 5 должна была быть уничтожена менее чем через минуту после запуска из-за ошибки в системе. бортовая компьютерная программа наведения. В июне 1994 года вертолет Royal Air Force Chinook врезался в Mull of Kintyre, в результате чего погибло 29 человек. Первоначально это было отклонено как ошибка пилота, но расследование Computer Weekly убедил запрос Палаты лордов в том, что это могло быть вызвано ошибкой программного обеспечения в компьютере управления двигателем.
самолета. В 2002 году исследование, проведенное по заказу Национальный институт стандартов и технологий Министерства торговли США пришел к выводу, что «программные ошибки или ошибки настолько распространены и настолько пагубны, что обходятся экономике США примерно в 59 миллиардов долларов. ежегодно, или около 0,6 процента валового внутреннего продукта ».
Содержание
- 1 История
- 1.1 Отчет« Ошибки в системе »
- 2 Терминология
- 3 Профилактика
- 3.1 Типографические ошибки
- 3.2 Методологии разработки
- 3.3 Поддержка языков программирования
- 3.4 Анализ кода
- 3.5 Инструментарий
- 4 Тестирование
- 5 Отладка
- 6 Тест ошибок
- 7 Управление ошибками nt
- 7.1 Уровень серьезности
- 7.2 Приоритет
- 7.3 Версии программного обеспечения
- 8 Типы
- 8.1 Арифметика
- 8.2 Логика
- 8.3 Синтаксис
- 8.4 Ресурс
- 8.5 Многопоточность
- 8.6 Взаимодействие
- 8.7 Работа в команде
- 9 Последствия
- 10 Хорошо известные ошибки
- 11 В популярной культуре
- 12 См. Также
- 13 Ссылки
- 14 Внешние ссылки
История
Среднеанглийское слово bugge лежит в основе терминов «bugbear » и «bugaboo » как терминов, используемых для обозначения монстра.
Термин «ошибка» для описания дефектов был частью инженерного жаргона с 1870-х годов и предшествовал электронным компьютерам и компьютерному программному обеспечению; возможно, изначально он использовался в аппаратной инженерии для описания механических неисправностей. Например, Томас Эдисон написал следующие слова в письме своему сотруднику в 1878 году:
Так было во всех моих изобретениях. Первым шагом является интуиция, и она приходит с порывом, затем возникают трудности — эта штука выдает, и [это] затем, что «жуки» — как называются такие маленькие ошибки и трудности — проявляют себя и месяцы интенсивного наблюдения, изучения прежде чем будет достигнут коммерческий успех или провал, необходимы и труд.
Baffle Ball, первая механическая игра в пинбол, в 1931 году рекламировалась как «свободная от ошибок». Проблемы с военным снаряжением во время Второй мировой войны упоминались как ошибки (или сбои ). В фильме 1940 года Flight Command дефект в части радиопеленгатора называется «ошибкой». В книге, опубликованной в 1942 году, Луиза Дикинсон Рич, говоря о механизированной машине для резки льда, сказала: «Распиловка льда была приостановлена до тех пор, пока не будет привлечен создатель, чтобы устранить жучков. своего любимого ».
Исаак Азимов использовал термин« ошибка »для обозначения проблем с роботом в своем рассказе« Поймай этого кролика », опубликованном в 1944 году.
A страница из журнала электромеханического компьютера Harvard Mark II с изображением мертвой мотылька, удаленной с устройства.
Термин «ошибка» использовался в описании компьютерного первопроходца Грейс Хоппер, который объявил причину неисправности в одном из первых электромеханических компьютеров. Типичная версия этой истории такова:
В 1946 году, когда Хоппер освободили от действительной службы, она поступила на Гарвардский факультет в вычислительную лабораторию, где продолжила свою работу над Mark II и Марк III. Операторы связали ошибку в Mark II с мотыльком, застрявшим в реле, придумав термин «ошибка». Этот баг был аккуратно удален и записан в журнал. Исходя из первой ошибки, сегодня мы называем ошибки или сбои в программе ошибкой.
Хоппер не нашла ошибку, что она с готовностью признала. В бортовом журнале была дата 9 сентября 1947 года. Операторы, которые его нашли, включая Уильяма «Билла» Берка, позже работавшего в Лаборатории военно-морского оружия, Дальгрен, Вирджиния, были знакомы с техническим термином и забавно сохранил насекомое с пометкой «Первый реальный случай обнаружения ошибки». Хоппер любил пересказывать эту историю. Этот журнал, вместе с прикрепленным к нему мотыльком, является частью коллекции Смитсоновского Национального музея американской истории.
Связанный термин «отладка » также появился раньше, чем его использовали в вычислительной технике: Оксфордский словарь английского языка этимология этого слова содержит свидетельство 1945 года в контексте авиационных двигателей.
Идея, что программное обеспечение может содержать ошибки, восходит к 1843 году Ады Лавлейс. примечания к аналитической машине, в которых она говорит о возможности того, что программные «карты» для аналитической машины Чарльза Бэббиджа ошибочны:
… процесс анализа также должен быть выполнен, чтобы предоставить Аналитической машине необходимые оперативные данные; и в этом также может заключаться возможный источник ошибки. При условии, что реальный механизм работает без ошибок, карты могут давать ему неправильные команды.
Отчет «Ошибки в системе»
Институт открытых технологий, управляемый группой New America, выпустил доклад «Ошибки в системе» в августе 2016 года, в котором говорится, что политики США должны провести реформы, чтобы помочь исследователям выявлять и устранять ошибки программного обеспечения. В отчете «подчеркивается необходимость реформы в области обнаружения и раскрытия уязвимостей программного обеспечения». Один из авторов отчета сказал, что Конгресс сделал недостаточно для устранения уязвимости киберпрограмм, хотя Конгресс принял ряд законопроектов по борьбе с более серьезной проблемой кибербезопасности.
Государственные исследователи, компании и кибербезопасность эксперты — это люди, которые обычно обнаруживают недостатки программного обеспечения. В докладе содержится призыв к реформированию законов о компьютерных преступлениях и авторских правах.
Закон о компьютерном мошенничестве и злоупотреблениях, Закон об авторском праве в цифровую эпоху и Закон о конфиденциальности электронных коммуникаций криминализируют и вводят гражданские санкции за действия, которые исследователи в области безопасности обычно совершают при проведении законных исследований в области безопасности. — говорится в отчете.
Терминология
Хотя использование термина «ошибка» для описания ошибок программного обеспечения является обычным явлением, многие предложили отказаться от него. Один из аргументов состоит в том, что слово «ошибка» не связано с тем, что проблема была вызвана человеком, и вместо этого подразумевает, что дефект возник сам по себе, что привело к необходимости отказаться от термина «ошибка» в пользу таких терминов, как «дефект» с ограниченным успехом. Начиная с 1970-х годов Гэри Килдалл несколько юмористически предложил использовать термин «грубая ошибка».
В разработке программного обеспечения термин «метаморфизм ошибки» (от греческого meta = «изменение», morph = «форма») означает эволюции дефекта на заключительном этапе развертывания программного обеспечения. Преобразование «ошибки», совершенной аналитиком на ранних этапах жизненного цикла разработки программного обеспечения, которая приводит к «дефекту» на заключительной стадии цикла, было названо «метаморфизмом ошибки».
Различные этапы «ошибки» во всем цикле могут быть описаны как «ошибки», «аномалии», «сбои», «сбои», «ошибки», «исключения», «сбои», «сбои», «ошибки», » дефекты »,« инциденты »или« побочные эффекты ».
Предотвращение
Отрасль программного обеспечения приложила много усилий для сокращения количества ошибок. К ним относятся:
Типографические ошибки
Ошибки обычно появляются, когда программист делает логическую ошибку. Различные нововведения в стиле программирования и защитном программировании призваны сделать эти ошибки менее вероятными или более простыми для обнаружения. Некоторые опечатки, особенно в символах или логических / математических операторах, позволяют программе работать некорректно, в то время как другие, такие как отсутствие символа или неправильное имя, могут препятствовать работе программы. Скомпилированные языки могут обнаруживать некоторые опечатки при компиляции исходного кода.
Методологии разработки
Несколько схем помогают управлять деятельностью программиста, чтобы генерировать меньше ошибок. Программная инженерия (которая также решает проблемы проектирования программного обеспечения) применяет множество методов для предотвращения дефектов. Например, формальные спецификации программ устанавливают точное поведение программ, так что ошибки проектирования могут быть устранены. К сожалению, формальные спецификации нецелесообразны ни для чего, кроме самых коротких программ, из-за проблем комбинаторного взрыва и неопределенности.
Модульное тестирование включает в себя написание теста для каждой функции (модуля), которая программа для исполнения.
В разработке, управляемой тестированием, модульные тесты пишутся до кода, и код не считается завершенным, пока все тесты не завершатся успешно.
Гибкая разработка программного обеспечения включает частые выпуски программного обеспечения с относительно небольшими изменениями. Дефекты выявляются по отзывам пользователей.
Разработка с открытым исходным кодом позволяет любому исследовать исходный код. Школа мысли, популяризированная Эриком С. Реймондом как закон Линуса, гласит, что популярное программное обеспечение с открытым исходным кодом имеет больше шансов иметь мало ошибок или совсем не иметь ошибок, чем другое программное обеспечение., потому что «при достаточном внимании к нему все ошибки мелкие». Однако это утверждение оспаривается: специалист по компьютерной безопасности Элиас Леви писал, что «легко скрыть уязвимости в сложном, малоизученном и недокументированном исходном коде», потому что «даже если люди просматривают код, это не означает, что они обладают достаточной квалификацией для этого «. Примером того, что это произошло случайно, была уязвимость 2008 OpenSSL в Debian.
Поддержка языков программирования
Языки программирования включают функции, помогающие предотвратить ошибки, такие как системы статических типов , ограниченное пространства имен и модульное программирование. Например, когда программист записывает (псевдокод) LET REAL_VALUE PI = "THREE AND A BIT"
, хотя это может быть синтаксически правильным, код не проходит проверку типа . Скомпилированные языки улавливают это без необходимости запускать программу. Интерпретируемые языки выявляют такие ошибки во время выполнения. Некоторые языки намеренно исключают функции, которые легко приводят к ошибкам, за счет более низкой производительности: общий принцип заключается в том, что почти всегда лучше писать более простой и медленный код, чем непостижимый код, который выполняется немного быстрее, особенно с учетом того, что обслуживание стоимость существенная. Например, язык программирования Java не поддерживает арифметику с указателем ; реализации некоторых языков, таких как Pascal и языков сценариев, часто имеют границы среды выполнения , проверяющие массивов, по крайней мере, в отладочной сборке.
Анализ кода
Инструменты для анализа кода помогают разработчикам, проверяя текст программы за пределами возможностей компилятора, чтобы выявить потенциальные проблемы. Хотя в целом проблема поиска всех программных ошибок в данной спецификации не разрешима (см. проблема остановки ), эти инструменты используют тот факт, что люди-программисты часто допускают определенные виды простых ошибок при написании программного обеспечения.
Инструментарий
Инструменты для мониторинга производительности программного обеспечения во время его работы, специально для поиска таких проблем, как узкие места, или для обеспечения уверенности в правильной работе, могут быть встроенными в код явным образом (возможно, так просто, как выражение PRINT «I AM HERE»
) или предоставлено в виде инструментов. Часто бывает неожиданностью обнаружить, где большую часть времени занимает фрагмент кода, и это удаление предположений может привести к переписыванию кода.
Тестирование
Тестировщики программного обеспечения — это люди, основной задачей которых является обнаружение ошибок или написание кода для поддержки тестирования. В некоторых проектах на тестирование может быть потрачено больше ресурсов, чем на разработку программы.
Измерения во время тестирования могут дать оценку количества оставшихся вероятных ошибок; это становится более надежным, чем дольше тестируется и разрабатывается продукт.
Отладка
Типичная история ошибок (GNU Classpath данные проекта). Новая ошибка, отправленная пользователем, не подтверждена. Как только он был воспроизведен разработчиком, это подтвержденная ошибка. Подтвержденные ошибки позже исправлены. Ошибки, относящиеся к другим категориям (невоспроизводимые, не будут исправлены и т. Д.), Обычно составляют меньшинство.
Поиск и исправление ошибок или отладка — основная часть компьютерного программирования. Морис Уилкс, один из первых пионеров вычислительной техники, описал свое осознание в конце 1940-х годов, что большую часть оставшейся жизни он потратит на поиск ошибок в собственных программах.
Обычно самые сложные Часть отладки — это поиск ошибки. Как только она обнаружена, исправить ее обычно относительно легко. Программы, известные как отладчики, помогают программистам обнаруживать ошибки, выполняя код построчно, наблюдая за значениями переменных и другими функциями для наблюдения за поведением программы. Без отладчика код может быть добавлен так, что сообщения или значения могут быть записаны в консоль или в окно или файл журнала для отслеживания выполнения программы или отображения значений.
Однако даже с помощью отладчика обнаружение ошибок — это своего рода искусство. Нередко ошибка в одном разделе программы вызывает сбои в совершенно другом разделе, что особенно затрудняет отслеживание (например, ошибка в подпрограмме рендеринга графики , вызывающая файл I / O ошибка подпрограммы) в явно несвязанной части системы.
Иногда ошибка не является изолированным недостатком, а представляет собой ошибку мышления или планирования со стороны программиста. Такие логические ошибки требуют капитального ремонта или перезаписи части программы. Как часть обзора кода, пошаговое выполнение кода и воображение или расшифровка процесса выполнения часто может обнаруживать ошибки без воспроизведения ошибки как таковой.
Как правило, первым шагом при обнаружении ошибки является ее надежное воспроизведение. Как только ошибка будет воспроизведена, программист может использовать отладчик или другой инструмент при воспроизведении ошибки, чтобы найти точку, в которой программа сбилась с пути.
Некоторые ошибки обнаруживаются при вводе данных, которые программисту может быть трудно воссоздать. Одной из причин смерти радиационной машины Therac-25 была ошибка (в частности, состояние гонки ), которая возникала только тогда, когда оператор машины очень быстро вводил план лечения; На то, чтобы это сделать, потребовались дни практики, поэтому ошибка не проявлялась ни при тестировании, ни при попытке производителя воспроизвести ее. Другие ошибки могут перестать возникать всякий раз, когда установка расширяется, чтобы помочь найти ошибку, например, запуск программы с отладчиком; они называются хайзенбагами (шутливо названы в честь принципа неопределенности Гейзенберга ).
С 1990-х годов, особенно после катастрофы Ariane 5 Flight 501, возрос интерес к автоматизированным средствам отладки, таким как статический анализ кода посредством абстрактной интерпретации.
Некоторые классы ошибок не имеют ничего общего с кодом. Неправильная документация или оборудование могут привести к проблемам при использовании системы, даже если код соответствует документации. В некоторых случаях изменения в коде устраняют проблему, даже если код больше не соответствует документации. Встроенные системы часто обходят аппаратные ошибки, поскольку создание новой версии ПЗУ намного дешевле, чем восстановление оборудования, особенно если они товарные позиции.
Тест ошибок
Чтобы облегчить воспроизводимые исследования по тестированию и отладке, исследователи используют специально подобранные тесты тестов:
- тест Siemens
- ManyBugs — тест на 185 ошибок C. в девяти программах с открытым исходным кодом.
- Defects4J — это тест на 341 ошибку Java из 5 проектов с открытым исходным кодом. Он содержит соответствующие исправления, которые охватывают множество типов исправлений.
- BEARS — это эталонный тест на ошибки сборки с непрерывной интеграцией с упором на ошибки тестирования. Он был создан путем мониторинга сборок из проектов с открытым исходным кодом на Travis CI.
Управление ошибками
Управление ошибками включает в себя процесс документирования, категоризации, назначения, воспроизведения, исправления и выпуска исправленного кода. Предлагаемые изменения в программном обеспечении — ошибки, запросы на улучшения и даже целые выпуски — обычно отслеживаются и управляются с помощью систем отслеживания ошибок или систем отслеживания проблем. Добавленные элементы могут называться дефектами, заявками, проблемами или, следуя парадигме гибкой разработки, рассказами и эпосами. Категории могут быть объективными, субъективными или комбинированными, например номер версии, область программного обеспечения, серьезность и приоритет, а также тип проблемы, такой как запрос функции или ошибка.
Уровень серьезности
Уровень серьезности — это влияние ошибки на работу системы. Это может быть потеря данных, финансовая потеря, потеря репутации и потраченные впустую усилия. Уровни серьезности не стандартизированы. Воздействие различается в зависимости от отрасли. Сбой в видеоигре оказывает совершенно иное влияние, чем сбой в веб-браузере или системе мониторинга в реальном времени. Например, уровни серьезности ошибки могут быть такими: «сбой или зависание», «нет обходного пути» (что означает, что клиент не может выполнить данную задачу), «имеет обходной путь» (что означает, что пользователь все еще может выполнить задачу), «визуальный дефект »(например, отсутствующее изображение или смещенная кнопка или элемент формы) или« ошибка документации ». Некоторые издатели программного обеспечения используют более квалифицированные уровни серьезности, такие как «критический», «высокий», «низкий», «блокирующий» или «простой». Серьезность ошибки может быть отдельной категорией по отношению к ее приоритету для исправления, и эти две категории могут быть количественно определены и обработаны отдельно.
Priority
Приоритет определяет, где ошибка попадает в список запланированных изменений. Приоритет определяется каждым производителем программного обеспечения. Приоритеты могут быть числовыми, например от 1 до 5, или именованными, например, «критические», «высокие», «низкие» или «отложенные». Эти рейтинговые шкалы могут быть похожи или даже идентичны рейтингам серьезности, но оцениваются как комбинация серьезности ошибки с предполагаемыми усилиями по исправлению; ошибка с низким уровнем серьезности, которую легко исправить, может получить более высокий приоритет, чем ошибка средней степени серьезности, для исправления которой требуются чрезмерные усилия. Рейтинги приоритета могут быть согласованы с выпусками продукта, например «критический» приоритет, указывающий на все ошибки, которые необходимо исправить до следующего выпуска программного обеспечения.
Выпуски программного обеспечения
Распространенной практикой является выпуск программного обеспечения с известными низкоприоритетными ошибками. Большинство крупных программных проектов поддерживают два списка «известных ошибок» — тех, которые известны команде разработчиков программного обеспечения, и тех, о которых нужно сообщить пользователям. Второй список информирует пользователей об ошибках, которые не исправлены в конкретном выпуске, и могут быть предложены обходные пути. Релизы бывают разных видов. Ошибки с достаточно высоким приоритетом могут потребовать специального выпуска части кода, содержащей только модули с этими исправлениями. Они известны как патчи. Большинство выпусков включают в себя как изменение поведения, так и несколько исправлений ошибок. Релизы, в которых упор делается на исправления ошибок, называются отладочными. Релизы, в которых особое внимание уделяется добавлению / изменению функций, известны как основные релизы и часто имеют названия, позволяющие отличать новые функции от старых.
Причины, по которым издатель программного обеспечения предпочитает не исправлять или даже не исправлять конкретную ошибку, включают:
- Срок должен быть соблюден, а ресурсов недостаточно для исправления всех ошибок к указанному сроку.
- ошибка уже исправлена в следующем выпуске, и она не имеет высокого приоритета.
- Изменения, необходимые для исправления ошибки, слишком дороги или затрагивают слишком много других компонентов, что требует серьезного тестирования.
- Можно подозревать или знать, что некоторые пользователи полагаются на существующее поведение с ошибками; предлагаемое исправление может ввести критическое изменение.
- Проблема находится в области, которая будет устаревшей в следующем выпуске; исправлять это не нужно.
- Это «не ошибка». Возникло недопонимание между ожидаемым и предполагаемым поведением, когда такое недопонимание не связано с путаницей, возникшей из-за недостатков дизайна или ошибочной документации.
Типы
В проектах разработки программного обеспечения — «ошибка» или «сбой» может быть введен на любом этапе. Ошибки возникают из-за упущений или недоразумений, допущенных командой разработчиков программного обеспечения во время спецификации, проектирования, кодирования, ввода данных или документации. Например, относительно простая программа для построения списка слов по алфавиту может не учитывать, что должно произойти, если слово содержит дефис. Или при преобразовании абстрактного дизайна в код кодировщик может непреднамеренно создать единичную ошибку и не отсортировать последнее слово в списке. Ошибки могут быть такими же простыми, как опечатка: имелось в виду «<» where a «>».
Другая категория ошибок называется состоянием состязания, которое может возникнуть, когда в программах одновременно выполняется несколько компонентов. Если компоненты взаимодействуют в порядке, отличном от предполагаемого разработчиком, они могут мешать друг другу и мешать программе выполнять свои задачи. Эти ошибки может быть трудно обнаружить или предвидеть, поскольку они могут не возникать при каждом выполнении программы.
Концептуальные ошибки — это неправильное понимание разработчиком того, что должно делать программное обеспечение. Полученное программное обеспечение может работать в соответствии с пониманием разработчика, но не в соответствии с тем, что действительно необходимо. Другие типы:
Арифметика
- Деление на ноль.
- Арифметическое переполнение или потеря значимости.
- Потеря арифметической точности из-за округления или численно нестабильные алгоритмы.
Логика
- Бесконечные циклы и бесконечная рекурсия.
- Поочередная ошибка, считая слишком много или слишком мало при зацикливании.
Синтаксис
- Использование неправильного оператора, например выполнение присваивания вместо проверки равенства. Например, в некоторых языках x = 5 установит значение x равным 5, а x == 5 будет проверять, является ли x в настоящее время 5 или каким-либо другим числом. Интерпретируемые языки допускают сбой такого кода. Скомпилированные языки могут обнаруживать такие ошибки до начала тестирования.
Ресурс
- Нулевой указатель разыменование.
- Использование неинициализированной переменной.
- Использование в противном случае действительной инструкции для неправильного тип данных (см. упакованный десятичный / двоичный десятичный код ).
- Нарушения доступа.
- Утечка ресурсов, когда конечный системный ресурс (например, память или дескрипторы файлов ) исчерпываются из-за повторного выделения без освобождения.
- Переполнение буфера, при котором программа пытается сохранить данные за пределами выделенного хранилища. Это может привести или не привести к доступу нарушение или нарушение хранилища. Они известны как ошибки безопасности.
- Чрезмерная рекурсия, которая, хотя и логически допустима, вызывает переполнение стека.
- Ошибка использования после освобождения, где указатель используется после того, как система освободила память, на которую он ссылается.
- Ошибка двойного освобождения.
Многопоточность
- Тупик, когда задача A не может продолжаться до выполнения задачи B. заканчивается, но в в то же время задача B не может продолжаться до завершения задачи A.
- Состояние гонки, когда компьютер не выполняет задачи в порядке, заданном программистом.
- Ошибки параллелизма в критических секциях, взаимные исключения и другие особенности параллельной обработки. Время проверки — время использования (TOCTOU) — это форма незащищенной критической секции.
Взаимодействие
- Неправильное использование API.
- Неправильная реализация протокола.
- Неправильная обработка оборудования.
- Неправильные предположения о конкретной платформе.
- Несовместимые системы. Новый API или протокол связи может показаться работоспособным, когда две системы используют разные версии, но могут возникать ошибки, когда функция или функция, реализованная в одной версии, изменяется или отсутствует в другой. В производственных системах, которые должны работать постоянно, отключение всей системы для крупного обновления может оказаться невозможным, например, в телекоммуникационной отрасли или в Интернете. В этом случае меньшие сегменты большой системы обновляются индивидуально, чтобы свести к минимуму перебои в работе большой сети. Однако некоторые разделы могут быть пропущены и не обновлены, что может вызвать ошибки совместимости, которые трудно найти и исправить.
- Неправильные аннотации кода
Коллективная работа
- Нераспространяемые обновления; например программист изменяет myAdd, но забывает изменить mySubtract, который использует тот же алгоритм. Эти ошибки смягчаются философией Не повторяйся.
- Комментарии устарели или неверны: многие программисты считают, что комментарии точно описывают код.
- Различия между документации и продукта.
Последствия
Объем и тип ущерба, который может вызвать программная ошибка, естественным образом влияют на принятие решений, процессы и политику в отношении качества программного обеспечения. В таких приложениях, как пилотируемые космические путешествия или автомобильная безопасность, поскольку недостатки программного обеспечения могут привести к травмам или даже смерти людей, такое программное обеспечение будет подвергаться гораздо более тщательной проверке и контролю качества, чем для Например, веб-сайт интернет-магазина. В таких приложениях, как банковское дело, где недостатки программного обеспечения могут нанести серьезный финансовый ущерб банку или его клиентам, контроль качества также более важен, чем, скажем, приложение для редактирования фотографий. Технологическому центру Software Assurance НАСА удалось снизить количество ошибок до менее 0,1 на 1000 строк кода (SLOC ), но это не было сочтено возможным для проектов в мире бизнеса..
Помимо ущерба, причиненного ошибками, часть их стоимости связана с усилиями, вложенными в их исправление. В 1978 году Линц и др. показал, что в среднем по проектам 17% усилий по разработке вкладывается в исправление ошибок. Исследование, проведенное в 2020 году в репозиториях GitHub, показало, что медиана составляет 20 процентов.
Хорошо известные ошибки
Ряд программных ошибок стал широко известным, обычно из-за по степени серьезности: примеры включают крушения различных космических и военных самолетов. Возможно, самая известная ошибка — это проблема 2000 года, также известная как ошибка 2000 года, в которой опасались, что мировой экономический коллапс произойдет в начале 2000 года в результате того, что компьютеры думали, что это был 1900. (В конце концов, серьезных проблем не возникло.) Срыв в 2012 году на бирже был связан с одной такой несовместимостью между старым API и новым API.
В массовой культуре
- В романе 1968 года 2001: Космическая одиссея и соответствующем фильме 1968 года 2001: Космическая одиссея, бортовой компьютер космического корабля, HAL 9000, пытается убить всех членов экипажа. В последующем романе 1982 года 2010: Одиссея 2 и сопутствующем фильме 1984 года 2010 выясняется, что это действие было вызвано тем, что компьютер был запрограммирован двумя конфликтующими цели: полностью раскрыть всю свою информацию и сохранить в секрете истинную цель полета от экипажа; этот конфликт привел к тому, что HAL стал параноиком и, в конечном итоге, стал смертоносным.
- В американской комедии 1999 года Офисное пространство трое сотрудников пытаются использовать озабоченность своей компании исправлением компьютерной ошибки Y2K, заразив компьютер компании система с вирусом, который отправляет округленные пенни на отдельный банковский счет. Этот план имеет неприятные последствия, поскольку у самого вируса есть собственная ошибка, которая преждевременно отправляет большие суммы денег на счет.
- Роман 2004 года «Ошибка» Эллен Ульман описывает попытку программиста найти неуловимую ошибку в приложении базы данных.
- Канадский фильм 2008 года Control Alt Delete рассказывает о программисте в конце 1999 года, который пытается исправить ошибки в своей компании, связанные с годом Проблема 2000.
См. Также
- Анти-шаблон
- Программа вознаграждения за ошибку
- Удаление сбоя
- ISO / IEC 9126, которая классифицирует ошибку как дефект или несоответствие
- Классификация ортогональных дефектов
- Проблема с ипподромом
- Обзор РИСКОВ
- Индикатор программного дефекта
- Программная регрессия
- Программная гниль
- Автоматическое исправление ошибок
Ссылки
Внешние ссылки
- «Перечисление общих слабых мест »- экспертная веб-страница, посвященная ошибкам, на NIST.gov
- тип ОШИБКИ Джима Грея — другое er Тип ошибки
- Изображение «первой компьютерной ошибки» на Wayback Machine (архивировано 12 января 2015 г.)
- «Первая компьютерная ошибка! »- письмо от 1981 об ошибке Адмирала Хоппера
- «на пути к пониманию ошибок компилятора в GCC и LLVM «. Исследование ошибок в компиляторах 2016 г.
Инструмент проверки текста на орфографические и грамматические ошибки онлайн, позволит исправить
самые громоздкие
ошибки, с высокой степенью точности и скорости, а
также улучшить свой письменный русский язык.
Если возможно несколько исправлений, вам будет предложено выбрать одно из них.
Слова в которых допущены ошибки выделяются разными цветами, можно кликнуть на подсвеченное слово,
посмотреть описание ошибки
и выбрать исправленный вариант.
Инструмент поддерживает 8 языков.
Символов в тексте
0
Без пробелов
0
Количество слов
0
Вставьте ваш текст для проверки
Ваш текст проверяется
Орфография
Написать текст без каких-либо орфографических или пунктуационных ошибок достаточно сложно даже
специалистам.
Наша автоматическая проверка
орфографии
может помочь профессионалам, студентам, владельцам веб-сайтов, блогерам и авторам получать текст
практически без ошибок. Это не только поможет им исправить текст, но и
получить информацию о том, почему использование слова неправильно в данном контексте.
Что входит в проверку текста?
- грамматические ошибки;
- стиль;
- логические ошибки;
- проверка заглавных/строчных букв;
- типографика;
- проверка пунктуации;
- общие правила правописания;
- дополнительные правила;
Грамматика
Для поиска грамматических ошибок инструмент содержит более 130 правил.
- Деепричастие и предлог
- Деепричастие и предлог
- «Не» с прилагательными/причастиями
- «Не» с наречиями
- Числительные «оба/обе»
- Согласование прилагательного с существительным
- Число глагола при однородных членах
- И другие
Грамматические ошибки вида: «Идя по улице, у меня развязался шнурок»
-
Грамматическая ошибка: Идя по улице, у меня…
-
Правильно выражаться: Когда я шёл по улице, у меня развязался шнурок.
Пунктуация
Чтобы найти пунктуационные ошибки и правильно расставить запятые в тексте, инструмент содержит более
60 самых важных правил.
- Пунктуация перед союзами
- Слова не являющиеся вводными
- Сложные союзы не разделяются «тогда как», «словно как»
- Союзы «а», «но»
- Устойчивое выражение
- Цельные выражения
- Пробелы перед знаками препинания
- И другие
Разберем предложение, где пропущена запятая «Парень понял как мальчик сделал эту модель»
-
Пунктуационная ошибка, пропущена запятая: Парень понял,
-
«Парень понял, как мальчик сделал эту модель»
Какие языки поддерживает инструмент?
Для поиска ошибок вы можете вводить текст не только на Русском
языке, инструмент поддерживает проверку орфографии на Английском, Немецком и Французском
Приложение доступно в Google Play
Отладка программы: 3 типа ошибок
Часть 3 – Отладка программы
В предыдущей части мы рассмотрели исходный код и его составляющие.
После того, как вы начнете проверять фрагменты кода или попытаетесь решить связанные с ним проблемы, вы очень скоро поймете, что существуют моменты, когда программа крашится, прерывается и прекращает работу.
Это часто вызвано ошибками, известными как дефекты или исключительные ситуации во время выполнения. Акт обнаружения и удаления ошибок из нашего кода – это отладка программы. Вы лучше разберетесь в отладке на практике, используя ее как можно чаще. Мы не только отлаживаем собственный код, но и порой дебажим написанное другими программистами.
Для начала необходимо рассортировать общие ошибки, которые могут возникнуть в исходном коде.
Синтаксические ошибки
Эти эрроры не позволяют скомпилировать исходный код на компилируемых языках программирования. Они обнаруживаются во время компиляции или интерпретации исходного кода. Они также могут быть легко обнаружены статическими анализаторами (линтами). Подробнее о линтах мы узнаем немного позже.
Синтаксические ошибки в основном вызваны нарушением ожидаемой формы или структуры языка, на котором пишется программа. Как пример, это может быть отсутствующая закрывающая скобка в уравнении.
Семантические ошибки
Отладка программы может потребоваться и по причине семантических ошибок, также известных как логические. Они являются наиболее сложными из всех, потому что не могут быть легко обнаружены. Признак того, что существует семантическая ошибка, – это когда программа запускается, отрабатывает, но не дает желаемого результата.
Рассмотрим данный пример:
По порядку приоритета, называемому старшинством операции, с учетом математических правил мы ожидаем, что сначала будет оценена часть умножения, и окончательный результат будет равен 33. Если программист хотел, чтобы сначала происходило добавление двух чисел, следовало поступить иначе. Для этого используются круглые скобки, которые отвечают за смещение приоритетов в математической формуле. Исправленный пример должен выглядеть так:
3 + 5, заключенные в скобки, дадут желаемый результат, а именно 48.
Ошибки в процессе выполнения
Как и семантические, ошибки во время выполнения никогда не обнаруживаются при компиляции. В отличие от семантических ошибок, эти прерывают программу и препятствуют ее дальнейшему выполнению. Они обычно вызваны неожиданным результатом некоторых вычислений в исходном коде.
Вот хороший пример:
Фрагмент кода выше будет скомпилирован успешно, но Input 25 приведет к ZeroDivisionError. Это ошибка во время выполнения. Другим популярным примером является StackOverflowError или IndexOutofBoundError. Важно то, что вы идентифицируете эти ошибки и узнаете, как с ними бороться.
Существуют ошибки, связанные с тем, как ваш исходный код использует память и пространство на платформе или в среде, в которой он запущен. Они также являются ошибками во время выполнения. Такие ошибки, как OutOfMemoryErrorand и HeapError обычно вызваны тем, что ваш исходный код использует слишком много ресурсов. Хорошее знание Алгоритмов поможет написать код, который лучше использует ресурсы. В этом и заключается отладка программы.
Процесс перезаписи кода для повышения производительности называется Оптимизацией. Менее популярное наименование процесса – Рефакторинг. Поскольку вы тратите больше времени на кодинг, то должны иметь это в виду.
Отладка программы
Вот несколько советов о том, как правильно выполнять отладку:
Двигаемся дальше
Поздравляем! Слово «ошибка» уже привычно для вас, равно как и «отладка программы». В качестве новичка вы можете изучать кодинг по книгам, онлайн-урокам или видео. И даже чужой код вам теперь не страшен
В процессе кодинга измените что-нибудь, чтобы понять, как он работает. Но будьте уверены в том, что сами написали.
Что такое программный код, применение, ошибки
Любая программа или онлайн-сервисы, например, Word, Microsoft Windows, WhatsApp или же браузер, которые ежедневно запускают сотни миллионов человек, так или иначе, состоят из особых инструкций. Или специального программного кода, который понятен машине, говорит, что ей делать или, наоборот, не делать. Или как правильно реагировать на действия пользователя. Что такое программный код, будет разобрано в этой статье.
Описание
Программный код программы — это текст, выполненный на особом языке, понятном машине. Он может выполняться непосредственно по тексту с помощью интерпретатора или транслироваться в особый вид с помощью компилятора.
Исходный код программы может состоять из нескольких файлов. При этом все они должны быть одинакового формата. Текст программы, содержащейся в них, должен быть написан на одном и том же языке. Правда, могут встречаться и исключения. Например, в веб-разработке в файле страницы могут содержаться несколько различных языков программирования и стандартов. В зависимости от сложности проекта, могут присутствовать такие языки и технологии, как PHP, HTML, JavaScript, Java и другие.
Сложные программные комплексы при сборке могут потребовать большого количества файлов, которое может исчисляться целыми сотнями. Для совместной работы над такими большими проектами программисты очень часто используют системы контроля версий. Они позволяют одновременно работать с несколькими экземплярами исходного кода, который на определённом этапе разработки можно соединить в один общий.
Качество кода
Компьютер не способен понять, как написан код для него, плохо или хорошо. Если он будет работоспособен и не содержит ошибок, то машина запустит его в любом случае. Плохой код может усложнить задачи сопровождения программного обеспечения. Особенно актуально это для больших проектов. Обычно качественный код характеризуется несколькими параметрами:
Вредоносный программный код
Помимо полезных программ, существуют такие, которые могут нанести вред системе или даже оборудованию. Как правило, пишется такой код людьми, которые заинтересованы в какой-либо выгоде от происходящего процесса. Например, программы, которые могут похищать личные данные с компьютеров пользователей. Ими могут быть номера платёжных карт, паспортные данные, или какая-либо другая конфиденциальная информация. Другие могут просто оказывать влияние на работу системы, тем самым вызывая сбои и мешая полноценной функциональности.
Рекомендации по написанию хорошего кода
В частности, он предлагает всегда комментировать свой программный код. Что такое комментарий? Это понятное и краткое описание того, что происходит в данной строке кода или функции. Дело в том, что разработка определённой программы может затянуться на месяц или вообще приостановиться на некоторое время. Вернувшись к работе над проектом через пару месяцев, даже опытному программисту будет сложно разобраться в своей же программе. Но подробные комментарии смогут восстановить цепочку событий и поведение кода.
Далее он рекомендует использовать в программе глобальные переменные как можно чаще. Это объясняется тем, что при изменении программного кода, придётся корректировать значение переменной всего лишь в одном месте. При этом все использующие значение функции или процедуры сразу об этом узнают и будут производить операции уже с новыми данными.
Имена переменных и выявление ошибок
Правильное название переменных также поможет значительно сократить время на изучение исходного кода программы, даже если код написан собственными руками. То есть хорошим кодом считается такой текст, где переменные и функции имеют имена, по которым можно понять, что именно они делают или хранят. При этом нужно стараться не использовать длинных имён переменных.
Очень важно уделять большое внимание своевременному устранению ошибок. Что такое программный код, который исполняется идеально? Это код, в котором нет ошибок. То есть любое ветвление цикла или изменение переменной, или вовсе какие-либо непредвиденные действия пользователя, всегда приведут к ожидаемому результату. Это достигается за счёт тестирования готового программного продукта по несколько раз.
Выявление ошибок программного кода, а точнее, их предугадывание возможно на этапе проектирования программы. Присутствие в коде различных проверок условий и возможных исключений, поможет вести управление программой по определённому курсу.
Оптимизация имеет колоссальное значение для написания работоспособной программы, которая будет экономно использовать ресурсы компьютера и при этом не допускать ошибок выполнения программного кода. Что такое оптимизированная программа? Это продукт, который способен выполнять весь заявленный функционал, ведя себя при этом «тихо» и экономно.
Практически всегда оптимизации для стабильной работы программы можно добиться только в результате проведения нескольких тестов на разных платформах и в различных условиях. Если программа начинает вести себя непредсказуемо, нужно определить, что стало причиной и по возможности устранить или перехватить процесс.
Заключение
Источники:
Https://proglib. io/p/debugging/
Https://fb. ru/article/362816/chto-takoe-programmnyiy-kod-primenenie-oshibki