TDP005. Föreläsning 1. Filip Strömbäck

Relevanta dokument
TDP005. Föreläsning 1. Filip Strömbäck

TDP005 Projekt: objektorienterade system

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 1. Kursinformation Vad är Software Engineering? Hur går ett projekt till?

TDP005 Projekt: objektorienterade system

TDDI02. Programmeringsprojekt, Föreläsning 1. Filip Strömbäck. Med utgångspunkt i tidigare slides av Jonas Lindgren

TDP005 Projekt: objektorienterade system

Objektorienterad programmering

TDP005. Föreläsning 3 - UML. Filip Strömbäck

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

Några grundläggande begrepp

TDIU01 (725G67) - Programmering i C++, grundkurs

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

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

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

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

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

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Objektorientering. Grunderna i OO

Dokumentation och presentation av ert arbete

Objektorienterad analys och design

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell.

TDP003. Föreläsning 1. Filip Strömbäck

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

TDP003. Föreläsning 2. Filip Strömbäck

SKOLFS. beslutade den XXX 2017.

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Kravspecifikation TDP005 Projekt: Objektorienterat system

Dokumentation och presentation av ert arbete

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Linköpings universitet 1

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Objektorienterad analys och design

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

BESKRIVNING AV PROCESSMETODEN SCRUM

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

TDDD80 Mobila och sociala applikationer. Kursintroduktion

TDDC74 - Projektspecifikation

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

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

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Dokumentation och presentation av ert arbete

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Objektorienterad programmering

TDDI02. Programmeringsprojekt, Föreläsning 2. Filip Strömbäck. Med utgångspunkt i tidigare slides av Jonas Lindgren

SCRUM och mycket mer

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Dokumentation och presentation av ert arbete

Introduktionsmöte Innehåll

729G06 Föreläsning 1 Objektorienterad programmering

Praktikum i programvaruproduktion

TPFD - TestPlan Före Design BESKRIVNING AV AKTIVITETER

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

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

Projektarbete DAVC20

Kravspecifikation för hårdvaruprojekt i kursen Datorsystemteknik, HT2005. Temperaturvakt med loggningsfunktion

Kravspecifikation. TDP005 Projekt: objektorienterade system. Version 4.0 Datum Anna Ahlberg Johan Almberg

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Projektuppgift - Gymmet

Filhanterare med AngularJS

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Imperativ programmering. Föreläsning 4

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

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Projektmetodik II. HF1005, Informationsteknik och ingenjörsmetodik för Datateknik. Projektarbete

TDP023 Projekt: Agil systemutveckling

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Projektuppgift - Biblioteket

12 principer of agile practice (rörlig)

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

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

TDP001/TDP002. Introduktionsföreläsning. Eric Elfving Institutionen för Datavetenskap (IDA)

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

TDDD82. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Dokumentation och presentation av ert arbete

Poäng. Start v. Programvaruteknik Institution Institutionen för datavetenskap. Antal registrerade (män/kvinnor) 25 (23/2)

TDP025. Entreprenöriell programmering. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

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

Agil programutveckling

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Agil testning i SCRUM

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

FÖRELÄSNING 8 DSV2PVT

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

TDP005. Föreläsning 2. Filip Strömbäck

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

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

Objektorienterad programmering. Grundläggande begrepp

Transkript:

TDP005 Föreläsning 1 Filip Strömbäck

1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg

TDP005 Filip Strömbäck 2 Personal Examinator Kursledare Assistenter Kursadministratör Klas Arvidsson Filip Strömbäck Pontus Haglund Pia Løtvedt Lukas Pohlman Madeleine Häger Dahlqvist

TDP005 Filip Strömbäck 3 Kursinnehåll Introduktion till mjukvaruutveckling Objektorientering och UML Verktyg IDE - CLion Byggverktyg - Make och CMake Dokumentation - Doxygen

TDP005 Filip Strömbäck 4 Skillnader från tidigare år Nytt seminarie om kravspecifikationen

TDP005 Filip Strömbäck 5 Projekt Design och implementation av ett 2-dimensionellt spel Simulering av en värld Figurer med beteende över tid Spelaren styr minst en av dessa Interaktion mellan figurer (öva på objektorientering) Dokumentera spelet och processen

TDP005 Filip Strömbäck 6 Inspiration

TDP005 Filip Strömbäck 7 Inspiration

TDP005 Filip Strömbäck 8 Minimikrav Spelet ska simulera en 2D-värld i realtid. Minst 3 typer av objekt. Det ska finnas fler instanser av minnst två av dessa. Objekten ska röra sig över skärmen. Spelaren ska styra minst ett av dessa. Åtminstone en annan objekttyp ska röra sig. Kollisionshantering ska finnas. Ska vara enkelt att modifiera banor i spelet. Spelet ska upplevas som sammanhängande. Krav på implementationen finns på kurshemsidan.

