programmera.net -> architecture -> normal för utskrift | info@programmera.net |
Komponentbaserad arkitektur
1. Divide and Conquer 2. Vad är en komponent? 3. Inkapsling och flexibilitet 4. Väl utformade komponenter 5. Komponentdiagram i UML |
1. Divide and Conquer
Inom programmering hör man ofta devisen "Divide and Conquer":
De flesta programmerare vill utnyttja "Divide and Conquer" på kodmassan i ett program så att varje del löser var sitt delproblem. Detta är lättare sagt än gjort! Den svåraste frågan kvartstår: "Hur ska man dela?". På denna sida tittar vi på begreppet komponent, som är det vanligaste sättet att dela programmeringskod.
2. Vad är en komponent?
Jag har hittat några böcker där man definierar termen "komponent" och definitionen har varit samma på de flesta ställen. Jag hänvisar till boken "Systemutveckling på 2000-talet" av Lars Wiktorin.
Definition: En komponent (eller modul) är ett stycke kod som har följande egenskaper:
3. Inkapsling och flexibilitet
Om komponentens inre funktionalitet är "synlig" utanför komponenten kanske programmerare gör anrop direkt mot de interna funktionerna, och då är komponenten inte längre utbytbar. Anledningen till att man strävar efter inkapsling (alltså att man vill dölja den inre implementationen) är att det ska gå att byta ut komponenten mot en annan komponent med samma gränssnitt utan att den anropande koden slutar fungera.
4. Väl utformade komponenter
En komponent kan vara mer eller mindre väl utformad, beroende på hur väl den uppfyller de krav som beskrivs ovan. Ofta har man problem med att en komponent är alltför starkt beroende av andra komponenter, då kanske det är dags att designa om. Ofta formar man komponenter efter termer som i språket representerar någon form av enhet, t.ex. "Kund" eller "Produkt", detta känner vi väl igen från objektorientering och jag kommer inte gå in på detta. Man brukar prata om att en komponent (eller modul) i ett objektorienterat programmeringsspråk motsvaras av en "klass", men i verkligheten är den definition som givits ovan mer generell än så, det finns komponenter på många nivåer i ett objektorienterat programmeringsspråk.
5. Komponentdiagram i UML
I UML har termen komponent ("Component") en speciell betydelse:
Komponenter används i Komponentdiagram ("Component diagram") men kanske främst i Sjösättningsdiagram ("Deployment diagram"). Ett sjösättningsdiagram visar hur komponenterna ska installeras på de olika maskinerna i en driftmiljö. Varje maskin (kallas "Nod") ritas som en fyrkant. Kompoenten ritas som en fyrkant med två mindre fyrkanter till vänster.