Hoppa till innehållet

Antimönster

Från Wikipedia

Antimönster (engelska: anti-pattern) är ett begrepp inom programvaruutveckling och projektledning som beskriver en återkommande lösning på ett vanligt problem, vilken vid en första anblick verkar effektiv men som i praktiken visar sig vara kontraproduktiv eller direkt skadlig.[1]

Begreppet myntades ursprungligen 1995 av programmeraren Andrew Koenig, inspirerad av den växande rörelsen kring designmönster. Medan ett designmönster dokumenterar en beprövad och god lösning, syftar ett antimönster till att katalogisera vanliga misstag för att göra dem lättare att identifiera, namnge och undvika.

Karaktärsdrag och funktion

[redigera | redigera wikitext]

Ett antimönster skiljer sig från ett enkelt misstag eller en dålig vana genom att det ofta är ett etablerat mönster som vid införandet verkar logiskt eller lockande (exempelvis för att det sparar tid på kort sikt). Metodiken att dokumentera dessa syftar till att kodifiera erfarenhetsbaserad kunskap. Genom att ge specifika problemnamn, som till exempel "Spaghettiprogrammering" eller "Den gyllene hammaren", skapas ett gemensamt språk för utvecklare och projektledare att kommunicera kring designbrister och strukturella problem.[2]

Enligt William Brown, en av pionjärerna bakom formaliet kring antimönster, består beskrivningen av ett antimönster oftast av två delar:

  1. En beskrivning av den dåliga lösningen och varför den uppstår.
  2. En beskrivning av hur man kan gå tillväga för att lösa problemet genom refaktorisering eller ändrade arbetsprocesser.[2]

Vanliga kategorier

[redigera | redigera wikitext]

Antimönster delas ofta in i olika kategorier beroende på om de rör själva källkoden, systemets arkitektur eller hur ett projekt leds.

Programvarudesign och arkitektur

[redigera | redigera wikitext]

Dessa antimönster rör främst hur koden är strukturerad och hur olika moduler interagerar:

  • Blobprogrammering (även kallat The God Object): En klass eller modul som har tagit på sig för många ansvarsområden och blivit ohanterligt stor.
  • Spaghettiprogrammering: Kod med en otyrlig och rörig kontrollstruktur, ofta orsakad av bristfällig planering.
  • Den gyllene hammaren: Att använda en och samma teknik eller verktyg för alla typer av problem, oavsett om det är lämpligt eller ej.
  • Programröta (Code smell): Ett symptom i källkoden som indikerar djupare liggande designbrister.

Projektledning och organisation

[redigera | redigera wikitext]

Dessa mönster handlar om hur team arbetar och hur beslut fattas:

  • Analysis Paralysis: När ett projekt avstannar på grund av att man lägger orimligt mycket tid på planering och analys utan att komma till praktiskt genomförande.
  • Death March: Ett projekt där deltagarna inser att det är dömda att misslyckas på grund av orimliga tidsramar eller resursbrist, men ändå tvingas fortsätta.
  • Vaporware: Mjukvara som annonseras ut och marknadsförs långt innan den existerar, och som ofta aldrig når marknaden.
  1. ”Anti-Pattern - an overview | ScienceDirect Topics”. www.sciencedirect.com. https://www.sciencedirect.com/topics/computer-science/anti-pattern. Läst 14 april 2026.
  2. 1 2 Brown, William J. (1998). AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. John Wiley & Sons. ISBN 978-0471197133. https://archive.org/details/antipatternsrefa0000unse