TDP005 Filip Strömbäck 9 Upplägg 3 föreläsningar Introduktion, kravspecifikationen, projektmetoder Projektmetoder, Make/CMake och Git i projekt SFML och UML 3 valfria labbar (använd dem om ni kör fast) CLion Make och CMake SFML Projekthandledning vid behov

TDP005 Filip Strömbäck 10 Tidplan V46 Fö1 V47 Se: Krav Fö2 V48 Kravspec Fö3 Designspec V49 Status V50 Status Kodgranskning V51. Status Slutdemo

TDP005 Filip Strömbäck 11 Statusrapporter Kort avstämning, via e-post Vad har gjorts under veckan? Vad tänker ni göra under kommande vecka? Prioriterad backlog

TDP005 Filip Strömbäck 12 Examination Dokument: Kravspecifikation Designspecifikation Kodgranskningsprotokoll Individuell reflektionsrapport Statusrapporter Individuellt portfoliotillägg Programredovisning Demosession - visa upp ert projekt Kod, dokumentation och kompileringsinstruktioner

TDP005 Filip Strömbäck 13 Examination Rapporterna bedöms med G eller VG: Kravspecifikation Kodgranskningsprotokoll Designspecifikation Individuell reflektionsrapport Projektet bedöms med 3, 4, 5: Program och kod Se kurshemsidan för krav Slutbetyg: 3: Godkänt på alla moment 4: 4 på projektet + minst 1 VG 5: 5 på projektet + VG på reflektion + ett till VG

TDP005 Filip Strömbäck 14 Redovisning Kod lämnas in via GitLab Maila länk till er assistent Bjud in assistent och mig Dokument lämnas in via e-post Till er assistent Dokument i PDF-format Statusrapporter som text i mailet

1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg

TDP005 Filip Strömbäck 16 Vad är ett projekt? Ett definierbart ändamål Definieras i kravspecifikationen. Funktionalitet, prestanda, etc. Ett unikt åtagande Inte rutinarbete, avser något som inte gjorts identiskt tidigare. En tillfälligt aktivitet Det finns en tydlig början och ett tydligt slut.

TDP005 Filip Strömbäck 17 Mjukvaruprojekt - Software Engineering Mål: Konstruera stora och komplexa mjukvarusystem Följa användares och beställares önskemål Hålla budget- och tidsramar Uppfylla kvalitets- och underhållskrav Alltså behövs: Metod Verktyg Riktlinjer...

TDP005 Filip Strömbäck 18 Begrepp Principer: Ett sätt att uppnå ett visst mål Parprogrammering Planning poker Metod: En samling principer för ett helt projekt Scrum Extreme Programming (XP) Metodologi: Läran om hur metoder konstrueras, värderas och deras generella egenskaper.

TDP005 Filip Strömbäck 19 Varför behövs detta? Software Engineering for Students: A Programming Approach, D. Bell

TDP005 Filip Strömbäck 20 Projekt Ett projekt löper allmänt i ordningen: Fas Resultat 1 Förstå problemet Kravspecifikation 2 Planlägg lösningen Projektplan 3 Genomför planen Designspecifikation, kod 4 Utvärdera resultat Ny kod, testdokument

1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg

TDP005 Filip Strömbäck 22 Kravspecifikationen beskriver Vad ska byggas? Spelidé Målgrupp... Hur ska det fungera? Hur interagerar spelaren med spelet? Hur beter sig saker på skärmen? Hur saker med varandra? Funktionella och ickefunktionella krav Men inte kodstruktur eller liknande

TDP005 Filip Strömbäck 22 Kravspecifikationen beskriver Vad ska byggas? Spelidé Målgrupp... Hur ska det fungera? Hur interagerar spelaren med spelet? Hur beter sig saker på skärmen? Hur saker med varandra? Funktionella och ickefunktionella krav Men inte kodstruktur eller liknande betraktar produkten som en svart låda

TDP005 Filip Strömbäck 23 Designnivåer i kravspecifikationen Vision - vad är den bärande tanken bakom systemet? Mål - vad är det mer konkreta målet med systemet? Målgrupp - vilka ska använda systemet? Tjänster Vad ska man kunna göra med systemet? Vad erbjuder systemet för tjänster? Användbarhetsmål - hur ska tjänsterna upplevas?

TDP005 Filip Strömbäck 24 Designnivåer i kravspecifikationen Funktionalitet och innehåll Går det att beskriva mer konkret vilken funktionalitet och vilket innehåll som ska finnas i systemet? Interaktionsstruktur - Hur ser användargränssnittet ut? Interaktionstekniker - Hur interagerar man? Fysisk form - Är det en fysisk produkt? Mjukvara för en dator? Säkerhetskrav Eventuella hårdvaru- och prestandakrav

