Бакалавриат
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