Skip to content
dino edited this page Oct 25, 2022 · 36 revisions

◀️ Семинар 4. Антипаттерны. ▶️

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

Различают:

  1. Антипаттерны разработки - частые ошибки при кодировании (пример: спагетти-код)
  2. Архитектурные антипаттерны - проблемы структуры системы (пример: квадратное колесо)
  3. Организационные антипаттерны - проблемы управления проектом (пример: управление грибами)
  4. Антипаттерны среды - проблемы социальной модели организации, и, как следствие, снижение продуктивности рабочего персонала (пример: город ларьков).

ЗАДАНИЯ К СЕМИНАРУ:

  • Выбрать как минимум по одному антипаттерну каждой категории в привязке к теме и задачам ВКР.
  • К каждому выбранному антипаттерну определить возможные действия по его избежанию.
  • Отразить принятые решения в разделе 9.4 "Возможные антипаттерны в модели "как будет" курсового проекта.

В помощь:

Осторожно! Многие анти-паттерны в интернете формулируются ярко, но грубо. Плюс зачастую вообще наблюдается переход на неприемлемую для нас ненормативную лексику

Пример

Категория Антипаттерн (риск) Действие по избежанию
Разработка Спагетти-код: Ход выполнения программы похож на спагетти, т.е извилистый и очень запутанный код Подходить к написанию кода более внимательно и структурированно, использовать паттерны ООП
Архитектура Квадратное колесо: Создание плохого решения, когда существует хорошее известное решение Перед выполнением задачи провести комплексную ревизию архитектуры смежных подсистем
Организация Управление грибами (Mushroom management): недостаточное информирование работников о выполняемой работе Включить специалиста по предметной области в команду разработчиков, запланировать проведение регулярных информационных совещаний
Среда Город ларьков (Kiosk City): каждый отдел вырабатывает свой собственный механизм обмена информацией Ввести правило обязательного согласования всех механизмов обмена информацией с директором по цифровому развитию

ИДБ-19-05

Тема семинаров (2-4): (Малое-Среднее) Производство пиццы.

  • Антипаттерны разработки:
  1. Проблема: «Ненужная сложность» в кодировании работы конвейера.
  2. Решение: Раскрытие всех этапов процесса производства на предельно возможные декомпозиции
  • Архитектурные антипаттерны:
  1. Проблема: «Состояние гонки» на этапах конвейера.
  2. Решение: Пересмотр плана/структуры конвейера.
  • Организационные антипаттерны:
  1. Проблема: «Аналитический паралич» при анализе работы предприятия
  2. Решение: Проведение внутренних аудитов о целесообразности использования средств.
  • Антипаттерны среды:
  1. Проблема: «Автономный коллектив» в компании
  2. Решение: Систематические проверки и контроли качества при руководстве.
  • Антипаттерны разработки
  1. Проблема: Магические числа. Использование безымянных чисел или строковых констант вместо именованных констант в коде.
  2. Решение: Использовать именованные константы, средства для получения ресурсов извне.
  • Архитектурные антипаттерны
  1. Проблема: Необоснованно сложный дизайн. На экране представлена ненужная информация.
  2. Решение: Упростить дизайн, убрать ненужную информацию.
  • Организационные антипаттерны
  1. Проблема: некорректное управление проектом: проведение безрезультатных спринтов; нет контроля со стороны руководства.
  2. Решение: Проведение летучек и внутренних аудитов с целью контроля проведения проекта, а также оценивание всех шагов.
  • Антипаттерны среды
  1. Проблема: Отсутствие чётких дедлайнов. Не налажен процесс установления сроков сдач задач; отсутствие регулярных обсуждений проекта, митингов.
  2. Решение: назначить скрам-мастера, составить канбан-доску для корректного распределения обязанностей

Клименко Диана, Михайлуца Надежда, Салова София

  • Антипаттерны разработки
  1. Проблема: Каша из интерфейсов.
  2. Решение: Использовать единого дизайна.
  • Архитектурные антипаттерны
  1. Проблема: Сохранение или смерть.
  2. Решение: Обеспечить частое автосохранение.
  • Организационные антипаттерны
  1. Проблема: Я тебе говорил.
  2. Решение: Прислушиваться ко мнению эксперта.
  • Антипаттерны среды
  1. Проблема: Синдром вареной лягушки.
  2. Решение: Контролировать ход разработки.
ИДБ-19-06

