- •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. Метод наименьших квадратов для аппроксимации экспериментальных данных
В экстремальном программировании и других гибких технологиях разработки ПО рефакторинг является неотъемлемой частью цикла разработки ПО: разработчики попеременно то создают новые тесты и функциональности, то выполняют рефакторинг кода для улучшения его логичности и прозрачности.
Имеются некоторые видимые проблемы в коде, требующие рефакторинга:
дублирование кода;
длинный метод;
большой класс;
длинный список параметров;
избыточные временные переменные;
несгруппированные данные.
Рефакторинг следует отличать от оптимизации производительности. Как и рефакторинг, оптимизация обычно не изменяет поведение программы, а только ускоряет её работу. Но оптимизация часто затрудняет понимание кода, что противоположно рефакторингу
С другой стороны, нужно отличать рефакторинг от реинжиниринга, который осуществляется для расширения функциональности программного обеспечения. Как правило, крупные рефакторинги предваряют реинжиниринг.
35. Особенности конструирования программ для встроенных ЦВМ критических систем. Фиксированное распределение памяти
Для встроенных в системы ЦВМ набор исполняемых задач и соответственно программ фиксирован и всегда заранее при проектировании системы можно решить в какой области памяти будет выполняться программа. Эта область памяти закрепляется за программой. Транслятор с языка программирования в этом случае может выдавать код сразу в физических адресах. Этот код записывается в постоянное запоминающее устройство (ПЗУ), что повышает его защищенность. Данные для такого ПО, конечно, должны размещаться в ОЗУ, которое также фиксированным образом может быть распределено между известным набором программ.
Фиксированное распределение памяти облегчает решение задачи межпроцессного взаимодействия – обменные зоны памяти могут быть зафиксированы при проектировании ПО между всеми парами взаимодействующих процессов.
36. Проектирование снизу-вверх и проектирование сверху-вниз. Программные заглушки и их использование
Нами показано, что в большинстве случаев ПО имеет иерархическую структуру. Но при определенной структуре ПО остается выбор у разработчика в последовательности разработки структурных элементов ПО.
[Введите текст]
Рис. 13 Схема проектирования ПО» сверху вниз» и « снизу вверх»
В таких структурах в общем случае возможны два способа разработки компонентов (структурных элементов системы ПО) "сверхувниз" (нисходящая разработка) и "снизу-вверх" (восходящая разработка), что и изображено на рис.13. Существует классическое определение:
Разработка ПО системы "сверхувниз" заключается в том, что к разработке любого структурного элемента системы ПО приступают тогда, когда проведена разработка того элемента иерархической структуры, который является включающим (т. е. верхнего уровня для проектируемого).
Разработка по принципу "снизу-вверх" предполагает, что к разработке любого элемента приступают тогда, когда проведена разработка всех подчиненных ему элементов структуры - (элементов нижнего уровня иерархии).
Разработка "сверху - вниз"
Принцип разработки ПО "сверхувниз" обладает преимуществами в полноте и простоте системы.
54