Устранение ошибки выявленной на этапе прогнозирования показателей

Открытые вопросы

  1. Почему с приходом
    массового производства появилась
    необходимость в специальном виде
    деятельности у изготовителя – в контроле
    качества?

  2. Почему во второй
    половине ХХ века от контроля качества
    пришлось переходить к управлению
    качеством.

  3. В чем различие
    между управлением и контролем качества?

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

  5. От кого можно
    узнать, что будет нужно потребителю в
    будущем?

  6. Для всех ли видов
    продукции справедливо утверждение,
    что качества нельзя добиться путем
    проверки?

  7. Почему нельзя
    добиться качества только путем проверки
    для большинства изделий и процессов?

  8. Как понимать
    утверждение, что качество должно быть
    заложено в изделии.

  9. Можно ли обеспечить
    нуль дефектов?

  10. Почему самоконтроль
    считается более эффективным, чем внешний
    контроль и может ли самоконтроль
    полностью заменить внешний контроль?

  11. Рассказать о
    применении статистических методов в
    управлении качеством.

  12. Почему нельзя при
    закупке материалов стараться закупить
    самые дешевые материалы?

  13. Почему желательно
    иметь минимальное количество поставщиков?

  14. В чем заключается
    профилактическая работа с поставщиками
    и почему ей придается такое большое
    значение?

  15. Почему не следует
    устанавливать допуски более жесткими,
    чем позволяет технологический процесс
    и требования качества изделия?

  16. В чем ошибочность
    утверждения, что повышение качества
    обязательно связано с ростом затрат?

  17. Почему иногда не
    надо стремится к максимально возможному
    качеству проекта?

  18. Как определить
    оптимальный уровень качества?

  19. Зачем надо учитывать
    затраты на повышение качества проекта?

  20. Рассказать сущность
    принципа Тогучи.

  21. В каких случаях
    возможно и разумно снижать цену
    одновременно с повышением качества?

  22. Почему первый
    руководитель должен лично отвечать за
    качество, и за какие аспекты деятельности
    по управлению качества именно?

  23. Зачем необходимо
    каждому работнику знать общую картину.

  24. Почему именно
    перенос акцента в управлении на качество
    потребовал творческого отношения
    работников к производству.

  25. Почему принцип
    Деминга о страхе, как о яде для мозгов,
    стал особенно важен сейчас?

  26. Почему во многих
    случаях на современном производстве
    коллективная ответственность
    предпочтительнее индивидуальной?
    Приведите примеры, когда принципы
    коллективной ответственности не
    годятся.

  27. Какие предпосылки
    в организации должны быть созданы,
    чтобы коллективная ответственность
    оказалась эффективной.

  28. Почему повременно
    — премиальная система для качества
    изготовления предпочтительней сдельной?

  29. В чем недостаток
    краткосрочных оценок для материального
    стимулирования?

  30. Какова роль
    морального стимулирования и внутренней
    мотивации в управлении качеством?

  31. Почему система
    управления качеством должна быть
    спроектированная и должна находится
    под постоянным правлением.

  32. В чем заключается
    смысл принципа непрерывности управления
    качеством?

  33. Почему иногда
    выгодно разрабатывать несколько
    проектов изделия?

  34. Что означает
    параллельное выполнение этапов?

  35. В чем смысл принципа
    ориентации на производство?

Закрытые
вопросы

1. Причинами
снижения качества при переходе к
массовому производству могли быть:

а) невозможность
учитывать индивидуальные особенности
потребителя;

б) снижение
ответственности исполнителей за качество
продукции;

в) снижение
стабильности технологических процессов;

г) снижение
квалификации исполнителей.

Укажите неправильный
ответ.

2. В управлении
качеством выбор целей отождествляется:

а) с качеством
проекта;

б) с определением
уровня качества изготовления;

в) с выбором
направлений, по которым надо повышать
качество (безопасность, экономичность
и т.п.);

г) с определением
требуемого качества продукции.

Укажите правильный
ответ.

3. Качеством
потребовалось управлять потому что:

а) смена видов
продукции из эпизодического явления
превратилась в постоянный процесс;

б) качество, как
совокупность свойств, стало более
сложным комплексом;

в) возросла роль
исполнителей в обеспечении качества,
которыми надо управлять;

г) повысилась
требовательность общества к качеству.

Укажите неправильный
ответ.

4. 1. Чтобы опережать
требования потребителей достаточно
узнать у них, что им потребуется в
будущем;

2. Чтобы определить
требования потребителей необходимо
опереться на перспективные научно-технические
разработки, а не на опросы потребителей.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

5. При постановке
задачи об опережении требований
потребителей необходимо:

а) заранее знать,
сколько времени потребуется на постановку
новой продукции на производство;

б) знать, сколько
времени потребуется на выведение
продукции на рынок;

в) быть уверенным,
что потребителю понравится предлагаемая
совокупность свойств;

г) знать, как
необходимо подготовить потребителя к
положительному восприятию новой
продукции.

Какой из ответов
более вероятен?

6. Реализация
принципа «качество должно быть заложено
в изделии» возможна при условии, что:

а) качество проекта
таково, что обеспечивается соответствие
свойств продукции требованиям потребителя;

б) качество сырья,
материалов и комплектующих изделий
соответствует записанным в нормативной
технической документации требованиям;

в) технологический
процесс неукоснительно соблюдается;

г) обеспечиваются
все требования технического контроля.

Назовите наименее
правильный ответ.

7. Качества продукции
нельзя добиться только тщательным
контролем потому что:

а) не все дефекты
выявляются при контроле, так как
контролеры не способны выявить их со
стопроцентной вероятностью;

б) природа некоторых
дефектов такова, что их невозможно
выявить существующими способами
контроля;

в) контролеры не
всегда обладают требуемой квалификацией;

г) сплошной контроль
зачастую экономически неоправдан.

Укажите наименее
правильный ответ.

8. 1. В современном
производстве контроль силами специальных
контролеров нецелесообразен, если
существует самоконтроль.

2. Самоконтроль
невозможен, если исполнители не вооружены
средствами для проверки качества
продукции.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

9. 1. Самоконтроль
невозможен без убежденности и
заинтересованности работников в
необходимости бездефектного изготовления
продукции.

2. Самоконтроль
требует высокой квалификации работников.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

10. Условиями
внедрения самоконтроля являются:

а) обязательное
применение методов статистического
выборочного контроля;

б) учет при разработке
заданий времени необходимого работнику
для проверки качества;

в) возможность
передачи продукции на последующий этап
партиями;

г) мотивация
бездефектного изготовления.

Укажите неправильный
ответ.

11. 1. Применение
методов математической статистики в
управлении технологическим процессом
позволяет полностью исключить дефекты.

2. статистические
методы контроля нецелесообразны, если
технологический процесс нестабилен.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

12. 1. Выборочный
контроль невозможен без применения
статистических методов.

2. Статистические
методы особенно эффективны, когда
работники используют их для установления
зависимости в технологическом процессе.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

13. 1. Лучше выбирать
дорогого поставщика, потому что тогда
можно быть уверенным в высоком качестве
поставляемых материалов.

2. Если в
контракте четко оговорены требования
к качеству, то имеет смысл вбирать
самого дешевого поставщика, так как при
поставке продукции ненадлежащего
качества он полностью возместит ущерб.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

14. При организации
профилактической работы с поставщиками
достаточно:

а) проверить
стабильность технологического процесса;

б) проверить систему
управления качеством;

в) проверить
надежность приемочного контроля у
поставщика;

г) проверить
надежность входного контроля у поставщика.

Укажите правильный
ответ.

15. Фактическая
точность ведения процесса нагрева
заготовок определяется среднеквадратичным
отклонением 3,3С.
При изучении влияний колебания температуры
нагрева на качество изделий установлено,
что отклонение от номинала +
20
допустимы.

Какой интервал вы
зададите в технологической инструкции.

а) +
10
С;

б) +13
С;

в) +20
С;

г) +5
С.

Укажите наиболее
подходящий интервал.

16. 1. Устанавливая
допуски более жесткими, чем требует
качество, мы повышаем вероятность того,
фактические отклонения параметров
будут в пределах, необходимых для
производства качественных изделий.

2. Более жесткие
допуски повышают технологическую
дисциплину.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

17. 1. Повышение
качества проекта изделия всегда
равнозначно повышению производительности
труда, так как повышается качество
производимых благ.

2. Повышение
качества изготовления всегда связано
с более тщательным исполнением и,
следовательно, большими трудозатратами
и потому ведет к снижению производительности
труда.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

18. 1. Говоря об
оптимальном уровне качества, мы имеем
ввиду, оптимальность для данного процесса
изготовления и потребления, а не какую-то
незыблемую навсегда оптимальность.

2. Оптимальный
для одних условий потребления уровень
качества может оказаться завышенным
(или заниженным) для других.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

19. 1. Затраты на
качество необходимо учитывать, потому
что без знания их величины невозможно
определить оптимальное качество.

2. Затраты на
качество необходимо учитывать, потому
что без знания их величины невозможно
оценить результатность деятельности
по повышению качества на предприятии.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

20. Знание принципа
Тогучи важно:

а) при установлении
допусков в конструкторской и технологической
документации;

б) при определении
направлений совершенствования технологии
изготовления;

в) при выборе
средств автоматического регулирования
процесса;

г) при определении
оптимального уровня качества.

Укажите неправильный
ответ.

21. 1. Применение
принципа «лучше и дешевле одновременно»
нецелесообразно на рынке чистой
конкуренции.

2. Для массового
производства принцип «лучше и дешевле
одновременно» всегда оправдан.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

22. Положение о том,
что первые руководители должны лично
отвечать за качество означает, что
первые руководители:

а) лично занимаются
разработкой системы управления качеством
продукции;

б) лично участвуют
в создании системы мотивации персонала;

в) лично занимаются
разработкой политики в области качества;

г) периодически
занимаются контролем качества.

Укажите правильный
ответ.

  1. На предприятии
    изготавливается машина, состоящая из
    сотен типов деталей. Дать общую картину
    работникам это значит:

а) рассказать всем
работникам о назначении всех деталей
и их взаимодействии в машине;

б) рассказать всем
работникам о назначении машины и роли
свойств, изготавливаемых каждым данным
работником деталей в работе машины;

в) рассказать всем
работникам о положении компании, роли
качества машины в делах компании,
свойствах машины и роли свойств деталей,
изготавливаемых конкретными рабочими
в работе машины;

г) рассказать о
всех видах мотивации высококачественной
работы.

Укажите правильный
ответ.

24. 1. Зависимость
между хорошим отношением к работе и
хорошим результатом не всегда прямая.

2. Наказывать
надо за плохое отношение к работе, а не
за плохой результат.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

25. Результаты труда
можно считать взаимосвязанными в той
мере, которая необходима для бригадной
коллективной ответственности, в следующих
случаях:

а) на конвейере
десятки работников участвуют в сборке
телевизора;

б) все работники
машиностроительного завода работают
на создание одной машины – паровой
турбины;

в) каждый из членов
бригады выполняет операции по созданию
детали, являющейся продуктом бригады;

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

Укажите, в каком
из вариантов речь идет о том едином
результате, который необходим для
коллективной оценки.

26. 1. Под самоорганизацией
понимается способность коллектива без
оценок и указаний извне выполнять
известную работу и реагировать на
незначительные изменения внешней среды.

2. Максимальная
численность самоуправляемого коллектива
не зависит от характера производства.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

27.Целью ротации
внутри бригады является:

а) способность
всех членов бригады оценивать весь
процесс производства совокупно продукции;

б) способность
всех членов бригады оценивать работу
друг друга;

в) приобретение
одинаковой квалификации;

г) уменьшение
утомляемости и снижение рутинности
работы.

Укажите наименее
подходящий ответ.

28. Когда штатным
расписанием предусматривается в бригаде
большинство ставок с высокими разрядами,
то это полезно для качества потому что:

а) создает возможность
быстрого роста квалификации для вновь
поступивших работников;

б) позволяет
большинству членов бригады равноправно
оценивать друг друга;

в) создает условия
для ротации внутри бригады;

г) позволяет
работникам не заниматься второстепенной
низко квалифицированной работой.

Укажите неправильный
ответ.

29. 1. При повременно
— премиальной системе оплаты работника
интересует только качество продукции
и поэтому оно повышается.

2. При сдельной
системе работника интересует только
количество, а качество страдает.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

30. 1. Чем стабильнее
производство и технологический процесс,
тем большими могут быть сроки оценки
качества работы исполнителей, как основы
материального стимулирования.

2. Денежное
наказание вообще и всегда противопоказано,
как средство повышения качества.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

31. 1. Внутренняя
мотивация всегда является наиболее
глубоким и действенным способом создания
заинтересованности в повышении качества.

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

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

32. 1. При низком
уровне организации и нестабильной
технологии моральное стимулирование
за качество бессмысленно.

2. Моральное
стимулирование эффективно только при
краткосрочных оценках, а при долгосрочных
целесообразнее материальное.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

33. К методам
морального стимулирования относятся:

а) устная
благодарность;

б) объявление
победителем в соревнованиях;

в) повышение в
должности;

г) благодарность
записанная в приказе.

Укажите неправильный
ответ.

34. 1. Чтобы управлять
качеством надо обязательно иметь
спроектированную систему управления
качеством.

2. Любая
спроектированная система обязательно
является научно обоснованной.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

35. 1. В любой компании,
независимо от ее размера, должен быть
специальный орган, занимающийся только
разработкой системы и управлением
системой.

2. Постоянно
управлять это не значит постоянно
изменять систему. Достаточно постоянно
следить за ее функционированием и по
мере необходимости вносить изменения.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

36. Под планированием
повышения системы качества понимается:

а) определение
количества продукции нового качества,
которое будет произведено в планируемый
период;

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

в) разработка
программ совершенствования и сертификации
систем качества;

г) совокупность
действий изложенных в предыдущих
вариантах.

Укажите наиболее
правильный ответ.

37. Устранение
ошибки, выявленной на этапе прогнозирования
показателей, обошлось компании в 100
рублей. Во сколько обойдется устранение
этой же ошибки, если ее выявят в
потреблении, то есть на четвертом этапе
после прогнозирования показателей.

а) 10000 руб.;

б) 200.000 руб.;

в) 20.000.000 руб.;

г) 1000.000.000 руб.

Укажите правильный
ответ.

38. 1. Разработка
нескольких вариантов возможна не на
всех этапах и не для всех видов продукции.

2. Разработка
нескольких вариантов более целесообразна
для дорогих уникальных проектов, чем
для массовых дешевых изделий.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

39. Параллельное
выполнение этапов разработки новых или
модернизированных изделий производится
с целью.

а) сокращения
сроков разработки нового продукта;

б) удешевление
разработки;

в) быстрейшего
выявления ошибок, допущенных на предыдущих
этапах;

г) повышение
качества разработки в целом.

Укажите неправильный
ответ.

40. Ориентация на
производство означает, что:

а) в любом случае
при разногласии между конструкторами
и технологами вопрос решается в пользу
последних;

б) изменение в
технологии и составе оборудования
производятся не для каждого нового
изделия, а по мере необходимости
существенно обновить технологию;

в) приспособление
конструкции к производству ускоряет
процесс освоения новой продукции;

г) приспособление
конструкции к технологии снижает затраты
на освоение новой продукции.

Укажите неправильный
ответ.

Основной задачей при управлении запасами является определение объема пополнения, то есть, сколько необходимо заказать поставщику. При расчете этого объема используется несколько параметров — сколько будет продано в будущем, за какое время происходит пополнение, какие остатки у нас на складе и какое количество уже заказано у поставщика. То, насколько правильно мы определим эти параметры, будет влиять на то, будет ли достаточно товара на складе или его будет слишком много. Но наибольшее влияние на эффективность управления запасами влияет то, насколько точен будет прогноз. Многие считают, что это вообще основной вопрос в управлении запасами. Действительно, точность прогнозирования очень важный параметр. Поэтому важно понимать, как его оценивать. Это важно и для выявления причин дефицитов или неликвидов, и при выборе  программных продуктов для прогнозирования продаж и управления запасами.

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

Статистические методы

Для оценки прогноза продаж используются статистические оценки Оценка ошибки прогнозирования временного ряда. Самый простой показатель – отклонение факта от прогноза в количественном выражении.

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

К ним относятся:

MAPE – средняя абсолютная ошибка в процентах

                                                                                         

где Z(t) – фактическое значение временного ряда, а   – прогнозное.

Данная оценка применяется для временных рядов, фактические значения которых значительно больше 1. Например, оценки ошибки прогнозирования энергопотребления почти во всех статьях приводятся как значения MAPE. 

Если же фактические значения временного ряда близки к 0, то в знаменателе окажется очень маленькое число, что сделает значение MAPE близким к бесконечности – это не совсем корректно. Например, фактическая цена РСВ = 0.01 руб/МВт.ч, a прогнозная = 10 руб/МВт.ч, тогда MAPE = (0.01 – 10)/0.01 = 999%, хотя в действительности мы не так уж сильно ошиблись, всего на 10 руб/МВт.ч. Для рядов, содержащих значения близкие к нулю, применяют следующую оценку ошибки прогноза.

MAE – средняя абсолютная ошибка

                                                                                                  .

Для оценки ошибки прогнозирования цен РСВ и индикатора БР корректнее использовать MAE.

После того, как получены значения для MAPE и/или MAE, то в работах обычно пишут: «Прогнозирование временного ряда энергопотребления с часовым разрешение проводилось на интервале с 01.01.2001 до 31.12.2001 (общее количество отсчетов N ~ 8500). Для данного прогноза значение MAPE = 1.5%». При этом, просматривая статьи, можно сложить общее впечатление об ошибки прогнозирования энергопотребления, для которого MAPE обычно колеблется от 1 до 5%; или ошибки прогнозирования цен на электроэнергию, для которого MAPE колеблется от 5 до 15% в зависимости от периода и рынка. Получив значение MAPE для собственного прогноза, вы можете оценить, насколько здорово у вас получается прогнозировать.

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

ME – средняя ошибка

                                                                                                    

