Бакалавриат
2020/2021
Проектирование архитектуры программных систем
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Язык:
русский
Кредиты:
5
Контактные часы:
60
Программа дисциплины
Аннотация
В рамках дисциплины «Проектирование архитектуры программных систем» студенты третьего курса бакалавриата ОП «Программная инженерия» осваивают теоретический материал и получают практические навыки проектирования и анализа архитектуры программных систем разного типа. Архитектура программной системы — структурное и поведенческое описание устройства этой системы. Архитектурные решения имеют ключевое значение для работоспособности, адаптивности, расширяемости, эффективности разрабатываемой системы, простоты её поддержки, доработки, исправления. Именно поэтому архитектурные решения должны приниматься ответственно и взвешенно. В рамках данного курса студенты приобретают способность применять систематический инженерный подход к принятию архитектурных решений. Проектирование осуществляется на основе анализа требований к информационным системам. Студенты изучают основные задачи программного архитектора и проектировщика в рамках унифицированного процесса (Unified Process), а также обучаются навыкам визуального моделирования программных систем в CASE-средствах с использованием унифицированного языка моделирования UML. Рассматриваются особенности конкретных реализаций унифицированного процесса, в том числе методологии IBM Rational Unified Process (IBM RUP). Кроме того, студенты приобретают навыки документирования принятых архитектурных решений в соответствии с отечественными и мировыми стандартами (ГОСТ Р 57100-2016). Длительность курса — 16 недель.
Цель освоения дисциплины
- Получение теоретических знаний и практических навыков работы с требованиями к программным информационным системам (ИС) как входными данными для проектирования архитектуры ИС.
- Получение практических навыков при выполнении основных задач архитектора и проектировщика в рамках унифицированного процесса (УП, Unified Process) проектирования и визуального моделирования с использованием унифицированного языка моделирования UML.
- Знакомство с методологией IBM Rational Unified Process (IBM RUP).
Планируемые результаты обучения
- Владеть основными определениями, относящимися к области архитектуры программного обеспечения
- Уметь применять на практике унифицированный процесс проектирования и разработки программных систем
- Уметь применять на практике методы объектно-ориентированного анализа и проектирования
- Уметь документировать архитектуру программных систем
- Уметь проектировать программное обеспечение с учётом нефункциональных требований к системе
- Владеть навыками визуального моделирования программного обеспечения с использованием CASE-средств
- Знать и уметь использовать основные архитектурные стили и шаблоны проектирования для программного обеспечения
Содержание учебной дисциплины
- Архитектура программных систем. Унифицированный процесс разработки.Вводная информация. Понятие архитектуры программной информационной системы (ИС). Роль архитектуры в контексте процесса разработки программного обеспечение. Проект и архитектура. Цель проектирования архитектуры ИС. Парадигмы проектирования: структурная, объектно-ориентированная, функциональная, логическая. Объектно-ориентированный анализ и проектирование (ООАиП). Унифицированный процесс (УП) разработки программного обеспечения (ПО). Методология IBM Rational Unified Process (IBM RUP) как пример унифицированного процесса.
- Унифицированный язык моделирование UML. Диаграммы UML. Процесс выявления требований к ИС. Прецеденты (сценарии использования). Эскиз и спецификация прецедента. Диаграмма прецедентов UML.Основные принципы визуального моделирования. Сложность ПО и архитектурные представления. Статические и динамические диаграммы языка UML. Репозиторий модели CASE-средства. Прямое и обратное проектирование ПО и структуры базы данных (БД). Стереотипы UML и их использование. Заинтересованные лица, свойства ИС, классификация свойств. Формулировка проблемы. Диаграмма причинно-следственных связей. Матрица трассировки требований. Выявления трудоемкости реализации прецедента и свойств ИС. Понятие риска. Понятие объема работ проекта (Scope). Инструментальная поддержка процесса проектирования. Известные подходы к идентификации прецедентов. Первичные и вторичные экторы. Эскиз и спецификация прецедента. Выявление прецедентов в бизнес-процессах. Типовая структура спецификации. Основной и альтернативные потоки действий. Шаблоны выявления прецедентов ИС. Учет бизнес-правил при составлении спецификации прецедента. Пред-условия и пост-условия прецедента. Визуальное представление на UML модели прецедентов (сценариев использования). Словарь проекта. Концепция ИС. Модель прецедентов.
- Классы и объекты. Отношения между классами. Диаграммы классов UML. Модель предметной области. Шаблоны проектирования.Понятия класса и объекта. Отношения между классами и их визуальное представление с помощью UML. Ассоциация и ее разновидности. Понятия навигации ассоциации, наследования, зависимости. Отличие агрегации от композиции. Понятие кратности ассоциации. Шаблоны действий при создании и преобразовании UML диаграмм классов. Ассоциативные классы и их использование в проекте. Процесс формирования визуальной модели программного обеспечения. Регистрируемые события и объекты. Связь модели предметной области с задачей идентификации функциональных требований к ИС. Используемые UML-диаграммы, шаблоны при их построении. Понятие состояния объекта и его визуальное представление. Поиск экторов в модели предметной области.
- Анализ и проектирование — дисциплина унифицированного процесса. Рабочий поток анализа. Задача архитектора: «Архитектурный анализ».Обзор дисциплины «Анализ и проектирование». Входные и выходные артефакты (рабочие материалы) дисциплины. Роли и задачи дисциплины. Назначение и задачи этапов дисциплины. Используемые диаграммы языка UML в задачах проектирования. Роль архитектора в проекте и выполняемые им задачи. Ключевые абстракции и их идентификация. Диаграммы UML для визуализации ключевых абстракций. Архитектурные механизмы, их назначение. Архитектурные шаблоны и их использование. Понятие слоя и его представление в языке UML. Структура «реализация прецедента» (use case realization) и ее представление в визуальной модели.
- Рабочий поток анализа. Задача разработчика: «Анализ прецедента». Объектная динамика при проектировании. Диаграммы взаимодействия UML. Диаграмма «Представление классов участников».Выявление классов-участников. Применение прецедентов для проектирования объектной динамики. Стереотипы «граничный» («boundary»), «управляющий» («control»), «сущность» («entity») классов-участников реализации. Шаблоны для идентификации классов. Диаграммы последовательности и коммуникации UML. Правила использования стереотипов «boundary», «control», «entity» при проектировании объектной динамики. Диаграмма классов-участников (VOPC). Правила идентификации операций (ответственностей) классов. Правила идентификации отношений между классами – ассоциаций и зависимостей.
- Архитектурные представления. Пакеты в UML. Рабочий поток проектирования. Задачи архитектора «Идентификация проектных элементов», «Идентификация проектных механизмов».Понятие заинтересованных лиц. Детальность проекта. Архитектурные шаблоны и их использование в архитектурном проекте. Использование модели предметной области при решении задачи проектирования. Пакеты в UML. Связи между пакетами UML и их использование в представлении архитектуры. Задача архитектора «Идентификация проектных элементов». Определение классов, подлежащих декомпозиции. Упаковка концептуальных классов по пакетам проекта. Зависимости между пакетами. Архитектурный шаблон «Слои» и его использование при проектировании ИС. Задача архитектора «Идентификация проектных механизмов». Понятие проектного шаблона. Представление шаблонов в CASE-средстве. Типы архитектурных механизмов и их представление в визуальное модели.
- Рабочий поток проектирования. Задачи проектировщика «Проектирование прецедентов», «Проектирование подсистем».Задача проектировщика «Проектирование прецедентов». Реализация прецедента на этапе проектирования. Применение архитектурных механизмов. Представление компонентов в проекте. Использование интерфейсов на диаграммах последовательности UML. Задача проектировщика «Проектирование подсистем». Отличие пакетов и подсистем. Структурный класс UML и его использование. Операции интерфейса и их реализация в проекте подсистемы. Диаграмма последовательности UML. Динамическое и статическое представление дизайна подсистемы. Использование проектных механизмов. Зависимости классов и пакетов.
- Рабочий поток проектирования. Задача разработчика «Проектирование классов». Проектирование поведения ИС. Диаграммы состояний, диаграммы деятельности языка UML. Другие языки моделирования.Проектные классы. Ответственности и операции классов. Выбор атрибутов классов. Атрибуты и понятие состояния объекта. Шаблоны выявления состояний. Специальные состояния – начальное и конечное. Супер состояние и его использование. Диаграммы состояний UML. Условия на диаграмме состояний. Правила перехода из состояния в состояния и из запись на диаграмме. Диаграммы деятельности языка UML. Их использование в рамках унифицированного процесса. Семантика деятельности. События, исключения. Конечные автоматы. Конечные автоматы в рамках унифицированного процесса. Конечные автоматы и язык UML. Состояния и переходы. Другие языки моделирования поведения: сети Петри, модели BPMN.
- Документирование проекта архитектуры программной системы.Документирование проектируемой архитектуры ИС. Способы описания и документирования архитектуры ИС. Архитектурный документ как артефакт проекта. Представление архитектуры N+1(4+1). Документ программной архитектуры (Software Architecture Document, SAD). Архитектурные представления. Архитектурные факторы. Архитектурные решения. Применение и оформление диаграмм UML в документации проекта. Государственный стандарт ГОСТ Р 57100-2016. Использование этого стандарта.
- Нефункциональные требования в архитектуре ИС. Объектный язык ограничений OCL.Нефункциональные требования. Эффективность, сложность, масштабируемость, расширяемость, адаптируемость, безопасность, зависимости системы. Учёт нефункциональных требований в проекте архитектуры ИС. Трассируемость требований в архитектуре при проектировании. Объектный язык ограничений OCL. Возможности OCL и область применения. Синтаксис и типы выражений. OCL в диаграммах UML.
- Лучшие практики разработки информационных систем. CASE-средства визуального моделирования. Прямое и обратное проектирование.Лучшие практики разработки ИС. Назначение лучших практик. Связь практик с визуальным моделированием. Инструментальная поддержка практик. Понятие компонента архитектуры ИС. Интерфейс компонента. Версионный контроль основных артефактов проекта. Понятие конфигурации. CASE-средства визуального моделирования. Прямое и обратное проектирование. Различия рисования и визуального моделирования. Репозиторий CASE-средства и синхронизация его содержимого на UML диаграммах. Понятие каркасного кода при прямом проектировании. Сравнение возможностей CASE-средств визуального моделирования.
- Архитектурные стили, шаблоны. Плюсы и минусы различных архитектурных стилей.Понятия архитектурного стиля, шаблона, фреймворка. Отличия архитектурного шаблона от шаблона проектирования. Популярные стили и шаблоны архитектуры ИС. Шаблон «Слои». Трёхзвенная (многозвенная) архитектура. Шаблоны «модель-представление-контроллер» (MVC), «сенсор-вычислитель-контроллер» (SCC). Стили «программа и подпрограммы», «виртуальная машина», «клиент-сервер», «каналы-и-фильтры», «классная доска», «издатель-подписчики», «событийная архитектура», «пиринговая архитектура», «конечный автомат». Плюсы и минусы различных архитектурных стилей. Соответствие стиля задаче. Описание и оценка архитектурного стиля. Архитектурные фреймворки: 4+1, TOGAF, RM-ODP, SOMF.
- Шаблоны проектирования GRASP. Шаблоны проектирования GoF. Адаптация и поддержка архитектуры ИС. Тестирование и рефакторинг.Шаблоны проектирования GRASP. Шаблоны: Creator, Information Expert, Low Coupling, Controller, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations. Шаблоны проектирования GoF. Шаблоны: Adapter, Factory, Singleton, Strategy, Composite, Facade, Observer и другие. Связь между шаблонами проектирования и архитектурными стилями. Применение шаблонов проектирования. Принципы проектирования: SRP, OCP, LSP, ISP, DIP. Адаптация и поддержка архитектуры ИС. Тестирование и рефакторинг при проектировании архитектуры. Итеративность и инкрементальность при проектировании архитектуры ИС. Элементы гибких процессов проектирования.
- Реализация и развертывание ИС. Рабочий поток реализации. Влияние особенностей аппаратного обеспечения на программную архитектуру. Диаграммы развертывания языка UML.Реализация и развертывание ИС. Рабочий поток реализации унифицированного процесса. Учёт особенностей реализации и развертывания при проектировании архитектуры ИС. Связь программного и аппаратного обеспечения. Влияние особенностей аппаратного обеспечения на программную архитектуру. Артефакты реализации. Диаграммы развертывания языка UML. Применение диаграмм развертывания для проектирования процесса развертывания и адаптации ИС.
- Архитектурные стили сетевых и распределенных программных систем.Проектирование архитектуры сетевых и распределенных программных систем. Архитектурный стиль «пиринговая архитектура» (peer-to-peer). Архитектурный стиль Representational state transfer (REST). Связь архитектурного стиля REST и устройства всемирной сети Интернет. Архитектурный шаблон «Удаленный вызов процедур» (RPC). Веб-сервисы. Стиль «Сервис-ориентированная архитектура приложений» (SOA). Проектирование архитектуры мобильных и встроенный приложений.
- Проектирование защищенных ИС. Проектирование и разработка программной системы — командная работа.Защищенность как ключевое нефункциональное требование к ИС. Проектирование защищенных ИС. Принципы и шаблоны проектирования архитектуры для обеспечения защищенности программной системы. Контроль доступа. Проектирование и разработка программной системы — командная работа. Роли и распределение задач в команде. Значение организации процесса при проектировании. Ещё раз о лучших практиках разработки и проектирования: гибкость, итеративность, инкрементальность процесса. История создания и развития языка UML. Группа Object Management Group (OMG). Заключительные замечания.
Элементы контроля
- Командный проект (Пр)Выполнение проекта по заданной постановке задачи в инструментальном CASE-средстве
- Домашнее задание (ДЗ)Задачи периодически выдаются для закрепления пройденных тем на семинарах (практических занятиях)
- Работа на семинаре (С)Задачи периодически выдаются для закрепления пройденных тем на семинарах (практических занятиях)
- Экзамен (Экз)Экзамен продолжительностью 60 минут. Студенты отвечают на вопросы на протяжении всех 60 минут. Вопросы могут как требовать выбор из различных вариантов ответа, так и предполагать свободный ответ (такие ответы проверяются преподавателем). Для проведения экзамена в онлайн-режиме могут использоваться одобренные в университете образовательные инструменты (например, платформы LMS или SmartLMS). Технические требования: студент должен иметь персональный компьютер с доступом к сети Интернет, а также возможность сканировать или сфотографировать свой ответ на вопрос в письменном виде (для этого может использоваться сканер, фотоаппарат, смартфон и т.д.).
Промежуточная аттестация
- Промежуточная аттестация (4 модуль)0.25 * Домашнее задание (ДЗ) + 0.25 * Командный проект (Пр) + 0.2 * Работа на семинаре (С) + 0.3 * Экзамен (Экз)
Список литературы
Рекомендуемая основная литература
- Буч Г., Рамбо Д., Якобсон И. - Язык UML. Руководство пользователя - Издательство "ДМК Пресс" - 2008 - 496с. - ISBN: 5-94074-334-X - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/1246
- Халл Э., Джексон К., Дик Дж. - Инженерия требований - Издательство "ДМК Пресс" - 2017 - 218с. - ISBN: 978-5-97060-214-0 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/93270
Рекомендуемая дополнительная литература
- Mens, T., Serebrenik, A., & Cleve, A. (2014). Evolving Software Systems. Heidelberg, Germany: Springer. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=685626
- Гамма Э., Хелм Р., Джонсон Р. - Приемы объектно ориентированного проектирования. Паттерны проектирования - Издательство "ДМК Пресс" - 2007 - 368с. - ISBN: 5-93700-023-4 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/1220
- Гома Х. - UML. Проектирование систем реального времени, параллельных и распределенных приложений - Издательство "ДМК Пресс" - 2007 - 704с. - ISBN: 5-94074-101-0 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/1232
- Розенберг Д., Скотт К. - Применение объектного моделирования с использованием UML и анализ прецедентов - Издательство "ДМК Пресс" - 2007 - 160с. - ISBN: 5-94074-050-2 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/1226