TDP005 Filip Strömbäck 25 Krav Ska-krav minimikrav för att produkten ska accepteras Bör-krav implementeras i mån av tid

TDP005 Filip Strömbäck 25 Krav Ska-krav minimikrav för att produkten ska accepteras Bör-krav implementeras i mån av tid Tänk på: Tydliga krav - ska kunna genomföras av andra Mätbara krav - tydligt när kravet är klart En bra kravspecifikation ska producera likvärdiga resultat oavsett vem man ger den till. (Prova gärna om ni vill!)

TDP005 Filip Strömbäck 26 Exempel på krav Spelaren ska kunna ta skada.

TDP005 Filip Strömbäck 26 Exempel på krav Spelaren ska kunna ta skada. (dåligt) När spelarens figur kolliderar med något farligt ska spelaren ta skada.

TDP005 Filip Strömbäck 26 Exempel på krav Spelaren ska kunna ta skada. (dåligt) När spelarens figur kolliderar med något farligt ska spelaren ta skada. (bättre) När spelarens figur kolliderar med något farligt ska spelarens hälsa minska med 10 enheter.

TDP005 Filip Strömbäck 26 Exempel på krav Spelaren ska kunna ta skada. (dåligt) När spelarens figur kolliderar med något farligt ska spelaren ta skada. (bättre) När spelarens figur kolliderar med något farligt ska spelarens hälsa minska med 10 enheter. När spelarens hälsa har nått noll ska spelet avslutas och Game Over visas.

TDP005 Filip Strömbäck 27 Exempel på ska- och bör-krav Ska-krav: 1. Spelaren ska kunna förflytta sin figur på skärmen med hjälp av piltangenterna. 2. Fiendefigurerna ska flytta sig i förutbestämda banor på skärmen. 3. När spelarens figur kolliderar med en fiendefigur så ska spelet avslutas.

TDP005 Filip Strömbäck 27 Exempel på ska- och bör-krav Ska-krav: 1. Spelaren ska kunna förflytta sin figur på skärmen med hjälp av piltangenterna. 2. Fiendefigurerna ska flytta sig i förutbestämda banor på skärmen. 3. När spelarens figur kolliderar med en fiendefigur så ska spelet avslutas. Bör-krav: 4. Spelaren ska kunna välja vilka tangenter som ska användas för att styra spelet via inställninsmenyn. 5. Fiendefigurerna ska röra sig mot spelarens figur.

TDP005 Filip Strömbäck 28 Kravspecifikation i kursen Ska beskriva ert mål med spelet Ska innehålla minst 6 ska-krav och 3 bör-krav Kraven ska tillsammans täcka hela spelidén Vid kursens slut ska ni uppfylla alla ska-krav för att få betyg 3. Kravspecifikationen fungerar som ett kontrakt mellan er och kursledningen om vad som ska utvecklas.

TDP005 Filip Strömbäck 29 Backlog Prioriterad lista över era krav med veckomål utmarkerade. 2. Fiender ska röra på sig 1. Styra spelarens figur 3. Kollision 5. Svårare fiender 4. Välja tangenter

1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg

TDP005 Filip Strömbäck 31 Vattenfallsmodellen

TDP005 Filip Strömbäck 32 Vattenfallsmodellen med återhopp

TDP005 Filip Strömbäck 33 Spiralmodellen

TDP005 Filip Strömbäck 34 Scrum By Lakeworks - Own work, GFDL

TDP005 Filip Strömbäck 35 Scrum - TODO board

TDP005 Filip Strömbäck 36 Scrum - Burndown chart

TDP005 Filip Strömbäck 37 Prototyping Bygg en enkel prototyp Visa den för beställaren Använd den feedback ni fått för att förbättre kravspecifikationen Fortsätt tills beställaren är nöjd! Prototyping passar ofta bra tillsammans med agila metoder!

TDP005 Filip Strömbäck 38 Metod i kursen Mer agilt än i förra kursen: En sprint i veckan Måndagsmötena motsvarar sprintretrospektiv Statusrapporten innehåller er backlog Större möjlighet att experimentera

1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg

TDP005 Filip Strömbäck 40 Systemdesign Mål: omsätta kravspecifikationen till en lösning Konceptuell design: Vad systemet gör Skrivet i beställarens språk utan teknisk jargong Kopplat till kravspecifikationen

