АННОТАЦИЯ ПРОГРАММЫ УЧЕБНОЙ ДИСЦИПЛИНЫ 1. Наименование дисциплины: Архитектура программных систем 2. Направление: 010500, Математическое обеспечение и администрирование информационных систем 3. Квалификация (степень): бакалавр 4. Профиль подготовки: Администрирование информационных систем 5. Кафедра: автоматизированных систем управления (АСУ) 6. Структура дисциплины Курс 4 Семестр 8 Трудоемкость (в зачетных единицах) 3 Форма итогового контроля Кол-во часов Общее Лекции 108 16 Практические занятия 0 Лабораторные работы 32 ИРС СРС 8 36 экзамен 7. Цели дисциплины: подготовка специалистов, способных решать задачи проектирования, анализа, документирования и сопровождения архитектуры программных систем. 8. Содержание дисциплины 1. История развития концепции проектирования архитектуры программных систем Понятие программной архитектуры. Зарождение концепции архитектуры программных систем. Ретроспектива программных архитектур. История развития языков описания архитектур. Отличие архитектуры от детального проектирования программного обеспечения. Развитие шаблонов проектирования архитектуры. Развитие методов анализа архитектуры. Текущие тенденции развития программных архитектур. 2. Модели и стили архитектуры программных систем Понятие архитектурного стиля и шаблона. Архитектурные паттерны и антипаттерны. Примеры архитектурных стилей и шаблонов. Монолитное приложение. Клиент-серверная модель. Архитектуры, построенные вокруг базы данных. Архитектуры распределенных систем. Канальная архитектура. Архитектура плагинов. Поиск-ориентированная архитектура. Сервисориентированная архитектура. Компонентная архитектура. Структурная архитектура и общее понятие структурного анализа и проектирования (SSDAM). Событийно-ориентированная архитектура. Архитектура передачи состояния представления (REST). 3. Языки описания архитектуры Языки описания архитектуры ADL. Язык Acme. Язык Rapide. Язык Wright. Язык Unicon. Язык ByADL. Язык Darwin. CASE-средства с поддержкой архитектурного проектирования. Использование языков описания архитектуры в процессе проектирования архитектуры программной системы. Унифицированный язык моделирования как язык проектирования архитектуры. 4. Концепция архитектуры предприятия Архитектура предприятия: основные определения. Интегрированная концепция и уровни абстракции. Элементы архитектуры предприятия. Бизнес-архитектура и архитектура информации. Паттерны интеграции данных (ETL, EAI, ESB). Архитектура данных (TDS/OLTP, НСИ, оперативное хранилище данных, витрины данных, хранилище данных). Паттерны бизнес-аналитики (Transactional reporting, Operational reporting, Analitical reporting). Паттерны управления нормативно-справочной информацией (Master data management, Паттерны моделирования данных, Моделирование многомерных данных). Процесс разработки архитектуры предприятия. Управление и контроль процесса разработки архитектуры. Оценка зрелости, детализация и распределение усилий. Инструментальные средства и мониторинг технологий. 5. Стандарты и фреймворки архитектуры. Документирование архитектуры. Содержание стандартов IEEE 1016-1998 и IEEE 1471-2000. понятие видов архитектуры (views). Функциональный/логический вид. Вид код/модуль. Вид разработки (development)/структурный. Вид параллельности выполнения/процесс/поток. Физический вид/вид развертывания. Вид с точки зрения действий пользователя. Вид с точки зрения данных. Модели Захмана и Gartner. Методики META Group и TOGAF. Модель описания NASCIO. Модель описания «4+1». Методика RM-ODP. Методика SOMF. Методика SAM. Методика Microsoft. Процесс документирования архитектуры. Варианты применения архитектурной документации. Документирование представлений. Документирование поведения. Документирование интерфейсов. Перекрестная документация. Использование UML в процессе документирования архитектуры системы. 6. Разработка и тестирование вариантов архитектурно-проектных решений Соотношение функциональности и архитектуры. Функциональные и нефункциональные требования. Варианты использования и проектирование архитектуры системы. Атрибут качества архитектуры системы. Коммерческие атрибуты качества системы. Отказоустойчивость. Сохранение обратной совместимости. Расширяемость. Надежность. Пригодность к сервисному обслуживанию (maintainability). Доступность. Безопасность. Удобство использования. Обнаружение и предотвращение неисправности. Локализация изменений. Управление ресурсами программной системы. Основные подходы к реализации безопасности программных систем. Контроль данных. Тактики периода исполнения и проектирования. Создание макета системы, варианты использования, проверка функциональных и нефункциональных требований, алгоритмы тестирования. Методика Test Case Oriented Design. 7. Методы анализа архитектуры программных систем. Необходимость анализа архитектуры; SAAM (Software Architecture Analysis Method) как предшественник ATAM; Метод анализа компромиссных архитектурно-проектных решений ATAM (Architecture Tradeoff Analysis Method); Участники ATAM. Результаты проведения оценки по методу ATAM. Этапы и операции на различных этапах ATAM. Эффективное распоряжение ограниченными временными ресурсами. Количественный подход к принятию архитектурно-проектных решений. Метод анализа стоимости и эффективности (CBAM). Вычисление коэффициента ROI. Этапы CBAM. Результаты оценки по методу CBAM. 8. Архитектурные аспекты человеко-машинных интерфейсов Типы человеко-машинных интерфейсов. Понятие «Usability». Информационная архитектура. Проектирование информационной архитектуры. Паттерны изоляции графического интерфейса от модели предметной области. Паттерны Паттерн Model-View-Controller. Паттерн Presentation-abstraction-control Паттерн Model-View-Presenter. Паттерн Model-View-ViewMode. 9. Результаты обучения В результате освоения дисциплины «Архитектура программных систем» обучающиеся должны: • знать: Этапы развития архитектуры программных систем; текущие тенденции развития концепции программных архитектур; отличие между детальным проектированием и разработкой программной архитектуры; особенности реализация программной архитектуры средствами детального проектирования; порядок выбора глобальных ограничений в ходе проектирования архитектуры; выбор парадигмы программирования в ходе проектирования архитектуры; языки описания архитектуры программного обеспечения; стандарты, регламентирующие описание архитектуры программного обеспечения; точки зрения для описания архитектуры; архитектура в контексте жизненного цикла; методы проектирования архитектуры; документирование программной архитектуры; архитектурные паттерны в конкретны предметных областях; сервис-ориентированную архитектуру; архитектуру данных; паттерны бизнесаналитики (BI); управление нормативно-справочной информацией; паттерны моделирования данных; связь между паттернами архитектуры и паттернами проектирования по областям; понятие архитектуры предприятия; соотношение функциональности и архитектуры; понятие атрибутов качества системы; коммерческие атрибуты качества системы; атрибуты качества архитектуры; методы анализа архитектуры • уметь: Использовать преимущества, предоставляемые архитектурным проектированием и анализом; использовать архитектуру программной системы в процессе разработки; проводить стратегическое проектирование системы на уровне архитектуры; уметь описывать архитектуру; применять стандарты IEEE к проектированию архитектуры; использовать базовые фреймворки архитектуры ПО; использовать базовые архитектурные стили и модели; документировать архитектуру программных систем; использовать шаблоны проектирования, связанные со специфическими предметными областями; применять различные архитектурные шаблоны в контексте единой системы; определять связь между архитектурными шаблонами и паттернами проектирования; применять концепцию корпоративной архитектуры; проектировать архитектуру программной системы, исходя из заданной функциональности; учитывать в процессе проектирования архитектуры качество системы, самой архитектуры, а также экономическую эффективность; анализировать эффективность архитектурных проектных решений • владеть: Ориентироваться в существующих подходах и тенденциях развития архитектур программных систем; тактическими приемами, связанными с локальными ограничениями, такими как шаблоны проектирования, архитектурные модели, идиомы программирования и рефакторинга; стратегическими приемами проектирования: такими как выбор парадигмы программирования, архитектурных стилей, стандарты разработки ПО, основанные на использовании компонентов, принципы проектирования и ограничения, накладываемые государственным законодательством; языками описания (ACME/ADML, Rapide, Wright, Unicon, ByADL, Darwin) и документирования архитектуры; языками документирования архитектуры; методами проектирования архитектуры программного обеспечения; архитектурным проектированием в контексте различных методологий проектирования; паттернами проектирования, соответствующими основным компонентам корпоративной архитектуры; концепцией сервисноориентированной архитектуры; концепцией архитектуры, управляемой событиями; канальной архитектурой; многоуровневой архитектурой; паттернами MVC, PAC, MVP, MVVM; тактиками реализации основных атрибутов качества программной системы: готовности, модифицируемости, производительности; методами анализа архитектуры: SAAM, ATAM, CBAM. Приобретаемые компетенции - ПК21 - Знание содержания, основных этапов и тенденции развития программирования, математического обеспечения и информационных технологий - ПК27 - Знание основных концептуальных положений функционального, логического, объектно-ориентированного и визуального направлений программирования, методов, способов и средств разработки программ в рамках этих направлений - ПК28 - Знать методы проектирования и производства программного продукта, принципы построения, структуры и приемы работы с инструментальными средствами, поддерживающими создание программного обеспечения ПО - ПК34 - Навыки использования основных моделей информационных технологий и способов их применения для решения задач в предметных областях - ПК36 - Навыки выбора, проектирования, реализации, оценки качества и анализа эффективности программного обеспечения для решения задач в различных предметных областях Автор аннотации Дорин Н.П. ___________________________ Заведующий кафедрой Кузнецов Л.А. ___________________________