Software Design

x04-2016 (практика по SD) группа

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

Студент TODO №1 №2 №3 №4 №5 №7 №11
17 grep HwProj Магазин книг cd, ls Архитектура Roguelike Roguelike Диздок Instant Messenger
Ёров Собир
Бегунков Павел
Гардер Антон 5
Доронин Олег
Клейман Вадим
Колесниченко Лариса 8
Кольцов Михаил
Кравцун Андрей
Кручинин Дмитрий
Лапицкая Людмила 4
Малютина Екатерина
Мухина Анжелика
Симиютин Борис
Тищенко Олеся
Чернявский Михаил
Явейн Анна

Задачи

Домашняя работа 12. 24.05.17
Практическое занятие 12. Стратегические аспекты DDD (презентация)
Домашняя работа 11. 17.05.17
Практическое занятие 11. gRPC (презентация)
  1. Instant Messenger

    Разработать сетевой чат (наподобие Jabber) с помощью gRPC
    * peer-to-peer, то есть соединение напрямую
    * Консольный пользовательский интерфейс
    * Отображение имени отправителя, даты и текста сообщения
    * Адрес peer-а и порт — параметры
    * Указание своего имени — параметром или в конфигурационном файле
    * Логирование

Домашняя работа 10. 10.05.17
Практическое занятие 10. Антипаттерны (презентация)
Домашняя работа 9. 26.04.17
Практическое занятие 9. Порождающие и поведенческие паттерны, детали реализации (презентация)
Домашняя работа 8. 19.04.17
Практическое занятие 8. Структурные паттерны, детали реализации (презентация)
Домашняя работа 7. 12.04.17
Практическое занятие 7. Архитектурная документация (презентация)
  1. Диздок

    Написать архитектурное описание Roguelike

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

    Дедлайн: 10.05.2017

Домашняя работа 6. 05.04.17
Практическое занятие 6. Практика по рисованию поведенческих диаграмм (презентация)
Домашняя работа 5. 29.03.17
Практическое занятие 5. Domain-Driven Design (презентация)
  1. Архитектура Roguelike

    Построить модель предметной области и модель структуры консольной Roguelike RPG со следующими функциональными требованиями:

    • Персонаж игрока, способный перемещаться по карте, управляемый с клавиатуры
      • Непосредственно стрелками (или дополнительной цифровой клавиатурой), не вводом команды
    • Инвентарь персонажа, включающий элементы, влияющие на его характеристики, которые можно надеть и снять
    • Карта (автоматически сгенерированная или считываемая из файла, на ваше усмотрение)
    • Мобы, способные перемещаться по карте
    • Боевая система — движущиеся объекты, пытающиеся занять одну клетку карты, атакуют друг друга

    Что хочется:

    • Модель предметной области не обязательно делать отдельной диаграммой
    • Ожидаемый результат — диаграмма компонентов и диаграммы классов для каждого компонента
      • Достаточно подробная, чтобы её можно было отдать на реализацию неопытному программисту

    Дедлайн: 12.04.2017г.

  2. Roguelike

    Реализовать Roguelike RPG.

    • Консольная графика, с возможностью далее сделать графический тайловый интерфейс
    • Расширяемая и сопровождаемая архитектура
    • Логирование основных событий в игре
    • Юнит-тесты
    • Не увлекаться!

    Дедлайн: 10.05.2017г.

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

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

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

    Дедлайн: 29.03.2017г.

  2. cd, ls

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

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

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

    Дедлайн: 19.04.2017г.

Домашняя работа 3. 15.03.17
Практическое занятие 3. Проектирование UI, логирование (презентация)
  1. HwProj

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

    Что нужно сделать:

    • Описать поток экранов HwProj в виде UML-диаграммы активностей
    • Сделать набор макетов всех экранов приложения в каком-либо из инструментов создания wireframe-макетов

    Результаты выложить на гитхаб и/или приаттачить ссылку на проект в каком-либо из онлайн-тулов

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

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

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

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

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

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

© 2014-2018 HwProj