mandag 25. mai 2015

Arkitektur


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

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

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
- 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