• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2019/2020

Проектирование архитектуры программных систем

Статус: Курс обязательный (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 3-й курс, 3, 4 модуль
Формат изучения: без онлайн-курса
Язык: русский
Кредиты: 5
Контактные часы: 64

Программа дисциплины

Аннотация

В рамках дисциплины «Проектирование архитектуры программных систем» студенты третьего курса бакалавриата ОП «Программная инженерия» осваивают теоретический материал и получают практические навыки проектирования и анализа архитектуры программных систем разного типа. Архитектура программной системы — структурное и поведенческое описание устройства этой системы. Архитектурные решения имеют ключевое значение для работоспособности, адаптивности, расширяемости, эффективности разрабатываемой системы, простоты её поддержки, доработки, исправления. Именно поэтому архитектурные решения должны приниматься ответственно и взвешенно. В рамках данного курса студенты приобретают способность применять систематический инженерный подход к принятию архитектурных решений. Проектирование осуществляется на основе анализа требований к информационным системам. Студенты изучают основные задачи программного архитектора и проектировщика в рамках унифицированного процесса (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-средстве
  • неблокирующий Домашнее задание (ДЗ)
    Задачи периодически выдаются для закрепления пройденных тем на семинарах (практических занятиях)
  • неблокирующий Работа на семинаре (С)
    Задачи периодически выдаются для закрепления пройденных тем на семинарах (практических занятиях)
  • неблокирующий Экзамен (Экз)
    Письменный экзамен продолжительностью 90 минут. Экзамен письменный. Студенты делают задание, отвечают на вопросы на протяжении 80 минут. С синхронным прокторингом. Технические требования: web-камера, микрофон, наушники / колонки
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (4 модуль)
    0.2 * Домашнее задание (ДЗ) + 0.25 * Командный проект (Пр) + 0.05 * Работа на семинаре (С) + 0.5 * Экзамен (Экз)
Список литературы

Список литературы

Рекомендуемая основная литература

  • Буч Г., Рамбо Д., Якобсон И. - Язык 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