Systemutvikling (Software Engineering) Professor Alf Inge Wang

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

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

Tom Røise 9. Februar 2010

Systemutviklingsmetoder

GJENNOMGANG UKESOPPGAVER 9 TESTING

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Livsløpstesting av IT-systemer

Oppsummering. Thomas Lohne Aanes Thomas Amble

Akseptansetesten. Siste sjanse for godkjenning Etter Hans Schaefer

Kravhåndtering. INF1050: Gjennomgang, uke 03

Kap. 10 Systemutvikling System Engineering

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

GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG

Tom Røise 18. Februar 2009

Inf1055 Modul B 26 april 2017:

GJENNOMGANG UKESOPPGAVER 3 KRAVHÅNDTERING

UKE 9 Prosesser og prosessmodeller inkludert smidige metoder. Gruppetime INF1055

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

Tom Røise 24.Mars 2009

Konfigurasjonsstyring

Distributed object architecture

CORBA Component Model (CCM)

Model Driven Architecture (MDA) Interpretasjon og kritikk

Presentasjon 1, Requirement engineering process

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

AlgDat 12. Forelesning 2. Gunnar Misund

Programvareutvikling (store systemer)

AlgDat 10. Forelesning 2. Gunnar Misund

Forelesning IMT Mars 2011

Prosessmodeller og smidig programvareutvikling. INF1050: Gjennomgang, uke 02

UKE 10 Kravhåndtering. Gruppetime INF1055

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

Programvareprosesser Software Process

Digitalisering av krav - kravhåndtering

Løsningsforslag: Oblig 1. INF1050: Gjennomgang, uke 12

Systemarkitektur. INF1050: Gjennomgang, uke 07

Prøveeksamen INF1050: Gjennomgang, uke 15

DRI2001 Offentlige nettsteder. Litt om systemutvikling Torsdag 24 aug Arild Jansen, AFIN, UiO

Grunnleggende testteori

GJENNOMGANG OBLIGATORISK OPPGAVE 1

DRI 2001 Systemutviklingsarbeidet et overblikk Forelesning

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

DRI2001 forelesning

Tom Røise IMT 2243 : Systemutvikling 1. Forelesning IMT Mars Designfasen i SU-prosjekter : Generelle steg i Designprosessen

Grunnleggende testteori

Kontrakter. INF1050: Gjennomgang, uke 12

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling

UNIVERSITETET I OSLO

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling

Lynkurs 10. Januar 2012

Grunnleggende testteori. Etter Hans Schaefer

Kravspesifiseringsprosessen

DRI 2001 Systemutviklingsarbeidet et overblikk Forelesning

Programvare arkitekturer

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

Testing av programvare

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

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

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

Løsningsforslag Sluttprøve 2015

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

UKE 14 Versjonshåndtering og testing. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

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

UNIVERSITETET I OSLO

Ulike typer prosessmodeller. Systemutvikling. Utviklingsmodeller. Prosessmodell - faser

Jernbaneverkets erfaringer med implementering av RAMS

Kvalitet og programvare. Når bare det beste er godt nok. Produktet prosessen eller begge deler?

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

Team2 Requirements & Design Document Værsystem

Software Requirements and Design (SRD) 1 Generelt om dokumenter

Forside. Eksamen i IN1030 for Våren Ingen hjelpemidler tillatt.

Kravspesifikasjon MetaView

Hovedprosjekt i Informasjonsteknologi 2016 Høgskolen i Oslo og Akershus. Forprosjektrapport. Bravo Booking App

Prosessmodeller og smidig programvareutvikling

SCRUM Smidig prosjektledelse og utvikling. 10 september 2009 JOSÉ MANUEL REDONDO LOPERA AVDELINGSLEDER PROSJEKT OG RESSURSANSVARLIG

Arkitektur. Kirsten Ribu Høgskolen i Oslo

Mellom barken og veden Smidig testing i krevende terreng TTC 2015

Oppgave 1: Multiple choice (20 %)

A Study of Industrial, Component-Based Development, Ericsson

Oppgave 1. Finn krav. Finn krav. Finn test

Bolk om Kravspesifisering

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

INF 5120 Obligatorisk oppgave Nr 2

Validering og verifisering. Kirsten Ribu

Slides made by Sommerville adapted by Letizia Jaccheri, all the slides are part of the syllabus Topics covered

UKE 16 Kontrakter. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

