Tesugen

Metaforer och systemutveckling

Denna anteckning är en redigerad version av något jag just skickade i ett mail som en förklaring på en fråga från Håkan om vad jag är egentligen är intresserad av när det gäller metaforer och utveckling av mjukvara.

Vi människor formar teorier om vad vi ser. Upprepade gånger vi råkar ut för någonting så reviderar vi våra teorier om det. Vi söker finna sakers struktur, eller så försöker vi få dem att rymmas inom strukturer vi redan är bekanta med.

Inom systemutveckling heter det ofta att man måste arbeta med “arkitekturen” och etablera en så bra och tydlig arkitektur som möjligt innan arbetet påbörjas. Problemet är bara att detta förutsätter att man har om inte alla fakta, så åtminstone en stor mängd av dem till hands, vilket sällan är fallet.

Därtill kommer förvirringen kring begreppet “arkitektur”. Oftast handlar det om någon sorts övergripande struktur för saker och ting, men jag har länge känt att det handlar om något mer än bara strukturen och att arkitekturen i första hand har en annan roll att spela än att vara en struktur att ploppa in grejer i. En social roll.

Inom Extreme Programming (XP) så försöker man göra så lite arkitekturarbete i början som möjligt, för att i takt med att man lär sig om problemområdet och lämpliga lösningar låta en arkitektur uppstå (emerge). För att “guida” detta har man en systemmetafor, men tyvärr har de inte lyckats formulera riktigt vad den är och hur man hanterar den.

Systemmetaforen, som jag ser det, är det som enar ett team och får dem att arbeta med att utveckla samma system. Den underlättar diskussioner om systemet, bistår i sökandet efter lösningar på nya problem som systemet måste adressera, osv.

Här kommer “constrained universes of expression” in (begränsade uttrycksuniversum, eller vad man ska kalla det på svenska).

Om vi tar jojosporten (om det räknas som sport) som exempel: du har en jojo och med den kan du göra olika trick. Dina uttrycksmöjligheter är begränsade, men det finns likväl en lång historia med trick och det finns trots begränsningarna (eller kanske just tack vare?) ändå stora möjligheter att vara kreativ och hitta på nya trick.

Sporten, kulturen, dess historia, osv, bildar ett uttrycksuniversum som gör att man kan se det som att alla som utövar sporten kollektivt utforskar dess möjligheter.

Detta är lätt att se som emergens. Oftast så handlar ju emergens om att någon form av agenter (myror, bin, människor i en stad, osv) tillsammans skapar ett makromönster som inte ingår i deras individuella motiv. Men här är det fråga om att agenterna ändå på något sätt samverkar eftersom de har en kollektiv vision, ett kollektivt uttrycksuniversum.

Så jojospelare är agenter inom ett uttrycksuniversum, som kollektivt tänjer på gränserna för detta universum för att uppfinna nya trick att göra med en träbit på ett snöre.

Tittar vi tillbaka på programutvecklingsprojekt så har vi ett team med utvecklare, agenter, som behöver någonting som förenar dem. De behöver ett uttrycksuniversum att agera inom.

De behöver en gemensam vision.

Så vad krävs av en sådan vision?

Det finns mycket att studera för att besvara den frågan, eftersom det mesta kan ses som begränsade uttrycksuniversum: sporter, litterära genrer, politiska inriktningar, rättssystemet, osv.

Men jag har en känsla av att man får mycket på köpet om man kan låna element från ett eller flera andra områden när man bildar sitt uttrycksuniversum (vilket är en handling likväl som något som uppstår spontant)—så att ens uttrycksuniversum blir “metaforiskt”.

Om jag skulle förklara något komplext för dig, något som du inte är bekant med, så kan jag göra detta effektivare om jag kan säga att det är lite som något du redan känner till:

X är som turism, med en massa turister som åker omkring och utforskar världen. De läser resetidningar, ser på reseprogram på teve, och när de träffar andra turister så utbyter de tips och varningar om resmål; mainstream-turister tipsar om mainstream-resmål, medan backpackers kanske inte delar med sig av sina tips förrän de fått förtroende för en person. Många turister, särskilt mainstream-turisterna, återvänder gång på gång till sina favoritresmål och undviker de ställen de inte gillat. Andra turister har som mål att aldrig besöka samma ställe mer än en gång. …

Skapar man ett nytt datasystem kan man ha stor nytta av en sådan metafor för systemet. Den fungerar som hjälpmedel för kommunikation mellan programmerare och framtida användare, den genererar nya idéer, den erbjuder begränsningar för på vilka sätt problem är möjliga att lösa (enhetlighet), den underlättar för nya människor som kommer till projektet, osv.

Systemarkitekturer är i de allra flesta fall rent tekniska och i det enda avseende de är metaforiska är att de är mutationer av tidigare arkitekturer. De genererar nya idéer endast i den mån de påminner om andra lösningar. De fungerar dåligt som bas för kommunikation med andra än programmerare. De underlättar för nytillskott endast i den utsträckning de är välkända.

Med andra ord är traditionell systemarkitektur väldigt torftig. Och den förbiser att dess främsta roll är social och inte teknisk.

The above was posted to my personal weblog on August 20, 2003. My name is Peter Lindberg and I am a thirtysomething software developer and dad living in Stockholm, Sweden. Here, you’ll find posts in English and Swedish about whatever happens to interest me for the moment.

Tags:

Related posts:

Posted around the same time:

The seven most recent posts:

  1. Tesugen Replaced (October 7)
  2. My Year of MacBook Troubles (May 16)
  3. Tesugen Turns Five (March 21)
  4. Gustaf Nordenskiöld om keramik kontra kläddesign (December 10, 2006)
  5. Se till att ha två buffertar för oförutsedda utgifter (October 30, 2006)
  6. Bra tips för den som vill börja fondspara (October 7, 2006)
  7. Light-Hearted Parenting Tips (September 16, 2006)
Bloggtoppen.se