dorofeevaa / tp_hse_2022

Технологии программирования, ДБИ ВШБ ВШЭ, 1 модуль 2022/2023

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

year status progress

1 модуль, 2022/2023 учебный год, ВШЭ ВШБ ДБИ

Аннотация

Курс про все, что связано с созданием ПО, кроме непосредственно написания программного кода

Курс состоит из лекций и семинарских занятий.

Лекционный материал включает краткий обзор важных с точки зрения процесса разработки понятий: методы отладки и этапы исправления дефектов ПО, критерии хорошей и неудачной архитектуры, этапы проектирования и разработки, методологии разработки. Семинарский материал состоит из рассказа о важных инструментах программиста: системы контроля версий, системы сборки, gdb, valgrind, развертывание и настройка систем непрерывной интеграции.

Цель курса — дать слушателям, которые параллельно изучают языки программирования, алгоритмы и т. п., информацию и дополнительные знания, какими инструментами можно пользоваться и на что обращать внимание при создании рыночного программного продукта.

Объявления

Подготовка к Семинару №2

Для успешного выполнения практики на Семинаре №2 вам понадобятся некоторые инструменты, для разных операционных систем на вашем ПК действия разные:

  • Если у вас Windows, варианты:
  • Если у вас MacOS - у вас есть уже приложение Terminal
    • Очень желательно, кроме того, установить brew
      • Инструкция тут
        • Достаточно в Terminal вставить команду /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    • После установки brew - установить Git
      • Инструкция тут
        • Достаточно в Terminal вставить команду brew install git
  • Если у вас Linux (любой дистрибутив) - у вас уже есть приложение Терминал / Эмулятор терминала / "что-то подобное" - точно есть во всех дистрибутивах, просто поищите
    • Нужно установить Git
      • Достаточно в Терминале набрать команду sudo apt-get install git (если выпадает ошибка - стоит погуглить, какой менеджер пакетов используется в вашем дистрибутиве)

План лекций

Лекция 0

Неделя 1

Организационное

  • План курса
  • Правила оценивания
  • Информация о заданиях
  • Контрольные мероприятия

Лекция 1

Неделя 1

Этапы развития проекта

  • Основные этапы жизненного цикла проектирования, реализации и внедрения ПО
  • Формирование требований
  • Разработка концепции
  • Техническое задание
  • Эскизный проект
    • Понятие о MVP и примеры MVP
  • Технический проект
  • Рабочая документация
  • Поставка / ввод в действие
  • Сопровождение
  • Вывод из эксплуатации

Почитать подробнее про MVP можно тут, тут, тут и тут

Хороший пост про "Техническое задание на разработку ПО"

Лекция 2

Неделя 1

Базовые понятия о языках программирования

  • Парадигмы программирования
    • Императивное программирование
      • Описание
      • Примеры
      • "Вложенные парадигмы"
        • Процедурное программирование
        • Структурное программирование
        • Аспектно-ориентированное программирование
        • Объектно-ориентированное программирование
        • Обобщенное программирование
    • Декларативное программирование
      • Пример-объяснение
      • "Вложенные парадигмы"
        • Логическое программирование
        • Функциональное программирование
    • Общая схема парадигм
    • Метапрограммирование
    • Реализация парадигм в языках программирования
  • Компилируемые и интерпретируемые языка
    • Определения
    • Примеры
  • Типизация
    • Сильная / слабая типизация
    • Статическая / динамическая типизация
    • Явная / неявная типизация

Лекция 3

Неделя 2

Основные диаграммы UML

  • Что такое UML?
    • Базовое понятие о нотации UML
  • Диаграмма вариантов использования
    • Понятие о вариантах использования
    • Понятие об акторах
    • Нотация диаграммы вариантов использования
  • Диаграмма классов
    • Понятие о классах
    • Нотация диаграммы классов
    • Выделение сущностей
      • Карточки CRC
      • Метод Аббота
  • Диаграмма последовательности
    • Нотация диаграммы последовательности
  • Диаграмма состояний
    • Нотация диаграммы состояний
  • Диаграмма деятельности
    • Нотация диаграммы деятельности

UML Cheat Sheet

Лекция 4

Неделя 2

