- •Аннотация к вопросам для Госэкзаменов по Информационным Системам и Вычислительным процессам
- •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. Применение дерева достижимости сети Петри для проверки покрываемости
- •Литература Основная
- •Дополнительная
- •Формальные языки и методы трансляции
- •Методы доступа к данным и распределения памяти
- •Сети Петри
Алгоритм построения дерева достижимости
Пусть x – граничная вершина.
Если есть не граничная вершина y, такая, что [x]= [y], то вершина x граничная.
Если для [x] ни один переход не разрешён (для tj T: ([x], tj) не определена), то вершина x терминальная.
Для tj T, tj – разрешённый, создать вершину z. Маркировка [z] определяется покомпонентно следующим образом (i – номер позиции):
если [x]i=, то [x]i=;
если на пути от корня к x встречается вершина y такая, что [y]<([x], tj), причём, [y]i<([x], tj)i, то [z]i=;
в противном случае [z]i=([x], tj)i .
Дуга tj направлена от x к z.
Алгоритм останавливается, когда нет граничных вершин.
Пример
Для предыдущего примера (рис. 24.2) дерево достижимости выглядит следующим образом.
Р
ис.
24.4. Дерево достижимости для МСП,
представленной на рис. 1.
Построим дерево достижимости ещё для одной сети Петри.
Р
ис.
24.5. Сеть Петри и её дерево достижимости.
Конец примера
9.7. Применение дерева достижимости сети Петри для проверки безопасности и ограниченности.
Сеть Петри безопасна, если число фишек в каждой позиции не превышает 1, и ограничена, если оно не больше фиксированного положительного числа k. Безопасность – частный случай ограниченности при k = 1. Эти свойства могут быть проверены с помощью дерева достижимости.
Утверждение. Сеть Петри ограничена тогда и только тогда, когда её дерево достижимости не содержит .
Действительно, наличие обозначает, что число фишек в данной позиции может быть произвольным, то есть существует последовательность переходов, применяя которую можно увеличить число фишек в ней до любого как угодно большого значения. таким образом, сеть не ограничена.
Обратно, если сеть не ограничена, значит, множество достижимых маркировок бесконечно. Так как дерево достижимости конечно, оно содержит вершину с в одной из позиций. Приведение дерева достижимости к конечному виду может быть произведено с помощью соответствующего алгоритма.
Если сеть Петри ограничена, она представляет систему конечных состояний, причём, дерево достижимости – граф состояний, содержащий вершины, соответствующие любым достижимым маркировкам. таким образом, вопросы анализа решаются простым перебором. Так, границы для любой вершины определяются как максимум чисел, стоящих в этой позиции. Если граница всех позиций не превышает 1, сеть безопасна.
Пример
Р
ис.
25.1. Оценка границы дерева достижимости.
Очевидно, что граница дерева достижимости k=2.
Конец примера
С помощью дерева достижимости можно анализировать часть сети Петри. В этом случае рассматриваются лишь те компоненты вектора маркировки, которые соответствуют исследуемым позициям. Часть сети может быть ограниченной, тогда как сеть целиком – нет.
9.8. Применение дерева достижимости сети Петри для проверки покрываемости
Пусть дана сеть Петри C с начальной маркировкой . Задача покрываемости – определить, существует ли для произвольной маркировки ′ маркировка ′′R(C, ) такая, что ′′ ′ .
Для данной сети Петри с начальной маркировкой строится дерево достижимости. Затем просматриваются его вершины и ищется любая вершина x, для которой [x] ′. Если такой вершины нет, значит, маркировка ′ не покрывается никакой достижимой маркировкой. Если вершина найдена, то соответствующая ей маркировка и есть искомая.
Путь от корня к вершине x определяет последовательность переходов, которую необходимо выполнить для решения задачи. Если покрывающая маркировка содержит символ , значит, в сети Петри есть цикл, который необходимо выполнить достаточное число раз для получения покрывающей маркировки. Если покрывающая маркировка содержит в более чем одной позиции, между соответствующими позициями сети может существовать взаимосвязь. В этом случае расчёт переходов для каждой позиции в отдельности невозможен. Тем не менее, существует алгоритм (Карп и Миллер), который даёт возможность определить минимальное количество переходов для нахождения покрытия данной маркировки.
Пример
Р
ис.
26.1. Проверка покрываемости с помощью
дерева достижимости.
Предположим, что проверяется покрываемость маркировки ′=(0,14,1,7). Существует вершина (01), которая удовлетворяет условию. Ясно, что нужно достаточное количество раз запустить переход t1, затем t2, затем несколько раз переход t3. Вопрос, сколько раз их нужно запускать. Конечно, можно сказать, что достаточно по 100 раз запустить каждый из них, получится покрывающая маркировка. Но если речь идёт о минимальном количестве запусков, приходим к выводу, что t1 необходимо запустить 21 раз, затем t2, затем t3 7 раз. Это обусловлено тем, что каждый запуск t3 уменьшает число фишек во второй позиции на 1. Таким образом, последовательность переходов – 21t1t27t3.
Конец примера