Встречается еще другое название этого показателя — Bias (англ. – смещение) демонстрирует величину отклонения, а также — в какую сторону прогноз продаж отклоняется от фактической потребности. Этот индикатор показывает, был ли прогноз оптимистичным или пессимистичным. То есть, отрицательное значение Bias говорит о том, что прогноз был завышен (реальная потребность оказалась ниже), и, наоборот, положительное значение о том, что прогноз был занижен. Цифровое значение показателя определяет величину отклонения (смещения).

MSE – среднеквадратичная ошибка

.

RMSE – квадратный корень из среднеквадратичной ошибки

.

.

SD – стандартное отклонение

                                                                                                                            

где ME – есть средняя ошибка, определенная по формуле выше.

Примечание. Примеры расчетов данных показателей представлены в файле Excel, который можно скачать, оставив электронный адрес в форме ниже. Скачать пример расчета в Excel >>>

Связь точности и ошибки прогнозирования

В начале этого обсуждения разберемся с определениями.

Ошибка прогноза — апостериорная величина отклонения прогноза от действительного состояния объекта. Если говорить о прогнозе продаж, то это показатель отклонения фактических продаж от прогноза.

Точность прогнозирования есть понятие прямо противоположное ошибке прогнозирования. Если ошибка прогнозирования велика, то точность мала и наоборот, если ошибка прогнозирования мала, то точность велика. По сути дела оценка ошибки прогноза MAPE есть обратная величина для точности прогнозирования — зависимость здесь простая.

Точность прогноза в % = 100% – MAPE, встречается еще название этого показателя Forecast Accuracy. Вы практически не найдете материалов о прогнозировании, в которых приведены оценки именно точности прогноза, хотя с точки зрения здравого маркетинга корректней говорить именно о высокой точности. В рекламных статьях всегда будет написано о высокой точности. Показатель точности прогноза выражается в процентах:

  • Если точность прогноза равна 100%, то выбранная модель описывает фактические значения на 100%, т.е. очень точно. Нужно сразу оговориться, что такого показателя никогда не будет, основное свойство прогноза в том, что он всегда ошибочен.
  • Если 0% или отрицательное число, то совсем не описывает, и данной модели доверять не стоит.

Выбрать подходящую модель прогноза можно с помощью расчета показателя точность прогноза. Модель прогноза, у которой показатель точность прогноза будет ближе к 100%, с большей вероятностью сделает более точный прогноз. Такую модель можно назвать оптимальной для выбранного временного ряда.  Говоря о высокой точности, мы говорим о низкой ошибки прогноза и в этой области недопонимания быть не должно. Не имеет значения, что именно вы будете отслеживать, но важно, чтобы вы сравнивали модели прогнозирования или целевые показатели по одному показателю – ошибка прогноза или точность прогнозирования.

Ранее я использовала оценку MAPE, до тех пор пока не встретила формулу, которую рекомендует Валерий Разгуляев

Примечание. Примеры расчетов данных показателей представлены в файле Excel, который можно скачать, оставив электронный адрес в форме. Скачать пример расчета в Excel >>>

Оценка ошибки прогноза – формула Валерия Разгуляева (сайт http://upravlenie-zapasami.ru/)

Одной из самых используемых формул оценки ошибки прогнозирования является следующая формула:

                                                                                                                 

где: P – это прогноз, а S – факт за тот же месяц. Однако у этой формулы есть серьезное ограничение — как оценить ошибку, если факт равен нулю? Возможный ответ, что в таком случае D = 100% – который означает, что мы полностью ошиблись. Однако простой пример показывает, что такой ответ — не верен:

вариант

прогноз

факт

ошибка прогноза

№1

4

0

100%

№2

4

1

300%

№3

1

4

75%

Оказывается, что в варианте развития событий №2, когда мы лучше угадали спрос, чем в варианте №1, ошибка по данной формуле оказалась – больше. То есть ошиблась уже сама формула. Есть и другая проблема, если мы посмотрим на варианты №2 и №3, то увидим, что имеем дело с зеркальной ситуацией в прогнозе и факте, а ошибка при этом отличается – в разы!.. То есть при такой оценке ошибки прогноза нам лучше его заведомо делать менее точным, занижая показатель – тогда ошибка будет меньше!.. Хотя понятно, что чем точнее будет прогноз – тем лучше будет и закупка. Поэтому для расчёта ошибки Валерий Разгуляев рекомендует использовать следующую формулу:

                                                                                                       

В таком случае для тех же примеров ошибка рассчитается иначе:

вариант

прогноз

факт

ошибка прогноза

№1

4

0

100%

№2

4

1

75%

№3

1

4

75%

Как мы видим, в варианте №1 ошибка становится равной 100%, причём это уже – не наше предположение, а чистый расчёт, который можно доверить машине. Зеркальные же варианты №2 и №3 – имеют и одинаковую ошибку, причём эта ошибка меньше ошибки самого плохого варианта №1. Единственная ситуация, когда данная формула не сможет дать однозначный ответ – это равенство знаменателя нулю. Но максимум из прогноза и факта равен нулю, только когда они оба равны нулю. В таком случае получается, что мы спрогнозировали отсутствие спроса, и его, действительно, не было – то есть ошибка тоже равна нулю – мы сделали совершенно точное предсказание.   

Визуальный метод – графический

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

                                               

По графикам очевидно, что модель 2 описывает лучше продажи этого товара. Оценка ошибки прогнозирования тоже это показывает – 65% и 31% ошибка прогнозирования по модели 1 и модели 2 соответственно.

                                                               

                                                                

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

Использование формул ошибки прогнозирования на практике

Практический аспект оценки ошибки прогнозирования я вывела отдельным пунктом. Это связано с тем, что все статистические методы расчета показателя ошибки прогнозирования рассчитывают то, насколько мы ошиблись в прогнозе в количественных показателях. Давайте теперь обсудим, насколько такой показатель будет полезен в вопросах управления запасами. Дело в том, что основная цель управления запасами  — обеспечить продажи, спрос наших клиентов. И, в конечном счете, максимизировать доход и прибыль компании. А эти показатели оцениваются как раз  в стоимостном выражении. Таким образом, нам важно при оценке ошибки прогнозирования понимать какой вклад каждая позиция внесла в объем продаж в стоимостном выражении. Когда мы оцениваем ошибку прогнозирования в количественном выражении мы предполагаем, что каждый товар имеет одинаковый вес в общем объеме продаж, но на самом деле это не так – есть очень дорогие товары, есть товары, которые продаются в большом количестве, наша группа А, а есть не очень дорогие товары, есть товары которые вносят небольшой вклад в объем продаж. Другими словами большая ошибка прогнозирования по товарам группы А будет нам «стоить» дороже, чем низкая ошибка прогнозирования по товарам группы С, например. Для того, чтобы наша оценка ошибки прогнозирования была корректной, релевантной целям управления запасами, нам необходимо оценивать ошибку прогнозирования по всем товарам или по отдельной группе не по средними показателями, а средневзвешенными с учетом прогноза и факта в стоимостном выражении.

Пример расчета такой оценки Вы сможете увидеть в файле Excel.

Примечание. Примеры расчетов данных показателей представлены в файле Excel, который можно скачать, оставив электронный адрес в форме. Скачать пример расчета в Excel >>>

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

Для чего используется ошибка прогнозирования

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

Индикатором того, что повышение эффективности возможно за счет улучшения качества прогнозирования. За счет чего можно улучшить качество прогнозирования мы не будем здесь рассматривать, но одним из вариантов является поиск другой модели прогнозирования, изменения параметров расчета, но вот насколько новая модель будет лучше, как раз поможет показатель ошибки прогнозирования или точности прогноза. Сравнение этих показателей по нескольким моделям поможет определить ту модель, которая дает лучше результат.

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

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

Примечание. Примеры расчетов данных показателей представлены в файле Excel, который можно скачать, оставив электронный адрес в форме. Скачать пример расчета в Excel >>>

Если вы хотите повысить эффективность управления запасами и увеличить оборачиваемость товарных запасов, предлагаю изучить мастер-класс «Как увеличить оборачиваемость товарных запасов».

Источник: сайт http://uppravuk.net/  


  Перевод


  Ссылка на автора

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

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

В этом руководстве вы узнаете, как моделировать временные ряды остаточных ошибок и использовать их для корректировки прогнозов с помощью Python.

После завершения этого урока вы узнаете:

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

Давайте начнем.

  • Обновление январь / 2017: Улучшены некоторые примеры кода, чтобы быть более полными.

Модель остаточных ошибок

Разница между тем, что ожидалось, и тем, что было предсказано, называется остаточной ошибкой.

Он рассчитывается как:

residual error = expected - predicted

Как и сами входные наблюдения, остаточные ошибки из временного ряда могут иметь временную структуру, такую ​​как тренды, систематическая ошибка и сезонность.

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

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

Затем прогнозируемая ошибка может быть вычтена из прогнозирования модели и, в свою очередь, обеспечит дополнительное повышение производительности.

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

Авторегрессия временного ряда остаточной ошибки называется моделью скользящего среднего (MA). Это сбивает с толку, потому что это не имеет никакого отношения к процессу сглаживания скользящей средней. Думайте об этом как о брате с процессом авторегрессии (AR), за исключением отлаженной остаточной ошибки, а не отстающих необработанных наблюдений.

В этом уроке мы разработаем модель авторегрессии временных рядов остаточных ошибок.

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

Набор данных ежедневных женских родов

Этот набор данных описывает количество ежедневных женских рождений в Калифорнии в 1959 году.

Единицами отсчета являются 365 наблюдений. Источник набора данных приписан Ньютону (1988).

Скачайте и узнайте больше о наборе данных здесь,

Загрузите набор данных и поместите его в текущий рабочий каталог с именем файла «ежедневно общая-женщина-births.csv«.

Ниже приведен пример загрузки набора данных ежедневных родов из CSV.

from pandas import Series
from matplotlib import pyplot
series = Series.from_csv('daily-total-female-births.csv', header=0)
print(series.head())
series.plot()
pyplot.show()

При выполнении примера печатаются первые 5 строк загруженного файла.

Date
1959-01-01 35
1959-01-02 32
1959-01-03 30
1959-01-04 31
1959-01-05 44
Name: Births, dtype: int64

Набор данных также отображается в виде линейного графика наблюдений во времени.

Мы видим, что нет явной тенденции или сезонности. Набор данных выглядит стационарно, что предполагает использование модели авторегрессии.

Модель прогнозирования постоянства

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

Это называется «наивный прогноз» или модель прогнозирования постоянства. Эта модель предоставит прогнозы, из которых мы можем рассчитать временной ряд остаточной ошибки. С другой стороны, мы могли бы разработать модель авторегрессии временного ряда и использовать ее в качестве нашей модели. Мы не будем разрабатывать модель авторегрессии в этом случае для краткости и сосредоточимся на модели остаточной ошибки.

Мы можем реализовать модель персистентности в Python.

После загрузки набора данных он формулируется как контролируемая проблема обучения. Отставленная версия набора данных создается, когда предыдущий временной шаг (t-1) используется в качестве входной переменной, а следующий временной шаг (t + 1) берется в качестве выходной переменной.

# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']

Далее набор данных разбивается на обучающие и тестовые наборы. В общей сложности 66% данных хранятся для обучения, а оставшиеся 34% хранятся для тестового набора. Для персистентной модели обучение не требуется; это всего лишь стандартный подход к испытаниям.

После разделения наборы поездов и тестов разделяются на входные и выходные компоненты.

# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]

Модель постоянства применяется путем прогнозирования выходного значения (Y) как копия входного значения (Икс).

# persistence model
predictions = [x for x in test_X]

Остаточные ошибки затем рассчитываются как разница между ожидаемым результатом (test_y) и прогноз (прогнозы).

# calculate residuals
residuals = [test_y[i]-predictions[i] for i in range(len(predictions))]

Пример объединяет все это и дает нам набор остаточных ошибок прогноза, которые мы можем изучить в этом руководстве.

from pandas import Series
from pandas import DataFrame
from pandas import concat
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model
predictions = [x for x in test_X]
# calculate residuals
residuals = [test_y[i]-predictions[i] for i in range(len(predictions))]
residuals = DataFrame(residuals)
print(residuals.head())

Затем в примере выводятся первые 5 строк остаточных ошибок прогноза.

0   9.0
1 -10.0
2   3.0
3  -6.0
4  30.0

Теперь у нас есть временной ряд остаточной ошибки, который мы можем смоделировать.

Авторегрессия остаточной ошибки

Мы можем смоделировать временной ряд остаточной ошибки, используя модель авторегрессии.

Это модель линейной регрессии, которая создает взвешенную линейную сумму отстающих членов остаточной ошибки. Например:

error(t+1) = b0 + b1*error(t-1) + b2*error(t-2) ...+ bn*error(t-n)

Мы можем использовать модель авторегрессии (AR), предоставленную библиотека statsmodels,

Основываясь на модели персистентности в предыдущем разделе, мы можем сначала обучить модель остаточным ошибкам, рассчитанным на основе обучающего набора данных. Это требует, чтобы мы сделали прогнозы постоянства для каждого наблюдения в наборе обучающих данных, а затем создали модель AR следующим образом.

from pandas import Series
from pandas import DataFrame
from pandas import concat
from statsmodels.tsa.ar_model import AR
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model on training set
train_pred = [x for x in train_X]
# calculate residuals
train_resid = [train_y[i]-train_pred[i] for i in range(len(train_pred))]
# model the training set residuals
model = AR(train_resid)
model_fit = model.fit()
window = model_fit.k_ar
coef = model_fit.params
print('Lag=%d, Coef=%s' % (window, coef))

При выполнении этого фрагмента печатается выбранное запаздывание 15 и 16 коэффициентов (пересечение и по одному для каждого запаздывания) обученной модели линейной регрессии.

Lag=15, Coef=[ 0.10120699 -0.84940615 -0.77783609 -0.73345006 -0.68902061 -0.59270551
-0.5376728 -0.42553356 -0.24861246 -0.19972102 -0.15954013 -0.11045476
-0.14045572 -0.13299964 -0.12515801 -0.03615774]

Затем мы можем пройти через набор тестовых данных и для каждого временного шага мы должны:

  1. Рассчитать прогноз устойчивости (t + 1 = t-1).
  2. Прогнозировать остаточную ошибку с помощью модели авторегрессии.

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

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

Это прогноз шага вперед или скользящий прогноз, модель.

В итоге мы получаем временной ряд остаточной ошибки прогноза из набора данных поезда и прогнозируемую остаточную ошибку в наборе тестовых данных.

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

from pandas import Series
from pandas import DataFrame
from pandas import concat
from statsmodels.tsa.ar_model import AR
from matplotlib import pyplot
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model on training set
train_pred = [x for x in train_X]
# calculate residuals
train_resid = [train_y[i]-train_pred[i] for i in range(len(train_pred))]
# model the training set residuals
model = AR(train_resid)
model_fit = model.fit()
window = model_fit.k_ar
coef = model_fit.params

# walk forward over time steps in test
history = train_resid[len(train_resid)-window:]
history = [history[i] for i in range(len(history))]
predictions = list()
expected_error = list()
for t in range(len(test_y)):
	# persistence
	yhat = test_X[t]
	error = test_y[t] - yhat
	expected_error.append(error)
	# predict error
	length = len(history)
	lag = [history[i] for i in range(length-window,length)]
	pred_error = coef[0]
	for d in range(window):
		pred_error += coef[d+1] * lag[window-d-1]
	predictions.append(pred_error)
	history.append(error)
	print('predicted error=%f, expected error=%f' % (pred_error, error))
# plot predicted error
pyplot.plot(expected_error)
pyplot.plot(predictions, color='red')
pyplot.show()

При выполнении примера сначала печатается прогнозируемая и ожидаемая остаточная ошибка для каждого временного шага в тестовом наборе данных.

...
predicted error=-1.951332, expected error=-10.000000
predicted error=6.675538, expected error=3.000000
predicted error=3.419129, expected error=15.000000
predicted error=-7.160046, expected error=-4.000000
predicted error=-4.179003, expected error=7.000000
predicted error=-10.425124, expected error=-5.000000

Затем отображается фактическая остаточная ошибка для временного ряда (синий) по сравнению с прогнозируемой остаточной ошибкой (красный).

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

Правильные прогнозы с моделью остаточных ошибок

Модель остаточной ошибки прогноза интересна, но она также может быть полезна для более точных прогнозов.

С хорошей оценкой ошибки прогноза на шаге по времени мы можем делать более точные прогнозы.

Например, мы можем добавить ожидаемую ошибку прогноза к прогнозу, чтобы исправить его и, в свою очередь, улучшить навыки модели.

improved forecast = forecast + estimated error

Давайте сделаем это на примере.

Допустим, что ожидаемое значение для временного шага равно 10. Модель прогнозирует 8 и оценивает ошибку как 3. Улучшенный прогноз будет:

improved forecast = forecast + estimated error
improved forecast = 8 + 3
improved forecast = 11

Это принимает фактическую ошибку прогноза от 2 единиц до 1 единицы.

Мы можем обновить пример из предыдущего раздела, чтобы добавить предполагаемую ошибку прогноза в прогноз постоянства следующим образом:

# correct the prediction
yhat = yhat + pred_error

Полный пример приведен ниже.

from pandas import Series
from pandas import DataFrame
from pandas import concat
from statsmodels.tsa.ar_model import AR
from matplotlib import pyplot
from sklearn.metrics import mean_squared_error
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model on training set
train_pred = [x for x in train_X]
# calculate residuals
train_resid = [train_y[i]-train_pred[i] for i in range(len(train_pred))]
# model the training set residuals
model = AR(train_resid)
model_fit = model.fit()
window = model_fit.k_ar
coef = model_fit.params

# walk forward over time steps in test
history = train_resid[len(train_resid)-window:]
history = [history[i] for i in range(len(history))]
predictions = list()
for t in range(len(test_y)):
	# persistence
	yhat = test_X[t]
	error = test_y[t] - yhat
	# predict error
	length = len(history)
	lag = [history[i] for i in range(length-window,length)]
	pred_error = coef[0]
	for d in range(window):
		pred_error += coef[d+1] * lag[window-d-1]
	# correct the prediction
	yhat = yhat + pred_error
	predictions.append(yhat)
	history.append(error)
	print('predicted=%f, expected=%f' % (yhat, test_y[t]))
# error
mse = mean_squared_error(test_y, predictions)
print('Test MSE: %.3f' % mse)
# plot predicted error
pyplot.plot(test_y)
pyplot.plot(predictions, color='red')
pyplot.show()

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

Среднеквадратическая ошибка скорректированных прогнозов рассчитывается как 56,234, что намного лучше, чем показатель 83,744 только для модели постоянства.

...
predicted=40.675538, expected=37.000000
predicted=40.419129, expected=52.000000
predicted=44.839954, expected=48.000000
predicted=43.820997, expected=55.000000
predicted=44.574876, expected=50.000000
Test MSE: 56.234

Наконец, ожидаемые значения для тестового набора данных нанесены (синим цветом) по сравнению с исправленным прогнозом (красным).

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

Резюме

В этом руководстве вы узнали, как моделировать временные ряды остаточных ошибок и использовать их для корректировки прогнозов с помощью Python.

В частности, вы узнали:

  • О подходе скользящего среднего (MA) к разработке авторегрессионной модели до остаточной ошибки.
  • Как разработать и оценить модель остаточной ошибки для прогнозирования ошибки прогноза.
  • Как использовать прогнозы ошибки прогноза, чтобы исправить прогнозы и улучшить навыки модели.

У вас есть вопросы о моделях Moving Average или об этом уроке?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.

Прогнозирование ошибок программного обеспечения. Обнаружение ошибок

1

Источниками ошибок в программном обеспечении являются специалисты — конкретные люди с их индивидуальными особенностями, квалификацией, талантом и опытом.

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

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

В общем случае отказ программного обеспечения можно определить как:

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

Из данного определения программной ошибки следует, что ошибки могут по разному влиять на надежность программного обеспечения и можно определить тяжесть ошибки, как количественную или качественную оценку последствий этой ошибки. При этом категорией тяжести последствий ошибки будет являться классификационная группа ошибок по тяжести их последствий. Ниже представлены возможные категории тяжести ошибок в программном обеспечении общего применения в соответствии с ГОСТ 51901.12 — 2007 «Менеджмент риска. Метод анализа видов и последствий отказов».

Описание последствий проявления ошибки

Критическая

проявление ошибки с высокой вероятностью влечет за собой прекращение функционирования программного обеспечения (его отказ)

Существенная

проявление ошибки влечет за собой снижение эффективности функционирования программного обеспечения и может вызвать прекращение функционирования программного обеспечения (его отказ)

Несущественная

проявление ошибки может повлечь за собой снижение эффективности функционирования программного обеспечения и практически не приводит к возникновению отказа в нем (вероятность возникновения отказа очень низкая)

В качестве показателя степени тяжести ошибки, позволяющего дать количественную оценку тяжести проявления последствий ошибки можно использовать условную вероятность отказа программного обеспечения при проявлении ошибки. Оценку степени тяжести ошибки как условной вероятности возникновения отказа, можно производить согласно ГОСТ 28195 — 89 «Оценка качества программных средств. Общие положения», используя метрики и оценочные элементы, характеризующие устойчивость программного обеспечения. При этом оценку необходимо производить для каждой ошибки в отдельности, а не для всего программного обеспечения.

Библиографическая ссылка

Дроботун Е.Б. КРИТИЧНОСТЬ ОШИБОК В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ И АНАЛИЗ ИХ ПОСЛЕДСТВИЙ // Фундаментальные исследования. – 2009. – № 4. – С. 73-74;
URL: http://fundamental-research.ru/ru/article/view?id=4467 (дата обращения: 06.04.2019).
Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Анализ особенностей программной надежности АСОИУ и методов прогнозирования программных отказов

1.1 Основные понятия надежности программного обеспечения

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

Основным элементом автоматизированной системы управления войсками является комплекс средств автоматизации КП различных уровней, которые представляют собой совокупность технических средств (передачи, обработки, отображения информации) и программного обеспечения.

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

Перед тем как анализировать надежность программного обеспечения уточним фундаментальные основные понятия теории надежности.

Надежность программного обеспечения — это свойство обеспечивать получение в соответствии с заданным алгоритмом правильных результатов в течении определенного интервала времени.

Отказпрограммного обеспечения — состояние комплекса программ связанное с нарушением работоспособности комплекса программ и прекращением дальнейшего функционирования из-за ошибок.

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

Надежность программного обеспечения АСОИУ определяется его безотказностью, восстанавлиемостью и устойчивостью.

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

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

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

Известно, что сбой в теории надежности определяется как самоустраняющийся отказ, не требующий вмешательства из вне для его устранения. Другим словом — сбой есть автоматически устраняющийся отказ, имеющий достаточно малое время восстановления. Поэтому применительно к надежности программного обеспечения АСУ следует конкретно указывать критерий, позволяющий отнести потерю работоспособности комплекса программ к отказу или сбою. В качестве такого критерия возьмем некоторое пороговое значение времени восстановления (? в пор).

Таким образом на устранение сбоя затрачивается меньше времени и ресурсов чем на устранение отказа. В формализованном виде определение сбоя и отказа программного обеспечения могут быть представлены как:

В с < ? в пор

В с — время восстановления после сбоя.

В о — время восстановления после отказа.

Устойчивость функционирования программного обеспечения — это способность ограничивать последствия внутренних ошибок в программах и неблагоприятных воздействий внешней среды (к которым относится неисправности аппаратуры, некорректность входных данных, ошибки оператора и другие) и противостояние им.

В проведенном анализе основных понятий надежности программного обеспечения даны определения, отказа, ошибки и надежности программного обеспечения. Выяснилось, что переход из работоспособного состояния в неработоспособное происходит под воздействием программных отказов. Из временных показателей видно, что на устранение сбоя затрачивается меньше времени и ресурсов чем на устранение отказа.

1.2 Основные причины и признаки выявления ошибок программного обеспечения

Основными причинами ошибок программного обеспечения являются:

Большая сложность программного обеспечения, например, по сравнению с аппаратурой ЭВМ.

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

Источниками ошибок программного обеспечения являются:

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

Внешние: ошибки пользователей, сбои и отказы аппаратуры ЭВМ, искажение информации в каналах связи, изменения конфигурации системы.

Признаками выявления ошибок являются:

1. Преждевременное окончание программы.

2. Увеличение времени выполнения программы.

3. Нарушение последовательности вызова отдельных подпрограмм.

4. Ошибки выхода информации, поступающей от внешних источников, между входной информацией возникает не соответствие из-за: искажение данных на первичных носителях, сбои и отказы в аппаратуре, шумы и сбои в каналах связи, ошибки в документации.

Ошибки скрытые в самой программе: ошибка вычислений, ошибка ввода-вывода, логические ошибки, ошибка манипулирования данными, ошибка совместимости, ошибка сопряжения.

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

Неверные действия пользователя:

1. Неправильная интерпретация сообщений.

2. Неправильные действия пользователя в процессе диалога с программным обеспечением.

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

Неисправности аппаратуры установки: приводят к нарушениям нормального хода вычислительного процесса; приводят к искажениям данных и текстов программ в основной и внешней памяти.

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

1.3 Основные параметры и показатели надежности программ АСОИУ

Термин модели надежности программного обеспечения, как правило относится к математической модели, построенной для оценки зависимости программного обеспечения от некоторых определенных параметров.

Параметр — количественные величины, в функции или математической модели выбираемая или оцениваемая в конкретных условиях.

Значение таких параметров либо предлагаются известными, либо могут быть измерены в ходе наблюдений или экспериментального исследования процесса функционирования программного обеспечения.

Усложнение алгоритмов функционирования автоматизированных систем приводит к значительному объему и сложности программного обеспечения. Увеличение же объема (до 10 5 и более машинных команд) и сложности программного обеспечения делает невозможной разработку полностью бездефектных составляющих программного обеспечения программ. В результате программное обеспечение сдается в эксплуатацию с ошибками, являющимися причинами отказа программного обеспечения. Процесс отладки программного обеспечения по выявлению и устранению ошибок в программах можно представить графиком изменения интенсивности отказов программного обеспечения о.

Рис. 1.3.1. — время жизни программы.

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

1.4 Методы прогнозирования программных отказов и тестирование программ

Предупреждение ошибок — лучший путь повышения надёжности программного обеспечения. Для его реализации была разработана методика проектирования систем управления, соответствующая спиральной модели жизненного цикла программного обеспечения. Методика предусматривает последовательное понижение сложности на всех этапах анализа объекта. При декомпозиции АСОИУ были выделены уровни управления системы, затем подсистемы, комплексы задач и так далее, вплоть до отдельных автоматизируемых функций и процедур.

Методы прогнозирования и тестирования программного обеспечения позволяют предупредить, минимизировать или исключить появление ошибок.

Методы прогнозирования и тестирования программного обеспечения включают в себя:

1. Методы, позволяющие справиться со сложностью системы.

Сложность системы является одной из главных причин низкой надежности программного обеспечения. В общем случае, сложность объекта является функцией взаимодействия между его компонентами. В борьбе со сложностью программного обеспечения используются две концепции: [Л.1]

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

Независимость. В соответствии с этой концепцией, для минимизации сложности, необходимо максимально усилить независимость элементов системы.

2. Методы достижения большей точности при переводе информации.

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

Временная избыточность. Использование части производительности ЭВМ для контроля исполнения и восстановления работоспособности программного обеспечения после сбоя.

Информационная избыточность. Дублирование части данных информационной системы для обеспечения надёжности и контроля достоверности данных.

Программная избыточность включает в себя:

взаимное недоверие — компоненты системы проектируются, исходя из предположения, что другие компоненты и исходные данные содержат ошибки, и должны пытаться их обнаружить;

немедленное обнаружение и регистрацию ошибок;

выполнение одинаковых функций разными модулями системы и сопоставление результатов обработки;

контроль и восстановление данных с использованием других видов избыточности.

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

Важным этапом жизненного цикла программного обеспечения, определяющим качество и надёжность системы, является тестирование. Тестирование — процесс выполнения программ с намерением найти ошибки. Этапы тестирования: контроль отдельного программного модуля отдельно от других модулей системы; контроль сопряжений (связей) между частями системы (модулями, компонентами, подсистемами); контроль выполнения системой автоматизируемых функций; проверка соответствия системы требованиям пользователей, и корректности документации, выполнение программы в строгом соответствии с инструкциями.

Существуют две стратегии при проектировании тестов: тестирование по отношению к спецификациям (документации), не заботясь о тексте программы, и тестирование по отношению к тексту программы, не заботясь о спецификациях. Разумный компромисс лежит где-то посередине, смещаясь в ту или иную сторону в зависимости от функций, выполняемых конкретным модулем, комплексом или подсистемой.

Качество подготовки исходных данных для проведения тестирования серьёзно влияет на эффективность процесса в целом и включает в себя:

1. Техническое задание.

2. Описание системы.

3. Руководство пользователя.

4. Исходный текст.

5. Правила построения (стандарты) программ и интерфейсов.

6. Критерии качества тестирования.

7. Эталонные значения исходных и результирующих данных.

8. Выделенные ресурсы, определяемые доступными финансовыми средствами.

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

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

Предлагаемых изменений.

Найденных дефектов.

Утвержденных корректировок.

Реализованных изменений.

Пользовательских версий.

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

2. Анализ моделей оценки программной надежности

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

Эти математические модели предназначены для оценки:

1. Показателей надежности комплекса программ в процессе отладки;

2. Количества ошибок оставшиеся не выявленными;

3. Времени, необходимого для обнаружения следующей ошибки в функционирующей программе;

4. Времени, необходимого для выявления всех ошибок с заданной вероятностью.

Существуют ряд математических моделей:

Экспоненциальная модель изменения ошибок в зависимости от времени отладки.

Дискретно-меняющаяся модель, учитывающая дискретно-повышающую времени наработки на отказ, как линейную функцию времени тестирования и испытания.

Модель Шумана. Исходные данные для модели Шумана собираются в процессе тестирования программного обеспечения в течение фиксированных или случайных временных интервалов.

Модель La Padula. По этой модели выполнение последовательности тестов в m этапов. Каждый этап заканчивается внесением исправлений в программное обеспечение.

Модель Джелинского — Моранды. Исходные данные собираются в процессе тестирования программного обеспечения. При этом фиксируется время до очередного отказа.

Модель Шика — Волвертона. Модификация модели Джелинского — Моранды для случая возникновения на рассматриваемом интервале более одной ошибки.

Модель Муса. В процессе тестирования фиксируется время выполнения программы (тестового прогона) до очередного отказа.

Модель переходных вероятностей. Эта модель основана на марковском процессе, протекающем в дискретной системе с непрерывным временем.

Модель Миллса. Использование этой модели предполагает необходимость перед началом тестирования искусственно вносить в программу некоторое количество известных ошибок.

Модель Липова. Модификация модели Миллса, рассматривающая вероятность обнаружения ошибки при использовании различного числа тестов.

Простая интуитивная модель. Использование этой модели предполагает проведения тестирования двумя группами программистов независимо друг от друга, использующими независимые тестовые наборы.

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

Модель Нельсона. Данная модель при расчете надежности программного обеспечения учитывает вероятность выбора определенного тестового набора для очередного выполнения программы.

При таком большом количестве моделей все-таки основными из них являютсяэкспоненциальная и дискретно-меняющаяся модели.

2.1 Дискретно-меняющая модель

В данной работе под дискретно-меняющей моделью подразумевается модель, которая основывается на дискретном увеличении времени наработки на отказ. Такая модель базируется на следующих предположениях:

1. Устранение ошибок в программе приводит к увеличению времени наработки на отказ T на одну и ту же величину, равную:

T (1) =T (2) =…=T (i) = const (2.1.1)

T (i) = T (i) — T (i-1) (2.2.2)

2. Время между двумя последовательными отказами:

i = t i — t i -1 (2.1.3)

является случайной величиной, которую можно представить в виде суммы двух случайных величин:

i = i -1 + I (2.1.4)

где i — независимые случайные величины, которые имеют одинаковые математические ожидания M{} и среднеквадратические отклонения.

3. Начальный интервал времени 0 сравним со случайной величиной 0 , т.е. 0 0 , поскольку в начальный период эксплуатации программ отказы в них возникают весьма часто.

На основании второго предположения величину интервала между i-м (i-1) — м отказами можно определить соотношением:

i = i -1 + i = 0 + j (2.1.5)

из которого можно получить соотношение для определения времени наступления m-го отказа в программе:

t m = i = (0 + j) (2.1.6)

исходя из третьего предположения полученные соотношения примут вид:

i = 0 + j = j (2.1.7)

t m = (0 + j) = i j (2.1.8)

При этих предположениях средняя наработка между (m-1) — м и m-м отказами программы равна:

T 0 (m) = M{ m -1 } = M{ j } = i j = m M{}. (2.1.9)

Средняя наработка до возникновения m-го отказа может быть определена по соотношению:

T m = M{t m } = i jk) = M{}. (2.1.10)

