Programvaruutveckling i grupp Projekt EDA260 (D2, C4, E4, F4, I4, Pi4): F1Introduktion. Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Relevanta dokument
Programvaruutveckling i grupp Projekt EDAF45 (D2, C4, E4, F4, I4, Pi4) - 7,5HP F1Introduktion. Boris Magnusson, Ulf Asklund Datavetenskap, LTH

F9 del B Organisatoriskt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH

Agil projektmetodik Varför och vad är det?

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Introduktionsmöte Innehåll

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

Kurs-PM fo r HI1028, Projektkurs inom programvaruutveckling, VT16

EDAA01 Programmeringsteknik - fördjupningskurs

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

Objektorienterad programmering

F6 Arkitektur, Planering

Datavetenskapligt program, 180 högskolepoäng

F6 Arkitektur, Planering. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Kursprogram, ETSF20 Programvaruutveckling för stora projekt (PUSP), 7,5 hp

XP-projekt: En fördjupning

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

Idag. EDAA35: Utvärdering av programvarusystem. Mål. Innehåll. Kursmoment. Lärare

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

KURSPROGRAM Kommunal och industriell avloppsvattenrening

Projekthandledning (PH) Grundsystemet (GS) Utvecklingsmiljön (UM)

Design och konstruktion av grafiska gränssnitt

Agil programutveckling

KURSPROGRAM Kommunal och industriell avloppsvattenrening

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.

Objektorienterad Systemutveckling Period 3

KURSPROGRAM VATTENRENINGSTEKNIK

Projektarbete DAVC20

Kursprogram, ETS032 Programvaruutveckling för stora system (PUSS), 7,5 hp

Proj-Iteration1. Arkitektur alt. 1

Utbildningsplan för. International Software Engineering, 180 högskolepoäng

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Programmeringsteknik II

Proj-Iteration 5B. Plan för återstående iterationer

Välkomna till KMM! KMM. KMM - lärandemål Efter fullgjord kurs ska ni bland annat kunna:

Projektplan. LiTH Segmentering av MR-bilder med ITK Anders Eklund. Version 1.0. Status. Bilder och grafik projektkurs, CDIO MCIV LIPs

Kursprogram: ETSN05 Programvaruutveckling för stora system, 2014 (7,5 hp)

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

men borde vi inte också testa kraven?

Föreläsning 1: Introduktion till kursen

Kurs-PM för Programmeringsdelen på FK4025/FK4026, HT16

SKOLFS. beslutade den XXX 2017.

Individuell inlämningsuppgift TEK210

Hemtentamen: ETSA01 Ingenjörsprocessen för programvaruutveckling metodik

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Individuell inlämningsuppgift del 1: Kognitiv design.

Föreläsning 1: Introduktion till kursen

Filhanterare med AngularJS

Projektkaos. Chaos-rapporten. 34% av projekten avslutades i tid och enligt budget % misslyckades!

Dokumentation och presentation av ert arbete. Kursens mål. Lärare Projektmedlemmar. Studenter Extern personal. Projektfaser. Projektroller.

Föreläsning 1: Introduktion till kursen

LIPS 1, 2002 Lätt Interaktiv Projektstyrningsmodell

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 13

CEQ-kommentarer Kurser år 2. CEQ-kommentarer Kurser år 2

Design och konstruktion av grafiska gränssnitt

Föreläsning 1. Kursinformation. Utvecklingsprocessen. Kravspecifikation. Gruppindelning.

Kursöversikt Certifierad Mjukvarutestare

1DV405 - Databasteknik. Kursintroduktion. Så här är kursen planerad.

Start v. Programspråk. Poäng. 03 Institution Institutionen för datavetenskap 7.5. Antal registrerade (män/kvinnor) 59 (54/5)

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

F2 XP Extremprogrammering översikt

Hemtentamen: ETSA01 Ingenjörsprocessen för programvaruutveckling metodik Jonas Wisbrant

FMS032: MATEMATISK STATISTIK AK FÖR V OCH L KURSPROGRAM HT 2015

1DV405 - Databasteknik. Kursintroduktion. Så här är kursen planerad.

TNSL05, Optimering, Modellering och Planering 6 hp, HT2-2010

F4 Testning och Parprogrammering i XP. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Tekniker för storskalig parsning

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

