TDT4140 Systemutvikling Kompendium



Like dokumenter
Fellesprosjekt: gruppe 214

Use case modellering

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen

UNIVERSITETET I OSLO

Kravspesifikasjon med UML use case modellering. Erik Arisholm

Ulike typer prosessmodeller. Systemutvikling. Utviklingsmodeller. Prosessmodell - faser

Oppsummering av hovedområdene i kurset LO 135A Kirsten Ribu

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case? Use case modellering. Eksempel

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case?

GJENNOMGANG UKESOPPGAVER 9 TESTING

Systemutvikling - oppsummering. Alexander Nossum blog.eksplisitt.net 22. mai 2006

Estimeringsmetoder. I dag. Kostnadsestimering. Kostnader og prisfastsettelse. Ulike estimeringsmetoder. Måling av programvare. Estimeringsteknikker

Estimeringsmetoder. Kirsten Ribu. HiO - Kirsten Ribu

Modellering av krav. INF1050: Systemutvikling 11. februar Universitetslektor Yngve Lindsjørn

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

Oppsummering. Thomas Lohne Aanes Thomas Amble

Eksamen i fag TDT4140 Systemutvikling. 8. juni, 2007 kl

Akseptansetesten. Siste sjanse for godkjenning Etter Hans Schaefer

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

PROSJEKTPLAN FOR INF [4 3]120-PROSJEKT: PROJECT HOSPITAL 2004

Hensikten med denne delen av kurset. Objektorientering hva er det? Objektets egenskaper. Best practises ved programvareutvikling

Presentasjon 1, Requirement engineering process

Livsløpstesting av IT-systemer

UML-Unified Modeling Language

Kap. 2 Prosessen. Utviklingsmodeller -2. Utviklingsmodeller. Utviklingsmodeller -4. Utviklingsmodeller - 3. Software Engineering - definisjoner

UML 1. Use case drevet analyse og design Kirsten Ribu

System integration testing. Forelesning Systems Testing UiB Høst 2011, Ina M. Espås,

UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller

Modellering av krav. INF1050: Systemutvikling 07. februar Førstelektor Yngve Lindsjørn

UML-Unified Modeling Language. Prosess-oversikt. Use case realisering

Produktrapport Gruppe 9

Validering og verifisering. Kirsten Ribu

Kort om evaluering og testing av It-systemer. Hvordan vurdere, verdsette, velge og teste?

OptimalJ-kurs UIO Oppsummering av kurset. De ulike modellene egenskaper og formål

Use case drevet design med UML

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Testplan (Software Test Plan)

Systemutviklingen er ferdig når et system er operativt. Med operativt menes når systemet blir brukt av brukerne på et faktisk arbeidssted.

AlgDat 12. Forelesning 2. Gunnar Misund

Lykke til! Eksamen i fag TDT4140 Systemutvikling NTNU Norges teknisk-naturvitenskapelige universitet

GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG

Kapittel 5 - Advanced Hypertext Model Kapittel 6 - Overview of the WebML Development Process

Kravspesifikasjon med. UML diagrammer. systemutvikling. Dokumentasjon av systemets krav, arkitektur, design og implementasjon

Unified Modeling Language (UML) Kravspesifikasjon med UML use case modellering. UML diagrammer. Notasjon som støtter opp under modellbasert

UNIVERSITETET I OSLO

A Study of Industrial, Component-Based Development, Ericsson

Use Case-modellering. INF1050: Gjennomgang, uke 04

Kravspesifikasjon med. Erik Arisholm

UKE 9 Prosesser og prosessmodeller inkludert smidige metoder. Gruppetime INF1055

Grunnleggende testteori. Etter Hans Schaefer

Metrikker og målte størrelser. Vi måler fakta for å bestemme systemets egenskaper

Løsningsforslag Sluttprøve 2015

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Universitetet i Oslo Institutt for informatikk. Eskild Busch. UML hefte

Tom Røise 18. Februar 2009

UNIVERSITETET I OSLO

UKE 11 UML modellering og use case. Gruppetime INF1055

UKEOPPGAVER 2: SYSTEMUTVIKLINGSPROSESSER OG PROSJEKTARBEID INNSPILL TIL SVAR

Oppgave 1: Multiple choice (20 %)

Måling Hvordan ta beslutninger Estimeringsteknikker

Distributed object architecture

Grunnleggende testteori

CORBA Component Model (CCM)

Inf1055 Modul B 26 april 2017:

Inception Elaboration Construction Transition Bemanning 1 1,5 2 2 Varighet i uker Antall iterasjoner (lengde i uker i parentes) Tabell 1

Kravspesifikasjon. Dagens forelesning. Mal for kravspesifikasjon. Hvordan finne fram til kravene? Kravspesifikasjon og objektorientert analyse

Oppsummering : IMT2243 Systemutvikling. Hensikt med kurset. Innfallsvinkel : Tom Røise IMT2243 : Systemutvikling 1

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

Kravhåndtering. INF1050: Gjennomgang, uke 03

Oppgave 1. Finn krav. Finn krav. Finn test

GJENNOMGANG OBLIGATORISK OPPGAVE 1

Estimeringsmetoder. I dag. Estimering = måling. Kostnader og prisfastsettelse

Eksamen 2013 Løsningsforslag

Prosjektplan v1.7 (Revidert utgave 2)

AlgDat 10. Forelesning 2. Gunnar Misund

Testbilag til IT kontrakter

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

1. Hvilke type krav angår sikkerhet og pålitelighet?