2.2 Экспоненциальное распределение

Теперь непосредственно перейдем к анализу собственно экспоненциального распределения.

Рассматриваемое распределение характеризуется рядом свойств, такими как:

1. Ошибки в комплексе программ являются независимыми и проявляются в случайные моменты времени. Данное свойство характеризует неизменность во времени интенсивности проявления и обнаружения ошибок (т.е. ош =const) в течение всего времени выполнения программы (=t н -t 0).

2. Интенсивность проявления и обнаружения ошибок ош (интенсивность отказов) пропорционально числу оставшихся в ней ошибок:

()= Kn 0 () (2.2.1)

где K — коэффициент пропорциональности, учитывающий реальное быстродействию ЭВМ и число команд в программе.

3. В процессе исправления ошибок программы новые ошибки не порождаются. Это означает, что интенсивность исправления ошибок dn/dt будет равна интенсивности их обнаружения:

Тогда n 0 ()= N 0 — n(). (2.2.3)

Основываясь на предположениях, введенных выше, получим:

n()=N 0 (1-e — K); (2.5)

Если принять, что, получим:

2.3 Методика оценки надежности программ по числу исправленных ошибок

Пусть N 0 — число ошибок, имеющихся в программе перед началом испытаний.

n() — количество ошибок, устраненных в ходе испытаний (тестирования) программы;

n 0 () — число оставшихся в программе ошибок на момент окончания испытаний.

Тогда n 0 ()= N 0 — n().

Основываясь на предположениях введенных в пункте 2.2.1, а именно: и ()= Kn 0 () то получим:

K — коэффициент, учитывающий быстродействие компьютера.

Решением этого дифференциального уравнения при начальных условиях t=0 и =0 является:

n()=N 0 (1-e -K); (2.3.2)

n 0 ()=N 0 — n()=N 0 e -K . (2.3.3)

Надежность программы по результатам испытаний в течении времени можно охарактеризовать средним временим наработки на отказ, равным:

Если ввести исходное значение среднего времени наработки на отказ перед испытанием, равного, то получим:

откуда видно, что среднее время наработки на отказ увеличивается по мере выявления и исправления ошибок.

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

Если обозначить за m — число обнаруженных отказов, а M 0 — число отказов, которое должно произойти, чтобы можно было выявить и устранить n соответствующих ошибок, то есть:

то среднее время наработки на отказ и число обнаруженных отказов определяется следующими соотношениями:

Если принять, что, получим:

Для практического использования представляет интерес число ошибок m, которое должно быть обнаружено и исправлено для того, чтобы добиться увеличения среднего времени наработки на отказ от T 01 до T 02 . Этот показатель может быть получен из следующих соотношений:

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

2.4 Методика оценки надежности программ по времени испытания

Дополнительное время испытаний, необходимое для обеспечения увеличения среднего времени наработки на отказ с T 01 до T 02 определяется из соотношений:

где T 01 и T 02 определяются согласно формуле (2.3.9):

Оценка надежности программ по времени испытаний определяется согласно формуле:

2.5 Методика оценки безотказности программ по наработке

Наработку между очередными отказами — случайную величину T (i) можно представить в виде суммы двух случайных величин:

T (i) = T (i -1) + T (i) (2.5.1)

Последовательно применяя (3.3.1) ко всем периодам наработки между отказами, получаем:

