Программа экзамена по курсу ПРОЕКТИРОВАНИЕ КРУПНЫХ РАСПРЕДЕЛЁННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ И БАЗ ДАННЫХ (лектор курса к.т.н., доц. Куриленко Иван Евгеньевич) 1.Современное обеспечения. состояние дел в области разработки программного Текущая ситуация на рынке разработки программного обеспечения. Факторы, тормозящие создание и внедрение новых IT-решений. Классические проблемы IT-инфраструктуры предприятий, которые развивали ее по историческим соображениям. Тенденции развития методов разработки программного обеспечения. 2.Архитектура. Типы архитектур. Клиент-серверная архитектура. Что такое программная архитектура. Методики формирования программной архитектуры. Использование архитектуры для достижения стратегических преимуществ. Общее описание программной архитектуры. Отличие архитектуры программного обеспечения от детального проектирования программного обеспечения. Примеры архитектурных стилей и моделей. Клиент-серверная архитектура. Многоуровневая архитектура. Прямой обмен данными. Технологии COM и CORBA. Проблемы поддержки и масштабирования клиент-серверных программ. 3.Распределённые системы. Понятие системы. Определение системы. Распределённая система. Типы распределённых систем. Примеры распределённых систем. Требования к распределённым системам. Архитектуры распределённых систем. Распределённые базы данных. 4.Событийно-ориентированная архитектура (EDA). Концепция событийно-управляемой архитектуры. Предпосылки создания событийно-управляемой архитектуры. Основные элементы программ, построенных согласно событийно-управляемой архитектуре. Задачи системной шины. Преимущества событийно-управляемой архитектуры. Архитектура системы передачи сообщений. 5.Сервис-ориентированная архитектура (SOA). Обзор основных моментов сервис-ориентированной архитектуры. Сервис. Сервисная ориентация. Композитные приложения. Жизненный цикл SOA. Проектирование бизнес-логики в IBM WebSphere Business Modeler. 6.Введение в Windows Communication Foundation. Концепция служебно-ориентированных приложений. Web-сервис. Язык описания web-сервисов. Протокол SOAP. Windows Communication Foundation. WCF и SOA. Канонические принципы WCF. Практические принципы WCF. Разработка сервис-ориентированных приложений с применением WCF. Схема организации удаленного взаимодействия в WCF. Структура WCF-сервиса. Единая программная модель. 7.Архитектура, управляемая моделью (Model Driven Architecture, MDA). Концепция архитектуры, управляемой моделью. Платформенно-независимая модель. Платформеннозависимая модель. Процесс трансформации моделей. Методология MDA. Преимущества MDA. SOA и MDA. Model Driven SOA. 8.Шаблоны проектирования (Design patterns). Понятие шаблона проектирования. Классификация шаблонов проектирования. Преимущества и недостатки применения шаблонов проектирования. 9.Основные шаблоны проектирования. Обзор основных шаблонов проектирования. Шаблон делегирования (Delegation pattern). Шаблон функционального дизайна (Functional design). Неизменяемый объект (Immutable). Интерфейс (Interface). Маркер (Marker interface). Контейнер свойств (Property Container). 10.Порождающие шаблоны проектирования. Обзор порождающих шаблонов проектирования. Абстрактная фабрика. Строитель. Фабричный метод. Отложенная инициализация. Объектный пул. Прототип. Получение ресурса есть инициализация. Одиночка. Мультитон. 11.Поведенческие шаблоны проектирования. Обзор поведенческих шаблонов проектирования. Цепочка ответственности (Chain of Responsibility). Команда (Command, Action, Transaction). Интерпретатор (Interpreter). Итератор (Iterator, Cursor). Посредник (Mediator). Хранитель (Memento, Token). Наблюдатель (Observer, Dependents, PublishSubscribe, Listener). Состояние (State). Стратегия (Strategy). Шаблонный метод (Template Method). Пустой объект (Null Object). Посетитель (Visitor). Политика (Simple Policy). Спецификация (Specification). Подписчик событий (Event listener). 12.Шаблоны группы Model-view-controller. Обзор группы шаблонов Model-view-controller. Model-view-controller. Model-view-presenter. 13.Шаблон Repository. Обзор шаблона Repository. Преимущества и недостатки шаблона. 14.Шаблоны параллельного программирования. Обзор шаблонов параллельного программирования Активный объект (Active Object). Задержка (Balking). Взаимодействие посредством сообщений (Messaging). Блокировка с двойной проверкой (Double checked locking). Событийно-управляемая асинхронность (Event-based asynchronous). Ведущий/ведомый (Leaders/followers). Монитор (Monitor Object). Реактор (Reactor). Блокировка чтения/записи (Read write lock). Планировщик (Scheduler). Пул потоков (Thread pool). Личная память потока (Thread-Specific Storage). Однопоточное выполнение (Single Thread Execution). 15.Анти-паттерны. Анти-паттерны в программировании. Анти-паттерны в управлении разработкой ПО. Антипаттерны в разработке ПО. Анти-паттерны в объектно-ориентированном программировании. Анти-паттерны в программировании. Методологические анти-паттерны. 16.Архитектурные подходы искусственного интеллекта. Обзор архитектурных подходов искусственного интеллекта. Системы, основанные на правилах. Мультиагентные системы и их архитектуры. Архитектура агента. Виртуальные организации. 17.Принципы проектирования крупных систем. Принципы работы со сложными системами. Абстракция. Уточнение. Модульная разработка. Принципы разбиения системы на модули. Выделение интерфейсов и сокрытие информации. Адекватность, полнота, минимальность и простота интерфейсов. Разделение ответственности. Слабая связность модулей и сильное родство функций в одном модуле. Повторное использование.