Hvordan komme i gang med ArchiMate? Det første modelleringsspråket som gjør TOGAF Praktisk

Modellering IT konferanse

Kirsten Ribu

Kap. 10 Systemutvikling System Engineering

Systemutviklingsmetoder

Eksamen i fag TDT4140 Systemutvikling. 22. mai, 2008 kl

Generelt om operativsystemer

Tom Røise 9. Februar 2010

Kravspesifikasjon. Kravspesifikasjon. Mal for kravspesifikasjon. Hvordan finne fram til kravene? Hva skal systemet gjøre? Hvem og hva påvirker krav?

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0>

1. Hvilke type krav angår sikkerhet og pålitelighet?

Obligatorisk oppgave 3. INF1050: Gjennomgang, uke 16

Spesifikasjon av Lag emne

Oppsummering : IMT2243 Systemutvikling. Hensikt med kurset. Innfallsvinkel : Tom Røise IMT2243 : Systemutvikling 1

Statisk testing. Testing uten datamaskin, men med vår egen evne til å vurdere og analysere

ISTQB Foundation Level Prøveeksamen

Kapittel 7 & 8. Kravspesifikasjoner & Data design. Thomas Tjøstheim og Thomas Edvinsen. 20 September Kapittel 7 & 8 p.1/20

Fra krav til objektdesign

Arkitektur. Kirsten Ribu Høgskolen i Oslo

Forfattere: Daníelsdóttir, Drífa Meland, Maiken Mijalkovic, Biljana Svendsen, Simen H. Gruppelærer: Zarei, Amir Hossein. 5.

Prøveeksamen INF1050: Gjennomgang, uke 15

Model Driven Architecture (MDA) Interpretasjon og kritikk

Transkript:

TDT4140 Systemutvikling Kompendium Vegard Aas, 2006 Side 1

Innledning...4 1 Prosesser...5 1.1 Veikart for systemutvikling...5 1.1.1 Prosjektegenskaper...5 1.2 Prosesser...5 1.2.1 Fossefallmodellen (utvidet)...5 1.2.2 Spiralprosessmodellen...5 1.2.3 Inkrementell prosessmodell...6 1.2.4 Prosessammenligninger...6 1.2.5 Unified Software Development Process (USDP)...6 1.3 Dokumentasjon...6 1.3.1 Aktuelle organisasjoner...6 1.3.2 IEEE-standard...6 1.4 Kvalitet...7 1.4.1 Kjennetegn på høy kvalitet...7 1.4.2 Metrikker...7 1.4.3 Kvalitetssikringsprosessen...7 1.4.3 IEEE standard for SQAP...7 2 Prosjektledelse...9 2 Prosjektledelse...9 2.1 Introduksjon...9 2.1.1 Prosjektplanlegging...9 2.1.2 Prosjektledelse...9 2.1.3 Tidsplanlegging Gant-diagram s 93...9 2.2 Personalledelse...9 2.3 Risikohåndtering...10 2.3.1 Definering av risiko...10 2.3.2 Risikoanalyse: Braude s. 88-89...10 2.4 Kostnadsestimering...11 2.4.1 Constructive Cost Modell (COCOMO)...11 2.4.2 Funksjonspoeng...12 2.4.3 Use case poeng...12 2.5 Software Project Management Plan (SPMP)...15 2.5.1 IEEE 1058.1-1987 SPMP innholdsfortegnelse...15 2.6 Kvalitetssikring...15 3.1 Typer krav...16 3.1.1 Sjekkpunkter for krav...16 3.1.2 Roadmap til kravanalyse...16 3.1.3 IEEE 830-1993: Software Requirements Specification...16 3.2 Kravbeskrivelse...17 3.2.1 Operasjonskonsept...17 3.2.1 Use cases...17 3.2.2 Dataflytdiagrammer...18 3.2.3 Tilstandsdiagrammer...18 3.2.4 Prototyping...18 4 Kravanalyse: Utviklerkrav...19 4.2 Typer krav...19 4.2.1 Roadmap...19 4.2.2 Typer krav...19 4.2.3 Egenskaper ved D-krav...19 5 Systemarkitektur...20 5.1 Systemutvikling...20 5.2 Modeller, rammeverk og design patterns...20 5.2.1 Use Case Diagram...20 5.2.2 Klassediagram (UML)...20 5.2.3 Rammeverk...20 5.2.4 Design patterns...20 5.2.5 Valg av riktig arkitektur...21 5.2.6 Arkitektur, standarder og verktøy...21 6 Detaljert design...22 6.1 Detaljert design...22 6.1.1 Modelleringsteknikker...22 6.1.2 Roadmap for detaljert design...22 6.1.3 Dataflytdiagram...22 6.1.4 Spesifisering av klasser og funksjoner...23 6.2 Estimering av størrelse og tid...23 6.2.1 Roadmap...23 7 Implementasjon...24 7.1 Programmering...24 7.1.1 Generelle prinsipper...24 7.1.2 Vurdering av kvalitet...24 7.1.3 Standard metrikk for kildekode...24 8 Enhetstesting...25 8.1 Testing...25 8.1.1 Mål med testing...25 8.1.2 Enhetstesting...25 Side 2