Saia PG Kjære kunde,

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Innholdsfortegnelse: Resymé: Denne leksjon gir en kort og enkelt oversikt over hvilke oppgaver som skal utføres i design- og programmeringsfasen.

FOTO: FORM TIL FJELLS / TOM GUSTAVSEN CUSTOM R TRE KAPABILITETER FOR MASSEPRODUSERT SKREDDERSØM

Forelesning IMT mars 2011

Forslag til ny læreplan for informatikk studieretningsfag

Neste generasjon ERP-prosjekter

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

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Kravspesifikasjon Digital distribusjon av sakspapirer

Obligatorisk oppgave 3. INF1050: Gjennomgang, uke 16

Transkript:

1 Systemutvikling (Software Engineering) Professor Alf Inge Wang

2 Undervisningsmål og henvisning Målet med timen er: Få kunnskap om hva systemutvikling er Forstå hva en utviklingsprosess består av Få kunnskap om ulike utviklingsprosessmodeller Henvisning: Theory Book IT Grunnkurs, Software Engineering, side 241-276

3 pages 243-245 SoftwARE EnGINEERING

4 Motivasjon for systemutvikling Nesten alt vi omgir oss med i samfunnet er avhengig av programvare og programvaresystemer: Økonomi, handel, transport, utdanning, underholdning, statlige tjenester, kommunikasjon, helsetjenester, For at samfunnet skal fungere, må programvaren fungere! Systemutvikling (software engineering) omhandler alle teorier, metoder og verktøy for profesjonell utvikling av programvare fra start til slutt. Sikre systemer som fungerer, som kan utvikles raskere, etc

5 Suksess og fiasko i systemutvikling Norge, 1990: Rikstrygdeverkets informasjonssystem TRESS-90 ble ikke ferdig innen tidsfristen. Fem å senere etter flere utsettelser blir prosjektet stoppet uten at fungerende system levert. Denver, 1994: Programvare til styring av bagasjetransport utsettes 12 måneder. Fransk Guyana, 1996: Kommunikasjonssatellitten Adriane-5 stryter på grunn av feil i programvare. År-2000 problemet. Massive problemer Planeten Mars, 2000: NASA mister Mars Orbiter som skulle gå i bane rundt Mars på grunn av programmeringsfeil.

6 Viktige attributter for god programvare Vedlikeholdbarhet: Programvare skal skrives slik at systemet kan endres for å møte kundenes behov. Pålitelighet og sikkerhet: Pålitelighet til et system inkluderer sikkerhet, tilgjengelighet og safety. Effektivitet: Et system skal ikke sløse bort systemressurser som minne, diskplass, nettverk eller CPU. Akseptering: Systemet må kunne aksepteres av den type brukere det er designet for ved å være forståelig, brukervennlig, og kompatibelt.

7 sidene 247-274 SOFTWARE PROCESS

8 Programvareutviklingsprosessen Et strukturert sett av aktiviteter som trengs for å utvikle et programvaresystem En beskrivelse av en programvareutviklingsprosess inkluderer: Aktiviteter: Det som skal utføres som en del av utviklingen Produkter: Det som produseres som en del av utviklingen Roller: Reflekterer ansvar ulike personer i prosessen har Pre- og post-tilstand: Forutsetninger for for eksempel å sette i gang med en aktivitet

9 Fire fundamentale aktiviteter i en systemutviklingsprosess Programvarespesifikasjon, hvor kundene og ingeniørene definerer programvaren som skal produseres og operasjonelle begrensninger. Programvareutvikling, der designes og programmeres programvaren. Programvarevalidering, der sjekker man at programvaren møter kundenes krav. Programvareevolusjon, der programvaren endres for å reflektere endring i kunde- og markedskrav.

10 Plandrevet og smidige (agile) prosesser Plandrevet prosesser: Alle aktivitetene er planlagt på forhånd og framdrift blir målt mot denne planen. Smidige prosesser: Inkrementell planlegging som gjør det enklere å tilpasse prosess til endring av krav fra kunde I praksis vil utviklingsprosesser være en kombinasjon av plandrevet og smidig. Finnes ikke noe fasit på riktig og feil for programvareutviklingsprosesser.

11 Programvareprosessmodeller (software process models) Vannfallsmodellen: Plandrevet modell: Deler opp prosessen i distinkte og separate faser av spesifikasjon og utvikling. Inkrementell utvikling: Spesifikasjon, utvikling og validering er sammenflettet. Kan være både plandrevet og smidig. Gjenbruksorientert systemutvikling: Systemet blir satt sammen av eksisterende komponenter. Kan være både plandrevet og smidig. I praksis utvikles de fleste store systemer i en prosess som inkludere elementer fra alle tre ovenfor.