T (i) = T (0) + T (?) (2.5.2)

Случайная величина Т n — наработка до возникновения n-го отказа программы — равна:

T n = T (i) = (2.5.3)

Введем следующие допущения:

1) все случайные величины T () независимы и имеют одинаковые математические ожидания m ? t и среднеквадратические отклонения? ? t ;

2) случайная величина T (0) пренебрежимо мала по сравнению с суммой T (?)

Основанием для второго допущения могут служить следующие соображения: в самый начальный период эксплуатации программы ошибки возникают очень часто, то есть время T (0) мало. Сумма (2.5.3) быстро растет с увеличением n, и доля T (0) быстро падает. Будем считать что T (0) ? T (0) .
В соответствии со вторым допущением имеем:

T (n) =T (?) . (2.5.4)

При одинаковых T (?) наработка между (n-1) и n отказами — случайная величина T (n) — имеет математическое ожидание:

m t (n) =M=nm ? t (2.5.6)

T (n) = ? ? t ; (2.5.7)

Для случайной величины T n математическое ожидание равно:

M ? t ; (2.5.8)

и среднеквадратическое отклонение:

T ; (2.5.9)

Чтобы вычислить значения, и, необходимо по данным об отказах программы в течение периода наблюдения t н найти статистические оценки числовых характеристик случайной разности T (i) :

n н — число отказов программы за наработку (0, t н).

Учитывая, что при t >t н число отказов n н >> 1, из (2.5.8) и (2.5.9) имеем:

m t (n) ? m ? t , (2.5.12)

T (n) = ? ? t n ; (2.5.13)

Поскольку случайные величины T (n) и T n согласно (2.5.4) и (2.5.5) равны суммам многих случайных величин, T (n) и T n можно считать распределенными нормально с математическими ожиданиями и дисперсиями, определенными по (2.5.6) — (2.5.9), (2.5.12) и (2.5.13). Так как наработка положительна, на практике используется усеченное на интервале (0, ?) нормальное распределение. Обычно нормирующий множитель с?1.

При n>n н плотность распределения наработки между очередными (n-1) и n отказами:

f (n) (?) = , (2.5.14)

где? отсчитывается с момента последнего, (n-1) отказа.

Заключение

В работе было показано, что надежность программного обеспечения, в десятки раз ниже чем аппаратурная надежность. Требования к программной надежности это определение необходимого выполнения боевых задач в течении не менее чем 1872 часов.

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

Список литературы

программный безотказность надежность прогнозирование

1. В.В. Липаев Проектирование математического обеспечения АСУ. (системотехника, архитектура, технология). М., «Сов. радио», 1977.

2. Р.С. Захарова Основные вопросы теории и практики надежности.

3. В.А. Благодатских, В.А. Волнин, К.Ф. ПоскакаловСтандартизация разработки программных средств.

4. А.А. ВороновТеоретические основы построения автоматизированных систем управления. Разработка технического задания.-М.: Наука, 1997.

5. Основы прикладной теории надежности АСУ. Учебное пособие, Тверь, ВА ПВО, 1995, н/с 32. 965,0-75. В.М. Ионов и др., инв. №8856.

6. Б.Н. Горевич. Расчет показателей надежности систем вооружения и резервированных элементов. Конспект лекций, ВА ПВО, 1998, н/с 68.501.4, Г68, инв. №9100

Размещено на Allbest.ru

Подобные документы

    Анализ методов оценки надежности программных средств на всех этапах жизненного цикла, их классификация и типы, предъявляемые требования. Мультиверсионное программное обеспечение. Современные модели и алгоритмы анализа надежности программных средств.

    дипломная работа , добавлен 03.11.2013

    Действия, которые выполняются при проектировании АИС. Кластерные технологии, их виды. Методы расчета надежности на разных этапах проектирования информационных систем. Расчет надежности с резервированием. Испытания программного обеспечения на надежность.

    курсовая работа , добавлен 02.07.2013

    Программное обеспечение как продукт. Основные характеристик качества программного средства. Основные понятия и показатели надежности программных средств. Дестабилизирующие факторы и методы обеспечения надежности функционирования программных средств.

    лекция , добавлен 22.03.2014

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

    презентация , добавлен 22.03.2014

    Запросы клиента по области возможных запросов к серверу. Программа для прогнозирования поведения надежности программного обеспечения на основе метода Монте-Карло. Влияние количества программ-клиентов на поведение программной системы клиент-сервера.

    контрольная работа , добавлен 03.12.2010

    Особенности аналитической и эмпирической моделей надежности программных средств. Проектирование алгоритма тестирования и разработка программы для определения надежности ПО моделями Шумана, Миллса, Липова, с использованием языка C# и VisualStudio 2013.

    курсовая работа , добавлен 29.06.2014

    Надежность системы управления как совокупность надежности технических средств, вычислительной машины, программного обеспечения и персонала. Расчет надежности технических систем, виды отказов САУ и ТСА, повышение надежности и причины отказов САУ.

    курс лекций , добавлен 27.05.2008

    Точные и приближенные методы анализа структурной надежности. Критерии оценки структурной надежности методом статистического моделирования. Разработка алгоритма и программы расчета структурной надежности. Методические указания по работе с программой.

    дипломная работа , добавлен 17.11.2010

    Постановка проблемы надежности программного обеспечения и причины ее возникновения. Характеристики надежности аппаратуры. Компьютерная программа как объект исследования, ее надежность и правильность. Модель последовательности испытаний Бернулли.

    реферат , добавлен 21.12.2010

    Надежность как характеристика качества программного обеспечения (ПО). Методика расчета характеристик надежности ПО (таких как, время наработки до отказа, коэффициент готовности, вероятность отказа), особенности прогнозирования их изменений во времени.

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

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

Просматривайте свои проекты

Лучшее использование вашего времени — это внимательно изучить
проект 2, чтобы понять, почему у вас такой высокий уровень
дефектов. Осмотрите свои процессы, сформируйте гипотезу, а затем
попытайтесь адаптировать свои процессы, чтобы уменьшить
дефекты.

Хороший руководитель проекта не будет тратить время на создание
«универсальной теории всего» на основе экстраполяции из двух
проектов. Вместо этого опытный руководитель проекта потратил на это
время fixing
Project 2, чтобы улучшить свои шансы на
успех, или сообщив о вероятности неудачи менеджера портфеля, чтобы
можно было принять стратегическое решение о том, проект должен быть
прекращен в качестве меры контроля затрат или качества.

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

Разработчики, которые оставили файл

Я понятия не имею, что вы пытаетесь сделать из этого показателя.
Похоже, что пытаться предсказать популярность быстрого питания,
основанного на том, сколько кварталов они дали в качестве
изменения.

The rules
about bugs is to test from early
stages of development, and to keep a 1:1 or 2:1 ratio of
programmers to testers. Then you can safely assume the
testing-debugging stage will take as long as the time originally
estimated to write the code.

Чем позже вы начнете тестирование, тем меньше тестировщиков у
вас есть, тогда больше ошибок будет жить и начнет расти в
программном обеспечении, а этап отладки займет больше времени.
Затем вы можете удвоить или утроить время тестирования/отладки.

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

    Более новый код часто основывается на более раннем коде,
    поэтому, если раньше была ошибка, он может полностью упасть и
    повредить проблемы.

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

Значительная часть производственного процесса опирается на тестирование программ. Что это такое и как осуществляется подобная деятельность обсудим в данной статье.

Что называют тестированием?

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

Эффективность

То, насколько хорошо и быстро находятся ошибки, существенным образом влияет на стоимость и длительность разработки программного обеспечения необходимого качества. Так, несмотря на то, что тестеры получают заработную плату в несколько раз меньшую, чем программисты, стоимость их услуг обычно достигает 30 — 40 % от стоимости всего проекта. Это происходит из-за численности личного состава, поскольку искать ошибку — это необычный и довольно трудный процесс. Но даже если программное обеспечение прошло солидное количество тестов, то нет 100 % гарантии, что ошибок не будет. Просто неизвестно, когда они проявятся. Чтобы стимулировать тестеров выбирать типы проверки, которые с большей вероятностью найдут ошибку, применяются различные средства мотивации: как моральные, так и материальные.

Подход к работе

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

Что такое тест?

Это немаловажный аспект деятельности проверяющего, который необходим для успешного выявления недочетов программного кода. Они необходимы для того, чтобы контролировать правильность приложения. Что входит в тест? Он состоит их начальных данных и значений, которые должны получиться как результирующие (или промежуточные). Для того чтобы успешнее выявлять проблемы и несоответствия, тесты необходимо составлять после того, как был разработан алгоритм, но не началось программирование. Причем желательно использовать несколько подходов при расчете необходимых данных. В таком случае растёт вероятность обнаружения ошибки благодаря тому, что можно исследовать код с другой точки зрения. Комплексно тесты должны обеспечивать проверку внешних эффектов готового программного изделия, а также его алгоритмов работы. Особенный интерес предоставляют предельные и вырожденные случаи. Так, в практике деятельности с ошибками часто можно выявить, что цикл работает на один раз меньше или больше, чем было запланировано. Также важным является тестирование компьютера, благодаря которому можно проверить соответствие желаемому результату на различных машинах. Это необходимо для того, чтобы удостовериться, что программное обеспечение сможет работать на всех ЭВМ. Кроме того, тестирование компьютера, на котором будет выполняться разработка, является важным при создании мультиплатформенных разработок.

Искусство поиска ошибок

Программы часто нацелены на работу с огромным массивом данных. Неужели его необходимо создавать полностью? Нет. Широкое распространение приобрела практика «миниатюризации» программы. В данном случае происходит разумное сокращение объема данных по сравнению с тем, что должно использоваться. Давайте рассмотрим такой пример: есть программа, в которой создаётся матрица размером 50×50. Иными словами — необходимо вручную ввести 2500 тысячи значений. Это, конечно, возможно, но займёт очень много времени. Но чтобы проверить работоспособность, программный продукт получает матрицу, размерность которой составляет 5×5. Для этого нужно будет ввести уже 25 значений. Если в данном случае наблюдается нормальная, безошибочная работа, то это значит, что всё в порядке. Хотя и здесь существуют подводные камни, которые заключаются в том, что при миниатюризации происходит ситуация, в результате которой изменения становятся неявными и временно исчезают. Также очень редко, но всё же случается и такое, что появляются новые ошибки.

Преследуемые цели

Тестирование ПО не является легким делом из-за того, что данный процесс не поддаётся формализации в полном объеме. Большие программы почти никогда не обладают необходимым точным эталоном. Поэтому в качестве ориентира используют ряд косвенных данных, которые, правда, не могут полностью отражать характеристики и функции программных разработок, что отлаживаются. Причем они должны быть подобраны таким образом, чтобы правильный результат вычислялся ещё до того, как программный продукт будет тестирован. Если этого не сделать заранее, то возникает соблазн считать всё приблизительно, и если машинный результат попадёт в предполагаемый диапазон, то будет принято ошибочное решение, что всё правильно.

Проверка в различных условиях

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

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

Тестирование ПО: виды

Создавать программное обеспечение без ошибок весьма трудно. Это требует значительного количества времени. Чтобы получить хороший продукт часто применяются два вида тестирования: «Альфа» и «Бета». Что они собой представляют? Когда говорят об альфа-тестировании, то под ним подразумевают проверку, которую проводит сам штат разработчиков в «лабораторных» условиях. Это последний этап проверки перед тем, как программа будет передана конечным пользователям. Поэтому разработчики стараются развернуться по максимуму. Для легкости работы данные могут протоколироваться, чтобы создавать хронологию проблем и их устранения. Под бета-тестированием понимают поставку программного обеспечения ограниченному кругу пользователей, чтобы они смогли поэксплуатировать программу и выявить пропущенные ошибки. Особенностью в данном случае является то, что часто ПО используется не по своему целевому назначению. Благодаря этому неисправности будут выявляться там, где ранее ничего не было замечено. Это вполне нормально и переживать по этому поводу не нужно.

Завершение тестирования

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

Автоматизированное тестирование

Ранее считалось, что динамический анализ разработанного ПО — это слишком тяжелый подход, который неэффективно использовать для обнаружения дефектов. Но из-за увеличения сложности и объема программ появился противоположный взгляд. Автоматическое тестирование применяется там, где самыми важными приоритетами является работоспособность и безопасность. И они должны быть при любых входных данных. В качестве примера программ, для которых целесообразным является такое тестирование, можно привести следующие: сетевые протоколы, веб-сервер, sandboxing. Мы далее рассмотрим несколько образцов, которые можно использовать для такой деятельности. Если интересуют бесплатные программы тестирования, то среди них качественные найти довольно сложно. Но существуют взломанные «пиратские» версии хорошо зарекомендовавших себя проектов, поэтому можно обратиться к их услугам.

Avalanche

Этот инструмент помогает обнаружить дефекты, проходя тестирование программ в режиме динамического анализа. Он собирает данные и анализирует трассу выполнения разработанного объекта. Тестеру же предоставляется набор входных данных, которые вызывают ошибку или обходят набор имеющихся ограничений. Благодаря наличию хорошего алгоритма проверки разрабатывается большое количество возможных ситуаций. Программа получает различные наборы входных данных, которые позволяют смоделировать значительное число ситуаций и создать такие условия, когда наиболее вероятным является возникновение сбоя. Важным преимуществом программы считается применение эвристической метрики. Если есть проблема, то ошибка приложения находится с высокой вероятностью. Но эта программа имеет ограничения вроде проверки только одного помеченного входного сокета или файла. При проведении такой операции, как тестирование программ, будет содержаться детальная информация о наличие проблем с нулевыми указателями, бесконечными циклами, некорректными адресами или неисправностями из-за использования библиотек. Конечно, это не полный список обнаруживаемых ошибок, а только их распространённые примеры. Исправлять недочеты, увы, придётся разработчикам — автоматические средства для этих целей не подходят.

KLEE

Это хорошая программа для тестирования памяти. Она может перехватывать примерно 50 системных вызовов и большое количество виртуальных процессов, таким образом, выполняется параллельно и отдельно. Но в целом программа не ищет отдельные подозрительные места, а обрабатывает максимально возможное количество кода и проводит анализ используемых путей передачи данных. Из-за этого время тестирования программы зависит от размера объекта. При проверке ставка сделана на символические процессы. Они являются одним из возможных путей выполнения задач в программе, которая проверяется. Благодаря параллельной работе можно анализировать большое количество вариантов работы исследуемого приложения. Для каждого пути после окончания его тестирования сохраняются наборы входных данных, с которых начиналась проверка. Следует отметить, что тестирование программ с помощью KLEE помогает выявлять большое количество отклонений, которых не должно быть. Она может найти проблемы даже в приложениях, которые разрабатываются десятилетиями.

Если предполагать, что в программном обеспечении какие-то ошибки все же будут, то лучшая (после предупреждения ошибок) стратегия — включить средства обнаружения ошибок в само про-граммное обеспечение.

Большинство методов направлено по возможности на неза-медлительное обнаружение сбоев. Немедленное обнаружение имеет два преимущества: можно минимизировать влияние ошиб-ки и последующие затруднения для человека, которому придется извлекать информацию о ней, находить ее и исправлять.

{SITELINK-S405}Меры по обнаружению ошибок {/SITELINK}можно разбить на две под-группы: пассивные

попытки обнаружить симптомы ошибки в про-цессе «обычной» работы программного обеспечения и активные

попытки программной системы периодически обследовать свое состояние в поисках признаков ошибок.

Пассивное обнаружение
.
Меры по обнаружению ошибок могут быть приняты на нескольких структурных уровнях программной системы. Здесь мы будем рассматривать уровень подсистем, или ком-понентов, т.е. нас будут интересовать меры по обнаружению симп-томов ошибок, предпринимаемые при переходе от одного компо-нента к другому, а также внутри компонента. Все это, конечно, при-менимо также к отдельным модулям внутри компонента.

Разрабатывая эти меры, мы будем опираться на следующее.

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

2.
Немедленное обнаружение.
Ошибки необходимо обнаружить как можно раньше. Это не только ограничивает наносимый ими ущерб, но и значительно упрощает задачу отладки.

3. Избыточность.
Все средства обнаружения ошибок основаны на некоторой форме избыточности (явной или неявной).

Когда разрабатываются {SITELINK-S405}меры по обнаружению ошибок{/SITELINK}, важ-но принять согласованную стратегию для всей системы. Действия, предпринимаемые после обнаружения ошибки в программном обеспечении, должны быть единообразными для всех компонен-тов системы. Это ставит вопрос о том, какие именно действия следует предпринять, когда ошибка обнаружена. Наилучшее решение — немедленно завершить выполнение программы или (в случае операционной системы) перевести центральный про-цессор в состояние ожидания. С точки зрения предоставления че-ловеку, отлаживающему программу, например системному про-граммисту, самых благоприятных условий для диагностики оши-бок немедленное завершение представляется наилучшей стратегией. Конечно, во многих системах подобная стратегия бывает нецелесообразной (например, может оказаться, что при-останавливать работу системы нельзя). В таком случае использу-ется метод регистрации ошибок.
Описание симптомов ошибки и «моментальный снимок» состояния системы сохраняются во внеш-нем файле, после чего система может продолжать работу. Этот файл позднее будет изучен обслуживающим персоналом.

Всегда, когда это возможно, лучше приостановить выполне-ние программы, чем регистрировать ошибки (либо обеспечить как дополнительную возможность работу системы в любом из этих режимов). Различие между этими методами проиллюстриру-ем на способах выявления причин возникающего иногда скреже-та вашего автомобиля. Если автомеханик находится на заднем сиденье, то он может обследовать состояние машины в тот мо-мент, когда скрежет возникает. Если вы выбираете метод регист-рации ошибок, задача диагностики станет сложнее.

Активное обнаружение ошибок.
Не все ошибки можно выя-вить пассивными методами, поскольку эти методы обнаружива-ют ошибку лишь тогда, когда ее симптомы подвергаются соот-ветствующей проверке. Можно делать и дополнительные провер-ки, если спроектировать специальные программные средства для активного поиска признаков ошибок в системе. Такие средства называются средствами активного обнаружения ошибок.

