Antimönster

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 29 maj 2022; verifiering kräver 1 redigering .

Ett antimönster är ett  vanligt tillvägagångssätt för att lösa en klass av vanliga problem som är ineffektiva, riskfyllda eller improduktiva [1] . Till skillnad från ett designmönster innefattar övervägandet av ett antimönster både en felaktig lösning på ett problem med dess tecken och konsekvenser, och en väg ut ur situationen [2] .

Termen kommer från datavetenskap , från Gang of Four-boken " Design Patterns ", som gav exempel på bra programmeringsmetoder. Författarna har kallat dessa goda metoder för "mönster" och motsatsen till dem är "anti-mönster". En del av god programmeringspraxis är att undvika antimönster. Innan termen dök upp kallades alla problem för fällor ( fallgropar ) . Således är antimönster de vanligaste fällorna, men inte alla fällor kommer att vara antimönster.

Antimönster liknar konceptuellt mönster genom att de dokumenterar repetitiva lösningar på vanliga problem. De är kända som antimönster eftersom deras användning (eller missbruk) har negativa konsekvenser [3] .

Historik

Med utvecklingen av IT-branschen växte omfattningen av mjukvaruprojekt och kostnaden för resurser för dem snabbt, vilket gav upphov till ett stort antal problem som ställdes inför programmerare. De flesta av dessa problem var typiska och förekom i nästan alla större projekt. I början av 90-talet fick kataloger med designmönster , "mönster" ( eng.  designmönster ) - eleganta och beprövade sätt att lösa typiska problem avsevärd popularitet. Mönster är fortfarande kraftfulla och extremt populära idag, men många utvecklare som använder populära mönster i situationer som de inte var avsedda för skapade fler problem än de löste. Dessutom kan IT-ingenjörer, precis som arbetare inom alla andra verksamhetsområden, identifiera typiska misstag som görs på grund av otillräcklig kunskapsbas eller brist på erfarenhet, brådska och press på grund av projektdeadlines, ekonomiska begränsningar och annat.

För första gången användes termen "antimönster" i betydelsen en generaliserad beskrivning av en typisk misslyckad lösning 1996 av Michael Akroyd vid Object World West Conference, tillägnad aspekter av objektorienterad programmering . [4] I sin presentation Anti-Patterns: Preventing Object Misuse uppmärksammade Aykroyd skadliga men vanliga programmeringskonstruktioner, särskilt de som går emot principerna för OOP. Dessutom, för varje sådan design, erbjöd han en effektiv ersättare.

Termen i betydelsen "dålig idé" förekom före Aykroyd, men publicerades inte och var inte särskilt populär. Och ändå är det inte värt att tillskriva författarskap till en person. Enligt William Brown, författare till Antipatterns: Refactoring Applications, Architectures and Projects, är ett antimönster ett steg i utvecklingen av konceptet med ett designmönster, en förlängning av deras modell.

Klassificering

William Brown särskiljer antimönster ur tre synvinklar: utvecklare , arkitekt och chef :

Neil och Laplante ger en fjärde typ [5] [6] :

Dessutom har antimönster beskrivits för individuella informationsteknologier som [6] :

Utvecklingsantimönster

Tekniska problem och lösningar som programmerare hanterar [6] :

Antimönster i objektorienterad programmering

Antimönster när du skriver kod

Metodologiska antimönster

Anti-mönster för konfigurationshantering

Övrigt

Arkitektoniska antimönster

Typiska problem förknippade med systemets struktur [6] :

Organisatoriska antimönster

Problem som chefer (eller grupper av chefer) möter [6] :

Neil och LaPlante tillhandahåller följande antimönster [5] :

Miljöantimönster

Problem orsakade av organisationens dominerande struktur och sociala modell, som är resultatet av den allmänna politiken i organisationen [15] [6] [5] [16] :

Se även

Anteckningar

  1. Budgen, D. Mjukvarudesign. - Addison-Wesley, 2003. - ISBN 0-201-72219-4 .
  2. Brown, 1998 , kapitel 2.
  3. Smith CU, 2000 .
  4. http://c2.com/cgi/wiki?AntiPattern . Cunningham & Cunningham Inc. . Hämtad 15 februari 2006. Arkiverad från originalet 3 april 2005.
  5. 1 2 3 Neill, Laplante, 2005 .
  6. 1 2 3 4 5 6 Settas, 2011 .
  7. Miroslav Kis. Antimönster för informationssäkerhet i programvarukravsteknik. I Proceedings of the 9th Conference on Pattern Language of Programs (Plop), 2002.
  8. John Long. Programvara återanvänder antimönster. I ACM SIGSOFT Software Engineering Notes, volym 26, sidan 4, juli 2001.
  9. Paula Kotze, Karen Renaud och Judy van Biljona. Gör inte det här - fallgropar i att använda antimönster för att lära ut principer om interaktion mellan människa och dator. Computers and Education, 50(3):979-1008, april 2008
  10. J. Krai och M. Zemlicka. De viktigaste serviceinriktade antimönstren. I diskussioner från International Conference on Software Engineering Advances (ICSEA), 2007.
  11. ↑ P.A. Laplante, R.R. Hoffman och G. Klein. Antimönster i skapandet av intelligenta system. IEEE Intelligent Systems, 22:91-95, 2007.
  12. ↑ 1 2 Rajiv Ramnath, Cheyney Loffing. Börjar iOS-programmering för dummies . — John Wiley & Sons, 2014-04-14. - S. 105. - 470 sid. — ISBN 9781118799277 . Arkiverad 23 juli 2016 på Wayback Machine
  13. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 William J. Brown. AntiPatterns: Refactoring programvara, arkitekturer och projekt i kris . — Wiley, 1998-04-03. — 156 sid. — ISBN 0-471-19713-0. Arkiverad 22 december 2015 på Wayback Machine
  14. Gary McLean Hall. Adaptiv kod via C#: Agil kodning med designmönster och SOLID-principer. - Microsoft Press, 2014. - S. 267-268. — ISBN 978-0735683204 .
  15. Original: sociopolitiska krafter
  16. Phillip Laplante The Burning Bag of Dung—and Other Environmental Antipatterns Arkiverad 19 september 2015 på Wayback Machine ACM Queue 30 november 2004 Volym 2, nummer 7

Litteratur

Länkar