Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную информацию об использовании файлов cookies можно найти здесь, наши правила обработки персональных данных – здесь. Продолжая пользоваться сайтом, вы подтверждаете, что были проинформированы об использовании файлов cookies сайтом НИУ ВШЭ и согласны с нашими правилами обработки персональных данных. Вы можете отключить файлы cookies в настройках Вашего браузера.

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

Конструирование программного обеспечения

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

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

Аннотация

Дисциплина охватывает ключевые аспекты современных методов и средств создания программного обеспечения с применением инструментов и технологий используемых в промышленной разработке. В процессе освоения курса студенты получат представление о программировании как технологическом процессе, познакомятся с ключевыми архитектурами программного обкспечения и паттернами проектирования, приобретут навыки применения инструментальных средств в разработке и тестировании ПО и развертывания программ.
Цель освоения дисциплины

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

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

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

  • Знание принципов объектно-ориентированного программирования, основных программных архитектур и паттернов проектирования программного обеспечения
  • Умение создавать клиент-серверные приложения с базами данных
  • Навыки применения инструментальных средств в разработке и тестировании
  • Знание ключевых аспектор слоистой архитектуры как совокупность важнейших решений организации программной системы.
  • Проектировать слой доступа к данным (DAL).
  • Уметь реализовывать внедрение зависимостей
  • Проектировать приложения приложение согласно правилам (рекомендациям) архитектурных решений MVP и MVC
  • Gроектровать приложение согласно правилам архитектурного паттерна MVVM двумя различными подходами: ViewModel first и View first.
  • Замечать в коде типичные проблемы, которые можно решить пораждающими паттернами.
  • Уметь замечать в коде типичные ошибки, которые можно решить структурными паттернами.
  • Уметь находить типичные ошибки в коде, которые можно решить поведенческими паттернами.
  • Уметь строить приложения в стиле REST
  • Уметь проектировать клиент-серверное взаимодействие через gRPC
  • Настраивать непрерывную интеграцию и непрерывную поставку.
  • Использовать инструментальные средства для развёртывания проекта
  • Уметь применять различные виды тестирования ПО
Содержание учебной дисциплины

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

  • Объектно-ориентирвоанное проектирвоание: основные принципы и ключевые концепции
  • Понятие архитектуры программного обеспечения. Разработка N – tier приложений
  • Построение слоя доступа к данным
  • Инверсия управления
  • MV-паттерны: MVC, MVP
  • MV-паттерны: MVVM
  • Шаблоны проектирования: порождающие паттерны
  • Шаблоны проектирования: структурные паттерны
  • Шаблоны проектирования: поведенческие паттерны
  • Понятие сервисов. Создание REST сервисов на WebAPI.
  • Протокол RPC. Создание сервиса средствами фреймворка gRPC
  • Тестирование ПО
  • Автоматизация сборки проектов
  • Основы контейнеризации проектов. Публикация проектов в Docker
Элементы контроля

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

  • неблокирующий SeminarsEstimation
  • неблокирующий HomeworkEstimation
  • блокирующий TasksEstimation
    Оценка ниже 4-х баллов хотя бы за одно из индивидуальных заданий является блокирующей для получения экзамена автоматом.
Промежуточная аттестация

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

  • 2024/2025 4th module
    Допуск к экзамену осуществляется при общей положительной оценке, получаемой с учетом семинарских занятий, домашних заданий и индивидуальных заданий, приведенных к единичному коэффициенту: access_estimation = ( 0.15 * seminars_estimation + 0.15 * homework_estimation + 0.6 * tasks_estimation ) / 0.9 где access_estimation — неокругленная оценка, превышающая 4 балла и определяющая допуск к сдаче экзамена. В противном случае оценка является блокирующей до пересдачи заданий выполненных на отрицательную оценку. Пересдача индивидуальных заданий осуществляется по завершению сессии до проведения переэкзаменовки в соответствии с регламентом. Пересдаются задания, имеющие отрицательную оценку или же те задания, которые имеют минимальную положительную оценку. Экзамен оценивается по 10 бальной шкале. Формула оценки за курс КПО Итоговая оценка после проведения экзамена определяется по следующей формуле: result_estimation = math_round ( 0.15 * seminars_estimation + 0.15 * homework_estimation + 0.6 * tasks_estimation + 0.1 * exam_estimation ) где: result_estimation — итоговая оценка, math_round — математическое округление оценки (https://ru.wikipedia.org/wiki/Округление), exam_estimation — оценка за экзамен.
Список литературы

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

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

  • gRPC: запуск и эксплуатация облачных приложений : Go и Java для Docker и Kubernetes, Индрасири, К., 2021
  • Архитектура программного обеспечения на практике, Басс, Л., 2006
  • Использование Docker : разработка и внедрение программного обеспечения при помощи технологии контейнеров, Моуэт, Э., 2017
  • Паттерны проектирования API, Гивакс, Дж. Дж., 2023
  • Паттерны проектирования, Фримен, Э., 2013
  • Тестирование веб-API, Винтерингем, М., 2024
  • Фундаментальный подход к программной архитектуре : паттерны, свойства, проверенные методы, Ричардс, М., 2024
  • Чистый код : cоздание, анализ и рефакторинг, Мартин, Р., 2023
  • Эффективное тестирование программного обеспечения : руководство разработчика, Аниче, М., 2023

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

  • Agile-тестирование : обучающий курс для всей команды, Грегори, Дж., 2019
  • Pattern-oriented software architecture. Vol.5: On patterns and pattern languages, , 2007
  • Объектно - ориентированное конструирование программных систем, Мейер, Б., Биллига, В. А., 2005
  • Приемы объектно - ориентированного проектирования : паттерны проектирования, Гамма, Э., 2014
  • Приемы объектно-ориентированного проектирования. Паттерны проектирования : пер. с англ., Гамма Э., 2013
  • Разработка, дизайн, программирование, тестирование и раскрутка Web-сайта, Кэмпбел М., 2007
  • Тестирование программного обеспечения : внедрение, управление и эксплуатация, Рэшка, Дж., 2013

Авторы

  • Виденин Сергей Александрович
  • Буцкая Евгения Александровна