Антипаттерн
Антишаблон . в разработке программного обеспечения , управлении проектами и бизнес-процессах — это распространенный ответ на повторяющуюся проблему, который обычно неэффективен и рискует оказаться крайне контрпродуктивным [1] [2] Термин, придуманный в 1995 году программистом Эндрю Кенигом , был вдохновлен книгой «Шаблоны проектирования» (в которой освещается ряд шаблонов проектирования при разработке программного обеспечения , которые ее авторы считали очень надежными и эффективными) и впервые был опубликован в его статье в журнале Journal. объектно-ориентированного программирования . [3] Еще один документ, представленный Майклом Экройдом в 1996 году на конференции Object World West, также документировал антипаттерны. [3]
Однако именно книга AntiPatterns 1998 года не только популяризировала эту идею, но и расширила ее сферу за пределы области проектирования программного обеспечения, включив в нее архитектуру программного обеспечения и управление проектами. [3] Другие авторы с тех пор расширили его, включив в него экологические, организационные и культурные антипаттерны. [4]
Определение
[ редактировать ]По мнению авторов Design Patterns , в антипаттерне есть два ключевых элемента, которые отличают его от плохой привычки, плохой практики или плохой идеи:
- Антипаттерн — это широко используемый процесс, структура или образец действия, который, несмотря на то, что изначально кажется подходящим и эффективным ответом на проблему, имеет больше плохих последствий, чем хороших.
- Существует другое решение проблемы, которую пытается решить антишаблон. Это решение задокументировано, воспроизводимо и доказало свою эффективность там, где нет анти-шаблона.
Руководством к тому, что обычно используется, является «правило трех», аналогичное правилу для шаблонов: чтобы быть анти-шаблоном, его возникновение должно быть засвидетельствовано как минимум три раза. [5]
Использование
[ редактировать ]Документирование антипаттернов может быть эффективным способом анализа проблемного пространства и сбора экспертных знаний. [6]
Хотя некоторые описания анти-шаблонов просто документируют неблагоприятные последствия шаблона, хорошая документация по анти-шаблону также предоставляет альтернативу или средство улучшения анти-шаблона. [7]
Антипаттерны разработки программного обеспечения
[ редактировать ]В разработке программного обеспечения антишаблоны включают в себя большой ком грязи (отсутствие) дизайна, класс Бога (где один класс управляет всем управлением в программе , а не управление распределяется между несколькими классами), магические числа (уникальные значения с необъяснимое значение или множественные случаи, которые можно заменить именованной константой) и полтергейсты (эфемерные классы контроллеров, которые существуют только для вызова других методов классов). [7]
Большой ком грязи
[ редактировать ]Это указывает на программную систему , которой не хватает воспринимаемой архитектуры. Хотя это и нежелательно с точки зрения разработки программного обеспечения, такие системы широко распространены на практике из-за давления со стороны бизнеса, текучести разработчиков и энтропии кода .
Этот термин был популяризирован в Брайана Фута одноименной статье и Джозефа Йодера 1997 года, в которой этот термин дается:
«Большой ком грязи» — это беспорядочно структурированные, разросшиеся, неряшливые джунгли с изоляционной лентой и проволокой, со спагетти-кодом . Эти системы демонстрируют безошибочные признаки нерегулируемого роста и неоднократного целесообразного ремонта. Информация беспорядочно распределяется между удаленными элементами системы, часто до такой степени, что почти вся важная информация становится глобальной или дублируется.
Общая структура системы, возможно, никогда не была четко определена.
Если бы это было так, возможно, оно разрушилось до неузнаваемости. Программисты, обладающие хоть каплей архитектурного чутья, избегают этих трясин. Только те, кого не волнует архитектура и, возможно, доволен инерцией повседневной работы по заделыванию дыр в этих разрушающихся дамбах, довольны работой над такими системами.
- Брайан Фут и Джозеф Йодер, «Большой комок грязи». Четвертая конференция по шаблонам языков программ (PLoP '97/EuroPLoP '97), Монтичелло, Иллинойс, сентябрь 1997 г.
Фут и Йодер считают Брайана Мэрика автором термина «большой ком грязи» для обозначения такого рода архитектуры. [8]
Антипаттерны управления проектами
[ редактировать ]Антишаблоны управления проектами, включенные в книгу «Антипаттерны» , включают Blowhard Jamboree (избыток отраслевых экспертов), паралич анализа , Viewgraph Engineering (слишком много времени тратится на создание презентаций и недостаточно на реальное программное обеспечение), Death by Planning (аналогично, слишком много времени тратится на создание презентаций и недостаточно на реальное программное обеспечение). планирование), Страх успеха (иррациональные страхи перед завершением проекта), Кукурузный початок (трудности с людьми), Интеллектуальное насилие (запугивание посредством использования жаргона или загадочных технологий), Иррациональное управление (плохие привычки управления), Дым и зеркала (чрезмерное использование демонстраций и прототипов от продавцов), Throw It Over the Wall (навязывание модных методов разработки программного обеспечения разработчикам без всякой поддержки), Fire Drill (длительные периоды однообразия, перемежающиеся короткими кризисами), The Feud (конфликты между менеджерами) и e -Почта опасна (ситуации, возникающие в результате необдуманных сообщений электронной почты). [4]
См. также
[ редактировать ]- Запах кода - характеристика компьютерного программирования.
- Запах дизайна - термин в компьютерном программировании.
- Темный шаблон – обманчивый дизайн пользовательского интерфейса.
- Список философий разработки программного обеспечения
- Список инструментов для статического анализа кода
- Гниль программного обеспечения - процесс ухудшения программного обеспечения.
- Принцип Программного Питера - инженерный термин, обозначающий сложный неудачный проект.
- Модель незрелости возможностей
- ISO/IEC 29110 : Профили жизненного цикла программного обеспечения и рекомендации для очень малых предприятий (VSE).
- Дилемма инноватора - книга Клейтона М. Кристенсена, 1997 г.
Ссылки
[ редактировать ]Что поддерживает что
[ редактировать ]- ^ Будген 2003 , с. 225.
- ^ Эмблер 1998 , с. 4.
- ^ Jump up to: а б с Нил, Лапланте и ДеФранко, 2011 , с. 4.
- ^ Jump up to: а б Нил, Лапланте и ДеФранко, 2011 , с. 5.
- ^ Нил, Лапланте и ДеФранко 2011 , стр. 6.
- ^ Хименес 2006 .
- ^ Jump up to: а б Демейер 2008 , с. 102.
- ^ Фут, Брайан; Йодер, Джозеф (26 июня 1999 г.). «Большой комок грязи» . laputan.org . Проверено 14 апреля 2019 г. .
Источники
[ редактировать ]- Нил, Колин Дж.; Лаплант, Филип А.; ДеФранко, Джоанна Ф. (2011). Антипаттерны: управление программными организациями и людьми . Серия прикладного программного обеспечения (второе изд.). ЦРК Пресс. ISBN 9781439862162 .
- Будген, Д. (2003). Проектирование программного обеспечения . Харлоу, Англия: Аддисон-Уэсли. п. 225. ИСБН 0-201-72219-4 .
Как описано Лонгом (2001), антишаблоны проектирования — это «очевидные, но неправильные решения повторяющихся проблем».
- Эмблер, Скотт В. (1998). Паттерны процессов: построение крупномасштабных систем с использованием объектных технологий . Кембридж, Великобритания: Издательство Кембриджского университета. п. 4. ISBN 0-521-64568-9 .
...общие подходы к решению повторяющихся проблем, которые оказываются неэффективными. Эти подходы называются антипаттернами.
- Хименес, Эдвард (24 апреля 2006 г.). «Антипаттерны» . Антипаттерны . Проверено 24 апреля 2006 г.
- Демейер, Серж (2008). «Объектно-ориентированный реинжиниринг». В Mens, Том; Демейер, Серж (ред.). Эволюция программного обеспечения . Springer Science + Business Media. ISBN 9783540764403 .
Дальнейшее чтение
[ редактировать ]- Кениг, Эндрю (март – апрель 1995 г.). «Паттерны и антипаттерны». Журнал объектно-ориентированного программирования . 8 (1): 46–48.
- Позже перепечатано в: Восхождение, Линда (1998). Справочник по шаблонам: методы, стратегии и приложения . Кембридж, Великобритания: Издательство Кембриджского университета. п. 387. ИСБН 0-521-64818-1 .
Антипаттерн подобен шаблону, за исключением того, что вместо решения он дает нечто, внешне похожее на решение, но таковым не являющееся.
- Позже перепечатано в: Восхождение, Линда (1998). Справочник по шаблонам: методы, стратегии и приложения . Кембридж, Великобритания: Издательство Кембриджского университета. п. 387. ИСБН 0-521-64818-1 .
- Лапланте, Филипп А.; Нил, Колин Дж. (2005). Антипаттерны: идентификация, рефакторинг и управление . Публикации Ауэрбаха. ISBN 0-8493-2994-9 .
- Браун, Уильям Дж.; Мальво, Рафаэль К.; Маккормик, Хейс В.; Томас, Скотт В. (2000). Хадсон, Тереза Хадсон (ред.). Антишаблоны в управлении проектами . Джон Уайли и сыновья . ISBN 0-471-36366-9 .
- Стамелос, Иоаннис (январь 2010 г.). «Антипаттерны управления программными проектами». Журнал систем и программного обеспечения . 83 (1): 52–59. дои : 10.1016/j.jss.2009.09.016 .