Активные средства обнаружения ошибок обычно объединя-ются в диагностический монитор:
параллельный процесс, кото-рый периодически анализирует состояние системы с целью обна-ружить ошибку. Большие программные системы, управляющие ресурсами, часто содержат ошибки, приводящие к потере ресур-сов на длительное время. Например, управление памятью опера-ционной системы сдает блоки памяти «в аренду» программам пользователей и другим частям операционной системы. Ошибка в этих самых «других частях» системы может иногда вести к не-правильной работе блока управления памятью, занимающегося возвратом сданной ранее в аренду памяти, что вызывает медлен-ное вырождение системы.

Диагностический монитор можно реализовать как периоди-чески выполняемую задачу (например, она планируется на каж-дый час) либо как задачу с низким приоритетом, которая плани-руется для выполнения в то время, когда система переходит в со-стояние ожидания. Как и прежде, выполняемые монитором конкретные проверки зависят от специфики системы, но некото-рые идеи будут понятны из примеров. Монитор может обследо-вать основную память, чтобы обнаружить блоки памяти, не вы-деленные ни одной из выполняемых задач и не включенные в си-стемный список свободной памяти. Он может проверять также необычные ситуации: например, процесс не планировался для выполнения в течение некоторого разумного интервала времени. Монитор может осуществлять поиск «затерявшихся» внутри си-стемы сообщений или операций ввода-вывода, которые необыч-но долгое время остаются незавершенными, участков памяти на диске, которые не помечены как выделенные и не включены в спи-сок свободной памяти, а также различного рода странностей в файлах данных.

Иногда желательно, чтобы в чрезвычайных обстоятельствах монитор выполнял диагностические тесты системы. Он может вы-зывать определенные системные функции, сравнивая их результат с заранее определенным и проверяя, насколько разумно время вы-полнения. Монитор может также периодически предъявлять сис-теме «пустые» или «легкие» задания, чтобы убедиться, что система функционирует хотя бы самым примитивным образом.

Открытые вопросы

  1. Почему с приходом
    массового производства появилась
    необходимость в специальном виде
    деятельности у изготовителя – в контроле
    качества?

  2. Почему во второй
    половине ХХ века от контроля качества
    пришлось переходить к управлению
    качеством.

  3. В чем различие
    между управлением и контролем качества?

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

  5. От кого можно
    узнать, что будет нужно потребителю в
    будущем?

  6. Для всех ли видов
    продукции справедливо утверждение,
    что качества нельзя добиться путем
    проверки?

  7. Почему нельзя
    добиться качества только путем проверки
    для большинства изделий и процессов?

  8. Как понимать
    утверждение, что качество должно быть
    заложено в изделии.

  9. Можно ли обеспечить
    нуль дефектов?

  10. Почему самоконтроль
    считается более эффективным, чем внешний
    контроль и может ли самоконтроль
    полностью заменить внешний контроль?

  11. Рассказать о
    применении статистических методов в
    управлении качеством.

  12. Почему нельзя при
    закупке материалов стараться закупить
    самые дешевые материалы?

  13. Почему желательно
    иметь минимальное количество поставщиков?

  14. В чем заключается
    профилактическая работа с поставщиками
    и почему ей придается такое большое
    значение?

  15. Почему не следует
    устанавливать допуски более жесткими,
    чем позволяет технологический процесс
    и требования качества изделия?

  16. В чем ошибочность
    утверждения, что повышение качества
    обязательно связано с ростом затрат?

  17. Почему иногда не
    надо стремится к максимально возможному
    качеству проекта?

  18. Как определить
    оптимальный уровень качества?

  19. Зачем надо учитывать
    затраты на повышение качества проекта?

  20. Рассказать сущность
    принципа Тогучи.

  21. В каких случаях
    возможно и разумно снижать цену
    одновременно с повышением качества?

  22. Почему первый
    руководитель должен лично отвечать за
    качество, и за какие аспекты деятельности
    по управлению качества именно?

  23. Зачем необходимо
    каждому работнику знать общую картину.

  24. Почему именно
    перенос акцента в управлении на качество
    потребовал творческого отношения
    работников к производству.

  25. Почему принцип
    Деминга о страхе, как о яде для мозгов,
    стал особенно важен сейчас?

  26. Почему во многих
    случаях на современном производстве
    коллективная ответственность
    предпочтительнее индивидуальной?
    Приведите примеры, когда принципы
    коллективной ответственности не
    годятся.

  27. Какие предпосылки
    в организации должны быть созданы,
    чтобы коллективная ответственность
    оказалась эффективной.

  28. Почему повременно
    — премиальная система для качества
    изготовления предпочтительней сдельной?

  29. В чем недостаток
    краткосрочных оценок для материального
    стимулирования?

  30. Какова роль
    морального стимулирования и внутренней
    мотивации в управлении качеством?

  31. Почему система
    управления качеством должна быть
    спроектированная и должна находится
    под постоянным правлением.

  32. В чем заключается
    смысл принципа непрерывности управления
    качеством?

  33. Почему иногда
    выгодно разрабатывать несколько
    проектов изделия?

  34. Что означает
    параллельное выполнение этапов?

  35. В чем смысл принципа
    ориентации на производство?

Закрытые
вопросы

1. Причинами
снижения качества при переходе к
массовому производству могли быть:

а) невозможность
учитывать индивидуальные особенности
потребителя;

б) снижение
ответственности исполнителей за качество
продукции;

в) снижение
стабильности технологических процессов;

г) снижение
квалификации исполнителей.

Укажите неправильный
ответ.

2. В управлении
качеством выбор целей отождествляется:

а) с качеством
проекта;

б) с определением
уровня качества изготовления;

в) с выбором
направлений, по которым надо повышать
качество (безопасность, экономичность
и т.п.);

г) с определением
требуемого качества продукции.

Укажите правильный
ответ.

3. Качеством
потребовалось управлять потому что:

а) смена видов
продукции из эпизодического явления
превратилась в постоянный процесс;

б) качество, как
совокупность свойств, стало более
сложным комплексом;

в) возросла роль
исполнителей в обеспечении качества,
которыми надо управлять;

г) повысилась
требовательность общества к качеству.

Укажите неправильный
ответ.

4. 1. Чтобы опережать
требования потребителей достаточно
узнать у них, что им потребуется в
будущем;

2. Чтобы определить
требования потребителей необходимо
опереться на перспективные научно-технические
разработки, а не на опросы потребителей.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

5. При постановке
задачи об опережении требований
потребителей необходимо:

а) заранее знать,
сколько времени потребуется на постановку
новой продукции на производство;

б) знать, сколько
времени потребуется на выведение
продукции на рынок;

в) быть уверенным,
что потребителю понравится предлагаемая
совокупность свойств;

г) знать, как
необходимо подготовить потребителя к
положительному восприятию новой
продукции.

Какой из ответов
более вероятен?

6. Реализация
принципа «качество должно быть заложено
в изделии» возможна при условии, что:

а) качество проекта
таково, что обеспечивается соответствие
свойств продукции требованиям потребителя;

б) качество сырья,
материалов и комплектующих изделий
соответствует записанным в нормативной
технической документации требованиям;

в) технологический
процесс неукоснительно соблюдается;

г) обеспечиваются
все требования технического контроля.

Назовите наименее
правильный ответ.

7. Качества продукции
нельзя добиться только тщательным
контролем потому что:

а) не все дефекты
выявляются при контроле, так как
контролеры не способны выявить их со
стопроцентной вероятностью;

б) природа некоторых
дефектов такова, что их невозможно
выявить существующими способами
контроля;

в) контролеры не
всегда обладают требуемой квалификацией;

г) сплошной контроль
зачастую экономически неоправдан.

Укажите наименее
правильный ответ.

8. 1. В современном
производстве контроль силами специальных
контролеров нецелесообразен, если
существует самоконтроль.

2. Самоконтроль
невозможен, если исполнители не вооружены
средствами для проверки качества
продукции.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

9. 1. Самоконтроль
невозможен без убежденности и
заинтересованности работников в
необходимости бездефектного изготовления
продукции.

2. Самоконтроль
требует высокой квалификации работников.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

10. Условиями
внедрения самоконтроля являются:

а) обязательное
применение методов статистического
выборочного контроля;

б) учет при разработке
заданий времени необходимого работнику
для проверки качества;

в) возможность
передачи продукции на последующий этап
партиями;

г) мотивация
бездефектного изготовления.

Укажите неправильный
ответ.

11. 1. Применение
методов математической статистики в
управлении технологическим процессом
позволяет полностью исключить дефекты.

2. статистические
методы контроля нецелесообразны, если
технологический процесс нестабилен.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

12. 1. Выборочный
контроль невозможен без применения
статистических методов.

2. Статистические
методы особенно эффективны, когда
работники используют их для установления
зависимости в технологическом процессе.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

13. 1. Лучше выбирать
дорогого поставщика, потому что тогда
можно быть уверенным в высоком качестве
поставляемых материалов.

2. Если в
контракте четко оговорены требования
к качеству, то имеет смысл вбирать
самого дешевого поставщика, так как при
поставке продукции ненадлежащего
качества он полностью возместит ущерб.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

14. При организации
профилактической работы с поставщиками
достаточно:

а) проверить
стабильность технологического процесса;

б) проверить систему
управления качеством;

в) проверить
надежность приемочного контроля у
поставщика;

г) проверить
надежность входного контроля у поставщика.

Укажите правильный
ответ.

15. Фактическая
точность ведения процесса нагрева
заготовок определяется среднеквадратичным
отклонением 3,3С.
При изучении влияний колебания температуры
нагрева на качество изделий установлено,
что отклонение от номинала +
20
допустимы.

Какой интервал вы
зададите в технологической инструкции.

а) +
10
С;

б) +13
С;

в) +20
С;

г) +5
С.

Укажите наиболее
подходящий интервал.

16. 1. Устанавливая
допуски более жесткими, чем требует
качество, мы повышаем вероятность того,
фактические отклонения параметров
будут в пределах, необходимых для
производства качественных изделий.

2. Более жесткие
допуски повышают технологическую
дисциплину.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

17. 1. Повышение
качества проекта изделия всегда
равнозначно повышению производительности
труда, так как повышается качество
производимых благ.

2. Повышение
качества изготовления всегда связано
с более тщательным исполнением и,
следовательно, большими трудозатратами
и потому ведет к снижению производительности
труда.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

18. 1. Говоря об
оптимальном уровне качества, мы имеем
ввиду, оптимальность для данного процесса
изготовления и потребления, а не какую-то
незыблемую навсегда оптимальность.

2. Оптимальный
для одних условий потребления уровень
качества может оказаться завышенным
(или заниженным) для других.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

19. 1. Затраты на
качество необходимо учитывать, потому
что без знания их величины невозможно
определить оптимальное качество.

2. Затраты на
качество необходимо учитывать, потому
что без знания их величины невозможно
оценить результатность деятельности
по повышению качества на предприятии.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

20. Знание принципа
Тогучи важно:

а) при установлении
допусков в конструкторской и технологической
документации;

б) при определении
направлений совершенствования технологии
изготовления;

в) при выборе
средств автоматического регулирования
процесса;

г) при определении
оптимального уровня качества.

Укажите неправильный
ответ.

21. 1. Применение
принципа «лучше и дешевле одновременно»
нецелесообразно на рынке чистой
конкуренции.

2. Для массового
производства принцип «лучше и дешевле
одновременно» всегда оправдан.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

22. Положение о том,
что первые руководители должны лично
отвечать за качество означает, что
первые руководители:

а) лично занимаются
разработкой системы управления качеством
продукции;

б) лично участвуют
в создании системы мотивации персонала;

в) лично занимаются
разработкой политики в области качества;

г) периодически
занимаются контролем качества.

Укажите правильный
ответ.

  1. На предприятии
    изготавливается машина, состоящая из
    сотен типов деталей. Дать общую картину
    работникам это значит:

а) рассказать всем
работникам о назначении всех деталей
и их взаимодействии в машине;

б) рассказать всем
работникам о назначении машины и роли
свойств, изготавливаемых каждым данным
работником деталей в работе машины;

в) рассказать всем
работникам о положении компании, роли
качества машины в делах компании,
свойствах машины и роли свойств деталей,
изготавливаемых конкретными рабочими
в работе машины;

г) рассказать о
всех видах мотивации высококачественной
работы.

Укажите правильный
ответ.

24. 1. Зависимость
между хорошим отношением к работе и
хорошим результатом не всегда прямая.

2. Наказывать
надо за плохое отношение к работе, а не
за плохой результат.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

25. Результаты труда
можно считать взаимосвязанными в той
мере, которая необходима для бригадной
коллективной ответственности, в следующих
случаях:

а) на конвейере
десятки работников участвуют в сборке
телевизора;

б) все работники
машиностроительного завода работают
на создание одной машины – паровой
турбины;

в) каждый из членов
бригады выполняет операции по созданию
детали, являющейся продуктом бригады;

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

Укажите, в каком
из вариантов речь идет о том едином
результате, который необходим для
коллективной оценки.

26. 1. Под самоорганизацией
понимается способность коллектива без
оценок и указаний извне выполнять
известную работу и реагировать на
незначительные изменения внешней среды.

2. Максимальная
численность самоуправляемого коллектива
не зависит от характера производства.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

27.Целью ротации
внутри бригады является:

а) способность
всех членов бригады оценивать весь
процесс производства совокупно продукции;

б) способность
всех членов бригады оценивать работу
друг друга;

в) приобретение
одинаковой квалификации;

г) уменьшение
утомляемости и снижение рутинности
работы.

Укажите наименее
подходящий ответ.

28. Когда штатным
расписанием предусматривается в бригаде
большинство ставок с высокими разрядами,
то это полезно для качества потому что:

а) создает возможность
быстрого роста квалификации для вновь
поступивших работников;

б) позволяет
большинству членов бригады равноправно
оценивать друг друга;

в) создает условия
для ротации внутри бригады;

г) позволяет
работникам не заниматься второстепенной
низко квалифицированной работой.

Укажите неправильный
ответ.

29. 1. При повременно
— премиальной системе оплаты работника
интересует только качество продукции
и поэтому оно повышается.

2. При сдельной
системе работника интересует только
количество, а качество страдает.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

30. 1. Чем стабильнее
производство и технологический процесс,
тем большими могут быть сроки оценки
качества работы исполнителей, как основы
материального стимулирования.

2. Денежное
наказание вообще и всегда противопоказано,
как средство повышения качества.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

31. 1. Внутренняя
мотивация всегда является наиболее
глубоким и действенным способом создания
заинтересованности в повышении качества.

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

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

32. 1. При низком
уровне организации и нестабильной
технологии моральное стимулирование
за качество бессмысленно.

2. Моральное
стимулирование эффективно только при
краткосрочных оценках, а при долгосрочных
целесообразнее материальное.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

33. К методам
морального стимулирования относятся:

а) устная
благодарность;

б) объявление
победителем в соревнованиях;

в) повышение в
должности;

г) благодарность
записанная в приказе.

Укажите неправильный
ответ.

34. 1. Чтобы управлять
качеством надо обязательно иметь
спроектированную систему управления
качеством.

2. Любая
спроектированная система обязательно
является научно обоснованной.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

35. 1. В любой компании,
независимо от ее размера, должен быть
специальный орган, занимающийся только
разработкой системы и управлением
системой.

2. Постоянно
управлять это не значит постоянно
изменять систему. Достаточно постоянно
следить за ее функционированием и по
мере необходимости вносить изменения.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

36. Под планированием
повышения системы качества понимается:

а) определение
количества продукции нового качества,
которое будет произведено в планируемый
период;

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

в) разработка
программ совершенствования и сертификации
систем качества;

г) совокупность
действий изложенных в предыдущих
вариантах.

Укажите наиболее
правильный ответ.

37. Устранение
ошибки, выявленной на этапе прогнозирования
показателей, обошлось компании в 100
рублей. Во сколько обойдется устранение
этой же ошибки, если ее выявят в
потреблении, то есть на четвертом этапе
после прогнозирования показателей.

а) 10000 руб.;

б) 200.000 руб.;

в) 20.000.000 руб.;

г) 1000.000.000 руб.

Укажите правильный
ответ.

38. 1. Разработка
нескольких вариантов возможна не на
всех этапах и не для всех видов продукции.

2. Разработка
нескольких вариантов более целесообразна
для дорогих уникальных проектов, чем
для массовых дешевых изделий.

а) первое верно,
второе не верно;

б) первое неверно,
второе верно;

в) оба верны;

г) оба неверны.

Укажите правильное
сочетание оценок приведенных суждений.

39. Параллельное
выполнение этапов разработки новых или
модернизированных изделий производится
с целью.

а) сокращения
сроков разработки нового продукта;

б) удешевление
разработки;

в) быстрейшего
выявления ошибок, допущенных на предыдущих
этапах;

г) повышение
качества разработки в целом.

Укажите неправильный
ответ.

40. Ориентация на
производство означает, что:

а) в любом случае
при разногласии между конструкторами
и технологами вопрос решается в пользу
последних;

б) изменение в
технологии и составе оборудования
производятся не для каждого нового
изделия, а по мере необходимости
существенно обновить технологию;

в) приспособление
конструкции к производству ускоряет
процесс освоения новой продукции;

г) приспособление
конструкции к технологии снижает затраты
на освоение новой продукции.

Укажите неправильный
ответ.

Прогнозирование ошибок программного обеспечения. Обнаружение ошибок

1

Источниками ошибок в программном обеспечении являются специалисты — конкретные люди с их индивидуальными особенностями, квалификацией, талантом и опытом.

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

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

В общем случае отказ программного обеспечения можно определить как:

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

Из данного определения программной ошибки следует, что ошибки могут по разному влиять на надежность программного обеспечения и можно определить тяжесть ошибки, как количественную или качественную оценку последствий этой ошибки. При этом категорией тяжести последствий ошибки будет являться классификационная группа ошибок по тяжести их последствий. Ниже представлены возможные категории тяжести ошибок в программном обеспечении общего применения в соответствии с ГОСТ 51901.12 — 2007 «Менеджмент риска. Метод анализа видов и последствий отказов».

Описание последствий проявления ошибки

Критическая

