- •Аннотация к вопросам для Госэкзаменов по Информационным Системам и Вычислительным процессам
- •1. Модели данных 4
- •2. Прикладные системы 10
- •3. Анализ и проектирование систем 25
- •4. Коллективная разработка систем 35
- •5. Архитектура систем 38
- •6. Программирование 42
- •7. Формальные языки и методы трансляции 44
- •8. Методы распределения памяти и доступа к данным 51
- •9. Сети Петри 57
- •1. Модели данных
- •1.1. Концептуальная и логическая модель данных. Модель «сущность связь» (er-модель)
- •1.2. Полная функциональная зависимость. Вторая нормальная форма (2нф). Приведение отношения к 2нф
- •1.3. Транзитивная зависимость. Третья нормальная форма (3нф). Приведение отношения к 3нф
- •1.4. Операции реляционной алгебры: булевы операции, операции выбора, проекции, соединения, деления
- •1.5. Операторы расщепления и фактора. Их применение для организации работы с распределенными данными
- •1.6. Транзакции в базах данных Понятие транзакции
- •Принципы транзакций (acid)
- •Модели транзакций
- •2. Прикладные системы
- •2.1. Классификация современных программных прикладных систем
- •2.2. Требования к качеству прикладных программных систем: адекватность технологии, удобство использования, устойчивость, сопровождаемость, защищенность, переносимость
- •Адекватность технологии предметной области
- •Удобство использования
- •Сопровождаемость
- •Устойчивость
- •Защищенность
- •Переносимость
- •2.3. Условия и способы тиражирования прикладных программных систем
- •2.5. Жизненный цикл программных систем. Этапы жизненного цикла
- •2.6. Модели жизненного цикла – каскадная, поэтапная, спиральная, инкрементная. Области их применения
- •2.7. Средства автоматизации проектирования (case-средства)
- •2.8. Оценка параметров программной системы. Мера, метрика. Анализ риска Оценка параметров программной системы
- •Мера и метрика
- •Анализ рисков и первичная оценка
- •2.9. Размерно-ориентированные метрики: правила оценивания, область применимости
- •Выполнение оценки проекта
- •Пример оценки проекта
- •Достоинства и недостатки
- •3. Анализ и проектирование систем
- •3.1. Анализ требований, его роль в жизненном цикле создания программной системы. Основные задачи анализа требований. Системный структурный анализ
- •3.2. Методология sadt (idef0). Ее реализация в case-средстве bPwin
- •Использование case-средства bPwin для построения idef0-модели
- •3.3. Моделирование потоков данных и процессов их обработки. Построение диаграмм потоков данных
- •Диаграммы потоков данных
- •Диаграммы потоков данных в методологии Гейна-Сарсона
- •Использование case-средства bPwin для построения дпд
- •4. Коллективная разработка систем
- •4.1. Обоснование необходимости. Проблемы. Типы коллективов программистов Проблема
- •Профессиональные особенности
- •Типы коллективов программистов
- •Традиционная бригада
- •Бригада без персонализации
- •Бригада главного программиста
- •4.2. Условия работы коллективов программистов: физическая, социальная, административная обстановки
- •Стимулы
- •4.3. Взаимодействие участников программного проекта. Их роли в коллективе разработчиков Профессиональные особенности
- •Технические роли в бригаде
- •Психологические роли в бригаде
- •5. Архитектура систем
- •5.1. Причины декомпозиции программы на модули (содержательные и технические аспекты). Декомпозиция как способ борьбы со сложностью
- •5.2. Модуль, его информационная закрытость. Интерфейс и реализация. Связность модуля, уровни связности
- •5.3. Сцепление модулей, уровни сцепления. Модели управления модульной системой
- •6. Программирование
- •6.1. Объектный подход к программированию. Объект и класс. Инкапсуляция, наследование, полиморфизм. Абстрактные и интерфейсные классы
- •6.2. Классы в современных системах программирования. Общие, собственные и защищенные области. Свойства, их назначение, описание и использование. Владелец и родитель класса
- •7. Формальные языки и методы трансляции
- •7.1. Право- и леволинейные грамматики. Регулярные (автоматные) грамматики. Регулярные множества и праволинейные грамматики
- •7.2. Автоматы с магазинной памятью (мп-автоматы). Детерминированные и недетерминированные мп-автоматы. Построение эквивалентного мп-автомата по кс-грамматике
- •7.3. Восходящий анализ кс-языков без возвратов. Lr(k)-грамматики. Грамматики простого предшествования. Алгоритм «перенос-свертка» для грамматики простого предшествования
- •7.4. Алгоритмы удаления пустых и недостижимых символов в кс-грамматике. Нормальные формы кс-грамматик (Хомского и Грейбах). Устранение левой рекурсии в грамматике
- •7.5. Компиляторы и интерпретаторы. Архитектура компилятора. Фазы и этапы компиляции. Препроцессоры
- •7.6. Дерево вывода для кс-грамматик. Восходящий и нисходящий синтаксический анализ. Алгоритм нисходящего разбора с возвратами
- •7.7. Промежуточные представления программ: атрибутно-синтаксическое дерево, триадное представление, тетрады, обратная польская запись. Байт-коды внутреннего представления (Java-код, p-код и др.)
- •7.8. Ll(k)-грамматики, соотношение классов ll(k). Множества first(k) и follow(k) и их построение. Разделенная грамматика
- •7.9. Метод рекурсивного спуска построения синтаксического анализатора
- •7.10. Способы описания синтаксиса языков программирования. Диаграммы Вирта, расширенная форма Бэкуса-Наура
- •7.11. Работа с регулярными выражениями в языках программирования (c#, php). Описание типов xml-документов с помощью грамматики (dtd)
- •8. Методы распределения памяти и доступа к данным
- •8.1. Простые методы динамического распределения памяти: стек, дек, список блоков постоянной длины
- •Простейшее распределение памяти
- •Выделение памяти блоками постоянной длины
- •8.2. Методы динамического распределения памяти, основанные на списках блоков переменной длины
- •8.3. Методы доступа к данным, основанные на индексах: индексно-последовательный и индексно-произвольный Индексные методы
- •Индексно-последовательный метод
- •Индексно-произвольный метод
- •8.4. Методы доступа к данным, основанные на инвертированных списках и битовых картах Инвертированные списки
- •Битовые карты
- •8.5. Алгоритмы хеширования, основанные на методах деления, умножения и деления многочленов Метод деления
- •Метод умножения
- •Деление многочленов
- •8.6. Алгоритмы разрешения коллизий в перемешанных таблицах, основанные на методах внешних и внутренних цепочек Метод внешних цепочек
- •Метод внутренних цепочек
- •9. Сети Петри
- •9.1. Определение и основные понятия сетей Петри. Структура, графы, маркировка Структура сетей Петри
- •Графы сетей Петри
- •Маркировка сетей Петри
- •9.2. Моделирование сетями Петри задач о производителе/потребителе и о чтении/записи Задача о производителе и потребителе
- •Задача о чтении/записи
- •9.3. Безопасность и ограниченность сетей Петри Безопасность
- •Ограниченность
- •9.4. Активность сетей Петри
- •9.5. Достижимость и покрываемость в сетях Петри
- •9.6. Дерево достижимости сети Петри. Алгоритм построения дерева достижимости Дерево достижимости
- •Алгоритм построения дерева достижимости
- •9.7. Применение дерева достижимости сети Петри для проверки безопасности и ограниченности.
- •9.8. Применение дерева достижимости сети Петри для проверки покрываемости
- •Литература Основная
- •Дополнительная
- •Формальные языки и методы трансляции
- •Методы доступа к данным и распределения памяти
- •Сети Петри
7. Формальные языки и методы трансляции
7.1. Право- и леволинейные грамматики. Регулярные (автоматные) грамматики. Регулярные множества и праволинейные грамматики
Определение. Грамматика G = (A, V, P, s) называется праволинейной (леволинейной), если каждое правило имеет вид u Φ или u Φv (u vΦ), где u,v V, Φ A*.
Определение. Праволинейная грамматика называется регулярной (автоматной), если |Φ| = 1 и если s e P, то s не встречается в правых частях правил.
Язык определяется праволинейной грамматикой тогда и только тогда, когда он является регулярным множеством. Для {a} грамматика Ga = ({a}, {s},{u a}, s).
Если языки L1 и L2 порождаются регулярными грамматиками, можно построить регулярные грамматики и для языков L1L2, L1L2 и L1*.
Обратное доказывается возможностью решения стандартной системы уравнений с регулярными коэффициентами.
[АУ], п.2.2.2.
[M] гл.1
7.2. Автоматы с магазинной памятью (мп-автоматы). Детерминированные и недетерминированные мп-автоматы. Построение эквивалентного мп-автомата по кс-грамматике
Определение. МП-автомат P = (Q, A, Г, δ, q0, z0, F), где Q – множество состояний, A – алфавит, δ: Q×(A{e})×Г 2Q×Г* – функция перехода, q0 Q – начальное состояние, F – конечные состояния, Г – множество символов МП, z0Г – маркер. Если всегда |δ(q,a,b)|1, автомат детерминированный, в противном случае – недетерминированный.
Определение. Такт работы – смена конфигураций (q, aΦ, bΨ) |- (q’, Φ, γΨ), если (q’γ) δ(q,a,b), где Φ – непрочитанная часть цепочки на входной ленте, bГ, ΨГ*. Возможен пустой такт (q, aΦ, bΨ) |- (q’, aΦ, γΨ), если (q’γ) δ(q,e,b), где e – пустой символ.
Определение. Цепочка Φ допускается автоматом, если (q0, Φ, z0) |-*(q’, e, Ψ), где q’ F.
Определение. Цепочка Φ допускается опустошением магазина, если (q0, Φ, z0) |-*(q’, e, e).
Для любой КС-грамматики G = (A, V, P, s) можно построить МП-автомат, множество допускаемых цепочек которого будет совпадать с языком, порождаемым грамматикой: P = (V, A, AV, δ,q0, s, Ø). Правила построения:
1) δ(q0,e,u) = {(q0, γ)}, для всех правил u γ.
2) δ(q0,a,a) = {(q0, e)} для всех aA.
[АУ], п.2.5.1, 2.5.3
7.3. Восходящий анализ кс-языков без возвратов. Lr(k)-грамматики. Грамматики простого предшествования. Алгоритм «перенос-свертка» для грамматики простого предшествования
В алгоритме восходящего анализа дерево вывода строится снизу вверх. Алгоритм моделирует расширенный МП-автомат. Производятся действия переноса (входной символ переносится в МП) или свертки (часть символов в МП заменяется нетерминалом).
Определение. КС-грамматика G = (A, V, P, s) называется LR(k)-грамматикой, если решение о действии на каждом шаге алгоритма «перенос-свертка» принимается на основе k символов входной цепочки.
Грамматика простого предшествования – это LR(1)-грамматика с управляющей таблицей в виде матрицы предшествования. Строки и столбцы помечены символами грамматики. Элемент таблицы может содержать символ отношения предшествования (отношения Вирта-Вебера) «=», «<» или «>»:
(1) x = y z xy P, где , (A V)*
(2) x <∙y z xv P, такое, что v => + yγ, где ,,γ (A V)*
(3) x ∙> a z vz P, такое, что v => + γx и z =>*a, где aA; ,,γ, (A V)*
При работе алгоритма рассматривается отношение символа в вершине стека и текущего символа. Если отношение = или <∙, выполняется перенос. Если ∙>, выполняется свертка. Грамматика пополняется правилом s’ #s#, где s – начальный символ. Например, для грамматики с правилами s 0s|1 алгоритм для цепочки 001 приводит к следующей последовательности конфигураций: (#, 001#) - (#0,01#) - (#00, 1#) - (#001,#)- (#00s,#)- (#0s, #)-(#s,#). Сначала 3 переноса, затем 3 свертки. Отношения предшествования, использованные по шагам: #<∙0, 0<∙0, 0<∙1, 1∙># , s∙>#, s∙>#. При свертке выбирается подцепочка в вершине стека, символ слева от которой находится в отношении <∙ с первым символом подцепочки (на 4-м шаге 0<∙1 и 1∙>#, поэтому 1 сворачивается в s).
Если при вычислении отношений возникает коллизия – некоторая пара символов оказывается в двух разных отношениях, грамматика не является грамматикой простого предшествования. При коллизии отношений = и < грамматика называется грамматикой слабого предшествования. Существуют и другие классы грамматик предшествования.
На грамматику простого предшествования накладывается еще одно ограничение – грамматика должна быть обратимой (не должно быть двух правил с одинаковыми правыми частями).
[АУ] п.5.2.1, п.5.2.2, п.5.3.2.
[M] гл.4. [Х] гл 5. [K] 6.3
