- •Алгоритмические основы программной инженерии
- •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 Вопрос. Механизмы диспетчеризации (планирования) задач.
Интерфейсная оболочка для взаимодействия пользователя с ос и операционными средами
Операционная среда — интерфейс, необходимый прикладным программам для обращения к системным ресурсам ОС с целью получения определенного сервиса. Например, выполнение операций ввода-вывода, получение или освобождение участка памяти и т. д.
Операционная среда может быть либо нативной (естественной), либо может быть организована в чужой операционной системе путем эмуляции (например, эмулятор VM VirtualBox, эмулятор VMware).
Работа операционной среды определяется API интерфейсами.
API — Application Programming Interface (интерфейс прикладного программирования).
Классическими примерами интерфейсных оболочек операционных сред являются:
— X Windows (UNIX-системы).
— Explorer (Windows).
— PM Shell (OS/2).
В семействе операционных систем компании Microsoft с интерфейсом Explorer заменяемой является только интерфейсная оболочка, тогда как сама операционная среда, интегрированная в ОС, остается неизменной.
Системы программирования
(IDE — Integrated Development Environment,
интегрированная среда разработки)
Включает базовые компоненты:
— Трансляторы.
— Библиотеки подпрограмм.
— Редакторы.
— Компоновщики.
— Отладчики.
Трансляторы
Трансляторы — специальные программы-переводчики, которые переводят программу, написанную на языках высокого уровня, в машинный код. 3 вида трансляторов:
— Ассемблеры.
— Компиляторы.
— Интерпретаторы.
Ассемблер — транслятор, преобразующий программу, написанную на языке ассемблера, в машинный код. При написании программы используются мнемонические обозначения машинных команд и адресов (имена и метки). В процессе трансляции ассемблер заменяет все мнемонические обозначения на их двоичные коды.
Компилятор — системная программа, которая воспринимает текст программы на языке высокого уровня (исходный модуль), а на выходе генерирует программу на языке ассемблера или на машинном языке (объектный модуль).
Пример.
Язык программирования Фортран.
.for —> .obj —> .exe
Объектный модуль состоит из двух частей:
1) Заголовок, содержащий внешние имена (имена переменных, используемых в данном модуле, но определенных в другом модуле).
2) Тело модуля, представляющее собой программу.
Эта информация необходима для сборки нескольких объектных модулей в единую целостную программу, готовую к выполнению.
Объектные модули обрабатываются компоновщиком связи (или редактором связи), который создает исполняемую программу, содержащую только команды конкретной ЭВМ.
Интерпретатор — системная программа, которая транслирует каждый оператор исходной программы в промежуточный код и интерпретирует его посредством одной или нескольких команд (переводит операторы в эти команды) и выполняет эти команды.
В отличии от компилятора, интерпретатор не генерирует объектный код, а выдает результаты работы выполняемых операторов исходной программы.
Оператор (инструкция) — команда или набор команд. Примеры: объявление переменной, присваивание, условная инструкция (if-else), цикл со счетчиком (for), цикл с предусловием (while) и т. д.
Операнд — аргумент операции; то, что обрабатывается оператором. Например, имеется операция «a+b». В этом случае «a» и «b» — операнды.