CI/CD/CD

  • CI/CD/CD
  • Понятие о Continuous Integration
  • Понятие о Continuous Delivery
  • Понятие о Continuous Deployment
  • Пример организации процесса разработка из индустрии
    • Этап проектирования
    • Этап реализации
    • Этап сдачи задачи
    • Подготовка к выпуску версии

TravisCI, TeamCity, GitHub Actions, Jenkins

Лекция 5

Неделя 3

Отладка ПО, ч.1: работа с ошибками ПО

  • Основные этапы отладки ПО
  • Воспроизведение дефекта
    • Необходимая информация для воспроизведения
  • Анализ дефекта
    • Понятие root-cause
    • Условия возникновения
    • Область повреждения
    • Необходимые выводы
  • Дизайн исправления
    • Технический
    • Архитектурный
    • Технологический
  • Исправление дефекта
  • Валидация исправления
  • Интеграция исправления в код или целевую систему
  • Дополнительные валидации после интеграции

Лекция 6

Неделя 3

Отладка ПО, ч.2: техники отладки

  • Запуск программ в отладчике (трассировка)
    • Софтверный дебаггер
    • "Железный" дебаггер
    • Удаленный дебаггер
  • Логирование
    • Работы системы
    • Программного кода
  • Анализ программного кода без исполнения программы
    • "Метод пристального взгляда"
    • Статические анализаторы
  • Анализ поведения системы
    • Упрощение сценария
    • Ограничение объема данных
    • Упрощение данных / запроса
  • UNIT-тестирование
  • Прототипирование
  • Отладка с помощью дампов
  • Отладка с помощью перехватов
  • Профилирование кода
  • Выполнение кода в другой среде
  • Отладка методом RPC (Remote procedure call)
  • Отладка путем анализа документации
  • Отладка трансляцией кода
    • Трансляция "вниз"
    • Трансляция "вверх"
  • Отладка разработкой интерпретатора
  • Метод индукции
  • Метод дедукции
  • Обратное движение по алгоритму

Лекция 7

Неделя 4

Управление качеством ПО, ч.1

  • Понятие о качестве ПО
  • Характеристики и атрибуты качества ПО
  • Основые аспекты качества ПО
  • Парадокс тестировщика
  • Соответствие ожиданиям stakeholder'ов
  • Качество и деньги
    • Десятичное правило качества
    • Важные аспекты

Лекция 8

Неделя 4

Управление качеством ПО, ч.2

  • Ручное тестирования
    • Класс эквивалентности
    • Граничные значения
  • 7 ключевых инструментов качества
    • Причинно-следственная диаграмма Исикавы
    • Блок-схема
    • Контрольный листок
    • Контрольная карта (карта Шухарта)
      • Примеры
    • Гистограмма
    • Диаграмма Парето
    • Диаграмма разбрасывания
  • Ручное тестирование. Практические советы
  • Автоматизированное тестирование
    • Основные аспекты
    • Жизненный цикл автотеста
    • Практические советы
    • Как на практике?

Лекция 9

Неделя 5

Принципы проектирования ПО, часть 1

  • Что такое программа, как она устроена, как она работает (вопросы к аудитории, если есть понимание - быстро двигаемся дальше)
  • Что такое архитектура ПО
  • Что такое "Проектирование ПО"?
  • По каким критериям можно оценить архитектуру?
    • Критерии хорошей архитектуры
      • Эффективность
      • Гибкость
      • Расширяемость
      • Масштабируемость, тестируемость, возможность повторного использования, сопровождаемость
    • Критерии неудачной архитектуры
      • Жесткость
      • Хрупкость
      • Неподвижность
  • Принцип High Cohesion / Low Coupling

Отличный ресурс про паттерны проектирования

Лекция 10

Неделя 5

Принципы проектирования ПО, часть 2

  • Принципы SOLID
    • Single responsibility principle
    • Open-closed principle
    • Liskov substitutional principle
    • Interface segregation principle
    • Dependency inversion principle
  • Закон Деметры
  • YAGNI
  • DRY / DIE
  • KISS

Лекция Роберта Uncle Bob Мартина про SOLID

Лекция 11

Неделя 6