8.2 Testtyper...25 8.2.1 Sort-, hvit- og gråbokstesting...25 8.2.2 Grenseanalyser...25 8.2.3 Testdekking...25 8.3 Planlegge enhetstesting...25 8.3.1 Plan for enhetstesting...25 9 Systemintegrasjon, verifisering og validering...27 9.1 Integrasjon...27 9.1.1 Testprosedyre...27 9.1.2 ANSI/IEEE 829 Software Test Documentation...27 9.1.3 Testgjennomføring...27 9.1.4 Alpha/betatesting...27 10 Vedlikehold...28 10.1 Introduksjon...28 10.2 Typer vedlikehold...28 11 extreme programming...29 11.1 Bakgrunn...29 11.1.1 Prosjektrisiko...29 1.1.2 Prosjektkanselleringer...29 11.2 extreme programming...29 11.2.1 Verdier...29 1.2.2 Praksis...29 Side 3

Innledning Systemutvikling Fokus Prosessen med å bygge applikasjoner med hensiktsmessig omfang som tilfredsstiller krav til funksjonalitet, brukervennlighet og ytelse 4P: people, process, project, product+ quality Applikasjonstyper Stand-alone: Kjøres på enkelt maskin, ikke koblet til annen hw/sw Integrert Del av unik applikasjon som involverer hw Real time Må kjøre funksjoner på svært kort tidsmargin Nettverkssystemer Deler interagerer over nettverk Side 4

1 Prosesser 1.1 Veikart for systemutvikling 1. Forstå problemet og systemet som skal bygges 2. Velg utviklingsprosess og lag en plan - Prosjektstyring: tilgjengelig tid, ressurser og personell - Dokumenthåndtering 3. Samle krav - Kravspesifikasjon og produktbeskrivelse 4. Designe og utvikle produktet - Design - Implementering 5. Test produktet - Enhetstesting: Teser del av systemet, for eksempel en klasse, metode eller funksjon - Integrasjon og systemtesting: Tester systemet som helhet, på tvers av klasser og funksjoner 6. Lever og vedlikehold produktet: Vedlikehold står gjerne for 80 % av kostnadene 1.1.1 Prosjektegenskaper 1. Hva slags system som skal utvikles 2. Kundens krav sammenlignet med erfaring fra tidligere prosjekter 3. Kostnadsramme og leveringstid 4. Graden av interaksjon med kunden - Kunden vet hva han vil ha - Kunden har et problem han vil ha løst - Kunden tror han har et problem 5. Kunnskap og erfaring Kunnskap Høy Middels risiko Lav risiko Lav Høy risiko Middels risiko Lav Høy Erfaring 1.2 Prosesser 1.2.1 Fossefallmodellen (utvidet) Konseptanalyse Bestemmelse av overordnet funksjonalitet Kravanalyse Kravinnhenting og -dokumentasjon Objektorientert analyse Beskrivelse av klassestruktur Design Beskrivelse av produktets struktur: diagram og tekst Implementering Programmering Enhetstesting Tester hver klasse/funksjon individuelt Integrering Sette sammen deler Systemtesting Tester systemet som helhet Vedlikehold Reparasjon, tilpasninger og modifiseringer Gjerne overlapp mellom delene av prosessen ettersom det ofte er upraktisk å fullføre en del før en begynner på neste. 1.2.2 Spiralprosessmodellen Kjøres i spiral Kravanalyse, design, implementering og testing Fordeler - Fjerne en del risiko (big bang-implementering) - Kan tidlig bygge delvis modell som kan vises kunden og gi tilbakemelding - Kjørbart system letter integrering - Samle erfaringsdata til senere for hver iterasjon Typisk 2-3 iterasjoner Side 5

1.2.3 Inkrementell prosessmodell Forskjeller mot spiral - Hvert inkrement er mye mindre. Inkrementer Stegne i fossefallmodellen repeteres flere ganger helt eller delvis Tidsintervall Hele prosjektet (dokumentasjon, test, kode) oppdateres med jevne mellomrom, for eksempel ukentlig Fordeler - Kontinuerlig testing - Kjørbart system letter integrering Ulemper - Krever mye koordinering 1.2.4 Prosessammenligninger Iterative Fossefall Spiral Inkrementell Dokumentkontroll Lett Vanskelig Medium/Vanskelig: Krever konsistente dokumenter i starten Kundeintegrasjon Vanskelig Lett Lett God design Medium/vanskelig Lett Vanskelig Få nok iterasjoner til god design, mange nok til naturlig problemforståelse Samling av Vanskelig Medium/Vanskelig Medium/Vanskelig prosessadata Som oftest er spiralmodellen best for semesterprosjekter (2 iterasjoner) 1.2.5 Unified Software Development Process (USDP) I fire faser av prosjektet gjøres det forskjellig antall inkrementer Inception Initial kontaktfase med interessenter: brukere, ledelse, finansielle støttespillere Kan involvere prototyp Elaboration Bestemmelse av funksjonalitet og bekreftelse av arkitektur Construction Utvikling av selve systemet, men ikke helt ferdig Transition Klargjøre system for å slippes Modeller - Use casemodell - Analysemodell - Designmodell - Utviklingsmodell - Implmenteringsmodell - Testmodell 1.3 Dokumentasjon 1.3.1 Aktuelle organisasjoner IEEE The International Institute of Electronic and Electrical Engineers ISO The International Standards Organization SEI The Software Engineering Institute OMG The Object Management Group 1.3.2 IEEE-standard SVVP Software Verification and Validation Plan Verifikasjon er prosessen som sjekker at en applikasjon er bygd på riktig måte. Validering sjekker om riktig produkt har blitt bygd (løser problemene til kunden). SQAP Software Quality Assurance Plan Side 6