Agenda. Föreläsning 6: Utvärdering och om tentamen. Kursinformation

Kurser och seminarier från AddQ Consulting

Agenda. Kursinformation. Manual för systemstart... Föreläsning 6: Utvärdering och om tentamen

Socialpsykologiska teorier, 7,5 hp

Diagnos och design av Verksamhet och IT, 7, 5 HP. Föreläsning 1 Sofie Pilemalm

Imperativ programmering i ADA

Information om examensarbete 15 hp (10 veckor) Examensarbetsprocessen ht-15

Kandidatarbete på Industriell ekonomi

F4 Testning och Parprogrammering i XP EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH

Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt

KURSPROGRAM MODELLERING AV DYNAMISKA SYSTEM, 5hp, period 4

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod

Grundkurs i programmering - intro

Statistik och testmetodik

Användarcentrerad systemdesign

Kritik av Extrem Programmering

Välkomna till DIT012 IPGO

Formulär för kursansvarig. Kursanalysen utförs under kursens gång. Nomenklatur: F föreläsning, Ö övning, R räknestuga, L laboration, S seminarium)

Programmeringsstil 18/3-2002

Stockholms Universitet Sociologiska Institutionen. Delkursplan till specialkursen Samhällsproblem (6 hp) Sociologi I&II VT17 (4/4 5/5 2017)

TANA81: Matematikprojekt

Inför examensarbetet, 15 hp. Examensarbetsprocessen vt-17

Kursprogram för Elektronik E, ESS010, 2009/20010

Tilldelas efter registrering

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Kursmanual för SG1102 Mekanik, mindre kurs (6 hp)

Agenda. Projektbeskrivning avsnitt 8: Acceptanstest - MS4 i korthet. Kursinformation

INGENJÖRSPROCESSEN METODIK ETSA01 VT13 JONAS WISBRANT

Programinformation för International Software Engineering, 180 högskolepoäng

Transkript:

Programvaruutveckling i grupp Projekt EDA260 (D2, C4, E4, F4, I4, Pi4): F1Introduktion Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Programvaruutveckling i grupp Produkt skall utvecklas och levereras till kund - Hög kvalitet på programvaran - Programvaran skall kunna vidareutvecklas efter kundens önskemål Metod - Extreme Programming (XP)

Extreme Programming (XP) Ny metod (K. Beck, 2001) Populär bland många företag Agile ( Lättrörlig, högiterativ utveckling) Konkreta deltekniker för hela utvecklingsprocessen Passar mindre projekt (cirka 10 personer)

Kursens mål Praktisk erfarenhet av programutveckling i grupp Inblick i hela utvecklingsprocessen - krav och validering - planering och tidsuppskattning - testning - design och utveckling - leverans och versionshantering Exempel på en konkret metod (XP) Fördjupning inom tekniker för OO programutveckling - refaktoriserng, enkel design,...

Agenda Administration - Web-sida, litteratur, schema,... Översikt - Programutvecklingsprocessen - Extrem Programmering

Websida http://cs.lth.se/eda260 OH-bilder läggs upp efter hand

Obs! Strikta förkunskapskrav Godkänd tentamen på en av: - Programmeringsteknik fördjupningskurs - OMD Godkända obligatoriska moment på OMD lp 1.

Kurslitteratur Kursbok chromatic: Extreme Programming Pocket Guide O Reilly, 2003, (Handbok i XP) - 4,99$ som ebook, www.oreilly.com (se hemsidan) - Eller beställ själv på adlibris, bokus,... Kursmaterial Häfte med extra artiklar (hämta hos kurssekreterare Lena Ohlsson) Labbhandledningar (kommer efter hand på kurswebben)

Kursens form Teoridel (lp 2) - 7 föreläsningar - 4 laborationer - kontrollskrivning Projektdel (lp 3) - projektstartmöte - 6 iterationer programutveckling - redovisning

