Software Design

x02-2014 (практика по SD) группа

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

Студент TODO №1 №2 №3 №4 №5 №6 №7 №8 №11 №13
8 CLI grep cd, ls Магазин книг Последовательности HwProj Instant Messenger Roguelike gRPC
Беляев Станислав
Бойкий Дмитрий
Бугакова Надежда
Валин Глеб
Гайдашенко Анастасия
Кравченко Дмитрий
Кравченко Юрий
Лабутин Игорь
Лапшин Дмитрий
Малышева Александра
Маркелов Александр
Пластинин Виталий 8
Подгузов Никита
Ребрик Юрий
Степанов Всеволод
Суворов Егор
Третьякова Елизавета
Филатова Анастасия
Черникова Ольга

Задачи

Домашняя работа 15. 14.12.16
Практическое занятие 15. Разбор домашних работ (презентация)
Домашняя работа 14. 07.12.16
Практическое занятие 14. Распределённые приложения - 2 (презентация)
Домашняя работа 13. 30.11.16
Практическое занятие 13. Распределённые приложения (презентация)
  1. gRPC

    Переделать peer-to-peer сетевой чат из одного из предыдущих заданий на механизм удалённого вызова gRPC

    • Посылка сообщения – удалённый вызов
    • Дополнительная функциональность: нотификация о печати
