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

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

Статус: Курс по выбору (Бизнес-информатика)
Направление: 38.03.05. Бизнес-информатика
Когда читается: 3-й курс, 3 модуль
Формат изучения: без онлайн-курса
Язык: русский
Кредиты: 3

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

Аннотация

Дисциплина "Архитектура программных систем" построена на концепции управления разработкой программного обеспечения в крупных бизнес-структурах (масштаба корпораций, крупных организаций, отраслей производства, холдингов). В центре курса – проектирование высококачественных цифровых продуктов с заданными эксплуатационными характеристиками. При этом процесс проектирования предполагает поэтапную детализацию представления программных систем – от моделей и методов к ключевым компонентам и взаимосвязям цифровых продуктов для поддержки бизнес-процессов на уровне отдельных подразделений и организации в целом. Курс представляет собой реализацию проектного подхода в направлении проектирования цифровой инфраструктуры предприятия и может быть использован в последующей практической работе.
Цель освоения дисциплины

Цель освоения дисциплины

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

Планируемые результаты обучения

  • Знать свойства моделей жизненного цикла, архитектур программных систем, особенности подходов к выбору моделей жизненного цикла, архитектур программных систем, а также к проектированию программных систем в различных предметных областях и с применением различных технологических схем.
  • Знать основные задачи архитектурного проектирования программных систем и методы их решения, а также методы ревизии, принципы и подходы к документированию программных систем.
  • Уметь выбирать модель жизненного цикла, методологию разработки и архитектуру программной системы в соответствии со спецификой программной среды и предметной области.
  • Уметь выполнять проектирование и ревизию архитектуры, разрабатывать документацию к программным системам.
  • Иметь навыки применения методов бизнес-информатики для решения задач архитектурного проектирования программных систем, с учетом специфики применяемых инструментальных средств и автоматизируемых (цифровизируемых) предметных областей.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Обзор жизненного цикла разработки программного обеспечения, модели жизненного цикла разработки программных систем и методологии разработки программных систем
    Понятие жизненного цикла. Этапы жизненного цикла. Анализ и спецификация требований. Предварительное и детальное проектирование. Реализация и тестирование. Интеграция. Сопровождение. Экономика жизненного цикла. Общие принципы и структура. Модель Build-and-Fix. Водопадная модель. Быстрое прототипирование. Инкрементная модель. Модель синхронизации и стабилизации. Спиральная модель. Объектно-ориентированная модель. Преимущества и недостатки моделей. Понятие методологии. Методология Microsoft Solution Framework. Подход Rational Unified Process. Процессы, роли, артефакты. Активности, потоки работ. Гибкие методологии (Agile, SCRUM, eXtreme Programming). Сходства и различия между методологией разработки и моделью жизненного цикла программной системы. Преимущества и недостатки методологий.
  • Открытые системы. Обзор архитектур программных систем, архитектуры распределенных программных систем.
    Определение открытой системы. Компоненты и интерфейсы. Понятие программной архитектуры. Основные типы программных архитектур. Архитектуры крупномасштабных программных систем. Понятие масштабируемости. Обеспечение масштабируемости за счет выбора адекватной программной архитектуры. Классификация программных архитектур. Архитектурное проектирование. Примеры типичных ошибок при проектировании архитектуры. Понятие распределенной программной системы. Архитектура «файл-сервер». Основные типы программных архитектур класса «клиент-сервер». Презентационная логика. Логика доступа к данным. Бизнес-логика. Двухуровневая и трехуровневая схема «клиент-сервер». Сервер баз данных. Интернет-архитектуры. Значение выбора архитектуры для проектирования программных систем.
  • Введение в объектно-ориентированное проектирование, принципы объектно-ориентированного проектирования.
    Сравнение структурного и объектно-ориентированного подходов. Особенности, экономика, артефакты. Объектно-ориентированная модель жизненного цикла программных систем. Преимущества и недостатки модели. Диаграммы. Особенности управления жизненным циклом объектно-ориентированных программных систем. Проблемы и приемы эффективной разработки. Абстракция в математике и программировании. Математическая модель абстракции. Степень абстракции как средство оптимизации модели. Инкапсуляция. Принцип «Разделяй и властвуй». Разделение интерфейса и реализации. Признаки инкапсуляции. Связь с модульной декомпозицией. Наследование. Базовые и производные классы. Абстрактные классы и методы. Наследование реализации, поведения и свойств. Переопределение метода. Виды наследования. Интерфейсы. Проблема «хрупких» базовых классов. Полиморфизм. Унификация и повторное использование кода. Связь c инкапсуляцией и наследованием. Расширения полиморфизма. Виды связывания. «Ленивые» вычисления. Связь принципов с модульной декомпозицией. Примеры использования.
  • Язык моделирования UML
    UML как язык и стандарт. История создания. Основные виды диаграмм (диаграммы классов, прецедентов, взаимодействия, деятельности, состояний). Применение UML для описания архитектуры программной системы. Моделирование отношений между классами. CASE-средства, поддерживающие UML-диаграммы. Особенности разработки UML-диаграмм в среде Microsoft Visual Studio .NET.
  • Стадии проектирования
    Понятие объектно ориентированного проектирования. Последовательность действий при проектировании. Выявление первичных классов. Извлечение существительных. Уточнение отношений межу классами. Построение взаимосвязей классов. Сигнатуры классов. Поддержка проектирования диаграммами UML и CASE-средствами. Детализация диаграмм классов. Особенности и проблемы проектирования программных систем.
  • Многократное использование. Паттерны. Пользовательские интерфейсы.
    Многократное использование артефактов программной системы. Виды артефактов. Экономика многократного использования. Понятие паттерна проектирования. Применение паттернов для многократного использования. Элементы паттернов проектирования. Предметно-ориентированные языки. Важность дисциплины при разработке программной системы. Поддержка паттернов проектирования диаграммами UML и CASE-средствам. Формы интерфейса пользователя. Значение независимости интерфейса пользователя от реализации. Применение паттернов для обеспечения независимости прикладной логики от интерфейса. Пути увеличения доли многократного использования программных компонентов. Эргономика интерфейсов пользователя.
  • Ревизия.
    Понятие ревизии. Важность раннего выявления ошибок проектирования. Взаимодействие фаз анализа, проектирования и реализации. Виды ревизии. Распределение ролей в группе контроля качества. Цель и методика ревизии. Объекты ревизии. Организация инспекции. Метрики и средства автоматизации ревизии
  • Модульное тестирование.
    Классификация видов тестирования. Модульное, сборочное и приемочное тестирование. Важность тестирования качества и надежности программной системы. Подходы к модульному тестированию. Тестирование «от кода». Тестирование «от спецификаций». Методы «прозрачного ящика» и «черного ящика». Виды, метрики средства автоматизации модульного тестирования.
  • Реализация.
    Важность этапа реализации для обеспечения качества. Подходы к сборочному тестированию «от кода» и «от спецификаций». Формы и виды тестирования. Методы тестирования. Технология «чистого помещения». Применение классов эквивалентности. Использование CASE-средств. Восходящее, нисходящее и гибридное тестирование. Метрики и средства автоматизации сборочного тестирования.
  • Пост-конструирование, документирование.
    Создание документации. Жизненный цикл документации. Состав документации к программному продукту. Средства документирования. Приемочное тестирование системы. Регрес¬сивное тестирование. Передача продукта. Сопровождение. Проблемы и особенности, экономика, требования к персоналу. Виды сопровождения. Корректирующее и адаптивное сопровождение. Метрики и средства автоматизации сопровождения. Снижение затрат. Связь с многократным использованием. Вывод из эксплуатации.
Элементы контроля

Элементы контроля

  • неблокирующий Оценка за аудиторную работу на лекциях
  • неблокирующий Оценка работы на практических занятиях
  • неблокирующий Экзамен
    Форма экзамена: Экзамен проводится в (устной) форме.
Промежуточная аттестация

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

  • Промежуточная аттестация (3 модуль)
    0.25 * Оценка за аудиторную работу на лекциях + 0.5 * Оценка работы на практических занятиях + 0.25 * Экзамен
Список литературы

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

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

  • Зыков С. В. Основы проектирования корпоративных систем / С.В. Зыков. - Москва : ВШЭ, 2012. - 431 с. - ISBN 978-5-7598-0862-6. - URL: https://ibooks.ru/bookshelf/29651/reading (дата обращения: 12.10.2020). - Текст: электронный.

Рекомендуемая дополнительная литература

  • Sergey V. Zykov, & Amitoj Singh. (2020). Agile Enterprise Engineering: Smart Application of Human Factors : Models, Methods, Practices, Case Studies. Springer.