- •Аннотация к вопросам для Госэкзаменов по Информационным Системам и Вычислительным процессам
- •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. Применение дерева достижимости сети Петри для проверки покрываемости
- •Литература Основная
- •Дополнительная
- •Формальные языки и методы трансляции
- •Методы доступа к данным и распределения памяти
- •Сети Петри
2.6. Модели жизненного цикла – каскадная, поэтапная, спиральная, инкрементная. Области их применения
Под моделью жизненного цикла понимается структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач, выполняемых на протяжении жизненного цикла, а также критерии перехода от этапа к этапу. Наибольшее распространение получили три следующие модели.
Каскадная модель предполагает переход на следующий этап после полного завершения работ предыдущего этапа. Она характерна для проектов с жёсткой дисциплиной исполнения.
Поэтапная итерационная модель предполагает наличие циклов обратной связи между этапами. Преимущество такой модели в том, что межэтапные корректировки обеспечивают большую гибкость и меньшую трудоемкость по сравнению с каскадной моделью. Однако время жизни каждого из этапов может растянуться на весь период создания системы.
Спиральная модель делает упор на начальные этапы жизненного цикла: анализ, предварительное и детальное проектирование. Каждый виток спирали соответствует поэтапной модели создания фрагмента или версии системы, на нем уточняются цели и характеристики проекта, определяется его качество, планируются работы следующего витка спирали.
Инкрементная модель.
Наиболее ранняя модель – каскадная. Она широко применялась тогда, когда индустрия программирования строилась по образцу промышленного производства. Со временем выяснились недостатки такого подхода, которые проявлялись в форме низкого качества систем, сложности изменения первоначально принятых решений, приоритета сроков выполнения над другими аспектами разработки. Сейчас её используют редко.
Поэтапная модель позволяет фиксировать отдельные этапы и соотносить выполненную и планируемую работу. Если на некотором этапе обнаруживаются расхождения с требованиями или если необходимо скорректировать работу в связи с новыми обстоятельствами, планируется время на исправление (доработку), в рамках этого этапа или предыдущих выполняется необходимая работа, после чего работа продолжается в штатном режиме. Недостаток модели состоит в трудности планирования времени разработки.
Спиральная модель – наиболее современная. Она появилась как реакция разработчиков на требования заказчика быстро предъявить что-то работающее. Модель характерна для версионной разработки. Разработка проходит весь жизненный цикл создания системы, но только для самых необходимых возможностей. Первая версия сдаётся пользователю, после чего точно такая же работа проводится для второй версии и так далее. Недостаток модели, в частности, в том, что частые версии требуют постоянной адаптации к ним пользователя. Кроме того, стремление к быстрому выпуску первой версии может привести к непродуманным фундаментальным решениям, оказывающим влияние на продукт в целом.
Инкрементная модель.
2.7. Средства автоматизации проектирования (case-средства)
Создание программного обеспечения, помимо творческой составляющей, характеризуется наличием рутинных процессов, а также процессов высокой сложности и трудоёмкости. Это привело к появлению специальных инструментальных средств, ориентированных на различные фазы жизненного цикла создания программного обеспечения. Они получили название CASE-средства (Computer Aided System/Software Engineering).
CASE-технология – технология конструирования программного обеспечения (ПО) с помощью стандартных методологий проектирования, реализуемая с использованием специализированных компьютерных программ (CASE-систем).
CASE-система – компьютерная программа, содержащая семантику и нотацию одной или более методологии проектирования ПО и предназначенная для проектирования с помощью данных методологий.
Выделяется пять основных категорий средств CASE:
CASE верхнего уровня, поддерживают шаги анализа и проектирования жизненного цикла разработки, включая стратегическое планирование, анализ и логический дизайн;
CASE нижнего уровня, ориентированы на разработку, поддерживают проектирование на физическом уровне и создание приложений;
CASE полного цикла содержат возможности CASE и нижнего и верхнего уровня;
интегрированные CASE (ICASE) добавляют ре-инжиниринг (обратное проектирование) и поддержку проекта;
CASE, созданные для отдельного продукта или сегмента жизненного цикла проектирования.
Современное CASE-средство должно удовлетворять следующим требованиям:
поддержка всех этапов жизненного цикла системы;
поддержка методологии структурного нисходящего анализа и проектирования;
ориентация на реализацию приложений в архитектуре «клиент-сервер»;
наличие централизованной базы данных – репозитория, обеспечивающего хранение моделей предметной области и спецификаций проекта прикладной системы на всех этапах ее разработки;
возможность одновременной работы с репозиторием многих пользователей;
централизованное хранение проекта системы и управление одновременным доступом к нему всех участников разработки;
поддержку согласованности действий разработчиков;
автоматизация последовательного перехода от одного этапа разработки к другому;
автоматизация стандартных действий по проектированию и реализации системы.
Реализация перечисленных технологических возможностей зависит от того, какая CASE-система используется коллективом аналитиков и разработчиков проекта и на каком этапе..
В последнее время для целей анализа деятельности предприятий все большое распространение имеет средство моделирования Rational Rose, реализующее объектно-ориентированную технологию проектирования. Но на рынке CASE-средств присутствуют и успешно используются инструменты, базирующиеся на структурном подходе. Это BPwin, базирующийся на методологии IDEF0, и ERwin – на методологии IDEF1X. Они лучше реализуют потребности аналитика при описании и анализе деятельности предприятия. Существуют и другие средства, вполне пригодные для анализа деятельности предприятий и описания бизнес-процессов.