TDP005 Filip Strömbäck 40 Systemdesign Mål: omsätta kravspecifikationen till en lösning Konceptuell design: Vad systemet gör Skrivet i beställarens språk utan teknisk jargong Kopplat till kravspecifikationen Teknisk design: Hur systemet gör saker Platform Hierarki och funktion hos programkomponenter Datastrukturer och dataflöde

TDP005 Filip Strömbäck 41 Kort historia I början: Ingen struktur, gör som du vill Strukturerad programmering Problem: skalar inte till stora system Objektorientering Simula, Smalltalk LISP, C++ Multiparadigm?

TDP005 Filip Strömbäck 42 Vad är ett objekt? Abstraktion av världen Kan utföra saker som svar på meddelanden Har ansvar för sitt eget tillstånd Oberoende enheter Delad data undviks Systemfunktionalitet uttrycks som samarbete av flera olika objekt

TDP005 Filip Strömbäck 43 Objektorienterad analys och design (OOA/OOD) Börja med användningsfall (eng. use cases) Kategorisera efter aktörer, dvs. vem som utför saker Hitta beroenden mellan olika fall Hitta klasser exempelvis med hjälp av CRC-kort Formalisera med hjälp av klassdiagram (i UML)

TDP005 Filip Strömbäck 44 Användningsfall Klocka Klocka Läsa tiden. Ställa tiden. Användare Byta batteri Reparatör

TDP005 Filip Strömbäck 45 CRC-kort Class Responsibilities Collaborators

TDP005 Filip Strömbäck 45 CRC-kort Class Responsibilities Collaborators Exempel: Visa tiden Ändra tiden Byta batteri Klocka LCD-display LCD-display, knappar Batteri

TDP005 Filip Strömbäck 46 Implementation Standarder Kodningsriktlinjer - stilguide

TDP005 Filip Strömbäck 46 Implementation Standarder Kodningsriktlinjer - stilguide Dokumentation Intern dokumentation Header-kommentarer Kodkommentarer Namngivning Data-dokumentation Extern dokumentation Översikt av systemets komponenter Ingår i systemdokumentationen Kika på Doxygen!

1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg

TDP005 Filip Strömbäck 48 Testning - översikt Enhetstestning Fokuserar på enskilda klasser eller moduler Integrationstestning Fokuserar på interaktion mellan moduler Systemtestning Testar systemet i sin helhet Användbarhetstestning Hur enkelt är det att använda det vi byggt? Regressionstestning - fungerar allt fortfarande? Acceptanstestning - har kraven uppfyllts?

TDP005 Filip Strömbäck 49 Design och testning Designen bör ta hänsyn till testning Bra design uppmuntrar till testning av moduler snarare än hela systemet Enkla designer är ofta enkla att testa Tydliga abstraktionsbarriärer Väldefinierad modulfunktionalitet Objektorienterad design Respektera abstraktionsbarriärer Moduler behandlas som enheter med ett väldefinierat gränssnitt mot omvärlden

TDP005 Filip Strömbäck 50 Automatisera testning! Tråkigt att testa Skapa testsvit som byggs ut i takt med programmet Snabbt och smidigt att kompilera och köra testerna Integrera med Git - förhindra incheckning om testerna misslyckas Bibliotek: Många att välja på, Catch är bra!

TDP005 Filip Strömbäck 51 Testfall Black-box Tittar bara på specifikationen Försök glömma koden Be någon annan att skriva testfallen Skriv testfall efter specifikationen först, implementera sen White-box Tar hänsyn till koden Skriv testfall som knäcker koden, testa gränsfall etc. Skrivs av programmerare som kan koden Se till att varje kodrad exekeveras minst en gång

TDP005 Filip Strömbäck 52 Ekvivalensklasser för black-boxtestning Utgå från förväntat resultat Dela upp alla testfall i grupper Varje grupp innehåller testfall som producerar samma typ av resultat Testa gränserna för varje klass Glöm inte testfall som producerar fel!

TDP005 Filip Strömbäck 53 Exempel getdaysofmonth(year, month) ger 6 klasser: (30 dagar, 31 dagar, februari) (skottår, ej skottår) REQURE(getDaysOfMonth(1, 1200) == 31); REQURE(getDaysOfMonth(7, 1300) == 31); REQURE(getDaysOfMonth(4, 1996) == 30); REQURE(getDaysOfMonth(9, 2001) == 30); REQURE(getDaysOfMonth(2, 2000) == 29); REQURE(getDaysOfMonth(2, 2100) == 28);

TDP005 Filip Strömbäck 54 Testdriven utveckling (TDD) Börja med att skriva test Skriv kod tills testerna lyckas Repetera tills allt är implementerat

1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg

TDP005 Filip Strömbäck 56 Kom ihåg Webreg - se till att ni är anmälda GitLab - skapa repository, bjud in assistent och mig

Filip Strömbäck www.liu.se