12 Vannfallsmodellen Kravsspesifikasjon System- og programvaredesign Implementasjon og enhetstesting Integrasjon og systemtesting Operasjon og vedlikehold

13 Vannfallsmodellen Kravspesifikasjon (Hva): Spesifisere hva kunden ønsker i form av funksjonelle, ikke-funksjonelle og kvalitetskrav. System- og programvaredesign (Hvordan): Designe programvarearkitekturen og hvordan systemet skal implementeres (struktur, algoritmer, databaser) Implementasjon og enhetstesting: Skrive og teste kode. Integrasjon og systemtesting: Teste integrering av ulike deler av systemet og systemet i sin helhet. Operasjon og vedlikehold: Installere og drifte system hos kunne. Gjøre nødvendige tilpasninger og endringer.

14 Egenskaper til vannfallsmodellen Deler inn prosessen i veldefinerte faser Enklere prosjektledelse (veldefinert prosess) Ulempe: Vanskelig å håndtere endringer underveis. Må vanligvis avslutte en fase før fortsette til neste. Lite fleksibel oppdel av prosjekt gjør det vanskelig å håndtere endring av krav fra kunde. Egner seg til prosjekter der krav er veldefinerte på forhånd Få forretningssystemer har stabile krav Vannfallsmodellen blir mest brukt til store prosjekter som utvikles på flere plasser (distribuert)

15 Inkrementell utvikling Samtidige aktiviteter Spesifisering Produkter Første versjon Beskrivelse av utkast Utvikling Midlertidige Intermediate versjoner Intermediate versions versions Validering Endelig versjon Motivasjon for inkrementell utvikling: + Innfri øyeblikkelige krav fra kunder + Inkrementell spesifisering av systemet + Systemet reflekterer en gradvis bedre forståelse av bruker

16 Fordeler med inkrementell utvikling Reduserer kostnader ved endring av brukerkrav. Mindre omarbeiding av dokumentasjon enn vannfallsmodellen. Enklere å få tilbakemelding fra kunder på utvikling som er gjort underveis. Kundene kan kommentere på demonstrasjoner av systemet og hele tiden se hvor mye som er implementert. Raskere levering og kortere tid til å ta i bruk fungerende deler av systemet for kunden. Kunden kan bruke og få verdi fra systemet tidligere enn vannfall

17 Ulemper med inkrementell utvikling Prosessen er ikke synlig Prosjektledere må styre leveranser for å måle framdrift. Hvis systemet utvikles raskt, er det ikke kost-effektivt å produsere dokumenter som reflekterer hver versjon av systemet. Strukturen i systemet (arkitekturen) har en tendens til å forringes for hver gang et inkrement blir lagt til. Hvis ikke tid og penger brukes på refactoring for å forbedre programvaren, vil det lede til ødelegge strukturen i programvaren. Dette kan igjen føre til at det blir vanskelig og dyrt å legge til funksjonalitet eller gjøre endringer.

18 Gjenbruksbasert systemutvikling Kravsspesifikasjon Komponent analyse Kravmodifikasjon System design med gjenbruk Utvikling og integrasjon Systemvalidering

19 Egne steg for gjenbruk Komponentanalyse: Undersøke hvilke komponenter som kan brukes og fyller bruker- og systemkrav. Kravmodifikasjon: Endring av krav basert på de komponenter som skal brukes. Systemdesign med gjenbruk: Designe systemet slik at det kan integreres med eksisterende komponenter. Utvikling og integrasjon: Mye av kodingen vil gå ut på å sy sammen systemet med ulike komponenter.

20 Gjenbruksbasert systemutvikling Basert på systematisk gjenbruk hvor systemer er integrert fra eksisterende komponenter eller COTS. Gjenbruk er nå standardtilnæring for bygging av de fleste typer forretningssystemer. Typer av komponenter: Web-tjenester (web-services) utviklet i følge standarder Samling av objekter utviklet som en pakke til å integreres i komponentrammeverk som.net eller J2EE Frittstående programvaresystemer (COTS) som konfigureres til bruk i spesifikke programvareomgivelser

21 Aktiviteter i en systemutviklingsprosess Programvarespesifikasjon Programvareutvikling Programvarevalidering Programvareevolusjon

