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

Relevanta dokument
Programvaruutveckling i grupp Projekt EDA260 (D2, C4, E4, F4, I4, Pi4): 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?

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

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

Introduktionsmöte Innehåll

EDAA01 Programmeringsteknik - fördjupningskurs

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

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

Datavetenskapligt program, 180 högskolepoäng

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

Objektorienterad programmering

F6 Arkitektur, Planering

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

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

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

XP-projekt: En fördjupning

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

Agil programutveckling

KURSPROGRAM Kommunal och industriell avloppsvattenrening

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

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

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Proj-Iteration1. Arkitektur alt. 1

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

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

Objektorienterad Systemutveckling Period 3

KURSPROGRAM Kommunal och industriell avloppsvattenrening

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

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

Projektarbete DAVC20

Hemtentamen: ETSA01 Ingenjörsprocessen för programvaruutveckling metodik

Programmeringsteknik II

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

Design och konstruktion av grafiska gränssnitt

LIPS 1, 2002 Lätt Interaktiv Projektstyrningsmodell

men borde vi inte också testa kraven?

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

Föreläsning 1: Introduktion till kursen

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

Individuell inlämningsuppgift TEK210

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

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

SKOLFS. beslutade den XXX 2017.

Individuell inlämningsuppgift del 1: Kognitiv design.

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Filhanterare med AngularJS

Föreläsning 1: Introduktion till kursen

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

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

Föreläsning 1: Introduktion till kursen

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

Kursöversikt Certifierad Mjukvarutestare

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

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)

Statistik och testmetodik

F2 XP Extremprogrammering översikt

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

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

Grundkurs i programmering - intro

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

Användarcentrerad systemdesign

Välkomna till DIT012 IPGO

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

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

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

KURSPROGRAM VATTENRENINGSTEKNIK

Programmeringsstil 18/3-2002

EL1000/1120/1110 Reglerteknik AK

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

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

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

Kurser och seminarier från AddQ Consulting

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

Socialpsykologiska teorier, 7,5 hp

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

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

Stockholms Universitet Sociologiska Institutionen. Delkursplan till specialkursen Samhällsproblem (6 hp) Sociologi I&II VT15 (13/4 30/4 2015)

Datavetenskapliga programmet, 180 hp

Kandidatarbete på Industriell ekonomi

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

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

KURSPROGRAM MODELLERING AV DYNAMISKA SYSTEM, 5hp, period 4

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

Programmeringsteknik I

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

Reglerteknisk projektkurs TSRT10

TANA81: Matematikprojekt

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

Tilldelas efter registrering

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

Tekniker för storskalig parsning

Datateknik GR (A), Introduktion till programmering i C++, 7,5 hp

INGENJÖRSPROCESSEN METODIK ETSA01 VT13 JONAS WISBRANT

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

Reglerteknisk projektkurs TSRT10

Transkript:

Programvaruutveckling i grupp Projekt EDAF45 (D2, C4, E4, F4, I4, Pi4) - 7,5HP 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) Modern 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 och verifiering - design och utveckling - leverans och versionshantering Exempel på en konkret metod (XP) Relatera till andra metoder för utveckling Fördjupning inom tekniker för OO programutveckling - refaktorisering, enkel design,

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

Websida http://cs.lth.se/edaf45 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.

Kurslitteratur Kursbok Chromatic: Extreme Programming Pocket Guide O Reilly, 2003, (Handbok i XP) - 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) - 9 föreläsningar -5 laborationer - kontrollskrivning Projektdel (lp 3) - projektstartmöte - 6 iterationer programutveckling - redovisning

Schemat lp 2 Läsvecka Må 8-10 E:B Ti 8-10 E:B On 15 To 8,10, 13 Fr 10-12 E:B v3 13/11-17/11 v4 20/11-24/11 v5 27/11-1/12 v6 4/12-8/12 v7 11/12-17/12 F1: Introduktion F2: Översikt över XP F3 Konfigurationshantering F5: Refaktorisering enkel design och Metafor F6: Planering Ariktektur F8: Metoder: Agila vs traditionella L1: Extreme Hour L2: Versionshantering L3 Test First F4: Testning och Parprogrammering L4: Refaktorisering F7: Agila metoder: XP vs andra metoder L5: Verktyg Kontrollskrivning 14:15-15:00 Gasquesalen F9: Projektintro 15:15-16:00 E:B Anmälan till labbar via kurshemsidan senast Idag kl 21:00! Alla Föreläsningar i E:B - Kontrollskrivningen i Kårhusets Gasquesal

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 15 december kl 14:15-15:00, Kårhusets Gasquesal Omkontrollskrivning: Januari - tid&plats meddelas senare 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 8-10 (!) 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 (EDAF45) och 1-2 coacher (EDNA80) 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, Föreläs F3, labbansvarig Lars Bendix supercoach Labbhandledare och Kunder: Patrik Persson, Mattias Nordahl, Christian Söderberg m. fl.

Kursombud! Fundera - så tar vi det efter rasten.

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, EDAF45 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 Programvaruutvecklingsmetodik (C)

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

Översikt

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?

Traditionella Utvecklingsmodeller Vattenfall Iterativt Delar Allt Krav Design Impl Test Krav Design Impl Test Krav Design Impl Test Leverans Krav Design Impl Test Underhåll Krav Design Impl Test Lev 2 Lev 1 Lev 3 Lev 4 Underhåll Tid

Agil utvecklingsmodell Funktion Stories Krav Design Impl Test XP Krav Design Design Krav Nollte iteration Krav Design Krav Impl Design Test Krav Impl Design Test Krav Impl Design Test Krav Impl Design Test Impl Krav Impl Design Test Krav Impl Design Test Krav Impl Design Test Lev 4 Impl Test Lev 3 Lev 2 Test Lev 1 Impl Test 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 och Underhåll ä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 8-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 I slutet relaterar vi till andra metoder.

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