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

5 курс группа

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

Студент TODO №1 №2 №3 №4 №5 №6 №7 №8 №10 №11 Тест 1 Тест 2
148 CLI grep Учёт дефектов cd, ls Магазин книг Диздок VCS Roguelike 1 Roguelike 2 Roguelike 3 gRPC RabbitMQ
Бобров Артём 3
Бобышев Никита 12
Галоев Илькин 12
Громов Павел 1
Кальницкий Владимир 12
Карпенко Мария 2
Картышева Елена 1
Колмогорова Валерия 12
Кравченко Евгений 1
Крыштапович Виктор 3
Лаптева Юлия 12
Лучко Александр 12
Лучко Сергей 12
Мартын Евгений 4
Мирзоев Денис 12
Мурзин Дмитрий 3
Орехов Дмитрий 3
Пости Иван 1
Рыбин Иван 2
Свиридов Николай 1
Сидорова Елизавета 2
Цыкунов Дмитрий 12
Чернокоз Александр 12
Чори Александр 1

Задачи

Домашняя работа 12. 27.05.20
Практика 14: Архитектурные аспекты сетевой безопасности
Тест 2. 20.05.20
Практика 13. Распределённые приложения, RabbitMQ
  1. RabbitMQ

    Задание на пару:
    В командах переделать сетевой чат на RabbitMQ

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

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

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

    Реализовать в Roguelike:

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

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

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

Домашняя работа 10. 22.04.20
Практика 10: Антипаттерны (слайды)
  1. Roguelike 2

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

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

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

    • Используя паттерн "Декоратор", реализовать заклинание конфузии, накладываемое на игрока. Игрок, находящийся под эффектом конфузии, перемещается, случайно выбирая направление из трёх, наиболее близких к направлению, выбранному игроком (например, при попытке сделать шаг вверх игрок с равной вероятностью делает шаг вверх, вверх-влево или вверх-вправо). Эффект должен быть временным.

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

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

Домашняя работа 9. 15.04.20
Практика 9. Структурные паттерны, детали реализации (слайды)
Домашняя работа 8. 08.04.20
Практика 8. Примеры архитектур, системы контроля версий (слайды)
Практика 8. Примеры архитектур, системы контроля версий (текст)
  1. Roguelike 1

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

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

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

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

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

Домашняя работа 7. 25.03.20
Практика 7: Практика по проектированию (слайды)
  1. VCS

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

Домашняя работа 6. 18.03.20
Практика 6: Архитектурная документация (слайды)
  1. Диздок

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

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

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

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

Домашняя работа 5. 11.03.20
Практика 5: Практика по рисованию диаграмм (слайды)
  1. Магазин книг

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

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

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

Домашняя работа 4. 04.03.20
Практика 4: Диаграммы классов UML (слайды)
Сссылка на Telegram-чат курса
  1. cd, ls

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

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

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

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

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

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

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

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

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

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

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

Домашняя работа 1. 12.02.20
Лекция 1: Об архитектуре (слайды)
Лекция 1: Об архитектуре (текст)
Практика 1: Введение, задача про CLI (слайды)
Практика 1: Введение, задача про CLI (текст)
  1. CLI

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

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

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

© 2014-2020 HwProj