Arkitekturmønster

en generell, gjenbrukbar løsning på et ofte forekommende problem, for eksempel innen programvareutvikling

Et arkitekturmønster er en generell og gjenbrukbar løsning på et vanlig problem i programvarearkitektur innenfor en gitt kontekst.[1] Arkitekturmønstre kan brukes for å løse ulike problemer i programvareutvikling som for eksempel ytelsesbegrensninger på maskinvare, høy tilgjengelighet og minimering av forretningsrisiko. Noen arkitekturmønstre har blitt implementert innenfor programvarerammeverk.

Historie og etymylogi

Bruken av ordet "mønster" i programvareindustrien ble påvirket av lignende begreper brukt i tradisjonell bygningsarkitektur, eksempel Christopher Alexander sin bok A Pattern Language (1977) som drøftet å etablere en mønsterleksikon, som skal ha inspirert informatikkutøvere til å tenke utforme sitt eget designleksikon.

Bruk av denne metaforen innenfor programvareutvikling ble vanlig etter utgivelsen av Design Patterns (1994) av Erich Gamma, Richard Helm, Ralph Johnson og Johannes Vlissides som kom i samme tidsrom som starten av det offentlige internettet, hvilket gav et utbrudd av komplekse programvaresystemer[2] med tilsvarende behov for å kodifisere den raskt viltvoksende verden av programvareutvikling på laveste mulige nivå, men samtidig være fleksibel og adaptiv.

Arkitekturmønstre ligner på programvare-designmønstre, men har et bredere omfang.

Definisjon

Selv om et arkitekturmønster formidler et bilde av et system, er det ikke en arkitektur. Et arkitekturmønster er et konsept som løser og avgrenser noen viktige sammenhengende elementer i en programvarearkitektur. Utallige forskjellige arkitekturer kan implementeres etter det samme mønsteret og dele de relaterte egenskapene. Et mønster er ofte definert som strengt beskrevet og allment tilgjengelig.[3][4]

Arkitekturstil

Lignende som for arkitekturstiler i tradisjonell bygningsarkitektur er arkitekturstilen til en programvare en spesifikk konstruksjonsmetode karakterisert av egenskaper som gjør dem bemerkelsesverdige.

En arkitekturstil definerer en familie av systemer med et mønster av strukturell organisering, altså et vokabular av komponenter og koblinger med begrensninger på hvordan de kan kombineres.[5]En arkitekturstil er en navngitt samling av arkitektur-designvalg som (1) er anvendelige i en gitt utviklingskontekst, (2) begrenser arkitektoniske designbeslutninger som er spesifikke for et bestemt system innenfor den konteksten og (3) gir fordelaktige kvaliteter i hvert resulterende system.[6]Noen forfattere behandler arkitekturmønstre og arkitekturstiler som samme ting,[7] mens noen behandler spesialiseringer av mønstre som stiler. Begge tilfellene har til felles at både mønstre og stiler er idiomer brukt av arkitekter, og at de legger til rette for et "felles språk"[7] eller "ordforråd" for å beskrive klasser av systemer.

Hovedforskjellen er at et mønster kan ses som en løsning på et problem, mens en stil er mer generell og ikke krever et problem som må løses for å studeres.

Eksempler

Under er en liste over arkitekturmønstre og tilsvarende programvare-designmønstre og løsningsmønstre.

FagområdeArkitekturmønsterProgramvare-designmønstreLøsningsmønstreRelaterte mønstre
Dataintegrasjon/tjenesteorientert arkitektur
  • Managed file transfer
  • Publisere/abonnere
  • Forespørsel / svar
  • Meldingsutvekslingsmønstre
  • Enveis
  • Synkron forespørsel / respons
  • Grunnleggende tilbakekallsprosess
  • Påstandssjekk
Dataarkitektur
  • Tilpassede applikasjonsdatabaser
  • ETL
  • EAI
  • SOA
Analytikk og forretningsinnsikt
  • Transaksjonsrapportering
  • Operativ analyse
  • Forretningsanalytikk
  • Prediktiv analytikk
  • Preskriptiv analytikk
  • Strømme-analytikk
  • Datavitenskap og avansert analytikk
  • Språkbehandling (NLP)
  • Datatilgang for transaksjonsrapportering
  • Datatilgang for operativ rapportering
  • Datatilgang for analytisk rapportering
  • Datatilgang for analytisk instrumentpanel
  • Datatilgang for operativt instrumentpanel
  • Datautvinning
Grunndataforvaltning
  • Grunndata-nav
  • Grunndata-replikasjon
  • Grunndata-tjenester
  • Grunndata-synkronisering
Datamodellering
  • Modelleringsstandarder
  • Navnekonvensjoner
Kunstig intelligens
  • Beslutningsstyring
  • Talegjenkjenning
  • Tekstanalyse og naturlig språkbehandling
  • Naturlig språkgenerering
  • Klassisk maskinlæring
  • Dyp læring
  • Programvarerobot
  • Bilde-og videoanalyse

Flere eksempler på arkitekturmønstre er:

Se også

Referanser

Autoritetsdata