проявление ошибки с высокой вероятностью влечет за собой прекращение функционирования программного обеспечения (его отказ)

Существенная

проявление ошибки влечет за собой снижение эффективности функционирования программного обеспечения и может вызвать прекращение функционирования программного обеспечения (его отказ)

Несущественная

проявление ошибки может повлечь за собой снижение эффективности функционирования программного обеспечения и практически не приводит к возникновению отказа в нем (вероятность возникновения отказа очень низкая)

В качестве показателя степени тяжести ошибки, позволяющего дать количественную оценку тяжести проявления последствий ошибки можно использовать условную вероятность отказа программного обеспечения при проявлении ошибки. Оценку степени тяжести ошибки как условной вероятности возникновения отказа, можно производить согласно ГОСТ 28195 — 89 «Оценка качества программных средств. Общие положения», используя метрики и оценочные элементы, характеризующие устойчивость программного обеспечения. При этом оценку необходимо производить для каждой ошибки в отдельности, а не для всего программного обеспечения.

Библиографическая ссылка

Дроботун Е.Б. КРИТИЧНОСТЬ ОШИБОК В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ И АНАЛИЗ ИХ ПОСЛЕДСТВИЙ // Фундаментальные исследования. – 2009. – № 4. – С. 73-74;
URL: http://fundamental-research.ru/ru/article/view?id=4467 (дата обращения: 06.04.2019).
Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Анализ особенностей программной надежности АСОИУ и методов прогнозирования программных отказов

1.1 Основные понятия надежности программного обеспечения

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

Основным элементом автоматизированной системы управления войсками является комплекс средств автоматизации КП различных уровней, которые представляют собой совокупность технических средств (передачи, обработки, отображения информации) и программного обеспечения.

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

Перед тем как анализировать надежность программного обеспечения уточним фундаментальные основные понятия теории надежности.

Надежность программного обеспечения — это свойство обеспечивать получение в соответствии с заданным алгоритмом правильных результатов в течении определенного интервала времени.

Отказпрограммного обеспечения — состояние комплекса программ связанное с нарушением работоспособности комплекса программ и прекращением дальнейшего функционирования из-за ошибок.

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

Надежность программного обеспечения АСОИУ определяется его безотказностью, восстанавлиемостью и устойчивостью.

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

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

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

Известно, что сбой в теории надежности определяется как самоустраняющийся отказ, не требующий вмешательства из вне для его устранения. Другим словом — сбой есть автоматически устраняющийся отказ, имеющий достаточно малое время восстановления. Поэтому применительно к надежности программного обеспечения АСУ следует конкретно указывать критерий, позволяющий отнести потерю работоспособности комплекса программ к отказу или сбою. В качестве такого критерия возьмем некоторое пороговое значение времени восстановления (? в пор).

Таким образом на устранение сбоя затрачивается меньше времени и ресурсов чем на устранение отказа. В формализованном виде определение сбоя и отказа программного обеспечения могут быть представлены как:

В с < ? в пор

В с — время восстановления после сбоя.

В о — время восстановления после отказа.

Устойчивость функционирования программного обеспечения — это способность ограничивать последствия внутренних ошибок в программах и неблагоприятных воздействий внешней среды (к которым относится неисправности аппаратуры, некорректность входных данных, ошибки оператора и другие) и противостояние им.

В проведенном анализе основных понятий надежности программного обеспечения даны определения, отказа, ошибки и надежности программного обеспечения. Выяснилось, что переход из работоспособного состояния в неработоспособное происходит под воздействием программных отказов. Из временных показателей видно, что на устранение сбоя затрачивается меньше времени и ресурсов чем на устранение отказа.

1.2 Основные причины и признаки выявления ошибок программного обеспечения

Основными причинами ошибок программного обеспечения являются:

Большая сложность программного обеспечения, например, по сравнению с аппаратурой ЭВМ.

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

Источниками ошибок программного обеспечения являются:

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

Внешние: ошибки пользователей, сбои и отказы аппаратуры ЭВМ, искажение информации в каналах связи, изменения конфигурации системы.

Признаками выявления ошибок являются:

1. Преждевременное окончание программы.

2. Увеличение времени выполнения программы.

3. Нарушение последовательности вызова отдельных подпрограмм.

4. Ошибки выхода информации, поступающей от внешних источников, между входной информацией возникает не соответствие из-за: искажение данных на первичных носителях, сбои и отказы в аппаратуре, шумы и сбои в каналах связи, ошибки в документации.

Ошибки скрытые в самой программе: ошибка вычислений, ошибка ввода-вывода, логические ошибки, ошибка манипулирования данными, ошибка совместимости, ошибка сопряжения.

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

Неверные действия пользователя:

1. Неправильная интерпретация сообщений.

2. Неправильные действия пользователя в процессе диалога с программным обеспечением.

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

Неисправности аппаратуры установки: приводят к нарушениям нормального хода вычислительного процесса; приводят к искажениям данных и текстов программ в основной и внешней памяти.

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

1.3 Основные параметры и показатели надежности программ АСОИУ

Термин модели надежности программного обеспечения, как правило относится к математической модели, построенной для оценки зависимости программного обеспечения от некоторых определенных параметров.

Параметр — количественные величины, в функции или математической модели выбираемая или оцениваемая в конкретных условиях.

Значение таких параметров либо предлагаются известными, либо могут быть измерены в ходе наблюдений или экспериментального исследования процесса функционирования программного обеспечения.

Усложнение алгоритмов функционирования автоматизированных систем приводит к значительному объему и сложности программного обеспечения. Увеличение же объема (до 10 5 и более машинных команд) и сложности программного обеспечения делает невозможной разработку полностью бездефектных составляющих программного обеспечения программ. В результате программное обеспечение сдается в эксплуатацию с ошибками, являющимися причинами отказа программного обеспечения. Процесс отладки программного обеспечения по выявлению и устранению ошибок в программах можно представить графиком изменения интенсивности отказов программного обеспечения о.

Рис. 1.3.1. — время жизни программы.

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

1.4 Методы прогнозирования программных отказов и тестирование программ

Предупреждение ошибок — лучший путь повышения надёжности программного обеспечения. Для его реализации была разработана методика проектирования систем управления, соответствующая спиральной модели жизненного цикла программного обеспечения. Методика предусматривает последовательное понижение сложности на всех этапах анализа объекта. При декомпозиции АСОИУ были выделены уровни управления системы, затем подсистемы, комплексы задач и так далее, вплоть до отдельных автоматизируемых функций и процедур.

Методы прогнозирования и тестирования программного обеспечения позволяют предупредить, минимизировать или исключить появление ошибок.

Методы прогнозирования и тестирования программного обеспечения включают в себя:

1. Методы, позволяющие справиться со сложностью системы.

Сложность системы является одной из главных причин низкой надежности программного обеспечения. В общем случае, сложность объекта является функцией взаимодействия между его компонентами. В борьбе со сложностью программного обеспечения используются две концепции: [Л.1]

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

Независимость. В соответствии с этой концепцией, для минимизации сложности, необходимо максимально усилить независимость элементов системы.

2. Методы достижения большей точности при переводе информации.

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

Временная избыточность. Использование части производительности ЭВМ для контроля исполнения и восстановления работоспособности программного обеспечения после сбоя.

Информационная избыточность. Дублирование части данных информационной системы для обеспечения надёжности и контроля достоверности данных.

Программная избыточность включает в себя:

взаимное недоверие — компоненты системы проектируются, исходя из предположения, что другие компоненты и исходные данные содержат ошибки, и должны пытаться их обнаружить;

немедленное обнаружение и регистрацию ошибок;

выполнение одинаковых функций разными модулями системы и сопоставление результатов обработки;

контроль и восстановление данных с использованием других видов избыточности.

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

Важным этапом жизненного цикла программного обеспечения, определяющим качество и надёжность системы, является тестирование. Тестирование — процесс выполнения программ с намерением найти ошибки. Этапы тестирования: контроль отдельного программного модуля отдельно от других модулей системы; контроль сопряжений (связей) между частями системы (модулями, компонентами, подсистемами); контроль выполнения системой автоматизируемых функций; проверка соответствия системы требованиям пользователей, и корректности документации, выполнение программы в строгом соответствии с инструкциями.

Существуют две стратегии при проектировании тестов: тестирование по отношению к спецификациям (документации), не заботясь о тексте программы, и тестирование по отношению к тексту программы, не заботясь о спецификациях. Разумный компромисс лежит где-то посередине, смещаясь в ту или иную сторону в зависимости от функций, выполняемых конкретным модулем, комплексом или подсистемой.

Качество подготовки исходных данных для проведения тестирования серьёзно влияет на эффективность процесса в целом и включает в себя:

1. Техническое задание.

2. Описание системы.

3. Руководство пользователя.

4. Исходный текст.

5. Правила построения (стандарты) программ и интерфейсов.

6. Критерии качества тестирования.

7. Эталонные значения исходных и результирующих данных.

8. Выделенные ресурсы, определяемые доступными финансовыми средствами.

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

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

Предлагаемых изменений.

Найденных дефектов.

Утвержденных корректировок.

Реализованных изменений.

Пользовательских версий.

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

2. Анализ моделей оценки программной надежности

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

Эти математические модели предназначены для оценки:

1. Показателей надежности комплекса программ в процессе отладки;

2. Количества ошибок оставшиеся не выявленными;

3. Времени, необходимого для обнаружения следующей ошибки в функционирующей программе;

4. Времени, необходимого для выявления всех ошибок с заданной вероятностью.

Существуют ряд математических моделей:

Экспоненциальная модель изменения ошибок в зависимости от времени отладки.

Дискретно-меняющаяся модель, учитывающая дискретно-повышающую времени наработки на отказ, как линейную функцию времени тестирования и испытания.

Модель Шумана. Исходные данные для модели Шумана собираются в процессе тестирования программного обеспечения в течение фиксированных или случайных временных интервалов.

Модель La Padula. По этой модели выполнение последовательности тестов в m этапов. Каждый этап заканчивается внесением исправлений в программное обеспечение.

Модель Джелинского — Моранды. Исходные данные собираются в процессе тестирования программного обеспечения. При этом фиксируется время до очередного отказа.

Модель Шика — Волвертона. Модификация модели Джелинского — Моранды для случая возникновения на рассматриваемом интервале более одной ошибки.

Модель Муса. В процессе тестирования фиксируется время выполнения программы (тестового прогона) до очередного отказа.

Модель переходных вероятностей. Эта модель основана на марковском процессе, протекающем в дискретной системе с непрерывным временем.

Модель Миллса. Использование этой модели предполагает необходимость перед началом тестирования искусственно вносить в программу некоторое количество известных ошибок.

Модель Липова. Модификация модели Миллса, рассматривающая вероятность обнаружения ошибки при использовании различного числа тестов.

Простая интуитивная модель. Использование этой модели предполагает проведения тестирования двумя группами программистов независимо друг от друга, использующими независимые тестовые наборы.

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

Модель Нельсона. Данная модель при расчете надежности программного обеспечения учитывает вероятность выбора определенного тестового набора для очередного выполнения программы.

При таком большом количестве моделей все-таки основными из них являютсяэкспоненциальная и дискретно-меняющаяся модели.

2.1 Дискретно-меняющая модель

В данной работе под дискретно-меняющей моделью подразумевается модель, которая основывается на дискретном увеличении времени наработки на отказ. Такая модель базируется на следующих предположениях:

1. Устранение ошибок в программе приводит к увеличению времени наработки на отказ T на одну и ту же величину, равную:

T (1) =T (2) =…=T (i) = const (2.1.1)

T (i) = T (i) — T (i-1) (2.2.2)

2. Время между двумя последовательными отказами:

i = t i — t i -1 (2.1.3)

является случайной величиной, которую можно представить в виде суммы двух случайных величин:

i = i -1 + I (2.1.4)

где i — независимые случайные величины, которые имеют одинаковые математические ожидания M{} и среднеквадратические отклонения.

3. Начальный интервал времени 0 сравним со случайной величиной 0 , т.е. 0 0 , поскольку в начальный период эксплуатации программ отказы в них возникают весьма часто.

На основании второго предположения величину интервала между i-м (i-1) — м отказами можно определить соотношением:

i = i -1 + i = 0 + j (2.1.5)

из которого можно получить соотношение для определения времени наступления m-го отказа в программе:

t m = i = (0 + j) (2.1.6)

исходя из третьего предположения полученные соотношения примут вид:

i = 0 + j = j (2.1.7)

t m = (0 + j) = i j (2.1.8)

При этих предположениях средняя наработка между (m-1) — м и m-м отказами программы равна:

T 0 (m) = M{ m -1 } = M{ j } = i j = m M{}. (2.1.9)

Средняя наработка до возникновения m-го отказа может быть определена по соотношению:

T m = M{t m } = i jk) = M{}. (2.1.10)

2.2 Экспоненциальное распределение

Теперь непосредственно перейдем к анализу собственно экспоненциального распределения.

Рассматриваемое распределение характеризуется рядом свойств, такими как:

1. Ошибки в комплексе программ являются независимыми и проявляются в случайные моменты времени. Данное свойство характеризует неизменность во времени интенсивности проявления и обнаружения ошибок (т.е. ош =const) в течение всего времени выполнения программы (=t н -t 0).

2. Интенсивность проявления и обнаружения ошибок ош (интенсивность отказов) пропорционально числу оставшихся в ней ошибок:

()= Kn 0 () (2.2.1)

где K — коэффициент пропорциональности, учитывающий реальное быстродействию ЭВМ и число команд в программе.

3. В процессе исправления ошибок программы новые ошибки не порождаются. Это означает, что интенсивность исправления ошибок dn/dt будет равна интенсивности их обнаружения:

Тогда n 0 ()= N 0 — n(). (2.2.3)

Основываясь на предположениях, введенных выше, получим:

n()=N 0 (1-e — K); (2.5)

Если принять, что, получим:

2.3 Методика оценки надежности программ по числу исправленных ошибок

Пусть N 0 — число ошибок, имеющихся в программе перед началом испытаний.

n() — количество ошибок, устраненных в ходе испытаний (тестирования) программы;

n 0 () — число оставшихся в программе ошибок на момент окончания испытаний.

Тогда n 0 ()= N 0 — n().

Основываясь на предположениях введенных в пункте 2.2.1, а именно: и ()= Kn 0 () то получим:

K — коэффициент, учитывающий быстродействие компьютера.

Решением этого дифференциального уравнения при начальных условиях t=0 и =0 является:

n()=N 0 (1-e -K); (2.3.2)

n 0 ()=N 0 — n()=N 0 e -K . (2.3.3)

Надежность программы по результатам испытаний в течении времени можно охарактеризовать средним временим наработки на отказ, равным:

Если ввести исходное значение среднего времени наработки на отказ перед испытанием, равного, то получим:

откуда видно, что среднее время наработки на отказ увеличивается по мере выявления и исправления ошибок.

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

Если обозначить за m — число обнаруженных отказов, а M 0 — число отказов, которое должно произойти, чтобы можно было выявить и устранить n соответствующих ошибок, то есть:

то среднее время наработки на отказ и число обнаруженных отказов определяется следующими соотношениями:

Если принять, что, получим:

Для практического использования представляет интерес число ошибок m, которое должно быть обнаружено и исправлено для того, чтобы добиться увеличения среднего времени наработки на отказ от T 01 до T 02 . Этот показатель может быть получен из следующих соотношений:

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

2.4 Методика оценки надежности программ по времени испытания

Дополнительное время испытаний, необходимое для обеспечения увеличения среднего времени наработки на отказ с T 01 до T 02 определяется из соотношений:

где T 01 и T 02 определяются согласно формуле (2.3.9):

Оценка надежности программ по времени испытаний определяется согласно формуле:

2.5 Методика оценки безотказности программ по наработке

Наработку между очередными отказами — случайную величину T (i) можно представить в виде суммы двух случайных величин:

T (i) = T (i -1) + T (i) (2.5.1)

Последовательно применяя (3.3.1) ко всем периодам наработки между отказами, получаем:

T (i) = T (0) + T (?) (2.5.2)

Случайная величина Т n — наработка до возникновения n-го отказа программы — равна:

T n = T (i) = (2.5.3)

Введем следующие допущения:

1) все случайные величины T () независимы и имеют одинаковые математические ожидания m ? t и среднеквадратические отклонения? ? t ;

2) случайная величина T (0) пренебрежимо мала по сравнению с суммой T (?)

Основанием для второго допущения могут служить следующие соображения: в самый начальный период эксплуатации программы ошибки возникают очень часто, то есть время T (0) мало. Сумма (2.5.3) быстро растет с увеличением n, и доля T (0) быстро падает. Будем считать что T (0) ? T (0) .
В соответствии со вторым допущением имеем:

T (n) =T (?) . (2.5.4)

При одинаковых T (?) наработка между (n-1) и n отказами — случайная величина T (n) — имеет математическое ожидание:

m t (n) =M=nm ? t (2.5.6)

T (n) = ? ? t ; (2.5.7)

Для случайной величины T n математическое ожидание равно:

M ? t ; (2.5.8)

и среднеквадратическое отклонение:

T ; (2.5.9)

Чтобы вычислить значения, и, необходимо по данным об отказах программы в течение периода наблюдения t н найти статистические оценки числовых характеристик случайной разности T (i) :

n н — число отказов программы за наработку (0, t н).

Учитывая, что при t >t н число отказов n н >> 1, из (2.5.8) и (2.5.9) имеем:

m t (n) ? m ? t , (2.5.12)

T (n) = ? ? t n ; (2.5.13)

Поскольку случайные величины T (n) и T n согласно (2.5.4) и (2.5.5) равны суммам многих случайных величин, T (n) и T n можно считать распределенными нормально с математическими ожиданиями и дисперсиями, определенными по (2.5.6) — (2.5.9), (2.5.12) и (2.5.13). Так как наработка положительна, на практике используется усеченное на интервале (0, ?) нормальное распределение. Обычно нормирующий множитель с?1.

При n>n н плотность распределения наработки между очередными (n-1) и n отказами:

f (n) (?) = , (2.5.14)

где? отсчитывается с момента последнего, (n-1) отказа.

Заключение

