Источниками ошибок в программном обеспечении являются специалисты — конкретные люди с их индивидуальными особенностями, квалификацией, талантом и опытом.
В большинстве случаев поток программных ошибок может быть описан негомогенным процессом Пуассона. Это означает, что программные ошибки проявляются в статистически независимые моменты времени, наработки подчиняются экспоненциальному распределению, а интенсивность проявления ошибок изменяется во времени. Обычно используют убывающую интенсивность проявления ошибок. Т. е. ошибки, как только они выявлены, эффективно устраняются без введения новых ошибок.
Применительно к надежности программного обеспечения ошибка это погрешность или искажение кода программы, неумышленно внесенные в нее в процессе разработки, которые в ходе функционирования этой программы могут вызвать отказ или снижение эффективности функционирования. Под отказом в общем случае понимают событие, заключающееся в нарушении работоспособности объекта. При этом критерии отказов, как признак или совокупность признаков нарушения работоспособного состояния программного обеспечения, должны определяться исходя из его предназначения в нормативно — технической документации.
ФИНАНСОВАЯ ГРАМОТНОСТЬ за 6 минут | Контроль личных финансов
В общем случае отказ программного обеспечения можно определить как:
- прекращение функционирования программы (искажения нормального хода ее выполнения, зацикливание) на время превышающее заданный порог;
- прекращение функционирования программы (искажения нормального хода ее выполнения, зацикливание) на время не превышающее заданный порог, но с потерей всех или части обрабатываемых данных;
- прекращение функционирования программы (искажения нормального хода ее выполнения, зацикливание) потребовавшее перезагрузки ЭВМ, на которой функционирует программное обеспечение.
Из данного определения программной ошибки следует, что ошибки могут по разному влиять на надежность программного обеспечения и можно определить тяжесть ошибки, как количественную или качественную оценку последствий этой ошибки. При этом категорией тяжести последствий ошибки будет являться классификационная группа ошибок по тяжести их последствий. Ниже представлены возможные категории тяжести ошибок в программном обеспечении общего применения в соответствии с ГОСТ 51901.12 — 2007 «Менеджмент риска. Метод анализа видов и последствий отказов».
Таблица 1. Категории тяжести ошибки в программном обеспечении, нарушение работоспособности которого не приводят к катастрофическим последствиям
Номер
категории
ошибки
Наименование
категории тяжести ошибки
Описание последствий проявления ошибки
проявление ошибки с высокой вероятностью влечет за собой прекращение функционирования программного обеспечения (его отказ)
проявление ошибки влечет за собой снижение эффективности функционирования программного обеспечения и может вызвать прекращение функционирования программного обеспечения (его отказ)
проявление ошибки может повлечь за собой снижение эффективности функционирования программного обеспечения и практически не приводит к возникновению отказа в нем (вероятность возникновения отказа очень низкая)
1 Функция СУММЕСЛИ в excel (SUMIF)
В качестве показателя степени тяжести ошибки, позволяющего дать количественную оценку тяжести проявления последствий ошибки можно использовать условную вероятность отказа программного обеспечения при проявлении ошибки. Оценку степени тяжести ошибки как условной вероятности возникновения отказа, можно производить согласно ГОСТ 28195 — 89 «Оценка качества программных средств. Общие положения», используя метрики и оценочные элементы, характеризующие устойчивость программного обеспечения. При этом оценку необходимо производить для каждой ошибки в отдельности, а не для всего программного обеспечения.
Источник: fundamental-research.ru
Особенности операционных рисков
Наиболее распространена точка зрения, согласно которой мерой риска коммерческого (финансового) решения или операции следует считать среднеквадратичное отклонение (положительный квадратный корень из дисперсии) значения показателя эффективности этого решения или операции. Действительно, поскольку риск обусловлен недетерминированностью исхода решения (операции), то, чем меньше разброс (дисперсия) результата решения, тем более он предсказуем, т.е. меньше риск. Если вариация (дисперсия) результата равна нулю, риск полностью отсутствует. Например, в условиях стабильной экономики операции с государственными ценными бумагами считаются безрисковыми.
Чаще всего показателем эффективности финансового решения (операции) служит прибыль.
Рассмотрим в качестве иллюстрации выбор некоторым лицом одного из двух вариантов инвестиций в условиях риска. Пусть имеются два проекта Л и В, в которые указанное лицо может вложить средства. Проект А в определенный момент в будущем обеспечивает случайную величину прибыли.
Предположим, что ее среднее ожидаемое значение, математическое ожидание, равно тА с дисперсией SA. Для проекта В эти числовые характеристики прибыли как случайной величины предполагаются равными соответственно тв и SB~. Среднеквадратичные отклонения равны соответственно SA и SB.
Возможны следующие случаи:
c) тА > тв, SA = sb, следует выбрать проект Л;
В последних двух случаях решение о выборе проекта А или В зависит от отношения к риску ЛПР. В частности, в случае d) проект А обеспечивает более высокую среднюю прибыль, однако он и более рискован. Выбор при этом определяется тем, какой дополнительной величиной средней прибыли компенсируется для ЛПР заданное увеличение риска. В случае е) для проекта А риск меньший, но и ожидаемая прибыль меньше.
Еще раз отметим тот факт, что операционные риски прежде всего связаны с человеком: прямые и косвенные потери бизнеса возникают из-за ошибок персонала, менеджмента, хищений и злоупотреблений, и даже в тех случаях, когда вызваны сбоями в работе телекоммуникаций, вычислительной техники и информационных систем, в основе их в большинстве случаев лежат ошибки людей.
Прежде чем говорить о моделировании операционных рисков, рассмотрим их уникальные характеристики:
·
Операционные риски эндогенны по своей природе, а значит, различны для каждой компании. Они зависят от технологий, процессов, организации, персонала и культуры компании, поэтому для управления операционными рисками необходимо собрать специфичные для компании данные. Следует заметить, что большинство компаний не имеет длительной истории релевантных данных. А отраслевые данные могут оказаться не вполне применимыми.
·
Операционные риски динамично и постоянно меняются в зависимости от стратегии, бизнес-процессов, применяемых технологий, конкурентного окружения и т.д., вследствие этого становится понятным то, что даже исторические данные самой компании могут не быть релевантными показателями текущих и будущих рисков.
·
Наиболее эффективные стратегии по смягчению рисков включают в себя изменения в области бизнес-процессов, технологии, организации и персонала, т.е. необходим подход к моделированию, который может измерить влияние на операционные решения. Например, как изменятся операционные риски, если компания начнет продавать и обслуживать продукты через Интернет, или если для ряда ключевых функций будет использован аутсорсинг?
Самые распространенные операционные риски:
·
ошибки в компьютерных программах ( сбой программного обеспечения и информационных технологий или систем, отказ оборудования и связи);
·
ошибки персонала (н едостаточная квалификация сотрудников, осуществляющих данную операцию; недобросовестное исполнение установленных положений и регламентов; перегрузка персонала; случайные разовые ошибки);
·
ошибки в системе распределения функций (дублирование функций; исключение отдельных функций);
·
отсутствие плана работы или его низкое качество ведет к задержкам при принятии управленческих решений, а формализация планов и процедур действия в критичных ситуациях не только облегчает выявление проблемных аспектов, но и уменьшает риск возникновения трудовых конфликтов.
Исторически сложилось, что самые высокие операционные риски и самые большие убытки по ним происходят при наличии следующих обстоятельств:
·
концентрация происходит в неосновной сфере деятельности, где менеджмент компании не осознает реальных рисков, связанных с этими торговыми операциями;
·
длительность события более чем в несколько месяцев указывает на небрежную контролирующую среду, халатное управление и отсутствие осознания серьезности проблемы.
Источник: poisk-ru.ru
Ошибки в компьютерных программах ошибки персонала ошибки в системе распределения функций относятся
Рассмотрим классификацию ошибок по месту их возникновения, которая рассмотрена в книге С. Канера «Тестирование программного обеспечения». Фундаментальные концепции менеджмента бизнес-приложений. . Главным критерием программы должно быть ее качество, которое трактуется как отсутствие в ней недостатков, а также сбоев и явных ошибок.
Недостатки программы зависят от субъективной оценкой ее качества потенциальным пользователем. При этом авторы скептически относятся к спецификации и утверждают, что даже при ее наличии, выявленные на конечном этапе недостатки говорят о ее низком качестве.
При таком подходе преодоление недостатков программы, особенно на заключительном этапе проектирования, может приводить к снижению надежности. Очевидно, что для разработки ответственного и безопасного программного обеспечения (ПО) такой подход не годится, однако проблемы наличия ошибок в спецификациях, субъективного оценивания пользователем качества программы существуют и не могут быть проигнорированы. Должна быть разработана система некоторых ограничений, которая бы учитывала эти факторы при разработке и сертификации такого рода ПО. Для обычных программ все проблемы, связанные с субъективным оцениванием их качества и наличием ошибок, скорее всего неизбежны.
В краткой классификации выделяются следующие ошибки.
— Ошибки пользовательского интерфейса.
— Ошибки управления потоком.
— Ошибки передачи или интерпретации данных.
— Ошибка выявлена и забыта.
1. Ошибки пользовательского интерфейса.
Многие из них субъективны, т.к. часто они являются скорее неудобствами, чем «чистыми» логическими ошибками. Однако они могут провоцировать ошибки пользователя программы или же замедлять время его работы до неприемлемой величины. В результате чего мы будем иметь ошибки информационной системы (ИС) в целом.
Основным источником таких ошибок является сложный компромисс между функциональностью программы и простотой обучения и работы пользователя с этой программой. Проблему надо начинать решать при проектировании системы на уровне ее декомпозиции на отдельные модули, исходя из того, что вряд ли удастся спроектировать простой и удобный пользовательский интерфейс для модуля, перегруженного различными функциями.
Кроме того, необходимо учитывать рекомендации по проектированию пользовательских интерфейсов. На этапе тестирования ПО полезно предусмотреть встроенные средства тестирования, которые бы запоминали последовательности действий пользователя, время совершения отдельных операций, расстояния перемещения курсора мыши. Кроме этого возможно применение гораздо более сложных средств психо-физического тестирования на этапе тестирования интерфейса пользователя, которые позволят оценить скорость реакции пользователя, частоту этих реакций, утомляемость и т.п. Необходимо отметить, что такие ошибки очень критичны с точки зрения коммерческого успеха разрабатываемого ПО, т.к. они будут в первую очередь оцениваться потенциальным заказчиком.
2. Ошибки вычислений.
Выделяют следующие причины возникновения таких ошибок:
— неверная логика (может быть следствием, как ошибок проектирования, так и кодирования);
— неправильно выполняются арифметические операции (как правило — это ошибки кодирования);
— неточные вычисления (могут быть следствием, как ошибок проектирования, так и кодирования). Очень сложная тема, надо выработать свое отношение к ней с точки зрения разработки безопасного ПО.
Выделяются подпункты: устаревшие константы; ошибки вычислений; неверно расставленные скобки; неправильный порядок операторов; неверно работает базовая функция; переполнение и потеря значащих разрядов; ошибки отсечения и округления; путаница с представлением данных; неправильное преобразование данных из одного формата в другой; неверная формула; неправильное приближение.
3. Ошибки управления потоком.
В этот раздел относится все то, что связано с последовательностью и обстоятельствами выполнения операторов программы.
— очевидно неверное поведение программы;
— переход по GOTO;
— логика, основанная на определении вызывающей подпрограммы;
— использование таблиц переходов;
— выполнение данных (вместо команд). Ситуация возможна из-за ошибок работы с указателями, отсутствия проверок границ массивов, ошибок перехода, вызванных, например, ошибкой в таблице адресов перехода, ошибок сегментирования памяти.
4. Ошибки обработки или интерпретации данных.
— проблемы при передаче данных между подпрограммами (сюда включены несколько видов ошибок: параметры указаны не в том порядке или пропущены, несоответствие типов данных, псевдонимы и различная интерпретация содержимого одной и той же области памяти, неправильная интерпретация данных, неадекватная информация об ошибке, перед аварийным выходом из подпрограммы не восстановлено правильное состояние данных, устаревшие копии данных, связанные переменные не синхронизированы, локальная установка глобальных данных (имеется в виду путаница локальных и глобальных переменных), глобальное использование локальных переменных, неверная маска битового поля, неверное значение из таблицы);
— границы расположения данных (сюда включены несколько видов ошибок: не обозначен конец нуль-терминированной строки, неожиданный конец строки, запись/чтение за границами структуры данных или ее элемента, чтение за пределами буфера сообщения, чтение за пределами буфера сообщения, дополнение переменных до полного слова, переполнение и выход за нижнюю границу стека данных, затирание кода или данных другого процесса);
— проблемы с обменом сообщений (сюда включены несколько видов ошибок: отправка сообщения не тому процессу или не в тот порт, ошибка распознавания полученного сообщения, недостающие или несинхронизированные сообщения, сообщение передано только N процессам из N+1, порча данных, хранящихся на внешнем устройстве, потеря изменений, не сохранены введенные данные, объем данных слишком велик для процесса-получателя, неудачная попытка отмены записи данных).
5. Повышенные нагрузки.
При повышенных нагрузках или нехватке ресурсов могут возникнуть дополнительные ошибки. Выделяются подпункты: требуемый ресурс недоступен; не освобожден ресурс; нет сигнала об освобождении устройства; старый файл не удален с накопителя; системе не возвращена неиспользуемая память; лишние затраты компьютерного времени; нет свободного блока памяти достаточного размера; недостаточный размер буфера ввода или очереди; не очищен элемент очереди, буфера или стека; потерянные сообщения; снижение производительности; повышение вероятности ситуационных гонок; при повышенной нагрузке объем необязательных данных не сокращается; не распознается сокращенный вывод другого процесса при повышенной загрузке; не приостанавливаются задания с низким приоритетом.
В этом разделе хотелось бы обратить внимание на следующее:
1) Часть ошибок из этого раздела могут проявляться и при не очень высоких нагрузках, но, возможно, они будут проявляться реже и через более длительные интервалы времени;
2) Многие ошибки из 2-х предыдущих разделов уже в своей формулировке носят вероятностный характер, поэтому следует предположить возможность использования вероятностных моделей и методов для их выявления.
6. Контроль версий и идентификаторов.
Выделяются подпункты: таинственным образом появляются старые ошибки; обновление не всех копий данных или программных файлов; отсутствие заголовка; отсутствие номера версии; неверный номер версии в заголовке экрана; отсутствующая или неверная информация об авторских правах; программа, скомпилированная из архивной копии, не соответствует проданному варианту; готовые диски содержат неверный код или данные.
7. Ошибки тестирования.
Являются ошибками сотрудников группы тестирования, а не программы. Выделяются подпункты:
— пропущенные ошибки в программе;
— не замечена проблема (отмечаются следующие причины этого: тестировщик не знает, каким должен быть правильный результат, ошибка затерялась в большом объеме выходных данных, тестировщик не ожидал такого результата теста, тестировщик устал и невнимателен, ему скучно, механизм выполнения теста настолько сложен, что тестировщик уделяет ему больше внимания, чем результатам);
— пропуск ошибок на экране;
— не документирована проблема (отмечаются следующие причины этого: тестировщик неаккуратно ведет записи, тестировщик не уверен в том, что данные действия программы являются ошибочными, ошибка показалась слишком незначительной, тестировщик считает, что ошибку не будет исправлена, тестировщика просили не документировать больше подобные ошибки).
8. Ошибка выявлена и забыта.
Описываются ошибки использования результатов тестирования. По-моему, раздел следует объединить с предыдущим. Выделяются подпункты: не составлен итоговый отчет; серьезная проблема не документирована повторно; не проверено исправление; перед выпуском продукта не проанализирован список нерешенных проблем.
Необходимо заметить, что изложенные в 2-х последних разделах ошибки тестирования требуют для устранения средств автоматизации тестирования и составления отчетов. В идеальном случае, эти средства должны быть проинтегрированы со средствами и технологиями проектирования ПО. Они должны стать важными инструментальными средствами создания высококачественного ПО. При разработке средств автоматизированного тестирования следует избегать ошибок, которые присущи любому ПО, поэтому нужно потребовать, чтобы такие средства обладали более высокими характеристиками надежности, чем проверяемое с их помощью ПО.
Основные пути борьбы с ошибками
Учитывая рассмотренные особенности действий человека при переводе можно указать следующие пути борьбы с ошибками:
· сужение пространства перебора (упрощение создаваемых систем),
· обеспечение требуемого уровня подготовки разработчика (это функции менеджеров коллектива разработчиков),
· обеспечение однозначности интерпретации представления информации,
· контроль правильности перевода (включая и контроль однозначности интерпретации).
Источник: studbooks.net