- •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. Метод наименьших квадратов для аппроксимации экспериментальных данных
Имеем выражение для определения относительного увеличения производительности Ам за счет распараллеливания вычислений
Ам = Тодн/Тпар = 1/ (а+(1-а)/Р)
При большом числе процессоров Р.
(1-а)/Р < а и Ам ≈ 1/а
Как следствие закона Амдела ,можно доказать , что если половина программы не распараллелена,то сколько бы мы процессорных ядер не использовали, производительность этой программы вырастет не более ,чем в два раза.
Ам= 1/(0.5+…. ) 2
28. Критический ресурс ЦВМ. Основное правило защиты ресурсов ЦВМ
Сложное поведение СТС реализуется многозадачной работой ПО её системной ЦВМ. Взаимодействие процессов в пространстве ( Буквально в адресном пространстве ЦВМ мы «прорывали» изоляцию, возведенную ОС, средствами самой ОС)) нами было рассмотрено ранее. Но все в природе развивается в пространстве и во времени.
Два процесса или задачи или программы называются параллельными, если их выполнение может перекрываться во времени т.е. второй процесс начинается до завершения первого. Механизмы переключения процессов через контекст нами тоже рассмотрены.
Задачи и стоящие за ними процессы могут исполняться параллельно без проблем до тех пор, пока не возникнет потребность обращения их к общим ресурсам ЦВМ или в организации взаимодействия между ними - обмена данными или управлением. При этом возникают определенные ограничения, связанные с очередностью (последовательностью) их выполнения, с необходимостью наличия подготовленной информации к моменту обращения за ней и разделением общих ресурсов ЦВМ и т.п.
При работе параллельных процессов возникают состояния «гонок»- состязаний, когда два или несколько процессов используют одну и ту же информацию и все могут и читать, и записывать ее. В этом случае критическим оказывается последовательность чтения и записи этой информации различными процессами.
Критический ресурс – ресурс к которому может иметь доступ только один процесс, хотя претендентов на доступ много. Часть программы, в которой осуществляется доступ к защищаемым критическим ре-
сурсам называется критической секцией. Пока процессы исполняются последовательно – ресурсы используются последовательно и проблем нет.
Проблема защиты критических ресурсов при попытке их совместного использования параллельными процессами является центральной проблемой при реализации мультипрограммирования.
44