Arkitekturmønster

Fra Wikipedia, den frie encyklopedi

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[rediger | rediger kilde]

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[rediger | rediger kilde]

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[rediger | rediger kilde]

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[rediger | rediger kilde]

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

Fagområde Arkitekturmønster Programvare-designmønstre Løsningsmønstre Relaterte 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å[rediger | rediger kilde]

Referanser[rediger | rediger kilde]

  1. ^ Taylor, R.N.; Medvidović, N.; Dashofy, E.M. (2009). Software architecture: Foundations, Theory and Practice. Wiley. ISBN 9780470167748. 
  2. ^ Andreessen, Marc (20. august 2011). «Why Software Is Eating The World». The Wall Street Journal. Besøkt 25. april 2020. 
  3. ^ Chang, Chih-Hung. «An Experience of Applying Pattern-based Software Framework to Improve the Quality of Software Development: 4. The Design and Implementation of OS2F». the Third Taiwan Conference on Software Engineering (TCSE07). Arkivert fra originalen 22. september 2011. Besøkt 16. mai 2012. 
  4. ^ «Architectural Patterns: Definition». AAHN INFOTECH (INDIA) PVT. LTD. Arkivert fra originalen 23. juni 2012. Besøkt 16. mai 2012. 
  5. ^ Shaw, M.; Garlan, D. (1996). Software architecture : perspectives on an emerging discipline. Prentice Hall. ISBN 9780131829572. 
  6. ^ Taylor, R.N.; Medvidović, N.; Dashofy, E.M. (2009). Software architecture: Foundations, Theory and Practice. Wiley. ISBN 9780470167748. 
  7. ^ a b «Ch. 3: Architectural Patterns and Styles». Microsoft Application Architecture Guide (2nd utg.). Microsoft Press. oktober 2009. ISBN 9780735627109.