Практика по проектированию ПО

3 курс группа

Юрий Литвинов

Студент TODO №1 №2 №3 №4 Тест 1 №5 Тест 2 №7 Тест 3 №10 №11 №12 №13 Тест 4 №15
324 CLI grep Учёт дефектов cd, ls Диаграмма классов CLI Диздок 1 2 3 4 5 6 Roguelike 1 VCS 1 Roguelike 2 1 Roguelike 3 gRPC RabbitMQ Сетевой Roguelike Secure RabbitMQ Google Drive Магазин книг
Андреев Никита 22
Бабушкин Арсений 24
Буков Антон 11
Гаев Александр 12
Гладков Александр 24
Епифанов Владислав 11
Зуев Максим 7
Краснорядцева Анастасия 12
Кузьмин Сергей 10
Левин Лев 19
Люборт Константин 13
Малышева Мария 17
Махнев Константин 10
Мосин Владислав 8
Нефедов Андрей 6
Николюкин Михаил 21
Олемская Александра 10
Пальченкова Мария 14
Разумова Дарья 14
Селищев Виталий 6
Смирнов Игорь 11
Сурков Максим 7
Тигина Мария 6
Трилис Алексей 13
Федоркина Мария 7
Шершнев Иван 9

Задачи

Домашняя работа 15. 03.06.20
  1. Магазин книг

    Дополнительная задача для тех, у кого максимальный возможный балл в таблице https://docs.google.com/spreadsheets/d/1nz4VQ87iH5A_ny_VAVmbk7WHJxIaeCUG6MPOo3mYMb8 меньше 100:

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

    Обратите внимание, что это должна быть модель предметной области, детали реализации наподобие способа хранения информации в базе данных не важны. Будет оцениваться точность следования ТЗ, соответствие модели сущностям предметной области (в том числе, неявным) и пунктуальность в следовании синтаксису UML.

Тест 4. 20.05.20
Практическое занятие 15: Практика по сетевой безопасности
  1. Secure RabbitMQ

    Задача на пару, в командах:
    Прикрутить аутентификацию по X.509-сертификатам к чатам на RabbitMQ с прошлой практики

  2. Google Drive

    Задача на пару, в командах:
    Реализовать на “голом HTTPS” консольный клиент Google Drive, умеющий показать список файлов и папок в корне Google Drive пользователя. При этом нельзя использовать библиотеку клиента Google Drive.

Домашняя работа 14. 13.05.20
Практическое занятие 14: Архитектурные аспекты сетевой безопасности (слайды)
Домашняя работа 13. 29.04.20
Практическое занятие 13: Распределённые приложения, RabbitMQ (слайды)
  1. RabbitMQ

    Задание на пару: в командах по три человека (желательно, исходных) переделать сетевой чат на RabbitMQ

    • Сервер для обмена сообщениями, о котором договариваются клиенты
      • Центральный сервер, задаваемый при запуске (127.0.0.1 по умолчанию)
    • Нет списка контактов, есть именованные каналы, на которые можно подписываться и постить туда
      • Должна быть кнопка подписки на канал и поле для ввода имени канала
      • Сообщения в разные каналы должны быть в разных вкладках
      • Подписка на несуществующий канал должна его создавать
    • Нет истории, получать только те сообщения, что были опубликованы с момента подключения
  2. Сетевой Roguelike

    Задание на дом: поддержать в проекте Roguelike многопользовательскую игру:

    • Клиент-серверная архитектура. В сети запускается сервер, клиенты подключаются (возможно, прямо в процессе игры), получают текущее состояние игры, случайно выбирают положение своего персонажа и добавляются в список играющих.
      • В одной игре может участвовать много клиентов.
    • При отключении от сервера персонаж исчезает из игры.
    • Если Roguelike был реализован пошагово, все игроки ходят поочерёдно, если в реальном времени -- одновременно.
    • Сервер может обслуживать одновременно несколько игровых сессий, клиент при подключении может выбрать одну из существующих или создать новую.
    • Для организации общения между клиентом и сервером надо использовать gRPC (или Thrift).

    При этом однопользовательский режим всё ещё должен быть доступен.

    Обновить диздок.

    Дедлайн: 13.05.2020, 10:00.

