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

5 курс группа

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

Студент TODO №1 №2 №3 №4 №5 №6 №7 №9 №11 №13
169 CLI grep Учёт дефектов cd, ls Магазин книг Диздок Roguelike 1 Roguelike 2 Roguelike 3 Сетевой Roguelike
Khoroshev Artem 10
Korablinov Vladislav 10
Kuklina Maria 8
Tankov Vladislav 8
Артемьева Ирина 9
Бахвалов Павел 10
Вальчук Дмитрий 10
Винокуров Никита 10
Гордеева Людмила 10
Елисеев Антон 10
Изюмов Николай 10
Ильчук Иван 10
Платонов Владислав 10
Рябушев Антон 10
Садовников Александр 8
Соколов Никита 7
Сычев Станислав 10
Хворов Александр 9

Задачи

Домашняя работа 14. 20.05.19
Практика 14. Архитектурные аспекты сетевой безопасности (слайды)
Домашняя работа 13. 13.05.19
  1. Сетевой Roguelike

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Домашняя работа 4. 25.02.19
Практика 4: Диаграммы классов UML (слайды)
Практика 4: Диаграммы классов UML (текст)
  1. cd, ls

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© 2014-2019 HwProj