Har systemet oppnådd ønskete kvalitetsmål? SCMP SPMP Software Configuration Management Plan Hvor er dokumentasjon og kode lagret og hvordan fungerer de sammen? Versjonskontroll og mulighet for å rulle tilbake Software Project Management Plan SRS SDD STD Software Requirements Specification Krav Software Design Document Arkitektur og design for systemet. For eksempel klassediagrammer og sekvensdiagrammer/dataflytdiagrammer. Software Test Documentation Hvordan systemet skal testes. 1.4 Kvalitet 1.4.1 Kjennetegn på høy kvalitet Kode - Tifredsstiller krav - Sjekker input og håndterer feil på en forutsigbar måte - Inspisert og testet av andre enn utvikler - Grundig dokumentert - Feilrate er kjent Applikasjon - Utvidbar (ny funksjonalitet kan legges til) - Fleksibel (kan tilpasses nye krav) - Portabel (kan brukes i ulike miljø) - Generell (kan brukes i ulike situasjoner) 1.4.2 Metrikker - Mengde utført arbeid (LOC) - Tidsforbruk - Defektrate (D/KLOC) 1.4.3 Kvalitetssikringsprosessen Sortboks Undersøker applikasjonen som enhet; korrekt output for ulik input? Hvitboks Undersøker de enkelte enheter i applikasjonen Inspeksjoner 10-15% av utviklingsbudsjettet - Defect detection only (reparerer ikke feil) - Peer process (sjekker arbeid under prosess) - Specified roles (moderator, author, reader, recorder) -Complete preparation (inspeksjon samme nøyaktighet som forfatteren, tar tid!) 1.4.3 IEEE standard for SQAP 1. Hensikt 2. Refererte dokumenter 3. Prosjektledelse 3.1 Organisasjon 3.2 Oppgaver 3.3 Ansvar 4. Dokumentasjon 4.1 Hensikt 4.2 Minimum dokumenteringskrav 4.3 Annet Side 7

5. Standarder, praksis, konvensjoner og metrikk 5.1 Hensikt 5.2 Innhold 6. Gjennomgang og revidering 6.1 Hensikt 6.2 Minimumskrav 6.2.1 Revidering av programvarekrav 6.2.2 Revidering av foreløpig design 6.2.3 Revidering av kritisk design 6.2.4 Revidering av SVVP 6.2.5 Revidering av funksjonelle krav 6.2.6 Revidering av fysiske krav 6.2.7 Revidering av pågående prosesser 6.2.8 Revidering av prosjektledelse 6.2.9 Revidering av SCMP 6.2.10 Gjennomgang av driftsfase 6.3 Annet Side 8

2 Prosjektledelse 2.1 Introduksjon 2.1.1 Prosjektplanlegging 1. Forstå prosjektinnholdet, størrelsen og tidsrammen 2. Velg utviklingsprosesser (metoder, verktøy, språk, dokumentasjon) 3. Velg organisasjonsstruktur (organisatoriske elementer involvert) 4. Velg ledelsesprosess (hvem har ansvar for hva) 5. Lag tidsdiagram (når skal ting være ferdig) 6. Lag arbeidsfordeling 7. Begynn risikoplanlegging 8. Velg dokumentasjonsmetoder 9. Begynn prosessen! 2.1.2 Prosjektledelse Faktor Lederverktøy Total kostnad Struktur Produkt Administrasjonsprosess: ansvarsfordeling og overoppsyn Kvalitet Utviklingsprosess (metoder, verktøy, språk, dokumentasjon og støtte) Tid Tidsplan 2.1.3 Tidsplanlegging Gant-diagram s 93 1. Indiker fastsatte milepæler 2. Lag interne nødvendige milepæler: sett av tid til oppstart, integrasjon og testing 3. Vis første iterasjon 4. Vis oppgaver som identifiserer og unngår risiko 5. Vis ubrukt tid 6. Fullfør tidsplanen 2.2 Personalledelse Effektiv kommunikasjon Avhenger av antall deltakere, 3-7 er optimalt Antall kommunikasjonslinjer = (n-1)+(n-2) + 1 = n(n-1)/2 Side 9

2.3 Risikohåndtering 2.3.1 Definering av risiko En risiko er en faktor som kan påvirke prosjektet negativt i stor grad. Typer Kilder Beskrivelse 1. Risiko som kan unngås eller omgås 2. Risiko som ikke kan unngås 1. Manglende engasjement hos toppledelsen 2. Mangel på engasjement fra kunde 3. Misforståtte behov 4. Mangel på involvering fra kunde 5. Klarer ikke å oppfylle brukerens forventninger 6. Endring av omfang og eller målsetninger underveis 7. Mangel på kvalifisert personell 1. Grad av påvirkning 2. Sannsynlighet 3. Kostnadsestimat for å fjerne risikoen Risk retirement Conquest Avoidance 2.3.2 Risikoanalyse Risiko Sanns Virkn Kost Proaktive tiltak Reaktive tiltak Prosjektledelse Personellproblemer Ledelsesproblemer Mangel på brukerinvolvering Andre ansatte på stand-by Kontakt med konsulenter Prosjektmedarbeidere inkludert i ledelsesprosess Gi bruker/kunde eierskap. Tidlig involvering, use case Sette inn nye prosjektmedarbeidere Bytte leder Involver kunde Ansvar Systemutvikling Ufullstendige krav Misforståtte krav Endring av krav Manglende kompetanse Vanskelig testing For dårlige utviklingsverktøy Tett samarbeid med bruker Tett samarbeid med bruker Tett samarbeid med bruker Kompetansekartlegging og -utvikling på forhånd Grundig testdokumentasjon Bruk kjente verktøy Spesifisere krav Konkretisere krav Inkludere krav Sette inn nye prosjektmedarbeidere Del opp eller endre tester Bytte verktøy Side 10