Schemat lp 2 Läsvecka Må 8-10 E:B v4 24/11-28/11 Ti 8-10 MA:MA04 F1: Introduktion F2: Översikt över XP On 13-15, On 15-17, eller To 8-10 L1: Extreme Hour Fr 13-15 MA:MA03 v5 1/12-5/12 F3 Konfigurationshantering L2: Versionshantering v6 8/12-12/12 F4: Testning och Parprogrammering L3 Test First F5: Refaktorisering enkel design och Metafor v7 15/12-19/12 F6: Planering Ariktektur L4: Refaktorisering Kontrollskrivning 13:15-14:00 MA:MA09 F7: Projektintro 14:15-15:00 MA:MA03 Anmälan till labbar via kurshemsidan senast Idag kl 21:00! Föreläsningar i olika salar, se schemat (Kontrollskrivningen i MA09)

Laborationerna lp 2 Laborationerna - Kort labbförhör i början av varje lab. Godkänt är krav för att få fullfölja labben. - Obligatorisk närvaro (många moment är gruppövningar som ej kan göras individuellt) - Fullgjorda laborationer krav för att få göra projektet. Vid sjukdom, maila omedelbart Ulf Asklund: Ulf.Asklund@cs.lth.se (eller ring kursadmin. Lena Ohlsson 046-222 80 40 och be henne maila)

Kontrollskrivning Kontrollskrivning: Fredag 19 december kl 13:15-14:00, MA:MA09-HELA Omkontrollskrivning: Onsdag 7 januari, kl 14:15-15:00, E:3308 Godkänd kontrollskrivning krav för att få göra projektet.

Schema lp 3 - Prel Vecka Må 8-17 Långlabbar On 10-12 eller On 13-15 Planeringsmöte Fre 10-12 Föreläsning v1 (datum) Projektstart 8-10 eller 10-12 P1 v2 LL1 P2 v3 LL2 P3 v4 LL3 P4 v5 LL4 P5 v6 LL5 P6 v7 LL6 Redovisning Avslutning

Projektet Varje team: 8-10 utvecklare (EDA260) och 1-2 coacher (EDA270) Projektstartmöte - 2 timmars projektstartmöte (oblig. närvaro) XP metodik i 6 iterationer - 2 timmars planeringsmöte (oblig. närvaro) - 4 timmars individuellt arbete (experiment, litteraturstudier) - 8 timmars långlaboration med programutveckling (oblig. närvaro) Avslutande projektredovisning - 2 timmars redovisning (oblig. närvaro) - 2 timmars avslutning (oblig. närvaro)

Personal Boris Magnusson föreläsare, kursansvarig, superkund Ulf Asklund kursansvarig, labb-ansvarig Lars Bendix gästföreläsare (CM), supercoach Labbhandledare och Kunder: Patrik Persson, Peter Exner, Mehmet Ali Arslan, Björn Johnsson, Mattias Nordahl, m. fl.

Kursombud!

Examination Godkänt / Icke godkänt För godkänt krävs - fullgjorda laborationer i ht2 - godkänt på kontrollskrivningen i ht2 - aktivt deltagande i möten och långlaborationer under vt1 - godkänd projektredovisning och avslutning under vt1

Relaterade kurser, EDA260 Programmeringsteknik Metodik Kompilatorteknik Datorgrafik & Realtidsgrafik Computational Linguistics Inbyggda system Constraint-programming Funktionella språk Databaser Konfigurationshantering Coaching av programvaruteam Programvarutestning Kravhantering Programvaruutveckling för Stora System Realtidsprogrammering OMD Programmering Programvaruutveckling i grupp Metodik för Programvaru- utveckling

Programmeringskurserna hittills Väsentligen ensam programmerare Små uppgifter Givna förutsättningar (av oss) Ingen som vill ha lösningarna, egentligen

Verkligheten Större uppgifter Många utvecklare Kunder som ställer (otydliga) krav Systemet förändras, levereras, modifieras, många gånger I denna kurs skall vi närma oss denna situation

Roller i programutveckling (förenklat) Kund - betalar utvecklingen - formulerar kraven Användare - använder programmet - ger feedback Utvecklare - realiserar programmet

Exempel på typisk rollfördelning Vem är kund, användare, utvecklare? - Biljettbokningssystem - Ordbehandlingssystem - Adressboken i en mobiltelefon - Spelprogram - Öppen källkod -...

Exempel på kunder extern beställare - t.ex. annat företag, vården, marknadsavdelningen på vårt företag - om det är en generisk produkt vi tar fram intern beställare (annan del av vårt företag) - t.ex. om vår produkt är en del i en större utvecklarna själva - i många open source projekt (utvecklarna bidrar frivilligt)

