Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow АРХИТЕКТУРА ИНФОРМАЦИОННЫХ СИСТЕМ
Посмотреть оригинал

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

Антипаттерны (antipattems), или ловушки (pitfalls) - это типовые группы (классы) наиболее часто используемых ошибочных или неэффективных способов решения задач проектирования. Во избежание подобных ошибок при проектировании, их также как и паттерны, целесообразно предварительно изучить. В ряде случаев пренебрежение антипаттернами приводит к получению неработоспособных систем fill.

Данный подход с успехом может быть использован не только в программной инженерии, но и во многих других отраслях, например, в приборостроении, строительстве и др.

Антипагтерны применительно к разработке ИС можно разделить на следующие типовые группы [12J:

  • • в управлении разработкой ПО;
  • • в разработке ПО;
  • • в объектно-ориентированном программировании;
  • • в области программирования;
  • • методологические антипаттерны;
  • • организационные антипаттерны.

Наиболее известные антипаттерны в управлении разработкой ПО и их характеристика приведены в табл. 7.6. Антипаттерны в разработке ПО и их характеристика приведены в табл. 7.7. Антипаттерны в объектно-ориентированном проектировании и их характеристика приведены в табл. 7.8.

Таблица 7.6

Антипаттерны в управлении разработкой ПО и их характеристика

Аптипаттерн

Характеристика

«Дым и зеркала» (Smoke and mirrors)

Иллюстрация вида ещё не реализованной системы. Часто используется для демонстрации финального проекта и его функционала. Название связано с двумя популярными средствами, которыми пользуются фокусники для сокрытия своих секретов

«Раздувание» ПО (Software bloat)

Тенденция к увеличению потребностей в ресурсах для каждой последующей версии системы. В более общем контексте применяется для описания программных систем, которые используют больше ресурсов, чем необходимо

«Функции для галочки» (Options checkbox)

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

Аптипаттерн

Характеристика

Неопределенная точка зрения (Ambiguous viewpoint)

Представление модели без указания ракурса ее рассмотрения

«Большой комок грязи» (Big ball of mud)

Система, структуру которой невозможно либо очень сложно выявить

«Много шума из ничего» (Gas factory)

Необоснованно усложнённый дизайн

«Ляп» ввода данных» (Input kludge)

Неопределенность в спецификации и неполнота поддержки возможного неверного ввода

«Раздувание интерфейса» (Interface bloat)

Чрезмерно развитый и сложный интерфейс, трудный в реализации

«Магическая» кнопка (Magic pushbutton)

Внедрение логики работы программы в пользовательский интерфейс, зачастую в программах, созданных в средах визуальной разработки

«Перестыковка»

(Re-Coupling)

Введение зависимости, которая не является необходимой

«Дымоход» (Stovepipe system)

Структура, в которой потоки информации циркулируют преимущественно «вверх-вниз», а не горизонтально, между плохо связанными компонентами

«Состояние гонки» (Race condition)

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

Аптипаттерн

Характеристика

Базовый класс- утилита (Base Bean)

Наследование методов из класса-утилиты вместо делегирования к данному классу

Вызов предка (Call Super)

Метод класса-потомка обязательно требует вызова того же метода класса-предка

«Божественный» объект (God object)

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

«Полтергейст»

(Poltergeist)

Наличие объектов, которые используются только для передачи информации другим объектам

«Проблема йо- йо» (Yo-yo problem)

Высокая степень размытости сильно связанного кода по иерархии классов. Термин происходит от названия игрушки йо- йо

Синглтонизм

(Singletonitis)

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

Антипаттерны в области программирования и их характеристика приведены в табл. 7.9. Методологические антипаттерны и их характеристика приведены в табл. 7.10. Организационные антипаттерны и их характеристика приведены в табл. 7.11.

Таблица 7.9

Антипаттерны в области программирования и их характеристика

Аптипаттерн

Характеристика

Ненужная сложность (Accidental complexity)

Получение решения, сложность которого необоснованно высока

«Действие па расстоянии» (Action at a distance)

Непредусмотренное взаимодействие между удалёнными частями системы

«Накопить и запустить» (Accumulate and fire)

Использование в качестве параметров подпрограмм набора глобальных переменных

Антипаттерн

Характеристика

«Лодочный якорь» (Boat anchor)

Сохранение части системы, которая уже не используется

Активное ожидание (Busy spin)

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

Кэширование ошибки (Caching failure)

После обработки ошибки не сброшен её флаг

Инерция кода (Code momentum)

Избыточное ограничение части системы, обусловленное постоянным учётом ее поведения в других частях системы

Кодирование путем исключения (Coding by exception)

Кодирование путём добавления нового кода для реализации каждого частного случая

«Таинственный» код (Cryptic code)

Использование неизвестных аббревиатур вместо мнемонических имен, обеспечивающих самодокументирование программы

Жесткое кодирование (Hard code)

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

Мягкое кодирование (Soft code)

Чрезмерное избегание жесткого кодирования, с обеспечением возможности настройки слишком большого числа параметров, при этом настройка системы существенно усложняется и превращается и программирование

«Поток лавы» (Lava flow)

Сохранение уже нс используемого или некачественного кода в связи с возможными высокими затратами на его удаление или в связи с непредсказуемыми последствиями

«Магические» числа (Magic numbers)

Включение в программы числовых значений без объяснений их смысла. Затрудняет понимание программы

Процедурный код (Procedural code)

Использование процедурной/структурной парадигмы во всех случаях. Следует использовать ту парадигму, которая лучше соответствует конкретной задаче. Процедурная парадигма на данный момент становится антипаттерном

«Спагетти-код»

Код, порядок выполнения которого затруднен для восприятия

Аптипатгерн (Spaghetti code)

Характеристика

«Мыльный пузырь» (Soap bubble)

Класс, содержащий данные, которые никогда нс используются

Методологические антипаттерны и их характеристика

Таблица 7.10

Аптипаттсрн

Характеристика

Программирование методом копирования- вставки (Сору and paste programming)

Программа создаётся путём копирования и небольшой модификации существующего кода вместо создания общего решения. Такая методология зачастую приводит к появлению избыточно больших, сложно читаемых функций, содержащих большое количество повторяющихся фрагментов кода

Дефакторинг

(Defactoring)

Удаление функциональности с соответствующим изменением документации

«Золотой молоток» (Golden hammer)

Применение некоторого решения в качестве универсального для решения самых разных задач. Название антипаттерна связано с английской поговоркой «когда в руках молоток, все проблемы кажутся гвоздями»

Фактор невероятности (Improbability factor)

Заблуждение о невозможности срабатывания известной ошибки

Преждевременная оптимизация (Premature optimization)

Оптимизация на ранних этапах на основе еще недостаточной информации

«Изобретение колеса» (Reinventing the wheel)

Создание собственного решения, когда уже существует хорошее готовое решение

«Изобретение квадратного колеса (Reinventing the square wheel)

Создание плохого собственного решения, когда существует хорошее готовое решение

Аптипатгсрн

Характеристика

«Аналитический паралич» (Analysis paralysis)

Приложение чрезмерно больших усилий на этапе анализа проекта. Способно привести к закрытию проекта до начала его реализации

«Дойная корова» (Cash cow)

Продукт приносит хороший доход без особых затрат, но на его развитие или на разработку новых аналогичных продуктов средства не выделяются

Продолжительное устаревание (Continuous obsolescence)

Чрезмерно большие усилия, направленные на перенос системы в новые окружения

«Ползущее» улучшение (Creeping featur- ism)

Улучшение отдельных характеристик в ущерб общему качеству системы

«Разработка комитетом» (Design by committee)

Коллективная разработка проекта при некомпетентном руководстве, т.е. без единого системного архитектора. Зачастую на первое место ставятся личные интересы отдельных участников в ущерб качеству 14

«Продвижение обязательств» (Escalation of commitment)

Продолжение реализации решения даже после того, как была доказана его некорректность

«Я тебе это говорил» (1 told you so)

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

Управление, основанное на числах (Management by numbers)

Чрезмерно большое внимание к численным характеристикам, которые либо слабо связаны с управляемой системой, либо сложность получения которых слишком высока

«Драконовские меры» (Management by perkele15)

Необоснованно жёсткий стиль управления

  • 14 Известна фраза по тематике этого антипаттерна: «Верблюд - это лошадь, спроектированная комитетом».
  • 1 Дьявол (в переводе с финского языка).

Аптипатгерн

Характеристика

«Управление грибами» (Mushroom management)

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

«Расползание рамок» (Scope creep)

Неконтролируемое расширение проекта

«Замыкание на поставщике» (Vendor lock-in)

Исполнение системы таким образом, что она оказывается привязанной к её поставщику [1]

«Единственный знающий человек» (Single head of knowledge, SHOK)

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

«Рыцарь на белом коне» (Knight in shining armor, KISA)

Сотрудник, который предпринимает попытки всё «исправить» в одиночку, никому не сообщая что он сделал и почему

  • [1] Известные офисные программы Microsoft Word и Excel, на протяжении ряда лет поумолчанию сохраняли документы в формате, за описание которого требовалосьзаплатить и дать подписку о неразглашении. Это, в свою очередь, препятствовалореализации качественной поддержки этого формата в конкурирующих программах.
 
Посмотреть оригинал
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
     

    Популярные страницы