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

3 курс группа

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

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

Задачи

Домашняя работа 15. 22.05.19
Практическое занятие 15. Docker (слайды)
Домашняя работа 14. 15.05.19
Практическое занятие 14. Архитектурные аспекты сетевой безопасности (слайды)
Домашняя работа 13. 24.04.19
Практическое занятие 13. Распределённые приложения, RabbitMQ (слайды)
  1. Сетевой Roguelike

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

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

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

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

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

Домашняя работа 12. 17.04.19
Практическое занятие 12. Распределённые приложения, gRPC (слайды)
Домашняя работа 11. 10.04.19
Практическое занятие 11. Порождающие и поведенческие паттерны, детали реализации (слайды)
  1. Roguelike 3

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

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

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

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

Домашняя работа 10. 03.04.19
Практическое занятие 10. Антипаттерны (слайды)
Домашняя работа 9. 13.03.19
Практическое занятие 9. Структурные паттерны, детали реализации (слайды)
  1. Roguelike 2

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

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

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

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

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

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

Домашняя работа 8. 06.03.19
Лекция 8. Domain-Driven Design, стратегические аспекты (презентация)
Практическое занятие 8. Примеры архитектур (презентация)
Домашняя работа 7. 27.02.19
Практическое занятие 7. Практика по проектированию (презентация)
  1. Roguelike 1

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

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

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

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

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

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

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

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

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

    Дедлайн: 02.03.2019, 23:59

Домашняя работа 5. 13.02.19
Практическое занятие 5. Практика по рисованию диаграмм (презентация)
  1. Магазин книг

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

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

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

Домашняя работа 4. 06.02.19
Практическое занятие 4. Диаграммы классов UML (презентация)
Практическое занятие 4. Диаграммы классов UML (конспект)
  1. cd, ls

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© 2014-2019 HwProj