- •Алгоритмические основы программной инженерии
- •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 Вопрос. Механизмы диспетчеризации (планирования) задач.
Необходимость повторного использования кода
Когда программы набивались на перфокартах, для компоновки использовались так называемые статические библиотеки программ. Код библиотеки представлял собой просто колоду перфокарт, вставляемую в пачку программы для обеспечения её функциональности.
Со временем появились динамические компонуемые библиотеки – DLL (dynamic link libraries). Одно из основных назначений библиотек DLL — позволить приложениям загружать код, который обрабатывается во время выполнения, вместо того, чтобы компоновать его в само приложение во время компиляции. При этом один и тот же модуль может одновременно использоваться несколькими приложениями.
Другое преимущество использования DLL состоит в том, что приложение становится модульным. Это упрощает процесс обновления приложений, поскольку при необходимости обновляется не все приложение полностью, а только определенные библиотеки.
Функциональное программирование. Достоинства и недостатки
Достоинства:
-
Если имеется ошибка, то она исправляется однократно в теле той функции, где она возникла.
-
В тело функции можно добавлять локальные переменные, которые не будут конфликтовать с глобальными.
-
Уменьшение количества кода программы в целом, повышение удобочитаемости.
Недостатки:
-
Появляется необходимость контроля совместимости версий создаваемой системы и версий используемых библиотек. Самым характерным примером ошибки данного типа считается авария ракеты-носителя «Ариан-5», вызванная использованием программного модуля, разработанного для ракеты «Ариан-4».
-
Многие библиотеки коммерческие и требуют денежных затрат.
-
Библиотеки недостаточно универсальны и не реализуют той функциональности, которая требуется создаваемой системе, либо, наоборот, слишком универсальны и в результате неэффективны, неудобны или содержат много избыточной для разрабатываемого проекта функциональности.
——————————————————————————
2 Вопрос. Этапы разработки программного обеспечения. Состав технического задания.
——————————————————————————
Модели процесса разработки программного обеспечения
1. Каскадная (водопадная) модель.
2. Итеративная модель (итерационная/инкрементная — почти одно и то же).
— 2.1 RUP (Rational Unified Process).
— 2.2 AGILE.
— 2.2.1 XP (Extreme Programming).
3. Спиральная модель.
Каскадная модель
(Waterfall — водопад)
1. Подготовка.
Сбор и обработка требований. Предварительное планирование этапов работ, сроков, ресурсов и стоимости.
2. Проектирование.
Получение технических заданий, разработка спецификаций. Партнер получает документальное изложение своих требований и планы проведения работ.
3. Реализация.
3.1 Дизайн — получение графических макетов, визуальных форм, разработка интерфейсов. Создание индивидуального стиля.
3.2 Кодирование — написание исходного кода.
3.3 Тестирование — проверка программы на соответствие всем предъявляемым к ней требованиям.
3.4 Документирование — передача накопленных знаний пользователям и другим разработчикам.
4. Поддержка.
4.1 Внедрение — установка программного обеспечения, обучение пользователей.
4.2 Сопровождение — исправление выявленных ошибок, поддержка пользователей.
Когда используется?
-
Все требования известны, понятны и зафиксированы. Противоречивых требований не имеется.
-
Нет проблем с доступностью программистов нужной квалификации.
-
В относительно небольших проектах.