Løsningsforslag – Oblig 3.

Transcription

Løsningsforslag – Oblig 3.
Løsningsforslag – Oblig 3.
Oppgave 1: Estimering
a. Foreslå egnet måte (eller egnede måter) for å måle størrelsen eller mengde
funksjonalitet til systemet for leie av markasykler. Begrunn svaret og gjør nødvendige
antagelser.
Svar:
Her kan nevnes andre lignende systemer – spesielt systemet for bysykkel som er
godt kjent.
Andre ting som kan nevnes er function points, object points, antall skjermbilder,
antall usecases, antall user stories eller ”epics” hvis slike ting eksisterer
Antall kodelinjer (LOC) er ikke aktuelt siden det neppe er tilgjengelig på et så tidlig
tidspunkt.
b. Foreslå egnet måte (eller egnede måter) for å måle kompleksiteten til systemet for leie
av markasykler. Begrunn svaret og gjør nødvendige antakelser.
Her kan nevnes målinger basert på ytelseskrav, kompleksitet i skjermbilder (subjektiv
ekspertvurdering), algoritmisk kompleksitet, sikkerhetskrav. Temaet kan utvides til
faktorer som påvirker produktivitet og/eller kompleksitet siden det står mer om
produktivitet i boka. Kan også benytte det som i COCOMO kalles product cost
drivers.
Oppgave 2: Arkitektur
Innen arkitektur bruker man ofte ulike “views” for å illustrere systemet fra ulike perspektiver.
a. I forelesningen om arkitektur ble 4+1 view-modellen nevnt. Forklar kort hva de fire ulike
view-ene innebærer. (Lærebok kap. 6.2 )
1. Logisk view
2. Prosessview
3. Utviklingsview
4. Fysisk view
Denne oppgaven er forholdsvis enkel, og går ut på å kunne gjengi stoff fra
forelesning/lærebok.
b. Hvorfor er det nyttig å benytte seg av ulike views for å beskrive arkitekturen for et
system?
Dette kan også hentes fra lærebok/forelesning. Nyttig å vise systemet fra ulike
perspektiv. Se på helheten, ikke alle detaljene
c. Gi et eksempel på hvordan systemet for markasykler kan settes opp som ee:
1. 3. lags logisk arkitektur
2. 4. lags fysisk arkitektur
3. lags logisk arkitektur
Presentasjonslag:
Dette laget tar for seg brukerinteraksjon. Brukerinteraksjon kan i markasykkelsystemet
skje gjennom sykkelstativene, billettmaskinen, app og nettside.
Business-logikk lag:
Dette laget kan hente ut data og informasjon brukeren ber om gjennom
presentasjonslaget.
Datalag:
Database som lagrer alle sykkelkunder, sykler og stasjoner.
4. lags fysisk arkitektur
Klient:
Klienter i markasykkelsystemet kan være billettautomatene, sykkelstativene, app og
nettside. Data kan vises til bruker på disse klientene.
Webserver og applikasjonsserver:
Applikasjonsservere og webservere har mange bruksområder, og det er vanlig å ha
begge disse serverne. Webserveren leverer hovedinnholdet mens applikasjonstjeneren
kjører programmene som gir ekstra innhold. Begger serverne kan ligge på same maskin.
Database :
Database for sykkelkunder, sykler og statsjoner samt statistikk og rapporter.
d. Hva er fordelene ved å benytte seg av lagdelt arkitektur?
Systemet organiseres i lag - hvert lag er delt opp og organisert ut i fra funksjonelle
fellestrekk. Dermed er hvert lag ansvarlig for seg selv og eventuelt uavhengig av
hverandre, og det kan enkelt gjøres endringer i et eller flere lag uten for store
påvirkninger til andre lag av systemet.
e. Kan det være en ulempe å benytte seg av lagdeling? Begrunn svaret.
For at systemet skal kunne utnytte fordelen av å være lagdelt, er det nødvendig at lagene
er tydelig separert og riktig inndelt etter funksjonelle fellestrekk, hvis ikke kan et lag
måtte kommunisere med et annet lag som ikke ligger i umiddelbar nærhet, og skillene
viskes ut og man mister poenget med lagdeling – at hvert lag er uavhengig og enkelt å
bytte ut. Flere lag kan bruke lengre tid på å betjene en tjeneste enn færre lag.
f.
Redegjør for de viktigste karakteristikkene for de arkitektoniske stilene:
1. Klient-server
2. MVC
3. SOA
4. Pipe and filter
1. Klient-server arkitektur består av en eller flere klienter som ber om en tjeneste fra en
eller flere servere som utfører tjenesten. Klienten kobler seg til serveren ved å be om en
tjeneste og klienten trenger ikke laste ned for eksempel programvaren selv på egen
maskinvare. Fordelen kan være uavhengighet – en server kan byttes ut eller endres uten
for store konsekvenser for levering av andre tjenester i samme system. En ulempe er at
når serveren er nede, påvirker det alle brukere og klienter av serveren.
2. MVC står for model view controller. View representerer grensesnittet, og controller er
bindeleddet mellom view og model. Brukes ofte når det er flere måter å se data på, for
eksempel på en nettside. Fordelen med MVC er gjenbruk av kode – det er lettere å bytte
ut ulike views for samme modell.
3. SOA står for service oriented architecture. I SOA består systemet av flere uavhengige
tjenester som er løst koblet sammen og utgjør et system. Stilen tok utgangspunkt i høye
kostnader ved å drive store systemer, og ønsket var å dele opp systemet slik at hver del
fikk en funksjon hver og dermed ble mer uavhengig av hverandre. Oppdelingen gjør
systemet mer håndterbar da hver del kan endres, byttes ut eller vedlikeholdes uten store
konsekvenser for resten av systemet.
4. Pipe and filter. Pipe fører data gjennom et filter eller mellom flere filtrer. Hvis data skal
gjennom flere filtrer, er prosessert data i et filter, neste filter sin inndata. Et eksempel på
pipe and filter er et unix shell der tegnet « | » representerer en pipe, og kommandoer som
ls (lists) og cd (change directory) er filtrer.
Oppgave 3: Aktivitets- og tilstandsdiagram
a. Hva er karakteristisk for et tilstandsdiagram, og hvorfor kan det være nyttig å benytte et
slikt diagram? Begrunn svaret og kom med et eksempel på når det lønner seg.
Et tilstandsdiagram viser tilstanden til et objekt (eller system) når objektet responderer
på interne eller eksterne hendelser - objektet går fra en tilstand til en annen. Diagrammet
er blant annet nyttig for utviklere da det kan være nødvendig å vite alle tilstander til et
objekt og for å ha kontroll over hvordan objektene endrer oppførsel når de påvirkes av
input.
b. Hva er karakteristisk for et aktivitetsdiagram, og hvorfor kan det være nyttig å benytte et
slikt diagram? Begrunn svaret og kom med et eksempel på når det lønner seg.
Et aktivitetsdiagram viser det dynamiske aspektet ved et system – hvilke aktiviteter som
utgjør et system og flyten mellom dem. I motsetning til et sekvensdiagram som viser en
flyt ved en aktivitet, viser aktivitetsdiagrammet alle potensielle flyt. Diagrammet er enkelt
og intuitivt å forstå, og viser ved hjelp av symboler tilhørende diagrammet alternative
aktiviteter, og hvilke aktiviteter som kan gå i parallell.
Systemet for markasykler skal som nevnt tidligere benytte seg av Ruters betalingsautomater.
Her har man mulighet til å fylle opp et reisekort med penger eller en billett, og man kan også
kjøpe enkeltbilletter uten reisekort.
c. Modellér et tilstandsdiagram for betalingsautomaten.
d. Modellér et aktivitetsdiagram for betalingsautomaten.
Oppgave 4: Testing
a. Forklar hva de ulike testfasene innebærer, og få med hva som skiller dem fra hverandre:
- Enhetstesting
- Integrasjonstesting
-
Systemtesting
Akseptansetesting
Enhetstesting tester alle operasjoner i et objekt, som metoder og funksjoner, for å
stimulere frem tilstander objektet kan være i, og for å oppdage eventuelle feil og mangler
ved en operasjon. En testmåte er å notere forventet resultat av en operasjon og måle mot
faktisk resultat.
Integrasjonstesting tester grensesnittet mellom flere komponenter når det settes
sammen til en større komponent. Hver komponent kan bestå av flere objekter. Ved
enhetstesting kan det være vanskelig å finne feil som kan oppstå hvis et objekt settes
sammen med andre objekter da det ved eneshetstesting kun tester et objekt, mens ved
en integrasjonstest kan slike feil lettere oppdages. Å teste på denne måten kan være å
sjekke om komponentene kommuniserer med hverandre riktig, for eksempel at en
komponent klarer å koble seg til en database. Integrasjontesting kan også brukes for
grensesnittet mellom systemvare og maskinvare.
I systemtesting settes alle komponenter som skal med i systemet sammen, og systemet
testes i sin helhet. En av grunnene til systemtesting kan være at det finnes komponenter
som er avhengig av at systemet integreres som en helhet før feil i dem, og mellom dem
og andre komponenter, kan oppdages. Et eksempel er en komponent som har som
funksjon å autorisere brukere med passord, men som ikke er satt sammen med
komponenten som styrer tilgang til informasjon brukeren kan se. Begge komponentene
kan være feilfri i en integrasjonstest, men feil i systemtest.
Det kan også testes for det som går på ytelse, for eksempel om data blir overført mellom
og gjennom komponentene til riktig tid, sikkerhet eller hvordan systemet reagerer under
stort press fra mange brukere.
Integrasjon- og systemtesting kan oppfattes likt, men forskjellen mellom dem er som
nevnt at det i integrasjonstesting er flere komponenter som utgjør en større komponent
og i systemtesting er alle komponentene som utgjør hele systemet. En annen forskjell er
at systemtesting ikke tar for seg å teste den indre virkemåten til komponentene, dette er
forventet å være testet før systemtesting som utgjør en av de siste testfasene.
Akseptansetesting er til forskjell fra de tre ovenfornevnte, testing på brukernivå.
Brukeren tester om systemet oppfyller kriterier som brukeren og utvikleren har avtalt på
forhånd, for å eventuelt akseptere systemet.
Akseptansetesting består av seks steg. Det første steget å definere og bli enige om
kriteriene brukeren stiller til systemet, helst så tidlig som mulig i utviklerprosessen. Det
andre steget er å avtale kostnader i form av tid og penger, og det praktiske rundt
testingen – i hvilken fase det skal finne sted, risiko forbundet med testing og hvor mye
ressurser som skal brukes på testing. Tredje og fjerde steget er å lage og utføre testene,
for så i det femte å drøfte dem. Hvis systemet er godkjent
vil det i det siste steget bli akseptert og betalt for, eventuelt blir systemet avslått og
utvikleren må forbedre systemet i en ny runde.
Brukeren bør teste produktet i domenet systemet er ment å brukes i, for å lettere
oppdage feil og mangler i forbindelse med bruk, men også for å isolere dem til riktig
brukergruppe eller situasjon slik at det kan være enklere å finne feil. Både funksjonelle
og ikke-funksjonelle krav bør testes.
Under smidig utvikling er akseptansetesting ikke en egen aktivitet som blir gjort i en
bestemt fase, en av hovedgrunnene er fordi brukeren er en del av utvikler-teamet. I
ekstrem programmering lager brukeren brukerhistorier og tester som skal teste om
systemet møter kravene i brukerhistoriene, og kan gjennom dette gi kunnskap om
domenet systemet er ment å brukes i. Prosessen bør ikke fortsette uten at testene er
godkjent.
b. Gi forslag på hvilke deler av systemet for markasykler som kan testes i hver av de ulike
testfasene nevnt over. Sørg for at dere får med minst ett eksempel for hver av dem.
Enhetstesting lar oss teste individuelle klasser og metoder i markasykkelsystemet, for
eksempel metoden startUtlaan(Kunde k, int klokkeslett, String dato) i klassen Sykkel.
Under integrasjonstesting kan vi teste sammensetningen av flere klasser, for eksempel
klassene Sykkel, Stativ og Markasykler.
Med systemtesting kan vi teste hele systemet – alle komponentene i markasykler.
Akseptansetesting av ferdigproduktet. Oslo kommune kan teste om de kan logge inn
med eget passord, hente ut relevante rapporter og statistikker til eget bruk og om de er
forståelige, brukervennligheten til systemet samt det og leie og levere tilbake en sykkel.