Et arkitekturmønster er en generell og gjenbrukbar løsning på et vanlig problem i programvarearkitektur innenfor en gitt kontekst. 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 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.
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. 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. Noen forfattere behandler arkitekturmønstre og arkitekturstiler som samme ting, 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" 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ønstreDataintegrasjon/tjenesteorientert arkitektur Uttrekk, transformasjon og lasting (ETL) Fangst av dataendringer Nær-sanntid ETL Satsvis prosessering1Satsvis-ETL Datautvinning Feilhåndtering Jobb-planlegging Datavalidering Lasting av endringstrege dimensjoner Applikasjonsintegrasjon Grunndata-nav Operasjonell datalager Datatorg Datavarehus Managed file transfer Applikasjonsintegrasjon/enterprise service bus Publisere/abonnere Forespørsel / svar Meldingsutvekslingsmønstre Enveis Synkron forespørsel / respons Grunnleggende tilbakekallsprosess Påstandssjekk Tjenesteorientert arkitekturDataarkitektur Transaksjons-datalagre(TDS / OLTP) Grunndatalager Operasjonelt datalager Datatorg Datavarehus Tilpassede applikasjonsdatabaser ETL EAI SOAAnalytikk og virksomhetsetterretning 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 Instrumentpanel i sanntid Hovedminne-analytikk Statistisk analyse Prediktiv analyse ETL Applikasjonsintegrasjon Transaksjons-datalagre Operasjonelt datalager DatatorgGrunndataforvaltning Grunndata-nav Grunndata-replikasjon Grunndata-tjenester Grunndata-synkronisering Fangst av dataendringer Applikasjonsintegrasjon STDDatamodellering Dimensjonsmodellering Entitet-relasjonsmodell-datamodellering Modelleringsstandarder NavnekonvensjonerKunstig 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:
Mikrotjenester Modell-view-controller Objektorientert programmering Operasjonelt datalager Peer-to-peer Tjenesteorientert arkitektur Distribuert hashtabell
Se også Virksomhetsarkitektur
Referanser
Kategori:Programvaredesign Kategori:Virksomhetsarkitektur