- •1. Роль ПО и компьютеров в производстве, социальной жизни и науке.
- •2. Инженерия ПО
- •3. Проблемы разработки ПО и пути их решения
- •4. Характеристики качества ПО
- •5. Факторы, влияющие на качество ПО
- •6. Системный подход к разработке ПО. Временной и "пространственный " аспекты системного подхода
- •7. Этапы жизненного цикла ПО. Каскадная модель жизненного цикла ПО.
- •8. Конструирование ПО
- •9. Стандарты по разработке ПО. Виды и значение стандартов, требования стандартов
- •10. Три группы процессов создания ПО
- •11. Жизненный цикл ПО и процессы верификации.
- •12. Тестирование, верификация, валидация. Различие в понятиях. V образная модель жизненного цикла ПО
- •13. Спиральная модель ЖЦ ПО.
- •14. «Тяжелые и легкие» технологии разработки ПО. Экстремальное (ХР) программирование
- •16. Виды документов, выпускаемых на ПО по этапам разработки системы.
- •17. Итеративный характер проектирования ПО. Стадии проектирования.
- •19. CASE технологии разработки ПО.
- •20. Технология Ration Rose,UML
- •21. Структура системы, иерархия управления и структура ПО
- •22. Цикличность решения задач управления в системах с ЦВМ
- •23. Временная диаграмма работы системы. Представления работы ПО СТС в виде набора «сечений», выполняемых последовательно.
- •24. Представление работы ПО СТС в виде набора параллельных процессов.
- •25. Задачи и процессы. Контекст процесса
- •26. Обобщенная схема возможных вариантов совместного использования информации взаимодействующими процессами
- •Закон Амдела
- •28. Критический ресурс ЦВМ. Основное правило защиты ресурсов ЦВМ
- •29. Синхронизация процессов
- •Взаимное исключение процессов. Использование мьютексов
- •30. Задача синхронизации «Читатели-писатели»
- •Задачи синхронизации. «Обедающие философы»
- •31. Технология синхронизации ПО. Система Intel Thread Checker (ITC) и типы обнаруживаемых ею ошибок.
- •32. Конструирование ПО
- •33. Минимизация сложности ПО. Стандартные приемы в конструировании
- •35. Особенности конструирования программ для встроенных ЦВМ критических систем. Фиксированное распределение памяти
- •36. Проектирование снизу-вверх и проектирование сверху-вниз. Программные заглушки и их использование
- •37. Основные понятия структурного подхода к проектированию ПО.
- •Основные понятия объектно - ориентированного подхода (ООП) к конструированию ПО.
- •38. Мультиагентные технологии
- •39. Классы реального мира предметной области и искусственные объекты. Чрезмерно большие и неправильно названные классы
- •40. Эвристические приемы конструирования методов, предотвращение дублирования кода
- •41. Сокрытие информации. Две категории секретов программ.
- •Избыточное распространение информации в программе
- •Опасность использования глобальных переменных
- •45. Сопряжение между модулями. Критерии оценки сопряжения. Виды сопряжения
- •46. Эталоны для контроля работы ПО
- •47. Низкоуровневые средства обнаружения ошибочного функционирования ПО
- •Исключительные ситуации (Исключения)
- •48. Выбор способа обработки некорректных входных данных
- •49. Способы обработки возможных ошибок
- •50. Утверждения и общие принципы их использования
- •51. Стратегии безопасности. Три уровня реакции ПО на обнаруженную ошибку. Отказоустойчивые системы
- •54. Ошибки ПО, отладка и тестирование ПО.
- •55. Анализ обнаруживаемых в ПО ошибок и важность его проведения
- •Классификация ошибок ПО
- •56. Статическая отладка и динамическая отладка
- •Функциональная отладка
- •57. Принцип «белого» и «черного» ящика при динамической отладке ПО.
- •58. Структурная динамическая отладка
- •59. Автономная отладка (АО) и комплексная отладка (КО) ПО
- •60. Тестовое окружение ПО. Драйверы и заглушки.
- •61. Последовательность действий при отладке ПО.
- •Принципы выделения маршрутов для отладки.
- •62. Приближенный метод оценки числа вариантов для отладки ПО для «широкого графа» программы. Графы деревья, как модели структуры ПО
- •63. Регулярное дерево и устойчивость его структурного параметра
- •64. Контроль отлаженности ПО в процессе отладки.
- •67. Метод наименьших квадратов для аппроксимации экспериментальных данных
ния ошибки. Если его поиски увенчались успехом, то локализация и устранение ошибки - удел разработчика ПО.
Впроблеме борьбы с ошибками имеется три направления:
уменьшение первичного потока ошибок за счет методов проектирования,
проведение отладки,
обеспечение устойчивости (толерантности) программ к ошибкам - возможности сохранения работоспособности ПО при их возникновении или возможности оперативного их устранения с продолжением после этого функционирования ПО.
55.Анализ обнаруживаемых в ПО ошибок и важность его проведения
Всоответствии с используемой в психологии моделью запоминающий ресурс человека состоит из трех основных элементов: рабочей, кратковременной и долговременной памяти.
Рабочая память предназначена для хранения сенсорной информации и время удержания этой информации доли секунды.
Кратковременная память позволяет хранить семантические сущности в течении времени до 30 секунд.
Долговременная память представляется неисчерпаемой и по времени хранения также. Однако, ее загрузка и особенно выгрузка информации требует от человека усилий.
Наибольший интерес с точки зрения совершения ошибок имеет емкость и устройство кратковременной памяти. Она была описана Дж. Миллером. Имеется число Миллера , равное 7 2 , характеризующее возможности человека по обработке информации. Число Миллера характеризует число семантических сущностей, которыми человек может манипулировать без ошибок, одновременно удерживая их в памяти.
Преодоление этих ограничений возможно за счет структурирования информации с отбрасыванием несу-
щественных ее частей, выделения независимых признаков. В результате 7 2 сущностей могут быть сценами, иерархическими структурами и т. п. Такую организацию памяти можно развивать, конечно, здесь большую роль играют природные способности.
Имеются работы , которые связывают сложность с нагрузкой на кратковременную память. Перегрузил ее – вот тебе и ошибка.
В результате анализа и классификации ошибок ПО определяются какие варианты отладки надо рассмотреть дополнительно, каких инструментов не хватает разработчику, какое дополнительное моделирование требуется, какие сверки документов, выпускаемых в процессе разработки, необходимо провести дополнительно для устранения недопониманий и неоднозначностей при переходе от исходных документов к последующим, какие меры надо предпринять для повышения технологической дисциплины разработчиков.
[Введите текст]
Для выдвижения гипотезы о причине ошибки очень важно иметь определенный опыт наблюдений за проявившимися ошибками, который аккумулируется в статистике совершенных ошибок.
Поэтому перед выдвижением гипотезы причины встретившейся ошибки необходимо пробежаться по перечню ранее совершённых и устранённых ошибок – не встречалась ли подобная ошибка ранее. Желательно этот перечень держать не в голове, а вести его документально.
При обнаружении ошибки разработчик должен ответить на пять вопросов:
в чем состоит ошибка,
когда ( на каком этапе) сделана ошибка,
почему она не проявлялась ранее ,
почему она не была обнаружена при отладке,
как можно было ее предотвратить.
Ответы на эти вопросы являются аналитической деятельностью и способствуют накоплению позитивного опыта в борьбе с ошибками.
Классификация ошибок ПО
Ошибки в ПО совершают люди. Человеку свойственно ошибаться. С точностью до наименования данная классификация ошибок ПО соответствует, изучаемыми психологами, причинам ошибок человека:
1)Ошибки – промахи или оплошности, как результат автоматических действий на подсознательном уровне Неправильные действия по правильным предпосылкам (планам), представлениям.
2)Ошибки – заблуждения, как результат сознательных , но не правильных размышлений. В результате совершаются внешне правильные действия, но по неправильным предпосылкам, целям, установкам, планам, представлениям.
Отталкиваясь от данных исследований и технологии разработки ПО будем классифицировать ошибки ПО на программные и алгоритмические.
При этом было бы правильным ожидать, чтобы программные ошибки, связанные с невнимательностью или забывчивостью, обнаруживались и устранялись на стадии отладки ПО, тогда как алгоритмические ошибки, связанные с неправильными представлениями о процессе функционирования системы, с отсутствием необходимых знаний и в какой-то своей части требовали привлечения дополнительного моделирования работы системы и испытания ПО в составе СТС. Ошибка является алгоритмической, когда возникает вопрос «Правильную ли работу делает ПО?».
Технологические средства отладки ПО не могут гарантировать полного выявления ошибок, содержащихся в ПО, и часть из них проявляется при эксплуатации ПО. Изучение и классификация ошибок ПО позволяет обнаружить слабые места в технологии разработки ПО и усовершенствовать ее, что способствует повышению надежности ПО.
82
Поэтому наряду с улучшением технологии проектирования, уменьшающей поток первичных ошибок ПО, и технологии отладки необходимо конструировать ПО так, чтобы оно обладало свойством толерантности - устойчивости к ошибкам.
Алгоритмические ошибки связаны с невыполнением программой заданных функций из-за неправильного алгоритма, недостатка знаний, неправильно поставленных целей. В результате в последовательной цепочке функциональных действий отсутствует одно или несколько своевременно необходимых действий или имеются неправильные или несвоевременные функциональные действия и программа не получает требуемый результат.
Таким образом, алгоритмические ошибки имеют функциональную окраску, а программа безошибочно реализует неправильный алгоритм.
Часть алгоритмических ошибок связана с невыполнением требований по управлению аппаратурой системы или неправильностью этих требований, изложенных в НТД на аппаратуру – несоответствию реального прибора его описанию, а также требований по управлению СТС в целом.
Отдельно следует говорить о недостатках или отсутствии внутренних или внешних по отношению к ПО средств контроля правильности вводимых в ПО исходных данных. Это тоже недостаток алгоритма работы с системой.
Алгоритмические ошибки обнаруживаются трудно и могут обнаруживаться при отладке ПО в случае использования реальных образцов аппаратуры системы и объекта управления или при адекватной имитации аппаратуры СТС и объекта управления.
Одна из самых важных истин профессии разработчика ПО - любая странность в работе программы, любое замечание должно быть разобрано до конца, так как за ними вероятно стоит ошибка. Многие ошибки имеют сложный неочевидный характер и не всегда повторяются при повторении фрагмента ПО(изменились данные или временные соотношения при исполнении, или работа программного окружения).В этих условиях имеется тенденция списать причину аномального поведения ПО на «сбой».
Следует заметить, что иногда употребляемый термин «программный сбой» неверен и должен быть отвергнут, так как отсутствуют физические причины «сбоя ПО» в отличие от аппаратного сбоя (под сбоем понимается кратковременная самоустраняющаеся потеря работоспособности). На работу ПО не влияют ни радиация, ни скачки питающего напряжения – они влияют на работу ЦВМ, и могут явиться причиной их самоустраняющихся сбоев.
Программных сбоев не бывает - есть программные ошибки, проявляющиеся при редких сочетаниях исходных данных или временных соотношений программного окружения. Поэтому, если имеется возможность доказать отсутствие аппаратного сбоя (конструкция ЦВМ – отказосбоеустойчива) необходимо продолжить поиск ошибки ПО.
Происхождение же термина программный сбой, который часто встречается в переведенных с английского книжках, скорее следует относить к неточностям перевода термина проявившаяся ошибка, приводящая к дефекту функционирования ПО и системы.
[Введите текст]