2.4 Kostnadsestimering - Utvikle estimater på ulike måter, så kombinere resultatene Estimering Walstone & Felix: E = (a + b*kloc c )*(f(x1, X2, Xn) E = 5.2*KLOC 0.91 konstant gir produktivitet i månedsverk/1000 linjer kode X i kostnadsdrivere 2.4.1 Constructive Cost Modell (COCOMO) Beregning av innsats og varighet ut fra antall kodelinjer Produktet sammenlignes med tilsvarende for å estimere nødvendig antall kodelinjer. Industristandard konverteringsfaktorer mellom ulike programmeringsspråk. Prosjekttype Beskrivelse a b c d Organisk Lite team med mye erfaring i kjente omgivelser 2.4 1.05 2.5 0.38 Semidetached Mellomform 3.0 1.12 2.5 0.35 Embedded Store beskrankninger, for eksempel i maskinvare 3.6 1.20 2.5 0.32 Personmnd Varighet a * KLOC b c*a d *KLOC bd ) c * personmnd d Side 11

2.4.2 Funksjonspoeng 1. Identifiser brukernivåfunksjoner ( hent, vis etc.) 2. Beregn funksjonspoeng for hver funksjon Antall inputtyper I Bare input som krever endring i funksjonalitet regnes Antall outputtyper O Bare output som krever ulike algoritmer eller funksjonalitet regnes Antall spørringer E Hver uavhengige spørring teller som en Antall interne logiske filer L Hver unik gruppe data, kombinasjoner teller ikke Antall grensesnitt F Bruk eller utveksling av data med andre app 3. Multipliser med faktor avhengig av kompleksitet Enkel Medium Kompleks Subtotal Totalt Antall Faktor Antall Faktor Antall Faktor I 3 4 6 O 4 5 7 E 3 4 6 L 7 10 15 F 5 7 10 Ujusterte funksjonspunkter: UFP = nfi + nfo + nfe + nfl + nff 4. Beregn vekter for 14 generelle karakteristika ved et prosjekt Nr Karakteristikk Vekt 1 Behov for backup/recovery 0-5 2 Behov for kommunikasjon 0-5 3 Distribuert prosessering 0-5 4 Ytelse kritisk 0-5 5 Kjør i allerede belastet miljø 0-5 6 Behov for samtidighet 0-5 7 Flere skjermer for input 0-5 8 Hoveddata oppdatert on-line 0-5 9 Kompleksitet for in- og output, samt filer 0-5 10 Kompleksitet for intern prosessering 0-5 11 Kode ment for gjenbruk 0-5 12 Konvertering og installering inkludert 0-5 13 Flere installasjoner i ulike miljø 0-5 14 Bruker skal kunne endre 0-5 5. Justerte funksjonspoeng = [ikke-justerte funksjonspoeng] * [0,65+0,01*(generelle karakteristika)] Antall kodelinjer: konverteres ved industristandard. [SPR] estimerer 53 l Javakode/ funksjonspoeng 2.4.3 Use case poeng 0. Kravspesifikasjon Lag først en strukturert, tekstlig kravspesifikasjon, med krav nummerert som Ra.y (a:bokstav, y:siffer). Antas laget på forhånd. 1. Grafisk use case-modell Her avbildes aktører som en stilisert person og use cases med ovale rundinger, og med forbindelser (streker/piler) mellom. 2. Tekstlig modell-beskrivelse Gjøres for hver aktør og use case, etter 3. Kategorisering av aktører For hver aktør, kategorisér denne som enkel, gjennomsnittlig eller kompleks: En enkel aktør er et annet system med et definert programmeringsgrensesnitt. En gjennomsnittlig aktør er enten at annet system som kommuniserer via en protokoll, f.eks. TCP/IP, eller en person som kommuniserer via et tekstbasert grensesnitt. Side 12