Архитектурные паттерны

  • Классификация архитектуры ПО
    • Локальные
    • Распределенные
      • Файл-серверные
      • Клиент-серверные
        • Двухзвенные
        • Трехзвенные
        • Многозвенные
  • Локальные приложения
    • MVC (Model-View-Controller)
  • Клиент-серверная архитектура
    • Тонкий и толстый клиент
    • Трехзвенная архитектура
  • Оценка нагрузки на систему
  • Тим проекта и влияние на нагрузку
  • Ресурсы для обеспечения производительности
  • Масштабирование
    • Горизонтальное
    • Вертикальное
    • Функциональное разбиение
    • Шардинг
  • Типичная архитектура веб-сервиса
  • Типичная архитектура нагруженной информационной системы

Лекция 12

Неделя 6

Методологии разработки ПО

  • Основные понятия
  • Факторы, оказывающие влияние на процесс разработки
    • Внешние факторы
    • Внутренние факторы
  • Каскадная модель
  • V-модель
  • Инкрементная модель
  • Итерационная модель
  • Спиральная модель
  • RAD-модель
  • Семейство гибких методологий
    • Agile-манифест
    • Scrum
    • Kanban

Статья про методологии разработки

План семинаров

Семинар 1 (неделя 1)

Основы Python

  • понятие о python и интерпретаторе
  • запускаем интерпретатор и считаем парочку арифметических выражений
  • показываем переменные
  • пишем скрипт на сложение чисел
  • пишем скрипт "Hello world"
  • показываем условные переходы и циклы
  • пишем простую функцию расчета факториала

Хороший курс по Python

Python First Steps

Python for Beginners

Еще разные туториалы

Консоль Python прямо на сайте

Документация по Python

Семинар 2 (неделя 2)

Базовые инструменты разработки ПО

Системы контроля версий, git, git-flow (опционально).

Bash и основные команды.

План семинара:

  • показываем bash (на лекции предупрежу, что надо иметь Linux / macOS или WSL)
  • базовые команды bash: touch, rm, cd, mkdir, rmdir, ls, cp, mv, cat, echo, ...
  • пишем простой скрипт на bash (Например, считаем количество файлов в директории)
  • рассказываем про системы контроля версий в целом (зачем нужно, какие есть)
  • рассказываем основы git: что такое репозиторий, что такое ветки, что такое коммиты, pull-request'ы
  • показываем: создание репозитория на github, клонирование локально, создание файла, коммит, push origin

bash commands cheatsheet

bash script cheatsheet

Семинар 3 (неделя 3)

Инструменты отладки

Показываем дебаггер в IDE, точки останова, как с этим работать. (опционально) показываем gdb & valgrind

План семинара:

  • запускаем любимую IDE
  • пишем простую программу (лучше на питоне), запускаем дебагер
  • показываем точки останова, шаг вперед / шаг с заходом / шаг с обходом
  • показываем значения переменных
  • опционально показываем профилировщик
  • опционально показываем gdb - как работать из консоли (опять же, на простом примере)
  • опционально показываем valgrind в простейших сценариях (память не освобождена, переменная не инициализирована, используется неинициализированная переменная в условном переходе)

Семинар 4 (неделя 4)

Тестирование ПО

Отработка на семинаре простейших примеров написания тестов на python, демонстрация разных видов тестов

План семинара:

  • пишем на питоне пару простых функций (например, сложение и умножение чисел)
  • показываем юнит-тесты (каждую функцию)
  • показываем нагрузочное тестирование (запускаем много итераций теста, смотрим производительность)
  • показываем сценарное тестирование (на уровне "посчитаем значения выражения")
  • показываем, как настроить простейший CI в GitHub Actions

Семинар 5 (неделя 5)

Диаграммы UML

Отработка на семинаре навыков построения диаграмм, решение небольших задач. Диаграммы классов пока не рассматриваем.

План семинара:

  • решаем задачку на диаграмму вариантов использования (например, "варианты использования сайта аэропорта")
  • решаем задачку на диаграмму последовательности (например, "снимаем деньги в банкомате")
  • решаем задачку на диаграмму деятельности (например, "поступаем в университет")
  • решаем задачку на диаграмму состояний ("рассматриваем сдачу курса: изучается-сдан-пересдача-не сдан")

Семинар 6 (неделя 6)

Практика проектирования

Отрабатываем практические навыки проектирования (без погружения в программный код) понятных предметных задач: заказ такси через приложение, покупка в интернет-магазине...Рисуем диаграммы классов UML