Olika typer av krav funktionella krav - beskriver vad systemet skall göra - ett funktionskrav svarar ofta mot en viss del av koden - kan ofta implementeras som en enhet icke-funktionella krav (kvalitetsattribut) - beskriver egenskaper och begränsningar hos systemet - t.ex. krav på svarstider, minnesstorlek, etc. - påverkar ofta den övergripande designen (arkitekturen) - behöver ofta beaktas vid implementationen av de funktionella kraven

Exempel på krav (adressbok i mobiltelefon) funktionella krav - Man skall kunna lägga till och ta bort namn & telnr - Man skall kunna söka upp ett namn och ringa - Ett nummer man precis har ringt skall kunna läggas in i adressboken utan att man behöver knappa in numret igen -... icke-funktionella krav (kvalitetsattribut) - Programkoden måste vara mycket kompakt (helst mindre än 50 KB) - Svarstiderna vid interaktion får inte vara märkbara(<0,1sek) - Alla kommandon skall vara enhetligt utformade och lätta att lära sig -...

När formuleras kraven? Bra att försöka hitta så många viktiga krav som möjligt från början. Men...... oftast behöver kraven uppdateras under projektets gång

Varför uppdateras kraven? I praktiken vet oftast kunden inte exakt vad han/hon vill ha från början, ändrar sig efter hand. Efter release av systemet får kunden mer insikt i problemen och möjligheterna med systemet. Kunden är inte alltid densamma som användaren som har andra behov. Omvärlden förändras. T.ex., konkurrenten kommer ut med en ny tjänst som vi måste få in i vår produkt också.

Hur formuleras kraven? Notation? - Formell matematisk notation? (Sällan tillämpligt) - Naturligt språk? - Scenarier för typiska användningsfall? -... Hur detaljerat? - Fullständig precis specifikation? (Sällan möjligt) -... - Korta rubriker, detaljerna i muntlig dialog? (XP stories )

Utvärdering av systemet? Byggde vi systemet rätt? (Verifiering) - Dvs fungerar systemet enligt (vår tolkning av) kravspecen? - Är systemet (tillräckligt) felfritt? - Är systemet (tillräckligt) väldesignat? (så att vi kan modifiera det) - Vi (utvecklare) utvärderar systemet - kodgranskning - testning Byggde vi rätt system? (Validering) - Dvs byggde vi det som kunden förväntade sig? - Är användarna nöjda med systemet? - Kund och användare utvärderar systemet (testkörningar)

Kodgranskning (inspection, code review) Någon läser kod som någon annan har skrivit dålig design kan upptäckas buggar kan upptäckas effektivt sätt att öka kodkvaliteten - sprider kunskap om systemet till flera personer Granskningar i XP: parprogrammering

Testning kör (del av) programmet på test-indata, kontrollera att det ger förväntad utdata - tester på olika nivåer: - metod, klass, delsystem, hela systemet,... - regressionstestning: - kör igenom gamla testfall för att kontrollera att ändringar inte har förstört sådant som fungerat tidigare - testkörningar kan automatiseras: ett program kör igenom alla testfall och kontrollerar att de ger förväntat resultat (en förutsättning för effektiv regressionstestning) Obs! Med testning kan vi hitta fel, men inte bevisa att programmet är felfritt.

Testmetodik Vem skriver testfallen? Utvecklare? - Särskilda testare? När skriver man testfallen? Innan/samtidigt som man kodar? - Efter man kodar? När kör man testfallen? En gång, i samband med att man skriver relaterad kod? Inför varje release? - Efter varje ändring? Vad testar man? Allt man kan komma på? - Vanliga fall? Ovanliga fall?

Hur skall systemet organiseras? Mjukvaruarkitektur och design Skall systemet delas upp i flera kommunicerande program? Behöver systemet köras distribuerat? - Kan man använda några färdiga delar? - Skall vi utveckla delar som kan återanvändas i andra system? När bestämmer man arkitekturen? - Innan man kör igång utvecklingen? - Initial enkel arkitektur som växer under utvecklingen? (XP)

Många utvecklare Inget system idag utvecklas av en person Hur delar man upp arbetet? Hur fördelar man ansvaret för olika uppgifter? - Hur synkroniserar man olika utvecklares insatser? - Finns alla utvecklare på en ort, eller är de geografiskt distribuerade? Beror på: är man 10, 100, 1000 personer?