En kompleks aktør er en person som kommuniserer via et grafisk grensesnitt. Tell opp antallet i hver kategori (NAgents_simple, NAgents_average og NAgents_complex, og der summen av disse er antall aktører). Legg inn disse tre tallene i vedlagte regneark. 4. Kategoriser use case som enkle, gjennomsnittlige eller komplekse Avhengig av antall hovedtransaksjoner og transaksjoner i alternativ hendelsesflyt. En transaksjon defineres som en hendelse som forekommer mellom aktør og system. Et enkelt use case har 3 eller færre transaksjoner. Et gjennomsnittlig use case har 4 til 7 transaksjoner. Et komplekst use case har 8 eller flere transaksjoner. Tell opp antall use case i hver kategori (NUsecases_simple, NUsecases_average og NUsecases_complex, og der summen av disse er antall use cases). Legg inn disse tre tallene i vedlagte regneark. 5. Kontekstfaktorer Gi en vurdering av betydningen til hver teknisk faktor (som TRating_i, i=1..13) og betydningen til hver omgivelsesfaktor (som ERating_j, j=1..8), begge etter en skala 0..5. Se regnearket for karakterisering av disse 21 = 13+8 faktorene. Verdien 0 betyr at faktoren er irrelevant for dette prosjektet, mens 5 betyr at faktoren er av avgjørende betydning. Dvs. at dere må legge inn 21 tallverdier for disse to gruppene av faktorer i regnearket. På forhånd er det i regnearket lagt inn tilsvarende vekter (Tweight_i og Eweight_j), i alt 21 pre-definerte verdier. De samme faktorverdiene og vektene forutsettes å gjelde overalt i et prosjekt for alle dets aktører og use cases. 6. Produktiviteten Anslå EperUCP (timeverk/ use case-poeng ) og legg inn i regnearket. Dette ene tallet vil ligge mellom 15 og 30, ofte satt til 20 som er forhåndssatt i regnearket. Dere kan velge om dere vil bruke dette anslaget, eller sette inn noe annet. 7. Regnearket vil suksessivt beregne følgende størrelser: No. of unadjusted actor weights, UAW = NAgents_simple*1 + NAgents_average*2 + NAgents_complex*3 % Her er 1,2,3 vekter for agentene No. of unadjusted use case weights, UUCP = NUsecases_simple*5 + NUsecases_average*10 + NUsecases_complex*15 % Tilsvarende er 5,10,15 vekter for use cases No. of unadjusted use case points, UUCP = UAW + UUCW Sum Technical Factors, TFactor = Sum,i=1..13 (TWeight_i * TRating_i) Sum Environment Factors, EFactor = Sum,j=1..8 (EWeight_j * ERating_j) Technical Complexity Factor, TCF = 0.6 + (0.1*TFactor) % Merk magiske koeffisienter Environment Complexity Factor, ECF = 1.4 + (-0.03*EFactor) % Tilsvarende Adjusted use case points, UCP = UUCP * TCF * ECF Staff-hours (effort) per entire use case diagram = UCP * EperUCP % Her er EperUCP er 15..30, ofte 20. Registrér forbrukte timeverk per use case, dvs. lag en tabell/regneark for: <Aktivitet use case person-navn timeverk> Dvs. at dere for hver livsfase-aktivitet (konstruksjon, implementasjon) må registerere timeverk litt mer detaljert. Timeverk for et helt use case-diagram summeres så opp. Side 13

Enter values in this column Actors Weight Factors Description Weight Enter NActors_i Weighted Value Comment Simple_Actor Program interface 1 0 0 Average_Actor Interactive or protocol driven interface 2 0 0 Complex_Actor Graphical interface 3 3 9 Total Actor Weight 9 Use Cases Weight Factors (Bases on the number of transactions in a use case) Weight Enter NUsecases_i Weighted Value Comment Simple_Use_Case 3 or fewer transactions 5 2 10 Average_Use_Case 4 to 7 transactions 10 3 30 Complex_Use_Case more than 7 transactions 15 5 75 Transaction Based Factors 115 Unadjusted Use Case Points 124 Technical Weight Factors Rating Scale is 0 to 5 TWeight_i Enter TRating_i Weighted Value Reason T1 Distributed System 0 =not important 5 =essential 2 3 6 T2 Response or throughput performance objectives 0 =not important 5 =essential 1 3 3 T3 End-user efficiency (online) 0 =not important 5 =essential 1 3 3 T4 Complex internal processing 0 =not important 5 =essential 1 3 3 T5 Code must be reusable 0 =not important 5 =essential 1 3 3 T6 Easy to install 0 =not important 5 =essential 0,5 3 1,5 T7 Easy to use 0 =not important 5 =essential 0,5 3 1,5 T8 Portable 0 =not important 5 =essential 2 3 6 T9 Easy to change 0 =not important 5 =essential 1 3 3 T10 Concurrent 0 =not important 5 =essential 1 3 3 T11 Includes special security features 0 =not important 5 =essential 1 3 3 T12 Provides direct access for third parties 0 =not important 5 =essential 1 3 3 T13 Special user training facilities are required 0 =not important 5 =essential 1 3 3 TFactor TFactor 42 Technical Factor (TCF).6 + (.01*TFactor) 1,02 Environmental Factors for Team and Weights Rating Scale is 0 to 5 EWeight_j Enter ERating_j Weighted Value Reason Experience Stability F1 Faimilar with the Rational Unified Process 0 = no experience, 3=average, 5=expert 1,5 3 4,5 0 F2 Application experience 0 = no experience, 3=average, 5=expert 0,5 3 1,5 1 F3 Object-Oriented Experience 0 = no experience, 3=average, 5=expert 1 3 3 0 F4 Lead analyst capability 0 = no experience, 3=average, 5=expert 0,5 3 1,5 1 F5 Motivation 0=no motivation, 3=average, 5=high 1 3 3 0 F6 Stable requirements 0=extremly unstable, 5=unchanging 2 3 6 0 F7 Part-time workers 0=no part time, 5=all part time -1 3-3 0 F8 Difficult programming language 0=easy language, 3=average,5=difficult -1 3-3 0 EFactor EFactor 13,5 2 Environmental Factor (EF) 1.4+(-0.03*EFactor) 0,995 Use Case Points UUCP 125,8476 Person-hours per use case point EperUUCP 20 Estimated person-hours in project Effort in person-hours 2516,952 Side 14

