АННОТАЦИЯ ПРОГРАММЫ УЧЕБНОЙ ДИСЦИПЛИНЫ

1. Наименование дисциплины: Архитектура программных систем

2. Направление: Программная инженерия

3. Квалификация (степень): бакалавр

4. Профиль подготовки: Разработка программно-информационных систем

5. Кафедра: автоматизированных систем управления (АСУ)

6. Структура дисциплины

Курс

Семестр

Трудоемкость (в зачетных единицах)

Кол-во часов

Форма итогового контроля

Общее

Лекции

Практические занятия

Лабораторные работы

ИРС

СРС

4

8

4

144

16

16

32

12

46

экзамен

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 и IEEE . понятие видов архитектуры (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. Архитектура в процессе проектирования программного обеспечения

Место программной архитектуры в процессе проектирования программного обеспечения. Эрозия программного обеспечения. Обеспечение повторного использования с помощью архитектуры. Рефакторинг программной архитектуры. Проблемы сопровождения с точки зрения архитектурного проектирования. Реинжиниринг архитектуры унаследованных систем (извлечение информации, объединение представлений, реконструкция). Линейки программных продуктов. Варианты архитектуры линеек программных продуктов. Факторы, усложняющие применение линеек программных продуктов.

9. Результаты обучения

В результате освоения дисциплины «Архитектура программных систем» обучающиеся должны:

• знать:

Процесс создания макета системы для проверки архитектурно-проектных решений; Концепция Test Case Oriented Desing; Архитектурные паттерны в конкретны предметных областях; Сервис-ориентированная архитектура; Архитектура данных; Паттерны бизнес-аналитики (BI); Управление нормативно-справочной информацией; Паттерны моделирования данных; Связь между паттернами архитектуры и паттернами проектирования по областям; Понятие архитектуры предприятия; Разработка вариантов архитектуры системы; Программный процесс и архитектурно-экономический цикл; Факторы, определяющие разработку качественной архитектуры; Функциональные и нефункциональные требования; Этапы развития архитектуры программных систем; Зарождение архитектуры программных систем как отдельной дисциплины; История развития языков описания архитектуры; Развитие шаблонов проектирования архитектуры; Развитие методов анализа архитектуры; Текущие тенденции развития концепции программных архитектур; Методы анализа архитектуры программных систем; Метод анализа компромиссных архитектурных решений (ATAM); Метод анализа стоимости и эффективности (CBAM); Архитектурные аспекты проектирования интерфейса пользователя; Архитектурные паттерны, связанные с проектированием интерфейса пользователя; Концепцию информационной архитектуры; Различные виды человеко-машинных интерфейсов; Компонентно-ориентированное проектирование (CBD); Компоненты и различные архитектурные стили; Технологии компонентного проектирования;

Языки описания архитектуры программного обеспечения; Стандарты, регламентирующие описание архитектуры программного обеспечения; Точки зрения для описания архитектуры; Архитектура в контексте жизненного цикла; Методы проектирования архитектуры; Документирование программной архитектуры; Соотношение функциональности и архитектуры; Понятие атрибутов качества системы; Коммерческие атрибуты качества системы; Атрибуты качества архитектуры; Варианты архитектуры линеек программных продуктов; Создание продуктов и развитие линейки продуктов; Экономику линеек продуктов; Проблемы перепроектирования архитектуры системы; Сопровождение архитектуры системы; Реинжиниринг архитектуры.

• уметь:

Создавать макеты системы для проверки решений, связанных с разработкой программной архитектуры; Проводить полное тестирование проектного решения с помощью макета на соответствие функциональным и нефункциональным требованиям; Использовать шаблоны проектирования, связанные со специфическими предметными областями; Применять различные архитектурные шаблоны в контексте единой системы; Определять связь между архитектурными шаблонами и паттернами проектирования; Применять концепцию корпоративной архитектуры; Предлагать варианты архитектуры с учетом факторов, влияющих на архитектуру, а также функциональных и нефункциональных требований (атрибутов качества); Использовать преимущества, предоставляемые архитектурным проектированием и анализом;

Анализировать эффективность, стоимость, а также риски с учетом выбранной программной архитектуры; Проектировать информационную архитектуру системы: структурировать информацию и проектировать информационное пространство; Средствами архитектурного проектирования отделять пользовательский интерфейс от управляющей логики и данных приложения; Выделять компоненты и модули; Разрабатывать интерфейсы компонентов;

Описывать архитектуру; Применять стандарты IEEE к проектированию архитектуры; Использовать базовые фреймворки архитектуры ПО; Документировать архитектуру программных систем; Учитывать в процессе проектирования архитектуры качество системы, самой архитектуры, а также экономическую эффективность; Разрабатывать архитектуру линеек программных продуктов; Учитывать в процессе архитектурного проектирования необходимость последующего сопровождения системы, предотвращать «эрозию» архитектуры; Осуществлять рефакторинг архитектуры для унаследованных систем;

• владеть:

Концепцией Test Case Oriented Desing; Паттернами проектирования, соответствующими основным компонентам корпоративной архитектуры; Концепцией сервисно-ориентированной архитектуры; Концепцией архитектуры, управляемой событиями; Канальной архитектурой; Многоуровневой архитектурой; Методами архитектурного анализа; Методами анализа архитектурно-проектных решений; Паттернами Model-View-Controller, Presentation-abstraction-control, Model-View-Presenter, Model-View-ViewModel; Методами проектирования информационной архитектуры; Технологиями компонентного проектирования; Языками описания архитектуры (ACME/ADML, Rapide, Wright, Unicon, ByADL, Darwin); Языками документирования архитектуры; Методами проектирования архитектуры программного обеспечения; Архитектурным проектированием в контексте различных методологий проектирования; Тактиками реализации основных атрибутов качества программной системы: готовности, модифицируемости, производительности; Вариантами архитектуры линеек программных продуктов; Методами оценки линейки программных продуктов;

Приобретаемые компетенции

- ПК-4 - готовность обосновать принимаемые проектные решения, осуществлять постановку и выполнение экспериментов по проверке их корректности и эффективности

- ПК-6 - способность формализовать предметную область программного проекта и разработать спецификации для компонентов программного продукта

- ПК-8 - способность готовить коммерческие предложения с вариантами решения

- ПК-9 - знакомство с архитектурой ЭВМ и систем

- ПК-13 - способность оценивать временную и емкостную сложность программного обеспечения

- ПК-14 - способность создавать программные интерфейсы

- ПК-15 - навыки использования операционных систем, сетевых технологий, средств разработки программного интерфейса, применения языков и методов формальных спецификаций, систем управления базами данных

- ПК-18 - понимание концепций и атрибутов качества программного обеспечения (надежности, безопасности, удобства использования), в том числе, роли людей, процессов, методов, инструментов и технологий обеспечения качества

- ПК-26 - понимание основных концепций и моделей эволюции и сопровождения программного обеспечения

- ПК-27 - понимание особенностей эволюционной деятельности, как с технической точки зрения, так и с точки зрения бизнеса (работа с унаследованными системами, возвратное проектирование, реинженеринг, миграцию и рефакторинг)

Автор аннотации ___________________________

Заведующий кафедрой ___________________________