Домашняя работа 12. 23.11.16
Практическое занятие 12. Design Documents (презентация)
Лекция 12. Шаблоны интеграции приложений (презентация)
Лекция 12. Шаблоны интеграции приложений (конспект)
Домашняя работа 11. 16.11.16
Практическое занятие 11. Антипаттерны, продолжение (презентация)
Лекция 11. Поведенческие шаблоны (презентация)
Лекция 11. Поведенческие шаблоны (конспект)
  1. Roguelike
    • Спроектировать и реализовать консольную Roguelike RPG (см. https://en.wikipedia.org/wiki/NetHack, https://en.wikipedia.org/wiki/Angband_(video_game), https://en.wikipedia.org/wiki/Ancient_Domains_of_Mystery) со следующей функциональностью:
      • Персонаж игрока, способный перемещаться по карте, управляемый с клавиатуры
      • Инвентарь персонажа, включающий элементы, влияющие на его характеристики, которые можно надеть и снять
      • Карта (автоматически сгенерированная или считываемая из файла, на ваше усмотрение)
      • Мобы, способные перемещаться по карте
      • Боевая система – движущиеся объекты, пытающиеся занять одну клетку карты, атакуют друг друга
    • Все детали – на ваше усмотрение
    • Применить как можно больше паттернов проектирования (и задокументировать их применение), но так, чтобы это оставалось разумным
      • Применившим больше всех – прощается одна домашка
      • Итоги подводятся по сданным до 7 декабря решениям
    • Нужна диаграмма классов и код (прототип системы), с юнит-тестами и комментариями
Домашняя работа 10. 09.11.16
Лекция 10. Порождающие шаблоны (презентация)
Лекция 10. Порождающие шаблоны (конспект)
Практическое занятие 10. Антипаттерны (презентация)
Домашняя работа 9. 02.11.16
Практическое занятие 9. Структурные шаблоны, детали реализации (презентация)
Лекция 9. Структурные шаблоны (презентация)
Лекция 9. Структурные шаблоны (конспект)
Домашняя работа 8. 26.10.16
Практическое занятие 8. Практика по архитектуре (презентация)
Лекция 8: Архитектурные шаблоны и стили (презентация)
Лекция 8. Архитектурные шаблоны и стили (конспект)
  1. Instant Messenger

    Разработать сетевой чат (наподобие Jabber)

    • peer-to-peer, то есть соединение напрямую
    • Пользовательский интерфейс
      • Отображение и отправка сообщений
      • Указание адреса сервера
      • Настройки “аккаунта” (указание своего имени)
    • Архитектура
      • Логирование
      • Лёгкость портирования на другие платформы (desktop/android)
      • Тестирование (заглушки для серверного взаимодействия)
      • Архитектурная документация (сколько и какую считаете нужной)
    • Совместимость
      • Надо сделать так, чтобы можно было общаться с клиентом ещё хоть одного одногруппника
Домашняя работа 7. 19.10.16
Практическое занятие 7. Проектирование пользовательских интерфейсов (презентация)
Лекция 7. Проектирование пользовательских интерфейсов (презентация)
Лекция 7. Проектирование пользовательских интерфейсов (конспект)
  1. HwProj
    • Описать персонажей – пользователей HwProj
    • Описать информационную структуру приложения
    • Сделать набор макетов для ключевых экранов

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

Домашняя работа 6. 12.10.16
Практическое занятие 6. Моделирование структуры и поведения (презентация)
Требования на интернет-магазин книг
Лекция 6. Проектирование и моделирование поведения (презентация)
Лекция 6. Проектирование и моделирование поведения (конспект)
  1. Магазин книг

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

  2. Последовательности

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

Домашняя работа 5. 05.10.16
Практическое занятие 5. Моделирование структуры (презентация)
Лекция 5: Проектирование и моделирование структуры (презентация)
Лекция 5: Проектирование и моделирование структуры (конспект)
  1. Реверси

    Нарисовать диаграмму классов для игры “Реверси”:

    • Пользовательский интерфейс
    • Возможность играть против человека (hot seat) или компьютера
    • Несколько видов компьютерных оппонентов
      • Случайные ходы
      • Метод поиска по дереву ходов с разными настройками глубины поиска
      • Может быть несколько разных наборов эвристик для оценки позиции
        • В реверси, например, стратегически важны угловые клетки, фишки там “неубиваемы”
        • Края доски в среднем выгоднее центра
    • Возможность алгоритмов играть друг против друга
  2. Структура

    Нарисовать диаграммы компонентов и классов для своего проекта

Домашняя работа 4. 28.09.16
Практическое занятие 4. Проектирование и модели (презентация)
Лекция 4. Проектирование и модели (презентация)
Лекция 4. Проектирование и модели (конспект)
  1. Use Case, Activity
    • Сделать и выложить презентацию по какому-либо из своих текущих или бывших проектов (изложить суть работы)
    • Нарисовать для этого проекта диаграмму случаев использования. Не пугаться, если там будет одна роль и один случай использования, вы ведь не хотите делать гигантскую информационную систему в качестве содержательного примера.
    • Нарисовать для этого проекта одну или несколько диаграмм активностей (для процесса в целом или для какого-нибудь из сценариев использования, либо для используемого в проекте алгоритма).

    Презентацию и модель выложить в новую ветку в гит и сделать пуллреквест. Модель --- в формате сохранения Visual Paradigm (.vpp).

Домашняя работа 3. 21.09.16
Практическое занятие 3. Объектно-ориентированное проектирование (презентация)
Лекция 3. Проектирование и ООП (презентация)
Лекция 3. Проектирование и ООП (конспект)
  1. cd, ls
    • Реализовать команды ls и cd на базе кода одногруппника
    • Написать ревью на архитектуру оного одногруппника, указав, что оказалось удобным, а что неудобным при реализации
    • Сделать fork проекта одногруппника на GitHub, выложить изменения туда и сделать пуллреквест в исходный репозиторий
    • Посчитать свой порядковый номер в списке на HwProj, поделить на число проектов, которые хотя бы частично приняты, использовать остаток как порядковый номер проекта, в котором Вы должны поддержать новые команды
      • Нумерация начинается с нуля
      • Если это оказался Ваш проект, взять следующий
Домашняя работа 2. 14.09.16
Практическое занятие 2. Введение, часть вторая (презентация)
Презентация про темы курсовых и дипломов
Таблица с более подробными мыслями по проектам
Лекция 2. Проектирование и декомпозиция (презентация)
Лекция 2. Проектирование и декомпозиция (конспект)
  1. grep
    • На базе своей реализации CLI реализовать команду grep,
      • поддерживающую ключи -i (нечувствительность к регистру), -w (поиск только слов целиком), -A n (распечатать n строк после строки с совпадением);
      • поддерживающую регулярные выражения в строке поиска;
      • использующую одну из библиотек для разбора аргументов командной строки (например, Apache Cli или JCommander).
    • Написать небольшой текст с перечислением рассмотренных Вами библиотек для анализа аргументов командной строки и обоснованием выбора конкретной библиотеки.

    Сдавать как новый пуллреквест из новой ветки на базе предыдущей (если что, хорошая инструкция по git на русском и с картинками: https://git-scm.com/book/ru/v1).

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

    Разработать архитектуру и реализовать прототип интерпретатора командной строки из презентации. На паре (и в переписке после) договорились, что:
    - парсинг входа выполняется в три фазы: токенизация, подстановка переменных окружения, потом снова токенизация, потому как подстановка может породить новые токены (в том числе оператор pipeline) --- из этого, кстати, следует, что всякие странные вещи типа рекурсивной подстановки невозможны.
    - можно накладывать разумные ограничения на входной поток и не пытаться в точности воспроизвести работу bash-а, например, можно считать, что все лексемы разделены пробелами (чтобы не возиться с токенизацией строк вида echo 123"123")
    - архитектура с отдельными классами для каждой команды предпочтительнее, чем монолитный класс "Команда" и решения с рефлексией
    - exit можно обрабатывать отдельно

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

© 2014-2018 HwProj