2.5 Software Project Management Plan (SPMP) 2.5.1 IEEE 1058.1-1987 SPMP innholdsfortegnelse 1. Introduksjon 1.1 Prosjektoversikt 1.2 Prosjektleveranser 1.3 Videreutvikling av SPMP 1.4 Referansemateriale 1.5 Definisjoner og forkortelser 2. Prosjektorganisering 2.1 Prosessmodell 2.2 Organisasjonsstruktur 2.3 Organisasjonens begrensninger og grensesnitt 2.4 Prosjektansvar 3. Ledelsesprosess 3.1 Ledelsesmål og prioriteringer 3.2 Antakelser, avhengigheter og begrensninger 3.3 Risikohåndtering 3.4 Monitorering og kontrollmekanismer 3.5 Arbeidsplaner 4. Teknisk prosess 4.1 Metoder, verktøy og teknikker 4.2 Software dokumentasjon 4.3 Prosjektstøtte 5. Arbeidspakker, tidsplan og budsjett 5.1 Arbeidspakker 5.2 Avhengigheter 5.3 Ressursbehov 5.4 Budsjett og ressursallokering 5.5 Tidsplan 2.6 Kvalitetssikring Mål av effektivitet gjøres via prosessmetrikk: 1. Antall feil pr KLOC 2. Varians i tidsplan for hver fase: (Faktisk varighet prosjektert varighet)/prosjektert varighet 3. Varians i kostnad (Faktisk kostnad prosjektert kostnad)/prosjektert kostnad 4. Total designtid/total programmeringstid (bør være minst 50 %) 5. Feilinnsetting og -detektering pr fase Side 15

3 Kravanalyse: Kundekrav - 20-50 ganger dyrere å reparere feil i krav - Brukere har ofte svært uklare behov - Motstridende krav fra ulike interessenter 3.1 Typer krav C-krav Kundekrav: kundens ønsker og behov formulert slik at han forstår det - introduksjon - generell beskrivelse D-krav Utviklerkrav: strukturert systemspesifikasjon 3.1.1 Sjekkpunkter for krav - uttrykt klart og tydelig - lett tilgjengelig - nummerert - koblet til en test som verifiserer - tatt høyde for i designet - tatt høyde for i koden - testet separat - testet sammen med andre - validert ved systemtest 3.1.2 Roadmap til kravanalyse 1. Bli kjent med kunden 2. Intervju kunderepresentanter a. hva ønsker kunden b. tegn, skisser, forklar slik at kunden kan fortelle om du har forstått riktig 3. Skriv C-krav 4. Inspiser C-krav (gå til punkt 2 om nødvendig, kunder vet ofte ikke i starten av et prosjekt hva de trenger og vil ha) 5. Skriv D-krav 3.1.3 IEEE 830-1993: Software Requirements Specification 1. Introduksjon 1.1 Hensikt 1.2 Omfang 1.3 Definisjoner, forkortelser 1.4 Referanser 1.5 Oversikt 2. Overordnet beskrivelse 2.1 Produktperspektiv 2.1.1 Systemgrensesnitt 2.1.2 Brukergrensesnitt 2.1.3 Maskinvaregrensesnitt 2.1.4 Programvaregrensesnitt 2.1.5 Kommunikasjonsgrensesnitt 2.1.6 Minnebegrensninger 2.1.7 Operasjoner 2.1.8 Stedstilpasningsbehov 2.2 Produktfunksjoner 2.3 Brukerkarakteristikk 2.4 Begrensninger 2.5 Forutsetninger og avhengigheter Side 16

2.6 Kravfordeling 3. Spesifikke krav (kapittel 4) 4. Støtteinformasjon (kapittel 4) 3.2 Kravbeskrivelse 3.2.1 Operasjonskonsept Kundens imaginære modell for hvordan applikasjonen vil fungere 3.2.1 Use cases Grafisk beskrivelse av interaksjon mellom aktør og applikasjon Forholdet til andre kan være sekvensiell eller ortogonal (annet synspunkt) Et use case er et sett av scenarier satt sammen for å utføre brukerens mål. Scenario Aktør Tekstlig En sekvens av steg som beskriver interaksjonen mellom bruker og system En aktør kan utføre mange use cases, men et use case kan også bli utført av mange aktører. En aktør trenger ikke være et menneske, men kan være en webbrowser/ bankautomat/printer Skrive ned hovedscenariet som en sekvens av nummererte steg.kan skrive andre scenarier og bruke dem som extensions, hvor de fungerer somvariasjoner/avvik (f.eks. bruker er ikke innlogget, be om brukernavn og passord). Use Case <navn> Aktør <navn> Trigger <Hendelse som starter use caset> Pre-betingelser <Betingelser som må være oppfylt for at use caset skal kunne utføres> Post-betingelser <Betingelser som er oppfylt når use caset avsluttes> Normal hendelsesflyt <En liste av transaksjoner som utføres i en normal gjennomgang av use caset> Variasjoner <En liste med beskrivelser av mulige transaksjonsvariasjoner til den normale flyten i use caset> Relatert informasjon Diagram Disse skal bare være skisser, ikke legg for mye arbeid i dem.viktigere å legge vekt på tekstlig use case.skal vise hvilke aktører som kan kjøre hvilke use cases.viser også hvilke use cases som inkluderer andre use cases. Include Include peker på en use case som brukes av en eller flere andre use cases. For eksempel i en bank kan man spørre om boliglån. Denne use casen inkluderer kredittvurdering for å sjekke vedkommendes økonomi. Om personen kommer tilbake senere og skal ha billån eller opprette aksjeselskap vil også kredittvurdering kjøres. Kredittvurderingen er den samme uansett, men prosessen med å søke billån, boliglån Side 17

