
- •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. Метод наименьших квадратов для аппроксимации экспериментальных данных
Иными словами, при нисходящей разработке написание большой программы начинается с программ, определяющих структуру решения задачи, а затем разрабатываются программы, в которых учитываются детали.
Примером разработки "снизу-вверх" является использования ранее разработанных программ, например, создания интегрированных офисных систем или создание программно-аппаратной системы компьютерного перевода с английского языка на русский, когда уже разработанная программараспознаватель FineReader объединяется с уже разработанными программами перевода "Сократ" и редактором.
При разработке "снизувверх" может оказаться, что программные интерфейсы не унифицированы, и тогда надо вводить программные преобразователи интерфейса, чтобы не затрагивать разработанный программный продукт.
При нисходящей разработке ПО в любой момент создания программного комплекса может иметься его работающий вариант, в котором часть программ, которые ещё не разработаны, заглушена и который даже можно подвергать отладке.
Технологической «заглушкой» называется программный имитатор (модель) еще не разработанных модулей - частей ПО. Самая простая «заглушка» возвращает управление в обратившуюся программу без действий. Более сложные «заглушки» могут выдавать заранее запасенные сообщения и имитировать время работы модуля «задержкой»через таймер. Последнее очень важно для систем реального времени.
В качестве заглушек могут быть использованы также упрощенные варианты имитируемых частей в простейшем случае заглушка при обращении присваивает вычисляемым данным некоторые заранее занесенные значения и возвращает результат. Чтобы начать тестирование как можно ранее недостающие модули нижних уровней можно заменить «заглушками».
37. Основные понятия структурного подхода к проектированию ПО.
Первой законченной методологией разработки ПО фактически стало структурное программирование. Эта методология широко применяется и сейчас.
Часто некоторую последовательность операторов необходимо повторить в нескольких местах программы или даже в нескольких программах. Чтобы не тратить усилия на повторное написание или копирование этих операторов в большинстве языков программирования предусмотрены средства для организации процедур, функций, подпрограмм.
Со временем стало ясно, что процедура это не столько средство уменьшения размера программы, сколько средство структуризации - разложения программы на логически связанные, замкнутые части, позволяющие уменьшить сложность понимания и сложность разработки большой программы.
Поэтому функционально законченные последовательности операторов стали оформлять в виде процедуры, даже если она используется однократно и отсутствует мотив, связанный с сокращением текста программы.
[Введите текст]