Systemutvikling Universitetet i Oslo, Institutt for informatikk Vår 2017
Dagens plan Introduksjon Emnets oppbygging Praktisk om ukesoppgaver og obligatoriske oppgaver Gjennomgang av ukesoppgaver Registrering av grupper
Introduksjon Yulai Fjeld ydfjeld @ uio.no Mastergradsstudent Institutt for informatikk Universitetet i Oslo Tidligere underviste emner Systemutvikling (INF1050), Universitet i Oslo Software Testing (INF3121/4121), Universitetet i Oslo Systemutvikling (ADSE2200), Høgskolen i Oslo og Akershus
Emnets oppbygging Forelesninger Teoretisk innføring i nytt stoff / pensum Fellesundervisning Ukesoppgaver og obligatoriske oppgaver gjennomgås i plenum Gruppetimer Samarbeid om ukesoppager / obligatoriske oppgaver Diskusjoner, spørsmål og hjelp
Praktisk om oppgaver Ukesoppgaver Har oftere et løsningsforslag fremfor en fasit Anbefales sterkt å løse disse fortløpende Obligatoriske oppgaver løses i grupper Gruppeinndeling a. Registrer deg alene og få tildelt gruppe b. Registrer hele gruppen sammen
Gjennomgang av ukesoppgaver Ukens tema : Aspekter ved systemutvikling
Oppgave 1 Hva skal vi lære i dette kurset?
Oppgave 1: Løsningsforslag Hva skal vi lære i dette kurset? - Kjenne til de viktigste trekkene ved ulike systemutviklingsprosesser for å lette overgangen til arbeidslivet - Innføring i verktøy for å kommunisere ulike aspekter ved et abstrakt system, både til kunder og til medarbeidere - Lære hvordan man organiserer prosjekter - Lære grunnleggende UML-modellering
Oppgave 2 Hvilke fundamentale aktiviteter utføres i systemutvikling utover programmering?
Oppgave 2: Løsningsforslag Hvilke fundamentale aktiviteter utføres i systemutvikling utover programmering? Programmering er viktig, men - Problemanalyse - Kravarbeid - Utforming - Testing - Validering - Innføring - Vedlikehold er andre sentrale aktiviteter
Oppgave 3 Hvilke aspekter ved systemutvikling tilsier at det er en ingeniørdisiplin?
Oppgave 3: Løsningsforslag (I) Hvilke aspekter ved systemutvikling tilsier at det er en ingeniørdisiplin? Systemutvikling baseres på ingeniørprinsipper: Evidensbasert Baserer seg på observasjon Empirisk Baserer seg på erfaring
Oppgave 3: Løsningsforslag (II) Hvilke aspekter ved systemutvikling tilsier at det er en ingeniørdisiplin? Planlegging og forutsigbarhet Motsetning: Ta den tiden som trengs Oppdeling og strukturering av problemer Motsetning: Prøving og feiling Modularitet og gjenbruk Motsetning: Lag alt fra bunnen hver gang
Oppgave 3: Løsningsforslag (III) Hvilke aspekter ved systemutvikling tilsier at det er en ingeniørdisiplin? Abstraksjon og modellering Motsetning: Det er kun koden som utgjør systemet Systematisk kvalitetssikring Motsetning: Gjør selv det du synes er best
Oppgave 4 Hva er en systemutviklingsprosess?
Oppgave 4: Løsningsforslag Hva er en systemutviklingsprosess? De aktivitetene som utføres for å utvikle et IT-system Spesifisering av krav Design av systemet Implementering av kode Validering Gjør systemet det kunden ønsker? Endringer I forhold til nye / endrede krav hos kunden Slik at vi kan gå fra konsept (idé) til produkt A Å
Oppgave 5 Hvorfor er det viktig å ha en god systemutviklingsprosess?
Oppgave 5: Løsningsforslag Hvorfor er det viktig å ha en god systemutviklingsprosess? Systemutviklingsprosessen påvirker resultatet - Prosjektstyring - Arbeidsmiljø - Type og mengde kommunikasjon utviklere har med kunder / hverandre - Estimering av tidsbruk - Hvor godt man tar høyde for endringer Kompetanse er nytteløst om dette ikke utveksles
Oppgave 6 Det er ofte stor prisvariasjon i anbud på IT-prosjekter sammenlignet med andre bransjer, slik som bygg- og anleggsbransjen. Hva kan denne prisvariasjonen skyldes?
Oppgave 6: Løsningsforslag (I) Det er ofte stor prisvariasjon i anbud på IT-prosjekter sammenlignet med andre bransjer, slik som bygg- og anleggsbransjen. Hva kan denne prisvariasjonen skyldes? Utvikling av IT-systemer Ny disiplin Manglende statistikk for estimering av ressursbruk Estimering kan være svært vanskelig! Usikkerhet Hva skal lages? Kunden må forstå hva de vil ha Utviklere må forstå hva de skal lage
Oppgave 6: Løsningsforslag (II) Det er ofte stor prisvariasjon i anbud på IT-prosjekter sammenlignet med andre bransjer, slik som bygg- og anleggsbransjen. Hva kan denne prisvariasjonen skyldes? Kvalitet Ulike oppfatninger av hva begrepet innebærer Avhengig av kontekst Påvirkes av personlige oppfatninger Ulike utviklingsprosesser / måter å jobbe på Stor variasjon i ressurser og kostnader
Oppgave 7(a) Drøft i hvilken grad man som systemutvikler har ansvar for anvendelsen av systemet man er med på å utvikle.
Oppgave 7(a): Diskusjon Drøft i hvilken grad man som systemutvikler har ansvar for anvendelsen av systemet man er med på å utvikle. Systemutvikling Ikke en isolert disiplin Konsekvenser rundt bruken av et gitt system Etikk Har vi et ansvar? Hvor lang strekker ansvaret seg? Eksempel: 3D-skrivere, Airbnb, Uber Gråsoner og ny teknologi
Oppgave 7(b) Finnes det noen grenser for hvilke typer anvendelser av IT-systemer som du mener man bør kunne reservere seg mot å bidra til å utvikle?
Oppgave 7(b): Diskusjon Finnes det noen grenser for hvilke typer anvendelser av IT-systemer som du mener man bør kunne reservere seg mot å bidra til å utvikle? Våpensystemer Eksempel: Våpenbærende droner Overvåkning: Privatliv eller sikkerhet? Eksempel: NSA/PRISM, fullkroppsscannere på flyplasser Bioteknologi, genteknologi og modifisering Eksempel: Design av supermennesket
Til slutt Husk å registrere deg på en gruppe! 2-4 studenter per gruppe Alternativ 1 Registrer deg som enkeltperson og få tildelt gruppe Alternativ 2 Registrer hele gruppen
Spørsmål? Kontakt Yngve Lindsjørn ynglin @ ifi.uio.no Henvendelser: Eksamen, arbeidskrav, pensum, jobbe alene Yulai Fjeld ydfjeld @ uio.no Henvendelser: Oppgaver Øvrige gruppelærere Henvendelser: Gruppeinndeling, spørsmål, praktisk
Takk til Foilene er basert på Tidligere presentasjoner laget av Emilie Hallgren og Kristin Brænden Eksisterende forelesningsnotater av Dag Sjøberg og Yngve Lindsjørn Sommerville, I. (2010). Software Engineering (9th Edition). Pearson.
Takk for meg Neste uke : Prosessmodeller og smidig programvareutvikling