eller opprette aksjeselskap/søke lån er forskjellig. Disse use casene inkluderer altså det som er felles for dem. Finn produkt Finner ikke produkt Finn kundekrav Finner ikke krav Legg inn test 3.2.2 Dataflytdiagrammer Beskriver overordnet dataflyt mellom sentrale prosesseringsenheter (sirkler), eksterne entiteter (firkanter) og datalager (strek over og under). 3.2.3 Tilstandsdiagrammer 3.2.4 Prototyping Raskt laget prototyp/modell er en bra måte å få reaksjoner/tilbakemeldinger frakunden på. Dermed kan man identifisere risikable deler av prosjektet, og prøve unngå disse. Å øke forståelsen kan spare mye arbeid! En prototyp står som regel bare av en enkel GUI, og lite kode under panseret. Hvis det er lav kostnad ved å lage en prototyp, og høy verdi for å lage en/mottatilbakemeldinger, er det absolutt lønnsomt. Se s. 162 for graf. Kostnadsestimater kan utbedres når c-kravene har blitt analysert. Side 18

4 Kravanalyse: Utviklerkrav Spesifikke, nummererte, testbare og sporbare og navngitte krav for applikasjonsutvikling 4.2 Typer krav 4.2.1 Roadmap 1. Velg organisering for D-kravene 2. Lag sekvensdiagrammer for use casene 3. Lag D-krav ut fra C-krav - Lag testplaner - Inspiser 4. Valider mot kunden (tilbake til punkt 3 om kunden har ting å tilføye) 5. Release 4.2.2 Typer krav 1. Funksjonelle krav 2. Ikke-funksjonelle krav 2.1 Ytelse - Hastighet - Kapasitet (trafikk) - Minnebruk 2.2 Pålitelighet og tilgjengelighet 2.3 Feilhåndtering og forutsigbarhet 2.4 Grensesnitt 2.5 Begrensninger - Nøyaktighet - Verktøy- og språkbegrensninger - Designbegrensninger - Standarder som må brukes - Maskinvareplattform 3. Inverse krav (hva kan applikasjonen ikke gjøre) 4.2.3 Egenskaper ved D-krav Sporbarhet Hvilken kode som realiserer hvilke krav Sporingsmatrise Krav Modul 1 Modul 2 Modul 3 Id funksjon funksjon funksjon id funksjon funksjon funksjon Ikke-funksjonelle krav spores vha testplan Testbarhet Validering omfatter å teste at applikasjonen/funksjonene gjør det de skal Prioritet Essential absolutt nødvendig krav Desiarable ønsket, men ikke nødvendig Optional valgfritt, om nok tid Fullstendighet Konsistens Ingen selvmotsigelser innad i kravene Side 19

5 Systemarkitektur 5.1 Systemutvikling Systemutvikling Design- og analyseprosess som dekomponerer en applikasjon til software og hardware. Systemarkitektur Kohesjon (maks) Kobling (min) Overordnet design, for eksempel oppdeling i moduler Dekomponerer for å minske kompleksitet Arkitekturmål: - Utvidelse - Endring - Enkelhet - Effektivitet intern kommunikasjon innen en modul ekstern kommunikasjon med andre moduler (reduserer med fasader) 5.2 Modeller, rammeverk og design patterns 5.2.1 Use Case Diagram Samling av use-cases som beskriver overordnet hva applikasjonen skal gjøre. Videreutvikles til sekvensdiagrammer, som er D-krav. 5.2.2 Klassediagram (UML) Objektmodeller med oversikter og klasser, deres attributter, metoder og relasjoner 5.2.3 Rammeverk En samling av klasser som er nyttige for flere applikasjoner. Java API har en del nyttige frameworks, som f.eks. awt, swing osv. Et framework må inkluderes i en annen klasse for å kunne brukes. Framework layer Ligger øverst og inneholder frameworks Generelle klasser Application layer Bruker/inkluderer framework Høy kohesjon fås her ved å gruppere ting som hører logisk sammen, og holde ting som ikke hører sammen fra hverandre. Mer om systemarkitekturer s. 260 5.2.4 Design patterns Kombinasjon av komponenter (klaser og objekter) som løser felles designproblemer Strukturelle Representerer samlinger av objekter: trær, lenkede lister Opprettelse Laging av komplekse objekter som trær og lenkede lister Funksjonelle Håndterer oppførsel Pattern Fasade Tilstand Observer Iterator Oversetter Model View Controller Pipe and filter Funksjonalitet Tilby en interface for en samling av objekter fra forskjellige klasser Forsikre om at et objekt oppfører seg etter en innehavende tilstand Gi respons fra interessante entiteter når de endres i kilden/databasen, bruker notify() og update() Måter å besøke objekter i en samling Oversetter utsagn skrevet i formell grammatikk Skiller datamodell, presentasjon og nødvendig logikk Dataflytarkitektur hvor prosesseringselementene tar inn datastrøm og produserer output strømmer ved filtrering Side 20

Klient-tjener Parallellprosessering Virtuell maskin Dataarkitektur Server betjener behov fra klient på forespørsel. Lav kobling, smalt grensesnitt, ofte i ulike tilstander Applikasjon behandles som et program skrevet i et spesialisert språk Gir enhetlig presentasjon av data - Database - Blackboard - Hypertekst 5.2.5 Valg av riktig arkitektur 1. Dekomponer til mindre moduler 2. Sammenlign med standardarkitekturer 3. Velg blant arkitekturene 4. Legg til klasser fra kravanalysen 5. Benytt et eksisterende framework/design pattern 6. Del opp i pakker (med 4-8 klasser) 7. Sjekk at det er høy kohesjon og lav kobling 8. Vurder bruk av fasade 5.2.6 Arkitektur, standarder og verktøy Notasjon UML, ER Verktøy Computer-aided software engineering (CASE) Interactive development environments (IDE) Side 21