Arkitektur

From CCT - Vidensdeling
Revision as of 13:31, 31 August 2016 by Nowack (talk | contribs)
Jump to navigation Jump to search

Læreplanen om kernestoffet knyttet til It-systemers arkitektur:

    • (STX, C-niveau) tre-lagsarkitektur (eller tilsvarende) som generel ramme for at forstå en meget stor klasse af it-systemer, deres komponenter og samspillet mellem disse.
    • (STX, B-niveau) ”cloud-computing”, ”client-server”-arkitektur og model-view-controller; konkrete systemer baseret på disse arkitekturer.

Arkitektur handler om strukturen af it-systemer, og der findes mange forskellige varianter og forståelser af arkitekturbegrebet: man kan tale om applikations-arkitektur, som er strukturen af individuelle systemer, om informations-arkitektur, der handler om strukturen af data (repræsentationer), om system-arkitektur, der handler om strukturen ml. en familie af sammenhængende systemer, osv. Fælles for dem alle er, at når man anvender et arkitektursyn på it, så fokuserer man på strukturen og interaktionen mellem delene (og ikke på selve komponenterne, modulerne, programmerne). Grunden til at dette er vigtigt, er at man erfaringsmæssigt har erkendt, at når et system bliver sat i drift, så kommer der uværgeligt rettelser og tilføjelser til systemerne. Hvis systemet har en uhensigtsmæssigt struktur, så bliver det ofte vanskeligt at vedligeholde disse systemer. Nogle gange så vanskeligt, at man må skrotte et system, og lave et helt nyt, hvilket er dyrt. Omvendt, hvis systemet har en god arkitektur - typisk beskrevet som løs kobling mellem delene - så er det nemmere at vedligeholde systemet.

Naturligvis har UML et omfattende beskrivelsesapparat til at modellere arkitektur - faktisk fra en hel række (typisk 4 eller 5) forskellige synsvinkler (ofte kaldet views). I denne note vil vi dog gå lidt mere praktisk og pædagogisk til værks, idet vi vil beskæftige os med en helt generel model for arkitektur, som kan være vældig nyttig, når man skal forstå, bruge, ændre, eller skabe systemer. Modellen er således ikke specifik for et bestemt konkret system, men er generel anvendelig som mental model (forståelse) af alle systemer. Modellen opdeler et system i 3 dele: grænseflade, funktionalitet, repræsentation7, i det følgende benævnt G, F, og R.

  • Grænsefladen er den del af systemet (af koden), som brugeren (eller andre eksterne systemer) kommunikerer med. Tænk på knapper, vinduer, scroll-barer, indtastningsfelter - alt det som du kan navigere rundt i med mus og tastatur på en pc eller med fingrene på en smartphone.
  • Repræsentationen er den del af systemet (koden), som indeholder repræsentationerne af det som systemet handler om - dataene. Hvis det er en musik-app vi kigger på, så drejer det sig om selve musiknumrene, som de er gemt i systemet, og hvad der ellers er gemt af yderligere information i forbindelse med disse musiknumre: coverbillede, titel, albumtitel, kunstner, længde, kvalitet, genre, antal afspilninger, osv.
  • Funktionaliteten er den del af systemet (koden), som typisk indeholder algoritmerne for det som vi ønsker at gøre ved vores data. Hvis det f.eks. er et program til at lave ringetoner med, vi kigger på, så er der typisk funktioner til at udvælge, redigere og gemme lyden: vælge en del ud, ændre lydstyrken, lave ekko, ændre pitch, sætte delen ind på et andet tidspunkt i nummeret, lave loops, osv.