Varför behövs systemdesign och systemarkitektur och hur vet man när ett system är väl designat?
Att avgöra vad som är bra design är en svår avvägning. Det beror mycket på den unika situationen. Ibland får designkrav stå tillbaka till förmån för andra krav, till exempel snabb leverans eller resursbrist. Det blir dock tydligt att det lönar sig att satsa resurser och tid på att tänka till innan arbetet börjar när man ser vad ett dåligt eller inte alls designat system kan orsaka för problem*:
- Systemet blir svårt att förändra på grund av för hårda kopplingar genom beroenden.
- Förändringar på ett ställe i koden får andra delar av koden att fallera.
- Svårt att bryta ut kod till en återanvändbar modul.
- Svårigheter att följa befintlig design utan att göra avsteg från den vid vidareutveckling.
- Överdesignade system med mer design än systemet kräver.
- Kodduplicering i stället för en abstraherad och delad kodbas.
- Svårigheter med att förstå den grundläggande designen.
När vi pratar om design av system menar vi den process som syftar till att skapa en gemensam bild som visualiserar idén om hur lösningen på ett specifikt problem ska genomföras. Alla utvecklare stöter mer eller mindre dagligen på systemdesignfrågor. Där kommer utvecklarens kreativa problemlösningsförmåga väl till pass när det gäller att hitta och implementera en lösning för det specifika problem som man står inför. Varje situation och därmed problem är unik. För att hitta en lösning krävs ett unikt kunnande - ett kunnande baserad på stor erfarenhet. Vi vill våga påstå att lösningar inte alltid är helt och hållet unika, men de kan behöva anpassas för en unik situation.