Домашняя работа 12. 22.04.20
Практическое занятие 12: Распределённые приложения, gRPC (слайды)
  1. gRPC

    Задание на пару: в командах по три человека разработать сетевой чат (наподобие Telegram) с помощью gRPC

    • peer-to-peer, то есть соединение напрямую
    • Графический пользовательский интерфейс
      • Отображение имени отправителя, даты и текста сообщения
    • При запуске указываются:
      • Адрес peer-а и порт, если хотим подключиться
      • Должно быть можно не указывать, тогда работаем в режиме сервера
      • Своё имя пользователя
Домашняя работа 11. 15.04.20
Практическое занятие 11: Порождающие и поведенческие паттерны, детали реализации (слайды)
  1. Задача на пару: спроектировать в рогалике инвентарь и сохранение/загрузку:

    • Инвентарь персонажа должен включать предметы, влияющие на его характеристики
      • Используйте паттерн “Фабрика” или “Строитель” для генерации предметов
      • Предметы должно быть можно надеть и снять
    • Использовать паттерн “Хранитель” для поддержки сохранения и загрузки игры
      • Загрузка возможна только при запуске игры, загружается всегда только последнее сохранение
      • При запуске должно быть можно выбрать загрузку сохранения или начало новой игры
      • При смерти персонажа сохранение должно удаляться
    • Переделать взаимодействие с пользователем на паттерн “Команда”
  2. Roguelike 3

    Задача на дом: в командах реализовать изменения в Roguelike по требованиям задачи выше.

    Обновить диздок.

    Дедлайн: 29.04.2020, 10:00.

Домашняя работа 10. 08.04.20
Практическое занятие 10: Структурные паттерны, детали реализации (слайды)
  1. Задача на пару: спроектировать в рогалике поддержку мобов и боевую систему:

    • Несколько разных видов, различающихся характеристиками и поведением
      • Агрессивное поведение, атакуют игрока, как только его видят
      • Пассивное поведение, просто стоят на месте
      • Трусливое поведение, стараются держаться на расстоянии от игрока
    • При попытке занять одну клетку существа атакуют друг друга (но не занимают клетку, пока одно из существ не уничтожено)

    • Необходимо использовать паттерн “Стратегия” для поддержки различных поведений

    • Используя паттерн “Декоратор”, реализовать для игрока возможность конфузить мобов. Моб, находящийся под эффектом конфузии, перемещается, случайно выбирая соседнюю клетку. Эффект должен быть временным.

  2. Roguelike 2

    Задача на дом: в командах реализовать поддержку мобов и боевую систему по требованиям задачи выше.

    Обновить диздок.

    Дедлайн: 22.04.2020, 10:00.

Домашняя работа 9. 18.03.20
Практическое занятие 9: Антипаттерны (презентация)
Домашняя работа 8. 11.03.20
Практическое занятие 8: Примеры архитектур (презентация)
Тест 3. 04.03.20
  1. VCS

    В команде из трёх человек спроектировать систему контроля версий по требованиям из презентации.

Домашняя работа 7. 04.03.20
Практическое занятие 7. Практика по проектированию (презентация)
  1. Roguelike 1

    В командах по 3 человека разработать первую версию Roguelike со следующими требованиями:

    • Консольная графика
    • Персонаж, перемещающийся по карте
    • Карта должна на выбор пользователя случайно генерироваться или грузиться из файла
      • Специальных требований на генератор карт не накладывается, но красивые результаты приветствуются
    • Оформить архитектурную документацию к текущей версии

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

    • Обязательно указать при сдаче, с кем вы в команде

    Дедлайн: 18.03.2020, 10:00