В работе было показано, что надежность программного обеспечения, в десятки раз ниже чем аппаратурная надежность. Требования к программной надежности это определение необходимого выполнения боевых задач в течении не менее чем 1872 часов.

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

Список литературы

программный безотказность надежность прогнозирование

1. В.В. Липаев Проектирование математического обеспечения АСУ. (системотехника, архитектура, технология). М., «Сов. радио», 1977.

2. Р.С. Захарова Основные вопросы теории и практики надежности.

3. В.А. Благодатских, В.А. Волнин, К.Ф. ПоскакаловСтандартизация разработки программных средств.

4. А.А. ВороновТеоретические основы построения автоматизированных систем управления. Разработка технического задания.-М.: Наука, 1997.

5. Основы прикладной теории надежности АСУ. Учебное пособие, Тверь, ВА ПВО, 1995, н/с 32. 965,0-75. В.М. Ионов и др., инв. №8856.

6. Б.Н. Горевич. Расчет показателей надежности систем вооружения и резервированных элементов. Конспект лекций, ВА ПВО, 1998, н/с 68.501.4, Г68, инв. №9100

Размещено на Allbest.ru

Подобные документы

    Анализ методов оценки надежности программных средств на всех этапах жизненного цикла, их классификация и типы, предъявляемые требования. Мультиверсионное программное обеспечение. Современные модели и алгоритмы анализа надежности программных средств.

    дипломная работа , добавлен 03.11.2013

    Действия, которые выполняются при проектировании АИС. Кластерные технологии, их виды. Методы расчета надежности на разных этапах проектирования информационных систем. Расчет надежности с резервированием. Испытания программного обеспечения на надежность.

    курсовая работа , добавлен 02.07.2013

    Программное обеспечение как продукт. Основные характеристик качества программного средства. Основные понятия и показатели надежности программных средств. Дестабилизирующие факторы и методы обеспечения надежности функционирования программных средств.

    лекция , добавлен 22.03.2014

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

    презентация , добавлен 22.03.2014

    Запросы клиента по области возможных запросов к серверу. Программа для прогнозирования поведения надежности программного обеспечения на основе метода Монте-Карло. Влияние количества программ-клиентов на поведение программной системы клиент-сервера.

    контрольная работа , добавлен 03.12.2010

    Особенности аналитической и эмпирической моделей надежности программных средств. Проектирование алгоритма тестирования и разработка программы для определения надежности ПО моделями Шумана, Миллса, Липова, с использованием языка C# и VisualStudio 2013.

    курсовая работа , добавлен 29.06.2014

    Надежность системы управления как совокупность надежности технических средств, вычислительной машины, программного обеспечения и персонала. Расчет надежности технических систем, виды отказов САУ и ТСА, повышение надежности и причины отказов САУ.

    курс лекций , добавлен 27.05.2008

    Точные и приближенные методы анализа структурной надежности. Критерии оценки структурной надежности методом статистического моделирования. Разработка алгоритма и программы расчета структурной надежности. Методические указания по работе с программой.

    дипломная работа , добавлен 17.11.2010

    Постановка проблемы надежности программного обеспечения и причины ее возникновения. Характеристики надежности аппаратуры. Компьютерная программа как объект исследования, ее надежность и правильность. Модель последовательности испытаний Бернулли.

    реферат , добавлен 21.12.2010

    Надежность как характеристика качества программного обеспечения (ПО). Методика расчета характеристик надежности ПО (таких как, время наработки до отказа, коэффициент готовности, вероятность отказа), особенности прогнозирования их изменений во времени.

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

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

Просматривайте свои проекты

Лучшее использование вашего времени — это внимательно изучить
проект 2, чтобы понять, почему у вас такой высокий уровень
дефектов. Осмотрите свои процессы, сформируйте гипотезу, а затем
попытайтесь адаптировать свои процессы, чтобы уменьшить
дефекты.

Хороший руководитель проекта не будет тратить время на создание
«универсальной теории всего» на основе экстраполяции из двух
проектов. Вместо этого опытный руководитель проекта потратил на это
время fixing
Project 2, чтобы улучшить свои шансы на
успех, или сообщив о вероятности неудачи менеджера портфеля, чтобы
можно было принять стратегическое решение о том, проект должен быть
прекращен в качестве меры контроля затрат или качества.

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

Разработчики, которые оставили файл

Я понятия не имею, что вы пытаетесь сделать из этого показателя.
Похоже, что пытаться предсказать популярность быстрого питания,
основанного на том, сколько кварталов они дали в качестве
изменения.

The rules
about bugs is to test from early
stages of development, and to keep a 1:1 or 2:1 ratio of
programmers to testers. Then you can safely assume the
testing-debugging stage will take as long as the time originally
estimated to write the code.

Чем позже вы начнете тестирование, тем меньше тестировщиков у
вас есть, тогда больше ошибок будет жить и начнет расти в
программном обеспечении, а этап отладки займет больше времени.
Затем вы можете удвоить или утроить время тестирования/отладки.

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

    Более новый код часто основывается на более раннем коде,
    поэтому, если раньше была ошибка, он может полностью упасть и
    повредить проблемы.

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

Значительная часть производственного процесса опирается на тестирование программ. Что это такое и как осуществляется подобная деятельность обсудим в данной статье.

Что называют тестированием?

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

Эффективность

То, насколько хорошо и быстро находятся ошибки, существенным образом влияет на стоимость и длительность разработки программного обеспечения необходимого качества. Так, несмотря на то, что тестеры получают заработную плату в несколько раз меньшую, чем программисты, стоимость их услуг обычно достигает 30 — 40 % от стоимости всего проекта. Это происходит из-за численности личного состава, поскольку искать ошибку — это необычный и довольно трудный процесс. Но даже если программное обеспечение прошло солидное количество тестов, то нет 100 % гарантии, что ошибок не будет. Просто неизвестно, когда они проявятся. Чтобы стимулировать тестеров выбирать типы проверки, которые с большей вероятностью найдут ошибку, применяются различные средства мотивации: как моральные, так и материальные.

Подход к работе

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

Что такое тест?

Это немаловажный аспект деятельности проверяющего, который необходим для успешного выявления недочетов программного кода. Они необходимы для того, чтобы контролировать правильность приложения. Что входит в тест? Он состоит их начальных данных и значений, которые должны получиться как результирующие (или промежуточные). Для того чтобы успешнее выявлять проблемы и несоответствия, тесты необходимо составлять после того, как был разработан алгоритм, но не началось программирование. Причем желательно использовать несколько подходов при расчете необходимых данных. В таком случае растёт вероятность обнаружения ошибки благодаря тому, что можно исследовать код с другой точки зрения. Комплексно тесты должны обеспечивать проверку внешних эффектов готового программного изделия, а также его алгоритмов работы. Особенный интерес предоставляют предельные и вырожденные случаи. Так, в практике деятельности с ошибками часто можно выявить, что цикл работает на один раз меньше или больше, чем было запланировано. Также важным является тестирование компьютера, благодаря которому можно проверить соответствие желаемому результату на различных машинах. Это необходимо для того, чтобы удостовериться, что программное обеспечение сможет работать на всех ЭВМ. Кроме того, тестирование компьютера, на котором будет выполняться разработка, является важным при создании мультиплатформенных разработок.

Искусство поиска ошибок

Программы часто нацелены на работу с огромным массивом данных. Неужели его необходимо создавать полностью? Нет. Широкое распространение приобрела практика «миниатюризации» программы. В данном случае происходит разумное сокращение объема данных по сравнению с тем, что должно использоваться. Давайте рассмотрим такой пример: есть программа, в которой создаётся матрица размером 50×50. Иными словами — необходимо вручную ввести 2500 тысячи значений. Это, конечно, возможно, но займёт очень много времени. Но чтобы проверить работоспособность, программный продукт получает матрицу, размерность которой составляет 5×5. Для этого нужно будет ввести уже 25 значений. Если в данном случае наблюдается нормальная, безошибочная работа, то это значит, что всё в порядке. Хотя и здесь существуют подводные камни, которые заключаются в том, что при миниатюризации происходит ситуация, в результате которой изменения становятся неявными и временно исчезают. Также очень редко, но всё же случается и такое, что появляются новые ошибки.

Преследуемые цели

Тестирование ПО не является легким делом из-за того, что данный процесс не поддаётся формализации в полном объеме. Большие программы почти никогда не обладают необходимым точным эталоном. Поэтому в качестве ориентира используют ряд косвенных данных, которые, правда, не могут полностью отражать характеристики и функции программных разработок, что отлаживаются. Причем они должны быть подобраны таким образом, чтобы правильный результат вычислялся ещё до того, как программный продукт будет тестирован. Если этого не сделать заранее, то возникает соблазн считать всё приблизительно, и если машинный результат попадёт в предполагаемый диапазон, то будет принято ошибочное решение, что всё правильно.

Проверка в различных условиях

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

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

Тестирование ПО: виды

Создавать программное обеспечение без ошибок весьма трудно. Это требует значительного количества времени. Чтобы получить хороший продукт часто применяются два вида тестирования: «Альфа» и «Бета». Что они собой представляют? Когда говорят об альфа-тестировании, то под ним подразумевают проверку, которую проводит сам штат разработчиков в «лабораторных» условиях. Это последний этап проверки перед тем, как программа будет передана конечным пользователям. Поэтому разработчики стараются развернуться по максимуму. Для легкости работы данные могут протоколироваться, чтобы создавать хронологию проблем и их устранения. Под бета-тестированием понимают поставку программного обеспечения ограниченному кругу пользователей, чтобы они смогли поэксплуатировать программу и выявить пропущенные ошибки. Особенностью в данном случае является то, что часто ПО используется не по своему целевому назначению. Благодаря этому неисправности будут выявляться там, где ранее ничего не было замечено. Это вполне нормально и переживать по этому поводу не нужно.

Завершение тестирования

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

Автоматизированное тестирование

Ранее считалось, что динамический анализ разработанного ПО — это слишком тяжелый подход, который неэффективно использовать для обнаружения дефектов. Но из-за увеличения сложности и объема программ появился противоположный взгляд. Автоматическое тестирование применяется там, где самыми важными приоритетами является работоспособность и безопасность. И они должны быть при любых входных данных. В качестве примера программ, для которых целесообразным является такое тестирование, можно привести следующие: сетевые протоколы, веб-сервер, sandboxing. Мы далее рассмотрим несколько образцов, которые можно использовать для такой деятельности. Если интересуют бесплатные программы тестирования, то среди них качественные найти довольно сложно. Но существуют взломанные «пиратские» версии хорошо зарекомендовавших себя проектов, поэтому можно обратиться к их услугам.

Avalanche

Этот инструмент помогает обнаружить дефекты, проходя тестирование программ в режиме динамического анализа. Он собирает данные и анализирует трассу выполнения разработанного объекта. Тестеру же предоставляется набор входных данных, которые вызывают ошибку или обходят набор имеющихся ограничений. Благодаря наличию хорошего алгоритма проверки разрабатывается большое количество возможных ситуаций. Программа получает различные наборы входных данных, которые позволяют смоделировать значительное число ситуаций и создать такие условия, когда наиболее вероятным является возникновение сбоя. Важным преимуществом программы считается применение эвристической метрики. Если есть проблема, то ошибка приложения находится с высокой вероятностью. Но эта программа имеет ограничения вроде проверки только одного помеченного входного сокета или файла. При проведении такой операции, как тестирование программ, будет содержаться детальная информация о наличие проблем с нулевыми указателями, бесконечными циклами, некорректными адресами или неисправностями из-за использования библиотек. Конечно, это не полный список обнаруживаемых ошибок, а только их распространённые примеры. Исправлять недочеты, увы, придётся разработчикам — автоматические средства для этих целей не подходят.

KLEE

Это хорошая программа для тестирования памяти. Она может перехватывать примерно 50 системных вызовов и большое количество виртуальных процессов, таким образом, выполняется параллельно и отдельно. Но в целом программа не ищет отдельные подозрительные места, а обрабатывает максимально возможное количество кода и проводит анализ используемых путей передачи данных. Из-за этого время тестирования программы зависит от размера объекта. При проверке ставка сделана на символические процессы. Они являются одним из возможных путей выполнения задач в программе, которая проверяется. Благодаря параллельной работе можно анализировать большое количество вариантов работы исследуемого приложения. Для каждого пути после окончания его тестирования сохраняются наборы входных данных, с которых начиналась проверка. Следует отметить, что тестирование программ с помощью KLEE помогает выявлять большое количество отклонений, которых не должно быть. Она может найти проблемы даже в приложениях, которые разрабатываются десятилетиями.

Если предполагать, что в программном обеспечении какие-то ошибки все же будут, то лучшая (после предупреждения ошибок) стратегия — включить средства обнаружения ошибок в само про-граммное обеспечение.

Большинство методов направлено по возможности на неза-медлительное обнаружение сбоев. Немедленное обнаружение имеет два преимущества: можно минимизировать влияние ошиб-ки и последующие затруднения для человека, которому придется извлекать информацию о ней, находить ее и исправлять.

{SITELINK-S405}Меры по обнаружению ошибок {/SITELINK}можно разбить на две под-группы: пассивные

попытки обнаружить симптомы ошибки в про-цессе «обычной» работы программного обеспечения и активные

попытки программной системы периодически обследовать свое состояние в поисках признаков ошибок.

Пассивное обнаружение
.
Меры по обнаружению ошибок могут быть приняты на нескольких структурных уровнях программной системы. Здесь мы будем рассматривать уровень подсистем, или ком-понентов, т.е. нас будут интересовать меры по обнаружению симп-томов ошибок, предпринимаемые при переходе от одного компо-нента к другому, а также внутри компонента. Все это, конечно, при-менимо также к отдельным модулям внутри компонента.

Разрабатывая эти меры, мы будем опираться на следующее.

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

2.
Немедленное обнаружение.
Ошибки необходимо обнаружить как можно раньше. Это не только ограничивает наносимый ими ущерб, но и значительно упрощает задачу отладки.

3. Избыточность.
Все средства обнаружения ошибок основаны на некоторой форме избыточности (явной или неявной).

Когда разрабатываются {SITELINK-S405}меры по обнаружению ошибок{/SITELINK}, важ-но принять согласованную стратегию для всей системы. Действия, предпринимаемые после обнаружения ошибки в программном обеспечении, должны быть единообразными для всех компонен-тов системы. Это ставит вопрос о том, какие именно действия следует предпринять, когда ошибка обнаружена. Наилучшее решение — немедленно завершить выполнение программы или (в случае операционной системы) перевести центральный про-цессор в состояние ожидания. С точки зрения предоставления че-ловеку, отлаживающему программу, например системному про-граммисту, самых благоприятных условий для диагностики оши-бок немедленное завершение представляется наилучшей стратегией. Конечно, во многих системах подобная стратегия бывает нецелесообразной (например, может оказаться, что при-останавливать работу системы нельзя). В таком случае использу-ется метод регистрации ошибок.
Описание симптомов ошибки и «моментальный снимок» состояния системы сохраняются во внеш-нем файле, после чего система может продолжать работу. Этот файл позднее будет изучен обслуживающим персоналом.

Всегда, когда это возможно, лучше приостановить выполне-ние программы, чем регистрировать ошибки (либо обеспечить как дополнительную возможность работу системы в любом из этих режимов). Различие между этими методами проиллюстриру-ем на способах выявления причин возникающего иногда скреже-та вашего автомобиля. Если автомеханик находится на заднем сиденье, то он может обследовать состояние машины в тот мо-мент, когда скрежет возникает. Если вы выбираете метод регист-рации ошибок, задача диагностики станет сложнее.

Активное обнаружение ошибок.
Не все ошибки можно выя-вить пассивными методами, поскольку эти методы обнаружива-ют ошибку лишь тогда, когда ее симптомы подвергаются соот-ветствующей проверке. Можно делать и дополнительные провер-ки, если спроектировать специальные программные средства для активного поиска признаков ошибок в системе. Такие средства называются средствами активного обнаружения ошибок.

Активные средства обнаружения ошибок обычно объединя-ются в диагностический монитор:
параллельный процесс, кото-рый периодически анализирует состояние системы с целью обна-ружить ошибку. Большие программные системы, управляющие ресурсами, часто содержат ошибки, приводящие к потере ресур-сов на длительное время. Например, управление памятью опера-ционной системы сдает блоки памяти «в аренду» программам пользователей и другим частям операционной системы. Ошибка в этих самых «других частях» системы может иногда вести к не-правильной работе блока управления памятью, занимающегося возвратом сданной ранее в аренду памяти, что вызывает медлен-ное вырождение системы.

Диагностический монитор можно реализовать как периоди-чески выполняемую задачу (например, она планируется на каж-дый час) либо как задачу с низким приоритетом, которая плани-руется для выполнения в то время, когда система переходит в со-стояние ожидания. Как и прежде, выполняемые монитором конкретные проверки зависят от специфики системы, но некото-рые идеи будут понятны из примеров. Монитор может обследо-вать основную память, чтобы обнаружить блоки памяти, не вы-деленные ни одной из выполняемых задач и не включенные в си-стемный список свободной памяти. Он может проверять также необычные ситуации: например, процесс не планировался для выполнения в течение некоторого разумного интервала времени. Монитор может осуществлять поиск «затерявшихся» внутри си-стемы сообщений или операций ввода-вывода, которые необыч-но долгое время остаются незавершенными, участков памяти на диске, которые не помечены как выделенные и не включены в спи-сок свободной памяти, а также различного рода странностей в файлах данных.

Иногда желательно, чтобы в чрезвычайных обстоятельствах монитор выполнял диагностические тесты системы. Он может вы-зывать определенные системные функции, сравнивая их результат с заранее определенным и проверяя, насколько разумно время вы-полнения. Монитор может также периодически предъявлять сис-теме «пустые» или «легкие» задания, чтобы убедиться, что система функционирует хотя бы самым примитивным образом.


  Перевод


  Ссылка на автора

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

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

В этом руководстве вы узнаете, как моделировать временные ряды остаточных ошибок и использовать их для корректировки прогнозов с помощью Python.

После завершения этого урока вы узнаете:

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

Давайте начнем.

  • Обновление январь / 2017: Улучшены некоторые примеры кода, чтобы быть более полными.

