- •Алгоритмические основы программной инженерии
- •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 Вопрос. Механизмы диспетчеризации (планирования) задач.
Утилиты
Утилиты — специальные программы для выполнения вспомогательных функций. Подразделяются на:
— утилиты сервисного обслуживания компьютера (диагностика и дефрагментация).
— утилиты расширения функциональности.
— информационные утилиты.
——————————————————————————
11 Вопрос. Классификация языков программирования.
——————————————————————————
Не существует общепринятой систематичной таксономии языков программирования. Поколения языков
Поколение 1.
Машинные языки, языки низкого уровня — двоичные языки процессоров, представляющие собой набор команд, записанных в двоичном коде (0 и 1), которые данный процессор может выполнить непосредственно, если эти команды ввести в его память в виде последовательности или сразу подать в арифметико-логическое устройство процессора.
Примеры: язык процессора IBM-PC, язык ARM-процессора.
Поколение 2.
Ассемблеры, автокоды, системные языки, языки среднего уровня — текстовые языки, понятные человеку и однозначно переводимые (транслируемые) в языки низкого уровня.
Примеры: Макроссемблер, С, PL/1 (Programming Language 1).
Поколение 3.
Языки высокого уровня — текстовые языки, приближенные по словарю и синтаксису к человеческому языку, позволяющие записывать программные конструкции в форме, удобной для человеческого мышления и подобные обычному тексту.
Примеры: бейсик (Visual Basic), фортран (FORTRAN), PHP и практически все сетевые языки.
Поколение 4.
Языки визуального программирования — языки блок-схем, позволяющие отображать алгоритмы в программных проектах, что облегчает создание и анализ алгоритмов.
Примеры: RAD-системы, CAD-пакеты, OLAP-системы.
Поколение 5.
Интеллектуальные языки программирования — позволяют передать функцию создания алгоритмов компьютеру, а за человеком оставить лишь постановку задачи.
Примеры: система MathCAD, экспертные системы.
Функциональная классификация языков программирования
-
Процедурное программирование — программа отделена от данных и состоит из последовательности команд, обрабатывающих данные. Данные как правило хранятся в виде переменных. Весь процесс вычисления сводится к изменению их содержимого.
-
Декларативные языки программирования — языки объявлений и построения структур. К ним относятся функциональные и логические языки программирования. В этих языках не производится алгоритмических действий явно, то есть алгоритм не задается программистом, а строится самой программой. Эти языки получили широкое применение в системах автоматизированного проектирования (САПР), в так называемых CAD-пакетах, в моделировании, системах искусственного интеллекта.
-
Объектно-ориентированное программирование — переменные и функции группируются в так называемые классы (шаблоны). Благодаря этому достигается более высокий уровень структуризации программы. Объекты, порождённые от классов вызывают методы (функции или процедуры) друг друга и меняют таким образом состояние свойств (переменных). ООП базируется не на функции, а на объекте, как целостной системе, имеющей стандартный автоматический межобъектный интерфейс.
-
Сетевые языки — языки, построенные на принципах интерпретации, то есть построчной, интерактивной обработки строк программного кода, описывающего некоторый сценарий (скрипт) сетевого взаимодействия компьютеров. Часто они называются скриптовыми языками.
——————————————————————————