22 Programvarespesifikasjon Prosessen å etablere tjenestene som er påkrevd og begrensninger på systemets operasjon og utvikling. Requirement engineering prosess: Gjennomførbarhetsstudie (feasibility study) Er det teknisk og økonomisk forsvarlig å bygge systemet? Kravinnhenting og analyse Hvilke krav og forventninger har systemets interessehavere? Kravspesifisering Definere/Dokumentere kravene i detalj Validering av krav Sjekke validiteten (gyldigheten) til kravene

23 Requirement engineering prosessen Feasibility study Requirements elicitation and analysis Requirements specification Feasibility report Requirements validation System models User and system requirements Requirements document

24 Aktiviteter i en systemutviklingsprosess Programvarespesifikasjon Programvareutvikling Programvarevalidering Programvareevolusjon

25 Programvareutvikling: Programvaredesign og -implementasjon Prosessen å konvertere systemspesifikasjon til et kjørbart system Programvare design Designe programvarestrukturen som realiserer spesifikasjonen Implementasjon Oversette strukturen til en kjørbart program Aktivitetene design og implementasjon er tett relaterte og kan også utføres om hverandre

26 En modell for designprosessen Design inputs Platform information Requirements specification Data description Design activities Architectural design Interface design Component design Database design Design outputs System architecture Database specification Interface specification Component specification

27 Design aktiviteter Arkitekturdesign: Hovedstrukturen til systemet bestående av komponenter, deres eksterne attributter og relasjonene mellom komponentene. System-interface design: Definerer grensesnitt mellom systemkomponenter. Komponentdesign: Designer hvordan hver systemkomponent skal fungere. Databasedesign: Designe hvordan datastrukturen for systemet skal være og hvordan det skal representeres i en database.

28 Aktiviteter i en systemutviklingsprosess Programvarespesifikasjon Programvareutvikling Programvarevalidering Programvareevolusjon

29 Programvarevalidering Verifikasjon og validering (V&V) skal vise at et system stemmer med spesifikasjonen og kundekrav Involverer sjekking- og gjennomsynsprosesser (reviews) og systemtesting. Systemtesting involverer virkelige brukertester av systemet nedarvet fra spesifikasjon med virkelig data. Testing er den mest vanlige V & V aktiviteten.

30 Faser i testing Component testing System testing Acceptance testing

31 Testfaser Utvikling- og komponenttesting Individuelle komponenter testes uavhengig Komponenter kan være funksjoner, objekter eller grupper av disse. Systemtesting Testing av systemet i sin helhet. Testing av framtidige egenskaper er spesielt viktig (stresstesting). Akseptansetesting Testing med kundedata for å sjekke om systemet møter kundenes behov.

32 Testfaser i en plandrevet programvareprosess Requirements specification System specification System design Detailed design Acceptance test plan System integration test plan Sub-system integration test plan Module and unit code and test Service Acceptance test System integration test Sub-system integration test

33 Aktiviteter i en systemutviklingsprosess Programvarespesifikasjon Programvareutvikling Programvarevalidering Programvareevolusjon

34 Programvareevolusjon Programvare er per def. fleksibel og kan endres. Programvaren må endres ettersom kravene endres pga. av endringer i omgivelsene (utføringsmiljøet). Skillet mellom utvikling og vedlikehold (evolusjon) blir mer og mer irrelevant ettersom færre og færre systemer blir utviklet fra bunnen av (helt nye).

35 Programvareevolution Define system requirements Assess existing systems Propose system changes Modify systems Existing systems New system

36 Oppsummering Systemutvikling omhandler alle teorier, metoder og verktøy for profesjonell utvikling av programvare fra start til slutt. Skiller mellom planmessige og smidige utviklingsprosesser Aktiviteter i programvareutvikling: Programvarespesifikasjon, programvareutvikling, programvarevalidering, og programvareevolusjon. Forskjell på kravanalyse og design: Kravanalyse ser på HVA system skal gjøre og levere Design ser på HVORDAN system skal oppfylle kravene

37 Spill igjennom quizzen på Kahoot! https://play.kahoot.it/#/k/d85d54ba-e6ee-4e04-bfe3-aa3b3afb6bbf Spill mot andre: https://play.kahoot.it/#/?quizid=d85d54ba-e6ee-4e04-bfe3- aa3b3afb6bbf&gamemode=ghost&starttime=1447085936006