Hur delar man upp ansvaret för koden? Olika strategier: Personer/grupper ansvarar för vissa delsystem - Innebär ofta att den/de äger koden - Andra får övertyga den/dem om vad som skall göras - Vad gör man när någon slutar? Personer/grupper ansvarar för deluppgifter (rätta fel, ny funktionalitet) - Gemensamt ägd kod - alla kan ändra - Hur förhindra att de inte förstör för varandra? - Vissa delar kanske kräver specialkompetens?

Parallell utveckling Utvecklare arbetar parallellt på olika funktioner eller delar i systemet Grundteknik: copy-merge. Olika strategier: Utvecklingsfas integrationsfas? - Divergerande kopior innan merge (integration) sker. - Utvecklarna stör inte varandra under utvecklingsfasen - Integrationen kan ta lång tid och innebära att man måste vänta på varann Successiv integration? - Varje fungerande del görs tillgänglig för de andra så fort som möjligt - Varje ny deluppgift startar från den senaste versionen - Nyutveckling kommer tidigare i bruk. Integrationsproblem upptäcks tidigt. Konfigurations- och versionshantering! Viktigt oavsett strategi!

Hur planerar man arbetet? Deluppgifter - hur delar man upp arbetet i smådelar? - hur tidsuppskattar man de olika delarna? Planering hur prioriterar man mellan olika delar? när finns rätt personal tillgänglig? - kan man minska ledtiden (kalendertiden) till release? - hur kan man följa upp och planera om successivt? Vad är viktigast? - Fullständigt system (men kanske försenat)? - Deadline för release (men kanske med begränsad funktionalitet)?

När får kunden systemet? Hur ofta gör man release (leverans av ny version)? En gång med all funktionalitet? Regelbundet med successivt ökande funktionalitet? - Kontinuerligt? (Kunden kan hela tiden ladda ner den senaste versionen)

Ett programs livscykel (exempel) 1. Initial idéfas 2. Utveckling av första minimala körbara systemet 3. Utveckling av första skarpa releasen 4. Vidareutveckling, ny funktionalitet 5. Utfasning, inga nya användare, enbart felrättning 6. Slut, produkten underhålls inte längre

Dokumentation Vad behöver man dokumentera? Kravspecifikation? Arkitekturbeskrivningar? - Designbeskrivningar? - API:er och implementationer? Hur detaljerat? - Få sidor, informella beskrivningar? - Tjocka pärmar enligt föreskrivna metoder och notationer? När dokumenterar man? - I förväg, för att föreskriva det fortsatta arbetet? - I efterhand, för att dokumentera hur systemet faktiskt blev? - Hela tiden, för att hålla all dokumentation i takt med koden?

Underhåll Leverans Test Implement Design Lev1 Lev2 Lev3 Lev4 Scope Allt Kravanalys Iterativt Vattenfall Traditionella Utvecklingsmodeller Tid

Agil utvecklingsmodell Nollte iteration Stories Tid

XP-metoden Högiterativ agil metod De traditionella faserna (kravanalys, design, impl, test) vävs samman Körbar produkt så tidigt som möjligt. Vidareutveckling är normalfallet. Fokus på test och test-driven utveckling Muntlig kommunikation hellre än skriftlig Små inkrement feedback i varje steg Konkreta deltekniker

Projektet i kursen I kursen fokuserar vi på arbete i grupp om 10 Det behövs en hel del metod för att arbeta effektivt redan i denna storlek Men inte tunga metoder med mycket dokumentation Senare kurser fokuserar på problemen i större organisationer och tyngre metoder

Sammanfattning Utveckling av programvara är komplext många olika synsätt och metoder Några aspekter återkommer i alla projekt: kravhantering, design, test, implementation release, användarfeedback, validering - versionshantering, parallell utveckling I kursen lär vi oss en metod på djupet: XP metoden är ganska ny, men enormt inflytelserik konkreta användbara deltekniker - ger helhetsbild för programutvecklingsprojekt och grund för att förstå andra synsätt och metoder

Läsanvisningar Häftet: Artikel av Kent Beck Kursboken: Part I (Why XP)