- •Аннотация к вопросам для Госэкзаменов по Информационным Системам и Вычислительным процессам
- •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. Применение дерева достижимости сети Петри для проверки покрываемости
- •Литература Основная
- •Дополнительная
- •Формальные языки и методы трансляции
- •Методы доступа к данным и распределения памяти
- •Сети Петри
1.2. Полная функциональная зависимость. Вторая нормальная форма (2нф). Приведение отношения к 2нф
Распространённая ошибка при проектировании баз данных – объявление первичным ключом суперключ (не минимальное множество атрибутов, однозначно определяющее кортеж). Такая практика приводит к значительным неприятностям.
Определение. Функциональная зависимость X=(A1,A2,...,Ak)B полная, если B зависит от всех Ai из X. Если существует X'B, где X' – собственное подмножество X, функциональная зависимость неполная.
Определение. Отношение находится во 2НФ, если оно находится в 1НФ и каждый непервичный атрибут функционально полно зависит от ключа.
Пример
Задано отношение со схемой поставки (Поставщик, Товар, Цена), для которого определены следующие ограничения:
Товар могут поставлять разные поставщики.
Цена одинаковых товаров одинакова.
Поставщик может поставлять разные товары.
Эти ограничения определяют следующие функциональные зависимости:
Поставщик, Товар Цена
Товар Цена
Здесь налицо неполная функциональная зависимость цены от ключа.
Аномалия включения: новый товар не включается в БД без поставки.
Аномалия удаления: поставки прекращаются – удаляются сведения о товаре.
Аномалия обновления: изменение цены влечет полный пересмотр.
Преобразование:
Поставки (поставщик, товар)
Цена товара (товар, цена)
Конец примера
1.3. Транзитивная зависимость. Третья нормальная форма (3нф). Приведение отношения к 3нф
Отношение, находящееся во второй нормальной форме, не гарантировано от аномалий. Неприятные явления обнаруживаются, если есть функциональная зависимость атрибута от непервичных атрибутов.
Определение. Атрибут A транзитивно зависит от X, если существует такое Y, что выполняется условие (X Y & (Y X) & YA) => X A.
Определение. Отношение находится в 3НФ, если оно находится в 1НФ и в нем отсутствует транзитивная зависимость атрибутов от первичных атрибутов.
Пример
Решается задача, связанная с определением складов для отделений больницы. Задача ставится руководством отделения, для которого важно, чтобы за его отделением был закреплен склад определенного объема, причем только один. Тогда для отношения со схемой хранение (Отделение, Склад, Объем) существует единственная функциональная зависимость:
Отделение Склад
Через некоторое время выяснилось, что нужно следить и за складами вообще, что порождает вторую функциональную зависимость:
Склад Объем
Таким образом, отношение оказалось не в 3НФ, так как существует транзитивная зависимость объема от отделения через склад: (Отделение Склад) & (Склад Отделение) & (Склад Объем) & (Отделение Объем).
Аномалия включения: нет возможности добавить сведения о новом складе, для которого нет отделения.
Аномалия удаления: отделение ликвидируется – становятся недоступными данные о складе.
Аномалия обновления: изменение объема склада влечет полный пересмотр таблицы.
Преобразование:
хранение (Отделение, Склад)
объем склада (Склад, Объем)
Конец примера
1.4. Операции реляционной алгебры: булевы операции, операции выбора, проекции, соединения, деления
К булевым операциям относятся операции пересечения, объединения, разности. Пусть r, s – отношения со схемой R. Они могут рассматриваться как подмножества множества всех кортежей, определяемых этой схемой, поэтому к ним применимы булевские операции.
Пересечением называется отношение q(R) = r(R) s(R), содержащее кортежи, которые одновременно принадлежат и r, и s. Объединением называется отношение q(R) = r(R) s(R), содержащее кортежи, которые принадлежат либо r, либо s. Разностью называется отношение q(R) = r(R) - s(R), содержащее кортежи, которые принадлежат r, но не принадлежат s. Или формально:
rs ={t|(tr)&(ts)};
rs ={t|(tr)(ts)};
r–s ={t|(tr)&(ts)}.
Заметим, что r s = r – (r – s), то есть достаточно лишь двух операций.
Пусть r(R) – отношение со схемой R, X R, AR, adom(A) – элемент множества значений, которые может принимать кортеж t на этом атрибуте. Выберем из отношения r те кортежи, которые на A принимают значение a, результат обозначим через A = a(r). Это унарная операция (она применяется к одному отношению), в результате которой появляется отношение r (R).
Определение. Выбором A = a(r) называется отношение r (R) = A = a(r){tr | t(A)=a}.
Определение. Проекцией X(r) называется отношение r(X) = X(r) {t(X) | tr }.
Это унарная операция, но в отличие от операции выбора, которая выдаёт строки по заданным условиям, она выдаёт столбцы, заголовки которых перечислены в X.
Определение. Пусть r(R) и s(S) – отношения. Тогда соединением r и s называется отношение r || s = q(RS) = {t(RS) | tr r, ts s : tr = t(R), ts = t(S)}.
Пусть RS = X . Тогда отношение r || s состоит из всех кортежей, в которых t(X)=tr(X)=ts(X). Оно называется декартовым произведением и обозначается r s.
Определение. Пусть r(R) и s(S) – отношения, SR. Положим R = R - S. Тогда r, разделенное на s – это отношение r(R)={t | tss trr: tr(R)=t & tr(S)=ts}.
Отношение r– частное от деления r на s, что обозначается r= rs. Иначе rs – это максимальное подмножество r множества R (r), такое, что r s r. Соединение здесь – декартово произведение.