План семинара:

  • решаем простую задачу на проектирование локального приложения (мобильного или десктопного), без взаимодействия с сервером. Например, проектируем простейшее приложение для создания и хранения заметок. Жетально проектировать на уровне классов. Если идет сложно - сначала пытаемся выделить варианты использования и придумать, как их реализовать. Даже если получится по итогу криво, главное, чтобы получилось хоть что-то..
  • решаем задачу посложнее на проектирование клиент-серверного приложения. Например, приложение для заказа такси. Обязательно надо подстветить проблему, что запрос от клиента до сервера может не дойти (или от сервера до клиента), как это можно решать (спойлер - таймлимитом)

Контрольные мероприятия

✅ Контрольная работа (КР)

❗ Контрольная работа пройдет на лекции 28 сентября в 18:10, в формате онлайн.

  • Продолжительность - 30 минут
  • Максимальный балл за работу - 20 первичных. Оценка КР = (Первичные баллы) / 2 (без округления)
  • Формат - дистанционный опрос на базе Google Forms
  • Вопросы могут быть разных форматов:
    • Тестовые (нужно выбрать 1 или несколько правильных ответов)
    • С открытым ответом (нужно написать развернутый ответ словами)
  • Вопросы будут только по материалам лекций №1 - №6

✅ Техническое задание №1 (ТЗ1)

Пишем простую программу на Python

Легенда задания

Вам нужно написать простую программу на Python, которая поможет разобраться с вашей базой контактов. Графический интерфейс делать не нужно, достаточно просто консольной программы.

Контакты хранятся в виде текстового файла, в каждой строке которого - ФИО (первое слово - фамилия, второе при наличии - имя, третье при наличии - отчество), номер телефона (формата , где X - от 9 до 11 цифр), адрес электронной почты (формата X@Y.Z, состоящий из букв латинского алфавита, знака @ и точки).

Обратите внимание, что ФИО может быть неполное (например, только ФИ, или только Фамилия), номер телефона и/или адрес электронной почты может быть не заполнен.

ФИО, номер телефона, адрес электронной почты отделены друг от друга запятыми, если не заполнено - запятые все равно расставлены.

Пример файла с базой контактов:

Иванов Иван Иванович, +79999999995, ivanov@ma.il

Петров Коля,, kolya@gmail.com

Сидоров, +79966969669,

Пушкин Александр Сергеевич,,

Требования и критерии оценки

За задание вы можете получить максимум 10 баллов.

Семинарист при проверке может выставить за какой-либо пункт частичный балл, если требования пункта выполнены не полностью.

  • 1 балл Создан класс Contact с необходимыми полями
  • 1 балл Реализовано чтение базы контактов из файла (имя файла вводится в консоль) в коллекцию объектов типа Contact. Если телефон или адрес электронной почты не указан, нужно корректно это учесть в программе. NB: прямо это на семинаре могли не показывать, но это действительно очень просто (не просто так это первые пункты задания). Если будут сложности - задайте вопросы на семинаре №3, объясним :)
  • 1 балл Реализован поиск по номеру телефона
  • 1 балл Реализован поиск по адресу электронной почты
  • 2 балла Реализован поиск по Фамилии, Имени, Отчеству как в отдельности, так и вместе (т.е. можно искать Иван, а можно искать Иван Иванов, например)
  • 2 балла Реализован поиск и вывод на экран всех контактов, у которых не заполнен номер телефона и/или адрес электронной почты
  • 2 балла Реализована возможность редактирования любого контакта (подумайте, как это сделать удобно)

Дедлайн

Есть два дедлайна - мягкий и жесткий.

  • Если вы присылаете ваше решение до мягкого дедлайна - то ваш семинарист проверяет работу, дает замечания, и далее у вас есть 3 дня на то, чтобы внести исправления (и получить балл выше). Обратите внимание, допускается именно исправление замечаний, а не доработка каких-то пунктов задания, которые вы изначально не сделали. Вы можете не вносить исправления и согласиться на тот балл, который получили по итогам первой проверки.
  • Если вы присылаете ваше решение после мягкого дедлайна, но до жесткого дедлайна - семинарист проверяет вашу работу и выставляет балл. Исправления не допускаются.
  • Если вы присылаете ваше решение после жесткого дедлайна, то задание не проверяется, и вы получаете 0 баллов

Сроки

Вариант 1 - если у вас уже прошел семинар №2

  • Мягкий дедлайн 25.09
  • Жесткий дедлайн 02.10