Модель остаточных ошибок

Разница между тем, что ожидалось, и тем, что было предсказано, называется остаточной ошибкой.

Он рассчитывается как:

residual error = expected - predicted

Как и сами входные наблюдения, остаточные ошибки из временного ряда могут иметь временную структуру, такую ​​как тренды, систематическая ошибка и сезонность.

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

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

Затем прогнозируемая ошибка может быть вычтена из прогнозирования модели и, в свою очередь, обеспечит дополнительное повышение производительности.

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

Авторегрессия временного ряда остаточной ошибки называется моделью скользящего среднего (MA). Это сбивает с толку, потому что это не имеет никакого отношения к процессу сглаживания скользящей средней. Думайте об этом как о брате с процессом авторегрессии (AR), за исключением отлаженной остаточной ошибки, а не отстающих необработанных наблюдений.

В этом уроке мы разработаем модель авторегрессии временных рядов остаточных ошибок.

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

Набор данных ежедневных женских родов

Этот набор данных описывает количество ежедневных женских рождений в Калифорнии в 1959 году.

Единицами отсчета являются 365 наблюдений. Источник набора данных приписан Ньютону (1988).

Скачайте и узнайте больше о наборе данных здесь,

Загрузите набор данных и поместите его в текущий рабочий каталог с именем файла «ежедневно общая-женщина-births.csv«.

Ниже приведен пример загрузки набора данных ежедневных родов из CSV.

from pandas import Series
from matplotlib import pyplot
series = Series.from_csv('daily-total-female-births.csv', header=0)
print(series.head())
series.plot()
pyplot.show()

При выполнении примера печатаются первые 5 строк загруженного файла.

Date
1959-01-01 35
1959-01-02 32
1959-01-03 30
1959-01-04 31
1959-01-05 44
Name: Births, dtype: int64

Набор данных также отображается в виде линейного графика наблюдений во времени.

Мы видим, что нет явной тенденции или сезонности. Набор данных выглядит стационарно, что предполагает использование модели авторегрессии.

Модель прогнозирования постоянства

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

Это называется «наивный прогноз» или модель прогнозирования постоянства. Эта модель предоставит прогнозы, из которых мы можем рассчитать временной ряд остаточной ошибки. С другой стороны, мы могли бы разработать модель авторегрессии временного ряда и использовать ее в качестве нашей модели. Мы не будем разрабатывать модель авторегрессии в этом случае для краткости и сосредоточимся на модели остаточной ошибки.

Мы можем реализовать модель персистентности в Python.

После загрузки набора данных он формулируется как контролируемая проблема обучения. Отставленная версия набора данных создается, когда предыдущий временной шаг (t-1) используется в качестве входной переменной, а следующий временной шаг (t + 1) берется в качестве выходной переменной.

# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']

Далее набор данных разбивается на обучающие и тестовые наборы. В общей сложности 66% данных хранятся для обучения, а оставшиеся 34% хранятся для тестового набора. Для персистентной модели обучение не требуется; это всего лишь стандартный подход к испытаниям.

После разделения наборы поездов и тестов разделяются на входные и выходные компоненты.

# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]

Модель постоянства применяется путем прогнозирования выходного значения (Y) как копия входного значения (Икс).

# persistence model
predictions = [x for x in test_X]

Остаточные ошибки затем рассчитываются как разница между ожидаемым результатом (test_y) и прогноз (прогнозы).

# calculate residuals
residuals = [test_y[i]-predictions[i] for i in range(len(predictions))]

Пример объединяет все это и дает нам набор остаточных ошибок прогноза, которые мы можем изучить в этом руководстве.

from pandas import Series
from pandas import DataFrame
from pandas import concat
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model
predictions = [x for x in test_X]
# calculate residuals
residuals = [test_y[i]-predictions[i] for i in range(len(predictions))]
residuals = DataFrame(residuals)
print(residuals.head())

Затем в примере выводятся первые 5 строк остаточных ошибок прогноза.

0   9.0
1 -10.0
2   3.0
3  -6.0
4  30.0

Теперь у нас есть временной ряд остаточной ошибки, который мы можем смоделировать.

Авторегрессия остаточной ошибки

Мы можем смоделировать временной ряд остаточной ошибки, используя модель авторегрессии.

Это модель линейной регрессии, которая создает взвешенную линейную сумму отстающих членов остаточной ошибки. Например:

error(t+1) = b0 + b1*error(t-1) + b2*error(t-2) ...+ bn*error(t-n)

Мы можем использовать модель авторегрессии (AR), предоставленную библиотека statsmodels,

Основываясь на модели персистентности в предыдущем разделе, мы можем сначала обучить модель остаточным ошибкам, рассчитанным на основе обучающего набора данных. Это требует, чтобы мы сделали прогнозы постоянства для каждого наблюдения в наборе обучающих данных, а затем создали модель AR следующим образом.

from pandas import Series
from pandas import DataFrame
from pandas import concat
from statsmodels.tsa.ar_model import AR
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model on training set
train_pred = [x for x in train_X]
# calculate residuals
train_resid = [train_y[i]-train_pred[i] for i in range(len(train_pred))]
# model the training set residuals
model = AR(train_resid)
model_fit = model.fit()
window = model_fit.k_ar
coef = model_fit.params
print('Lag=%d, Coef=%s' % (window, coef))

При выполнении этого фрагмента печатается выбранное запаздывание 15 и 16 коэффициентов (пересечение и по одному для каждого запаздывания) обученной модели линейной регрессии.

Lag=15, Coef=[ 0.10120699 -0.84940615 -0.77783609 -0.73345006 -0.68902061 -0.59270551
-0.5376728 -0.42553356 -0.24861246 -0.19972102 -0.15954013 -0.11045476
-0.14045572 -0.13299964 -0.12515801 -0.03615774]

Затем мы можем пройти через набор тестовых данных и для каждого временного шага мы должны:

  1. Рассчитать прогноз устойчивости (t + 1 = t-1).
  2. Прогнозировать остаточную ошибку с помощью модели авторегрессии.

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

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

Это прогноз шага вперед или скользящий прогноз, модель.

В итоге мы получаем временной ряд остаточной ошибки прогноза из набора данных поезда и прогнозируемую остаточную ошибку в наборе тестовых данных.

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

from pandas import Series
from pandas import DataFrame
from pandas import concat
from statsmodels.tsa.ar_model import AR
from matplotlib import pyplot
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model on training set
train_pred = [x for x in train_X]
# calculate residuals
train_resid = [train_y[i]-train_pred[i] for i in range(len(train_pred))]
# model the training set residuals
model = AR(train_resid)
model_fit = model.fit()
window = model_fit.k_ar
coef = model_fit.params

# walk forward over time steps in test
history = train_resid[len(train_resid)-window:]
history = [history[i] for i in range(len(history))]
predictions = list()
expected_error = list()
for t in range(len(test_y)):
	# persistence
	yhat = test_X[t]
	error = test_y[t] - yhat
	expected_error.append(error)
	# predict error
	length = len(history)
	lag = [history[i] for i in range(length-window,length)]
	pred_error = coef[0]
	for d in range(window):
		pred_error += coef[d+1] * lag[window-d-1]
	predictions.append(pred_error)
	history.append(error)
	print('predicted error=%f, expected error=%f' % (pred_error, error))
# plot predicted error
pyplot.plot(expected_error)
pyplot.plot(predictions, color='red')
pyplot.show()

При выполнении примера сначала печатается прогнозируемая и ожидаемая остаточная ошибка для каждого временного шага в тестовом наборе данных.

...
predicted error=-1.951332, expected error=-10.000000
predicted error=6.675538, expected error=3.000000
predicted error=3.419129, expected error=15.000000
predicted error=-7.160046, expected error=-4.000000
predicted error=-4.179003, expected error=7.000000
predicted error=-10.425124, expected error=-5.000000

Затем отображается фактическая остаточная ошибка для временного ряда (синий) по сравнению с прогнозируемой остаточной ошибкой (красный).

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

Правильные прогнозы с моделью остаточных ошибок

Модель остаточной ошибки прогноза интересна, но она также может быть полезна для более точных прогнозов.

С хорошей оценкой ошибки прогноза на шаге по времени мы можем делать более точные прогнозы.

Например, мы можем добавить ожидаемую ошибку прогноза к прогнозу, чтобы исправить его и, в свою очередь, улучшить навыки модели.

improved forecast = forecast + estimated error

Давайте сделаем это на примере.

Допустим, что ожидаемое значение для временного шага равно 10. Модель прогнозирует 8 и оценивает ошибку как 3. Улучшенный прогноз будет:

improved forecast = forecast + estimated error
improved forecast = 8 + 3
improved forecast = 11

Это принимает фактическую ошибку прогноза от 2 единиц до 1 единицы.

Мы можем обновить пример из предыдущего раздела, чтобы добавить предполагаемую ошибку прогноза в прогноз постоянства следующим образом:

# correct the prediction
yhat = yhat + pred_error

Полный пример приведен ниже.

from pandas import Series
from pandas import DataFrame
from pandas import concat
from statsmodels.tsa.ar_model import AR
from matplotlib import pyplot
from sklearn.metrics import mean_squared_error
series = Series.from_csv('daily-total-female-births.csv', header=0)
# create lagged dataset
values = DataFrame(series.values)
dataframe = concat([values.shift(1), values], axis=1)
dataframe.columns = ['t-1', 't+1']
# split into train and test sets
X = dataframe.values
train_size = int(len(X) * 0.66)
train, test = X[1:train_size], X[train_size:]
train_X, train_y = train[:,0], train[:,1]
test_X, test_y = test[:,0], test[:,1]
# persistence model on training set
train_pred = [x for x in train_X]
# calculate residuals
train_resid = [train_y[i]-train_pred[i] for i in range(len(train_pred))]
# model the training set residuals
model = AR(train_resid)
model_fit = model.fit()
window = model_fit.k_ar
coef = model_fit.params

# walk forward over time steps in test
history = train_resid[len(train_resid)-window:]
history = [history[i] for i in range(len(history))]
predictions = list()
for t in range(len(test_y)):
	# persistence
	yhat = test_X[t]
	error = test_y[t] - yhat
	# predict error
	length = len(history)
	lag = [history[i] for i in range(length-window,length)]
	pred_error = coef[0]
	for d in range(window):
		pred_error += coef[d+1] * lag[window-d-1]
	# correct the prediction
	yhat = yhat + pred_error
	predictions.append(yhat)
	history.append(error)
	print('predicted=%f, expected=%f' % (yhat, test_y[t]))
# error
mse = mean_squared_error(test_y, predictions)
print('Test MSE: %.3f' % mse)
# plot predicted error
pyplot.plot(test_y)
pyplot.plot(predictions, color='red')
pyplot.show()

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

Среднеквадратическая ошибка скорректированных прогнозов рассчитывается как 56,234, что намного лучше, чем показатель 83,744 только для модели постоянства.

...
predicted=40.675538, expected=37.000000
predicted=40.419129, expected=52.000000
predicted=44.839954, expected=48.000000
predicted=43.820997, expected=55.000000
predicted=44.574876, expected=50.000000
Test MSE: 56.234

Наконец, ожидаемые значения для тестового набора данных нанесены (синим цветом) по сравнению с исправленным прогнозом (красным).

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

Резюме

В этом руководстве вы узнали, как моделировать временные ряды остаточных ошибок и использовать их для корректировки прогнозов с помощью Python.

В частности, вы узнали:

  • О подходе скользящего среднего (MA) к разработке авторегрессионной модели до остаточной ошибки.
  • Как разработать и оценить модель остаточной ошибки для прогнозирования ошибки прогноза.
  • Как использовать прогнозы ошибки прогноза, чтобы исправить прогнозы и улучшить навыки модели.

У вас есть вопросы о моделях Moving Average или об этом уроке?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.

Ошибка прогнозирования: виды, формулы, примеры

Ошибка прогнозирования — это такая величина, которая показывает, как сильно прогнозное значение отклонилось от фактического. Она используется для расчета точности прогнозирования, что в свою очередь помогает нам оценивать как точно и корректно мы сформировали прогноз. В данной статье я расскажу про основные процентные «ошибки прогнозирования» с кратким описанием и формулой для расчета. А в конце статьи я приведу общий пример расчётов в Excel. Напомню, что в своих расчетах я в основном использую ошибку WAPE или MAD-Mean Ratio, о которой подробно я рассказал в статье про точность прогнозирования, здесь она также будет упомянута.

В каждой формуле буквой Ф обозначено фактическое значение, а буквой П — прогнозное. Каждая ошибка прогнозирования (кроме последней!), может использоваться для нахождения общей точности прогнозирования некоторого списка позиций, по типу того, что изображен ниже (либо для любого другого подобной детализации):

Алгоритм для нахождения любой из ошибок прогнозирования для такого списка примерно одинаковый: сначала находим ошибку прогнозирования по одной позиции, а затем рассчитываем общую. Итак, основные ошибки прогнозирования!


MPE — Mean Percent Error

MPE — средняя процентная ошибка прогнозирования. Основная проблема данной ошибки заключается в том, что в нестабильном числовом ряду с большими выбросами любое незначительное колебание факта или прогноза может значительно поменять показатель ошибки и, как следствие, точности прогнозирования. Помимо этого, ошибка является несимметричной: одинаковые отклонения в плюс и в минус по-разному влияют на показатель ошибки.

Ошибка прогнозирования MPE

  1. Для каждой позиции рассчитывается ошибка прогноза (из факта вычитается прогноз) — Error
  2. Для каждой позиции рассчитывается процентная ошибка прогноза (ошибка прогноза делится на фактический показатель) — Percent Error
  3. Находится среднее арифметическое всех процентных ошибок прогноза (процентные ошибки суммируются и делятся на количество) — Mean Percent Error

MAPE — Mean Absolute Percent Error

MAPE — средняя абсолютная процентная ошибка прогнозирования. Основная проблема данной ошибки такая же, как и у MPE — нестабильность.

Ошибка прогнозирования MAPE

  1. Для каждой позиции рассчитывается абсолютная ошибка прогноза (прогноз вычитается из факта по модулю) — Absolute Error
  2. Для каждой позиции рассчитывается абсолютная процентная ошибка прогноза (абсолютная ошибка прогноза делится на фактический показатель) — Absolute Percent Error
  3. Находится среднее арифметическое всех абсолютных процентных ошибок прогноза (абсолютные процентные ошибки суммируются и делятся на количество) — Mean Absolute Percent Error

Вместо среднего арифметического всех абсолютных процентных ошибок прогноза можно использовать медиану числового ряда (MdAPE — Median Absolute Percent Error), она наиболее устойчива к выбросам.


WMAPE / MAD-Mean Ratio / WAPE — Weighted Absolute Percent Error

WAPE — взвешенная абсолютная процентная ошибка прогнозирования. Одна из «лучших ошибок» для расчета точности прогнозирования. Часто называется как MAD-Mean Ratio, то есть отношение MAD (Mean Absolute Deviation — среднее абсолютное отклонение/ошибка) к Mean (среднее арифметическое). После упрощения дроби получается искомая формула WAPE, которая очень проста в понимании:

Ошибка прогнозирования WAPE MAD-Mean Ratio

  1. Для каждой позиции рассчитывается абсолютная ошибка прогноза (прогноз вычитается из факта, по модулю) — Absolute Error
  2. Находится сумма всех фактов по всем позициям  (общий фактический объем)
  3. Сумма всех абсолютных ошибок делится на сумму всех фактов — WAPE

Данная ошибка прогнозирования является симметричной и наименее чувствительна к искажениям числового ряда.

Рекомендуется к использованию при расчете точности прогнозирования. Более подробно читать здесь.


RMSE (as %) / nRMSE — Root Mean Square Error

RMSE — среднеквадратичная ошибка прогнозирования. Примерно такая же проблема, как и в MPE и MAPE: так как каждое отклонение возводится в квадрат, любое небольшое отклонение может значительно повлиять на показатель ошибки. Стоит отметить, что существует также ошибка MSE, из которой RMSE как раз и получается путем извлечения корня. Но так как MSE дает расчетные единицы измерения в квадрате, то использовать данную ошибку будет немного неправильно.

Ошибка прогнозирования RMSE

  1. Для каждой позиции рассчитывается квадрат отклонений (разница между фактом и прогнозом, возведенная в квадрат) — Square Error
  2. Затем рассчитывается среднее арифметическое (сумма квадратов отклонений, деленное на количество) — MSE — Mean Square Error
  3. Извлекаем корень из полученного результат — RMSE
  4. Для перевода в процентную или в «нормализованную» среднеквадратичную ошибку необходимо:
    1. Разделить на разницу между максимальным и минимальным значением показателей
    2. Разделить на разницу между третьим и первым квартилем значений показателей
    3. Разделить на среднее арифметическое значений показателей (наиболее часто встречающийся вариант)

MASE — Mean Absolute Scaled Error

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

Важно! Если предыдущие ошибки прогнозирования мы могли использовать для нахождения точности прогнозирования некого списка номенклатур, где каждой из которых соответствует фактическое и прогнозное значение (как было в примере в начале статьи), то данная ошибка для этого не предназначена: MASE используется для расчета точности прогнозирования одной единственной позиции, основываясь на предыдущих показателях факта и прогноза, и чем больше этих показателей, тем более точно мы сможем рассчитать показатель точности. Вероятно, из-за этого ошибка не получила широкого распространения.

Здесь данная формула представлена исключительно для ознакомления и не рекомендуется к использованию.

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

Ошибка прогнозирования MASE

Также, хочу отметить, что существует ошибка RMMSE (Root Mean Square Scaled Error — Среднеквадратичная масштабированная ошибка), которая примерно похожа на MASE, с теми же преимуществами и недостатками.


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

Об авторе

HeinzBr

Автор статей и создатель сайта SHTEM.RU

  • Устранение кадастровой ошибки при наложении границ земельных участков
  • Устойчивые повторяющиеся грамматические ошибки
  • Устойчивость к ошибкам программного обеспечения
  • Установщик обнаружил ошибку 0х80096002 недопустимый сертификат лица
  • Устойчивое словосочетание глухое сено исправить ошибки