- •Аннотация к вопросам для Госэкзаменов по Информационным Системам и Вычислительным процессам
- •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. Применение дерева достижимости сети Петри для проверки покрываемости
- •Литература Основная
- •Дополнительная
- •Формальные языки и методы трансляции
- •Методы доступа к данным и распределения памяти
- •Сети Петри
9.2. Моделирование сетями Петри задач о производителе/потребителе и о чтении/записи Задача о производителе и потребителе
Суть задачи. Производитель производит продукцию и помещает её на склад. Потребитель берёт её со склада и использует без возврата. В этой задаче процессы синхронизируются немного по-другому. Потребитель может потребить продукт только тогда, когда его производитель произвел. Здесь два процесса параллельно идти могут, но если на складе ничего нет, потребитель стоит.
Сеть, моделирующая эту задачу, похожа на сеть для задачи о взаимном исключении. Но там между процессами была позиция, переключающая процессы. Здесь роль центральной позиции – склад, в данном случае, фишек. Когда он пуст, второй процесс не идёт. Первый может идти всегда: склад имеет бесконечный объём.
На рис. 20.1 даны фрагменты двух параллельных процессов. Первый процесс – потребитель позиция p1, переход t1 (начало производства), потом p3 (собственно работа), переход t3 (сдача продукции на склад и разрешение на производство следующей единицы). Второй процесс: позиция p2 (потребность в продукции), переход t2 (выбор со склада), позиция p4 (использование), переход t4 (готовность получить ещё единицу продукции).
Р
ис.
20.1. Модель задачи о производителе/потребителе.
Начальная маркировка выглядит так: у производителя стоит одна фишка в первой позиции, у потребителя стоит одна фишка в его первой позиции. Потребитель не может пока ничего взять со склада, потому что склад пустой, фишки здесь нет.
Как происходит работа
Первый переход мы можем запустить, «произвести». Запустили переход «произвести», фишка перешла в позицию «производство», и стало возможно запустить переход «на склад». Запускаем переход «на склад», одна фишка под названием «продукция» идет «на склад», а вторая фишка под названием «можно производить дальше» идет к производителю. И производитель готов что-то снова произвести.
Пока производитель не отправил на склад свою продукцию, он следующую не производит. Дальше он перекинул свою продукцию на склад, и дальше он может что-то производить и делать это сколько угодно, и на складе может скапливаться сколько угодно фишек.
Если склад имеет ограниченный размер, скажем, N фишек, нужно остановить производство, если склад заполнился. Для этого в сеть добавляют ещё позицию, которая символизирует свободные места. Вначале там N фишек, затем по мере увеличения фишек на складе, их количество уменьшается и наоборот. Как только склад заполнен, производство прекращается. Сеть, моделирующая ограниченный склад, приведена на рис. 20.2.
Р
ис.
20.2. Модель задачи о производителе/потребителе
с ограниченным складом.
Задача о чтении/записи
Суть задачи. Предположим, что у нас есть какая-то база данных, в которой разрешены операции чтения и записи. Не все эти операции взаимоисключающие. Одновременно может происходить сколько угодно процессов чтения, а запись может происходить только тогда, когда больше никаких процессов в системе нет. Будем считать, что n – максимальное допустимое количество параллельных процессов чтения.
Сеть, моделирующая эту задачу, похожа на сеть для задачи о взаимном исключении. Здесь тоже между процессами позиция, переключающая процессы, но она должна допускать n параллельных процессов чтения. Значит, в ней следует разместить n разрешающих фишек. Запись требует запрещения всех процессов чтения, то есть, вход перехода «начало записи» – n-кратная центральная позиция: для начала записи требуется наличие в ней n разрешающих фишек.
На рис. 20.3 изображены фрагменты двух процессов: чтения и записи, в центре управляющая позиция p с n разрешающими фишками. Процесс чтения: позиция p1, переход t1 (начало чтения), потом p3 (собственно чтение), переход t3 (чтение завершено), возврат фишек в p1 и p. Процесс записи: позиция p2, переход t2, позиция p4, переход t4, возврат фишки в p2 и n фишек в p.
Р
ис.
20.3. Модель чтения/записи.
Начальная маркировка выглядит так: входная позиция для начала чтения содержит n фишек (может быть запущено n процессов чтения), центральная их должна разрешить, там тоже n фишек. Входная позиция для начала записи содержит одну фишку.
Как происходит работа
При чтении выбирается по фишке из позиций p1 и p (переход t1). Теперь могут быть запущены переходы t1 (новое чтение) и t3 (завершение старого). Начать запись невозможно: в позиции p недостаточно разрешающих фишек. Завершение чтения возвращает фишки. Как только появилось n фишек в управляющей позиции, т.е. все процессы завершились, можно запустить переход начала записи (переход t2), и все n фишек позиции p перейдут в переход. Теперь ни одно чтение, как и вторая запись, не возможно: позиция p стала пустой. Естественно, эти n фишек после записи нужно вернуть, чтобы процессы снова могли начаться.
Сеть Петри может запустить процесс, если в позиции есть фишка, но она не может проверить позицию на ноль фишек. Значит, мы не можем смоделировать бесконечное число процессов.
