Arkitektoniske modeller:
I et hus
har man modeller/tegninger over utforming, rom, elektriske kretser, rørlegging
og ventilasjon
- Hver modell tilfører et eget view over huset.
- Brukes
av ulike personer for å måle ulike aspekter og egenskaper ved huset.
- Fungerer
som en beskrivelse av huset ved konstruksjon og en veiledning ved inspeksjon,
renovasjon etc.
Hvilke strukturer bruker en arkitektur for å gi et eller flere view over
systemet?
Moduler,
brukere, kall, prosesser, klasser, dataflyt og fysiske komponenter
4+1 view-modellen
Denne
modellen brukes til å illustrere systemet fra ulike perspektiver:
Logisk view: Viser nøkkelabstraksjoner som objekter eller objektklasser
(klassediagram, sekvensdiagram)
Prosessview: Viser hvordan et system er sammensatt av interagerende prosesser
(aktivitetsdiagram)
Utviklingsview: Viser hvordan programvaren er dekomponert for
utvikling (pakkediagram)
Fysisk view: Viser systemets maskinvare, samt hvordan programvarekomponenter er
distribuert på tvers av prosessorer (deployment diagram)
Bruker
relevante bruksmønstre eller scenarier for å knytte det sammen (+1).
Systemarkitektur
- Tilfører en designpkan for et system
- Blåkopi
- Innebærer formålet
- Blåkopi
- Innebærer formålet
Designnivåer
Arkitektonisk
design(høy-nivå design)
- Arkitektur – helhetlig struktur: hovedmoduler
og deres forbindelser
-
Design
som dekker de viktigste use casene til systemet
-
Adresserer
de viktigste ikke-funksjonelle kravene
-
Vanskelig
å forandre
Detaljert
design (lav-nivå design)
- Den indre strukturen til hovedmodulene
-
Kan i
noen tilfeller inkludere programmeringsspråk i beslutningen
- Detaljert nok til å bli inkludert i ønsket
programmeringsspråk
Hva er god arkitektur?
God
systemarkitektur er pålitelig, gir god ytelse, feil tolerant, vedlikeholdbar,
rask i respons og forståelig.
Viktige spørsmål for en systemarkitekt
Finnes
det en generisk applikasjonsarkitektur som
kan brukes?
Hvordan
vil systemet destribueres?
Hvilken
arkitektonisk stil er passende?
Hvilken
tilnærming vil bli brukt for å tilpasse systemet?
Hvordan
vil systemet bli oppdelt i moduler?
Hvilken
kontrollstil bør vi bruke?
Hvordan
skal den arkitektoniske utformingen evalueres?
Hvordan
skal arkitekturen utformes?
Hvem påvirker arkitekten?
ALLE aktører. F.eks ledelse, markedsfører, sluttbruker, oppdragsgiver
ALLE aktører. F.eks ledelse, markedsfører, sluttbruker, oppdragsgiver
Hva er med på å forme
arkitekturen?
Funksjonelle
krav (hva systemet skal gjøre), begrensninger
(hvilke os, hvilke enheter osv) og kvalitetsattributter
(modifiserbarhet, ytelse, sikkerhet)
Kvalitetsatributter (ikke-funksjonelle krav)
Ikke funksjonelle krav
- Ytelse
-
Kjøretid
-
Tilgjengelighet
-
Gjennopprettbarhet
-
Sikkerhet
-
Skalerbarhet
Brukbarhet
- Lærbarhet
-
Konfiguerbarhet
-
Dekning
Vedlikholdbarhet
- Utvidbarhet
-
Testbarhet
- Portabilitet
Kobling og samhold (Coupling og chohesion)
En god arkitektur:
- Lavt antall koblinger gjør fremtidige endringer enklere
- Lavt antall koblinger gjør fremtidige endringer enklere
- Høy
samhold gjør en modul enklere å forstå
Ukesspørsmål knyttet til arkitektur:
Hvordan defineres arkitektur innen
systemutvikling? Gi et forslag til en definisjon.
Hvordan
man velger å strukturere eller dele inn et system i flere elementer samt
hvordan organisering og samspill mellom disse gjøres.
Forelder/ulemper ved å lage design/arkitektur
før utviklingen starter:
Fordeler:
- Bedre helhetsoversikt
-
Godt
kommunikasjonsverktøy i dialog med kunder og sluttbrukere
-
Setter
rammer for viktige detaljer i systemet, teknologi, plattform og vitenskap.
-
Kan
avdekke problemer tidlig
Ulemper:
- Kan føre til feil fokus.
-
Kan føre
til feil følelse av trygghet
- Vanskelig for en arkitekt å forutse hele
systemet på forhånd
Fordeler og ulemper ved å lage
design/arkitektur mens utviklingen pågår
Fordeler:
- Gir bedre samspill mellom kode og arkitektur
-
Fanger
lettere opp endringer i behov
- Man lager ikke mer enn hva som behøves
Ulemper:
- Fare for å måtte gjøre ting om igjen
-
Fare for
å være korttenkt
- Ofte ikke nok tid til å designe og dokumentere
arkitekturen underveis
Hva kjennetegner god arkitektur?
- Det er mulig å implementere et system i henhold
til arkitekturen
-
Konsekvent
bruk av prinsipper og teknikker gjennom alle fasene i prosjektet
-
Robust
når det skal gjøres endringer
-
Kilde
til veiledning gjennom hele prosjektets levetid
-
Gjenbruk
av etablerte ingienørkunnskaper
Hva er forskjellen på fysisk og logisk
arkitektur?
Fysisk
arkitektur: hvert lag består av fysiske maskiner (oversikt over maskiner og
enheter og hva som kjøres på dem)
Logisk
arkitektur: Hvert lag forklares rent konseptuelt (hvilke komponenter inngår i
programvaren)
Hva er
fordelene ved å bruke lagdelt arkitektur?
-
Tydelig inndeling av ansvarsområder og lett å gjøre systemet modulbasert
- Kobler systemet sammen på en god måte(lager et
hierarki)
- Gir god struktur og lesbarhet i koden
Når kan lagdeling være en ulempe?
I
systemer med lav utskiftning av moduler vil det være unødvendig
De ulike arkitektoniske stilene med kjennetegn
og forklaring:
PIPE AND FILTER:
Baserer
seg på at man har en rekke uavhengige komponenter som filtrerer eller endrer
data. Systemer som ofte bruker pipe and filter stilen kan være: kompilatorer,
XML-baserte systemer og datasett som må gjennom validering, konvertering og
parsing.
EDA (Event Driven Architecture)
Man
benytter sanntidshendelser til å sende beskjeder (events). Agenter annonserer
og lytter til hendelser og reagerer på det. Brukes der en beskjed kringkastes
til mange, for eksempel politiradio. Annonsøren trenger ikke ha en ralasjon til
lytterne.
KLIENT-SERVER
Man
organiserer systemets funksjonaliteter i tjenester. Muliggjør skalering i stor
grad da man kan speile de mest belastede serverne. Lite redudans. Brukes f.eks mye på universitet i
oslo med terminalmaskiner hvor vi logger på via klientmaskiner. Brukes i
systemer med mye typer innhold.
MVC (Model View Controller)
Brukes
mye i objektorientert programmering. Systemer med flere ulike grensesnitt,
f.eks windows benytter seg av MVC. Strukturert i tre logiske komponenter som
samhandler.
SOA (Service Oriented Architecture)
Handler
om å eksponere gjenbrukbare tjenester i motsetning til å bygge videre på
allerede store og komplekse programmer. Disse nye tjenestene baserer seg på
definerte protokoller og standarer for å sende informasjon seg imellom.
Benytter seg av tjenester som er uavnhengig av programvaren som bruker
tjenesten. Google leverer tjenester fremfor programvare over nett, f.eks Google
Drive. Samme med cloud tjenester som Dropbox og Spotify. Facebook, Twitter,
Google Plus, eksterne APIer.
Ingen kommentarer:
Legg inn en kommentar