Вариант 2 - если у вас еще не было семинара №2

  • Мягкий дедлайн дата семинара №2 + 1 неделя
  • Жесткий дедлайн дата семинара №2 + 2 недели

Формат сдачи

Задание вы сдаете своему семинаристу. Результаты выполнения задания должны быть загружены в репозиторий на GitHub. Канал отправки ссылки на репозиторий семинаристу - на усмотрение семинариста.

✅ Техническое задание №2 (ТЗ2)

Добавляем тесты и разворачиваем простейший CI/CD

Задание состоит из двух частей. Каждая часть оценивается максимум в 5 баллов. Общий максимальный балл за задание: 5 + 5 = 10 баллов

Часть №1 Тестирование (стоит 5 баллов из 10)

Задание

Реализуйте на Python простейшую программу, которая будет считывать из файла числа, а далее отдельными функциями искать среди этих чисел минимальное число, максимальное число, считать их общую сумму и произведение.

Функции должны называться, соответственно _min (минимальное число), _max (максимальное число), _sum (сумма всех чисел), _mult (произведение всех чисел).

Числа в файле записаны в одной строке, друг от друга отделены пробелами. В файле есть минимум одно число. Максимально возможное количество чисел в файле - 1 млн.

Для этой программы подготовьте тесты:

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

Пример работы

В файле: 1 4 2 3

Минимальное: 1

Максимальное: 4

Сумма: 10 (1+2+3+4)

Произведение: 24 (1*2*3*4)

Критерии оценки

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

Часть №2 (стоит 5 баллов из 10)

Github Actions

Travis CI

Circle CI

Задание

Теперь вам необходимо настроить CI-систему для своего мини-проекта.

Критерии оценки

  • 1 балл: заведите репозиторий для своего проекта на GitHub. Оформите простейший README.md (туториал по markdown (файлы формата .md)). Загрузите в репозиторий файлы своего мини-проекта (код, тесты, README.md).
  • 1 балл: подключите к вашему проекту любую CI-систему (выше есть подсказки с вариантами систем, но мы крайне рекомендуем использовать GitHub Actions в рамках этого задания, только если Ваш семинарист не демонстрировал вам другую систему). Обеспечьте возможность запуска тестов в ручном режиме (например, по щелчку кнопки в веб-интерфейсе CI-системы)
  • 1 балл: настройте CI таким образом, чтобы прогон тестов запускался автоматически при любом новом коммите в репозиторий вашего проекта
  • 1 балл: сделайте интеграцию CI-системы и вашего репозитория на GitHub: сделайте бэйдж в README.md, который будет показывать текущий статус тестов. Для информации смотрите тут, тут или в аналогичном доке для выбранной вами CI-системы. Как выглядят бэйджи в целом, можно посмотреть в любом проекте на GitHub, где они сделаны, например, в репозитории Telegram
  • 1 балл: сделайте любую интеграцию CI-системы и какого-либо мессенджера (например, telegram, slack, msteams и т.п.). Настройте систему так, чтобы при успешном прохождении теста посылалось сообщение "все ок", при неуспешном - посылалась информация, какие именно тесты не пройдены. Обратите внимание, тут не нужно писать код, тут нужно взять готовые аддоны / расширения и просто настроить

Дедлайн

Правила дедлайнов такие же, как и по ТЗ1 - есть мягкий и жесткий дедлайны.

Вариант 1 - если у вас уже прошел семинар №4

  • Мягкий дедлайн 09.10
  • Жесткий дедлайн 16.10

Вариант 2 - если у вас еще не было семинара №4

  • Мягкий дедлайн дата семинара №4 + 1 неделя
  • Жесткий дедлайн дата семинара №4 + 2 недели

✅ Техническое задание №3 (ТЗ3)

Проектируем небольшое приложение по требованиям

Задание

Вам необходимо спроектировать небольшое приложение. Подчеркнем, что вам нужно именно спроектировать приложение, а не разработать его. Писать программный код не нужно. В рамках проектирования приложения вам необходимо подготовить несколько UML-диаграмм.

Какие инструменты можно использовать для построения диаграмм

Вы можете использовать любые удобные для вас инструменты. Как вариант, предлагаем следующие бесплатные онлайн-сервисы:

Легенда

