- •Алгоритмические основы программной инженерии
- •1 Семестр вопросы и ответы
- •1 Вопрос. Кризисная история развития программного обеспечения: необходимость повторного использования кода, рост сложности по, модификация по.
- •Необходимость повторного использования кода
- •Функциональное программирование. Достоинства и недостатки
- •2 Вопрос. Этапы разработки программного обеспечения. Состав технического задания.
- •Модели процесса разработки программного обеспечения
- •Каскадная модель
- •Итеративная модель rup
- •Гибкий цикл agile
- •Итеративная модель xp
- •Спиральная модель
- •3 Вопрос. Проектирование и алгоритмизация программы. Свойства алгоритма.
- •4 Вопрос. Понятие и определение сложности алгоритма.
- •5 Вопрос. Кодирование, тестирование и отладка программы.
- •Концепция xp: программирование в паре.
- •Тестирование и отладка.
- •6 Вопрос. Доработка и сопровождение программного продукта.
- •7 Вопрос. Модели жизненного цикла по. Экстремальное программирование (xp).
- •Концепция xp
- •11. Взаимодействие с заказчиком.
- •Если требования проекта могут быть сформулированы достаточно исчерпывающим образом, то имеет смысл прибегать к более надежной стратегии разработки.
- •8 Вопрос. Унифицированная концепция (rup) разработки по: фазы, операции. Определение требований в uml-формате.
- •9 Вопрос. Унифицированная концепция (rup) разработки по: анализ и проектирование. Понятие класса, типы и примеры классов, uml-диаграммы.
- •Стратегия rup Rational Unified Process
- •1. Определение требований.
- •3. Реализация.
- •Ниже представлена самостоятельная работа — пример реализации диаграммы компонентов
- •4. Внедрение.
- •Ниже представлена самостоятельная работа — пример реализации диаграммы развертывания
- •10 Вопрос. Состав и функционал системного программного обеспечения.
- •Операционная система (ос)
- •Система управления файлами (суф)
- •Интерфейсная оболочка для взаимодействия пользователя с ос и операционными средами
- •Системы программирования
- •Трансляторы
- •Утилиты
- •11 Вопрос. Классификация языков программирования.
- •Не существует общепринятой систематичной таксономии языков программирования. Поколения языков
- •Функциональная классификация языков программирования
- •12 Вопрос. Определение ядра операционной системы.
- •13 Вопрос. Классификация операционных систем по функциональности.
- •Системы пакетной обработки
- •Системы разделения времени
- •Системы реального времени
- •14 Вопрос. Определение задачи. Преимущества и недостатки процессов и потоков.
- •15 Вопрос. Свойства задач.
- •16 Вопрос. Механизмы диспетчеризации (планирования) задач.
Системы реального времени
Критерием эффективности этих систем является способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы – реактивностью (способность выполнения критически важных задач в течение заранее заданных временных интервалов). Требования ко времени реакции зависят от специфики управляемого процесса.
В ОСРВ «мультипрограммная смесь» представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется по прерываниям (исходя из текущего состояния объекта) или в соответствии с расписанием плановых работ.
Способность аппаратуры компьютера и ОСРВ к быстрому ответу зависит в основном от скорости переключения одной задачи на другую и, в частности, от скорости обработки сигналов прерывания. Если для обработки прерывания процессор должен опросить сотни потенциальных источников прерывания, то реакция системы будет слишком медленной. Время обработки прерывания в ОСРВ часто определяет требования к классу процессора даже при небольшой его загрузке.
В ОСРВ не стремятся максимально загружать все устройства, наоборот, при проектировании программного управляющего комплекса обычно закладывается некоторый «запас» вычислительной мощности на случай пиковой нагрузки. Статистические аргументы о низкой вероятности возникновения пиковой нагрузки, основанные на том, что вероятность одновременного возникновения большого количества независимых событий очень мала, не применимы ко многим ситуациям в реальных системах управления. Например, в системе управления атомной электростанцией в случае возникновения крупной аварии атомного реактора многие аварийные датчики сработают одновременно и создадут коррелированную нагрузку. Если ОСРВ не спроектирована для поддержки подобной пиковой нагрузки, то может случиться так, что система не справится с работой именно тогда, когда она нужна в наибольшей степени.
Для разработки приложений реального времени используются средства профилирования (т. е. точного измерения времени выполнения конкретных методов).
Если задержка реакции системы на события недопустима, то ОС называется системой жесткого реального времени (hard real-time system). В противном случае — системой мягкого реального времени (soft real-time system).
——————————————————————————
14 Вопрос. Определение задачи. Преимущества и недостатки процессов и потоков.
——————————————————————————
Задача — набор операций, предназначенных для выполнения логически-законченной функции системы.
Два типа задач:
— процессы (Process).
— потоки (Thread).
Процесс — это отдельно загружаемый программный модуль, который во время исполнения имеет в памяти отдельное адресное пространство для данных.
Поток — это составная часть процесса. Каждый процесс содержит как минимум один поток.
Преимущества потоков:
1. Внутри одного программного модуля (например, exe-файла) может размещаться множество потоков, максимальное количество которых в большинстве ОС ограничивается только объемом оперативной памяти.
2. Потоки, принадлежащие одному процессу разделяют его ВАП (виртуальное адресное пространство), поэтому могут легко обмениваться данными посредством передачи, так называемых, указателей.
Процессы не имеют общей памяти (адресного пространства), поэтому ОС должна или целиком копировать данные из области памяти одной задачи в область памяти другой, или предусмотреть специальные механизмы доступа к данным из области памяти другой задачи.
Как правило, контекст потока значительно меньше контекста процесса.
Время переключения между потоками значительно меньше времени переключения между процессами.
В связи с этим, параллельно выполняемые задачи стремятся компоновать в виде потоков, работающих в пределах одного процесса.
Недостатки потоков:
1. Потоки не могут подгружаться динамически, т. е. при добавлении нового потока необходимо ввести соответствующие изменения в исходный код и перекомпилировать приложение. Процессы, в отличие от потоков, подгружаемы, что позволяет динамически изменять функции системы непосредственно в ходе её работы. Кроме того, процессам соответствуют отдельные программные модули, которые могут быть разработаны сторонними специалистами или компаниями. Например, библиотеки DLL. Тем самым обеспечивается дополнительная гибкость и возможность использования ранее разработанного ПО.
2. Потоки имеют доступ к областям данных друг друга, что может привести к ситуации, когда некорректно работающий поток повреждает данные другого потока. Процессы, в отличие от них, защищены от такого рода воздействия, так как попытки записи не в свою память приводят к возникновению исключения.
——————————————————————————