Тест 2. 26.02.20
  1. Нарисовать диаграмму активностей, моделирующую бизнес-процесс проведения “промежуточной аттестации” с точки зрения как студента, так и учебного отдела
    * Допуски по практикам
    * Экзамены
    * Результаты — отчисление, перевод в следующий семестр
    * Использовать разделы для представления разных заинтересованных сторон

  2. Нарисовать диаграмму последовательностей — типичный сценарий взаимодействия пользователя и HwProj при посылке решения
    * Начиная с авторизации и до окончания взаимодействия
    * HwProj умеет общаться с GitHub-ом, чтобы проверить статус пуллреквеста

  3. Нарисовать то же самое в виде коммуникационной диаграммы

  4. Нарисовать диаграмму развёртывания для приложения, описанного в RFP про автомобильный завод
    * https://goo.gl/MiyH8c

  5. Нарисовать диаграмму конечных автоматов, описывающую поведение микроволновки

  6. Нарисовать временную диаграмму любого сценария работы микроволновки
    * В VP это может быть не совсем тривиально: https://www.visual-paradigm.com/support/documents/vpuserguide/94/2586/6715_drawingtimin.html

Домашняя работа 6. 26.02.20
Практическое занятие 6. Практика по рисованию диаграмм (презентация)
Домашняя работа 5. 19.02.20
Практическое занятие 5. Архитектурная документация (презентация)
  1. Диздок

    Разделиться на команды по три человека и написать архитектурное описание Roguelike по требованиям из презентации

    • Общие сведения о системе
    • Architectural drivers
    • Роли и случаи использования
      • Описание типичного пользователя, как было в курсе по SE
    • Композиция (диаграмма компонентов)
    • Логическая структура (диаграмма классов)
    • Взаимодействия и состояния (диаграммы последовательностей и конечных автоматов)

    Обязательно указать при сдаче, с кем вы в команде

    Дедлайн: 04.03.2020, 10:00

Тест 1. 12.02.20
  1. Диаграмма классов CLI
Домашняя работа 4. 12.02.20
Практическое занятие 4. Диаграммы классов UML (презентация)
Набор официальных примеров нотации BPMN
  1. cd, ls

    Реализовать команды ls и cd на базе кода одногруппника

    • Обе команды могут принимать 0 или 1 аргумент
    • Не забывайте про юнит-тесты
    • Написать ревью на архитектуру оного одногруппника, указав, что оказалось удобным, а что неудобным при реализации, что можно было бы улучшить
    • Сделать fork на GitHub, выложить изменения туда и сделать пуллреквест в свой форк
      • Если вы не стесняетесь и “жертва” не против, можно и в исходный репозиторий

    Реализация, в которой надо сделать команды, определяется циклическим сдвигом на 3 вниз по списку на HwProj из сданных задач

    Дедлайн: 26.02.2020, 10:00.

Домашняя работа 3. 29.01.20
Практическое занятие 3. Объектно-ориентированное проектирование (презентация)
Практическое занятие 3. Объектно-ориентированное проектирование (конспект)
  1. Учёт дефектов
    • Проанализировать запрос https://goo.gl/MiyH8c
    • Нарисовать диаграмму IDEF0 (контекстную и первого уровня) бизнес-процесса завода
    • Наприсовать BPMN-диаграмму бизнес-процесса завода
    • Нарисовать диаграмму случаев использования создаваемого приложения

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

    Дедлайн: 19.02.2020, 10:00

Домашняя работа 2. 22.01.20
Практическое занятие 2. Пример архитектуры — Bash (презентация)
Практическое занятие 2. Пример архитектуры — Bash (конспект)
  1. grep
    • На базе своей реализации CLI реализовать команду grep,
      • поддерживающую ключи -i (нечувствительность к регистру), -w (поиск только слов целиком), -A n (распечатать n строк после строки с совпадением);
      • поддерживающую регулярные выражения в строке поиска;
      • использующую одну из библиотек для разбора аргументов командной строки.

    Ожидается обоснование выбора библиотеки для работы с аргументами --- какие были рассмотрены, почему выбрана именно эта.

    Сдавать как новый пуллреквест из новой ветки на базе предыдущей.

    Дедлайн: 12.02.2020, 10:00

Домашняя работа 1. 15.01.20
Практическое занятие 1. Введение (презентация)
Практическое занятие 1. Введение (конспект)
Таблица с баллами за домашки
  1. CLI

    Разработать архитектуру и реализовать интерпретатор командной строки из презентации.

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

    Дедлайн: 05.02.2020, 10:00

© 2014-2020 HwProj