Наверное, каждый из вас хоть раз заказывал доставку еды через мобильное приложение. Если нет - можете посмотреть, как работают подобные сервисы, например, Яндекс.Еда или Delivery Club. Вам необходимо спроектировать подобное приложение. Понятно, что вы не можете в деталях знать, как устроена работа подобных систем с ресторанами и курьерами - но от вас и не требуется описать то, как работает в данных системах. Вы можете предложить любые процессы и сценарии на ваше усмотрение, главное, чтобы они были логичны и реализуемы.

Требования и критерии оценки

  • Обязательное требование (без выполнения этого пункта проверка невозможна): подготовьте краткое (0.5-1 стр текста) описание системы, для которой вы будете далее строить диаграммы
  • 2 балла Постройте диаграмму вариантов использования. На диаграмме укажите только основные сценарии (не более 5-7 штук).
  • 2 балла Постройте диаграмму последовательности для процесса заказа еды через приложение
  • 2 балла Постройте диаграмму состояний для заказа (подумайте, какие статусы могут быть у заказа)
  • 2 балла Постройте диаграмму деятельности для описания процесса обработки заказа системой
  • 2 балла Постройте диаграмму классов для системы. Обратите внимание, можно вместо классов указывать большие "модули системы" - например, "модуль оплаты" или "модуль расчета времени доставки"

Дедлайн

Правила дедлайнов такие же, как и по ТЗ1 - есть мягкий и жесткий дедлайны.

Вариант 1 - если у вас уже прошел семинар №5

  • Мягкий дедлайн 16.10
  • Жесткий дедлайн 23.10

Вариант 2 - если у вас еще не было семинара №5

  • Мягкий дедлайн дата семинара №5 + 1 неделя
  • Жесткий дедлайн дата семинара №5 + 2 недели, но не позже даты ЭКЗ (будет во время сессии 24-30.10)

✅ Письменный экзамен (ЭКЗ)

❗ Письменный экзамен пройдет 24 октября в 11:00, в формате онлайн.

  • К 11:00 вы подключаетесь по ссылке на webinar.ru, там будет более подробно озвучен регламент проведения экзамена
  • Продолжительность - 60 минут
  • Максимальный балл за работу - 40 первичных. Оценка ЭКЗ = (Первичные баллы) / 4 (без округления)
  • Формат - дистанционный опрос на базе Google Forms (организационно все устроено так же, как и КР)
  • Вопросы могут быть разных форматов:
    • Тестовые (нужно выбрать 1 или несколько правильных ответов)
    • С открытым ответом (нужно написать развернутый ответ словами)
  • Вопросы будут только по материалам лекций (№1 - №12)
  • В случае плагиата в любом из вопросов будет выставлена оценка "0" за ЭКЗ
  • Проверка экзамена будет закончена ориентировочно к 28 октября

Понедельный план

Неделя Лекции Семинары Выдача заданий Сдача заданий
✅ 1 Организационное + Этапы развития проекта + Базовые понятия о языках программирования Основы Python Установить необходимое ПО для курса на свои машины
✅ 2 Основные диаграммы UML + CI/CD/CD Базовые инструменты разработки ПО ТЗ1: Пишем простую программу на Python
✅ 3 Отладка ПО, ч.1: работа с ошибками ПО + Отладка ПО, ч.2: техники отладки Инструменты отладки
✅ 4 КР + Управление качеством ПО, ч.1 + Управление качеством ПО, ч.2 Тестирование ПО ТЗ2: Добавляем тесты и разворачиваем простейший CI/CD ТЗ1: Пишем простую программу на Python
✅ 5 Принципы проектирования ПО, часть 1 + Принципы проектирования ПО, часть 2 Диаграммы UML ТЗ3: Проектируем небольшое приложение по требованиям
✅ 6 Архитектурные паттерны + Методологии разработки ПО Практика проектирования ТЗ2: Добавляем тесты и разворачиваем простейший CI/CD
✅ 7 ЭКЗ ТЗ3: Проектируем небольшое приложение по требованиям

Правила оценивания

Финальная оценка = Математическое округление (0.2*КР + 0.15*ТЗ1 + 0.15*ТЗ2 + 0.15*ТЗ3 + 0.35*ЭКЗ)

About

Технологии программирования, ДБИ ВШБ ВШЭ, 1 модуль 2022/2023