- •Аннотация к вопросам для Госэкзаменов по Информационным Системам и Вычислительным процессам
- •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. Применение дерева достижимости сети Петри для проверки покрываемости
- •Литература Основная
- •Дополнительная
- •Формальные языки и методы трансляции
- •Методы доступа к данным и распределения памяти
- •Сети Петри
3.2. Методология sadt (idef0). Ее реализация в case-средстве bPwin
Почти все методологии, относящиеся к построению моделей, ориентированных на процессы, выросли из реального опыта построения программных систем их авторами. Это накладывает на них свой отпечаток: их бывает трудно применить для построения систем общего характера. Особое положение занимает методология SADT. Она возникла не как компиляция опыта разработчиков программных систем, а была спроектирована специально для того, чтобы облегчить понимание и описание искусственных систем общего характера. SADT – методология описания систем средней сложности, основанных на концепции системного моделирования. Её можно применять для описания моделей, ориентированных как на данные, так и на процессы. Методология SADT реализована в стандарте IDEF0, и хотя различия имеются, с точки зрения построения моделей систем они незначительны.
Модель SADT представляет собой документированную иерархию диаграмм, каждый уровень которой соответствует степени детальности модели. Диаграмма имеет вид графа, узлы которого (блоки) обозначают процессы (функции), а дуги – отношения между ними. Верхний уровень иерархии – контекстная диаграмма, состоящая из единственного блока и дуг, соединяющих его с границами диаграммы. Этот блок представляет всю систему как единое целое, интерфейсные дуги представляют полный набор внешних интерфейсов (контекст) системы в целом.
Место соединения дуги с блоком определяет тип интерфейса:
вход функции (Input) – входит в блок слева,
управление или ограничение (Control) – входит в блок сверху,
выход функции (Output) – выходит из блока справа,
механизмы её выполнения (Mechanism) – входит в блок снизу.
Р
ис.
17.1. Контекстная SADT-диаграмма.
По начальным буквам английских названий сторон блока эти диаграммы иногда называют ICOM-диаграммами.
Блок любой диаграммы может быть описан диаграммой нижнего уровня, которая, в свою очередь, может быть детализирована с помощью необходимого числа диаграмм. Таким образом, формируется иерархия диаграмм. Каждый блок на диаграмме имеет свой номер. Номер диаграммы отвечает номеру родительского блока. Так, A0 – диаграмма нулевого уровня, детализирующая блок контекстной диаграммы, А2 детализирует блок 2 на диаграмме А0, А21 детализирует блок 1 на диаграмме А2.
Заметим, что дуги диаграммы могут связывать блоки или соединять их с границами диаграммы. В контекстной диаграмме могут быть дуги только второго типа, они определяют внешний интерфейс. В детальных диаграммах дуги второго типа соответствуют дугам родительского блока, их источник или получатель может быть обнаружен только на родительской диаграмме. Дуги, входящие в блок и выходящие из него, точно те же, что и внешние (входящие и выходящие) дуги в детализирующей диаграмме, потому что блок и его диаграмма представляют одну и ту же часть системы. Необходимое условие полноты и непротиворечивости диаграммы – продолжение интерфейсных дуг на родительской диаграмме.
На SADT-диаграммах явно не указаны ни последовательность, ни время. Обратные связи, итерации, продолжающиеся процессы и перекрывающиеся по времени функции могут быть изображены с помощью дуг.
Построение SADT-модели начинается с представления всей системы в виде диаграммы самого верхнего уровня иерархии – контекстной. Она состоит из одного блока и дуг, соединяющих его с границами диаграммы.
Затем блок контекстной диаграммы детализируется на диаграмме нулевого уровня с помощью нескольких блоков, соединенных интерфейсными дугами. Данная декомпозиция отображает полный набор подфункций, каждая из которых представлена блоком, границы которого определены интерфейсными дугами. Над каждым из этих блоков может быть в свою очередь проведена операция декомпозиции для более детального его представления. В любом случае получившаяся диаграмма может содержать только те подфункции, которые входят в исходную.
Возникает вопрос, на каком уровне остановить процесс детализации? Нужно ли доводить до этого уровня все диаграммы модели? Для этого следует вспомнить цель анализа: построение модели, которая на основании изначально нечётких представлений о предметной области даст точный ответ, что она выполняет и что должна выполнять соответствующая программная система. Если блок демонстрирует ответы на вопросы, связанные с его функционированием, детализацию следует прекратить. Заметим, что вопрос должен ставиться так: «Что делает блок?», а не «Как работает блок?» Детализировать не следует блоки, отражающие простейшие функции. При этом наличие таких блоков бывает полезно для уяснения сути предметной области. Не стоит детализировать блок, аналог которого уже есть в модели, достаточно на него сослаться в примечании. Из сказанного следует и ответ на второй вопрос: глубокая детализация необходима лишь для особо сложных или жизненно важных функций.
Для дополнительного контроля корректности модели необходимо учитывать, что с нею будет работать проектировщик, который разрабатывает проект программной системы, и заказчик (пользователь), который контролирует правильность принятых решений. Следовательно, необходимое условие завершения работы над моделью – её понятность и корректность как со стороны проектировщика, так и со стороны заказчика.
Нередко вызывает трудность выбор между входом и управлением. Нужно иметь в виду, что вход обычно преобразуется функцией блока, а управление – нет. Если всё-таки есть сомнение, следует предпочесть управление. Заметим, что управление – это не администрация предприятия, она обычно выполняет свои функции. А управлением может быть приказ, закон, правила внутреннего распорядка и т.п. Например, для функции «Составить расписание» входом может быть пожелания преподавателей, управлением – учебный план, выходом – расписание, а механизмом – бюро расписаний. А для функции «Принять экзамен» вход – студент без оценки, управление – расписание, выход – студент с оценкой, механизм – преподаватель.
Построение моделей в методологии SADT подчиняется определённым правилам, наиболее важные из которых следующие:
синтаксические правила: блоки, как правило, обозначаются глаголами или отглагольными существительными, дуги – существительными единственного числа именительного падежа;
уникальность меток и наименований: отсутствие повторяющихся имен;
разделение входов и управлений: определение роли данных;
ограничение количества блоков на каждом уровне декомпозиции 3-6 блоками;
связность диаграмм: соответствие дуг, инцидентных блоку, входным и выходным дугам детализирующих его диаграмм;
отделение организации от функции: исследуется функциональность предметной области, а не её структура.
Методология SADT может использоваться для моделирования различных процессов, определения их требований и функций с целью разработки системы, которая удовлетворяет этим требованиям и реализует эти функции.