Тема семинаров (2-4): Процесс оборота лекарственных средств в аптеке.

  • Антипаттерны разработки:
  1. Проблема: «Поток лавы» - сохранение нежелательного (излишнего или низкокачественного) кода по причине того, что его удаление слишком дорого или будет иметь непредсказуемые последствия.
  2. Решение: написание эффективного и оптимального кода с удалением всех лишних функций.
  • Архитектурные антипаттерны:
  1. Проблема: «Бензиновая фабрика» - необязательная сложность дизайна.
  2. Решение: создание интуитивно понятного интерфейса с отсутствием избыточности.
  • Организационные антипаттерны:
  1. Проблема: «Единственный знающий человек» - когда жизненно важными для проекта сведениями или навыками обладает только один человек в команде, а с его уходом работа останавливается.
  2. Решение: Проведение летучек с целью передачи знаний и навыков команде.
  • Антипаттерны среды:
  1. Проблема: «Автономный коллектив» - самоуправление приводит к пассивности.
  2. Решение: Выбор капитана, который будет координировать и контролировать работу всего коллектива.

Тема: Разработка десктопного приложения для подключения к репозиторию ПО.

  • Антипаттерны разработки:

Таинственный код (Cryptic code): Использование аббревиатур вместо мнемоничных имён.

Решение: Использование “Соглашение” именования переменных классов и функций , по стандарту языка

  • Архитектурные антипаттерны:

Сохранение или смерть (Save or die): Сохранение изменений в конфигурации на жесткий диск лишь при завершении приложения; приводит к тому, что в случае отказа в программе эти данные будут утеряны Решение: Сохранения конфигурации сразу после её изменения, при возникновении ошибки использовать стандартный конфиг.

  • Организационные антипаттерны:

Тёплое тело (Warm Bodies): человек, чей вклад в проект под сомнением. Использование Канбан доски и трэкинг количества выполненных задач.

  • Атипаттрены среды

Автономный коллектив (Autonomous Collective) — самоуправление приводит к пассивности Скрам мастер, система планирования.

Антипаттерны разработки - Слепая вера (Blind faith) - недостаточная проверка исправления ошибки или правильной работы подпрограммы. Решение: тестирование.

Архитектурные антипаттерны - Инверсия абстракции (Abstraction inversion) - сокрытие части функциональности от внешнего использования, с расчетом на то, что никто не будет его использовать. Решение: не создавать сокрытые части.

Организационные антипаттерны - Управление проектами в духе Ганта. Это подход, который использует детальное планирование для определения расписания. Менеджер проекта строит диаграммы Ганта или диаграммы PERT и использует программное обеспечение для управления проектами или сложные электронные таблицы для управления задачами. Каждую неделю они тратят много времени на проектирование и поддержку своих моделей. Они запрашивают у команды оценки всего, чтобы собрать информацию, необходимую для их моделей. (Это часто идёт рука об руку со сложностью получения оценок.) Решение: автоматизировать процесс построения расписания и диаграмм, с помощью уже существующих средств.

Антипаттерны среды - игра запускается только на Unity. Решение: сделать игру отдельным приложением

ИДБ-19-07
  • Антипаттерны разработки:
  1. Проблема: «Спагетти-код» - код с чрезмерно запутанным порядком выполнения.
  2. Решение: структурировать написание кода.
  • Архитектурные антипаттерны:
  1. Проблема: «Затычка на ввод данных» - забывчивость в спецификации и выполнении поддержки возможного неверного ввода.
  2. Решение: продумать алгоритм проверки пользовательского ввода.
  • Организационные антипаттерны:
  1. Проблема: «Тёплое тело» - человек, чей вклад в проект под сомнением.
  2. Решение: дать задание человеку, которое он точно сможет выполнить, и ведение канбана.
  • Антипаттерны среды:
  1. Проблема: «Увлечение модными словами» - руководство жонглирует словами, которые мало кто из подопечных понимает.
  2. Решение: вести беседу на понятном и однозначно-интерпретируемом языке, чтобы избегать недопониманий и ущерба в следствии него.

Антипаттерны:

Тип Проблема Решение
Разработка "Спагетти-код" Проводить рефакторинг и код-ревью
Архитектура "Класс Бога" Распределить функционал по модулям
Организация "Аналитический паралич" Следить за итерациями
Среда "Город ларьков" Ввести корпоративные стандарты написания кода и отчетов
Clone this wiki locally