• No results found

TDP003. Föreläsning 2. Emma Enocksson Svensson

N/A
N/A
Protected

Academic year: 2022

Share "TDP003. Föreläsning 2. Emma Enocksson Svensson"

Copied!
47
0
0

Loading.... (view fulltext now)

Full text

(1)

TDP003

Föreläsning 2

Emma Enocksson Svensson

(2)

1. Kursinformation 2. Dokument

3. Projektplan 4. Frågor

5. Genomgång av projekt 6. Vad är ett API?

7. Kom ihåg

(3)

Vad händer härnäst?

V36 Fö: Projektinformation Gruppkontraktet

Se: Hur ska en projektplan se ut?

Projektplanering, LoFi-prototyp V37

V38 V39

Projektplan och Installationsmanual Fö: Flask och Jinja2

Datalagret godkänt, kompletteringar, Git-bidrag

2021-09-06

TDP003 Emma Enocksson Svensson 3

(4)

Kom ihåg

2021-09-05 4

TDP003 Emma Enocksson Svensson

• Webreg: skriv upp er

• Skapa repository i GitLab

• Dagbok

• Planeringen över Projekten

(5)

1. Kursinformation 2. Dokument

3. Projektplan 4. Frågor

5. Genomgång av projekt 6. Vad är ett API?

7. Kom ihåg

(6)

Leverabler

2021-09-05 6

TDP003 Emma Enocksson Svensson

Förberedelse: undersök existerande system och fundera på hur ni vill ha det.

– Leverabler: skisser på systemet (LoFi-prototyp), projektplan

Konstruera: design och implementation av systemet – Två delsystem ska byggas: presentation och data – Leverabler: fungerande system och dokumentation

Överlämna: färdigställande och inlämning av projektet

Uppföljning: reflektion, testning av varandras system,

utvärdering av hur projektet har gått.

(7)

Projektplaneringen

2021-09-05 7

TDP003 Emma Enocksson Svensson

• Grund för tidsplanen i projektplanen

• Skaffa en förståelse för innehållet i kursen – Vad ska göras, när behöver det göras

• Använd deadlines i schemat, kurshemsidan, sök upp information

• Hur presentera på tydligt sätt?

Vecka 38

Deadlines: Första utkast till gemensamma installationsmanualen, första utkast till projektplanen - 21 september

Aktiviteter:

Måndag: Färdigställa installationsmanualen – 3 timmar Tisdag: Färdigställa projektplanen – 4 timmar

Onsdag: Läsa på om Flask – 2 timmar

Onsdag – Fredag: Jobba med datalagret – 8 timmar

(8)

LoFi-prototyp

2021-09-05 8

TDP003 Emma Enocksson Svensson

• Systemskiss

• Pappersprototyp

– Rita, klippa, klistra

• Rita upp på papper hur ert system ska se ut

• Torrkör med varandra och se om ni har missat något

• Se till att relevanta krav syns

(9)

2021-09-05 9 TDP003 Pia Løtvedt

(10)

Installationsmanual

2021-09-05 10

TDP003 Emma Enocksson Svensson

• Beskriv hur man sätter upp utvecklingsmiljön – Ni måste göra det själv!

• Ta reda på vilka verktyg som behövs

• Installation, testa om det fungerar, felhantering

• Tänk på målgrupp

• Gruppvis dokumentation först, sedan ska klassen

tillsammans skapa världens bästa installationsmanual

(11)

Systemdokumentation

2021-09-05 11

TDP003 Emma Enocksson Svensson

• Lämnas in på slutet av projektet

• Beskriver hur systemet är uppbyggt

• Underlätta för andra programmerare att förstå systemet och underhålla kodbasen

• Både översiktligt och i detalj

(12)

Testdokumentation

2021-09-05 12

TDP003 Emma Enocksson Svensson

• Acceptanstestning

– Testa att systemet fungerar enligt specifikation

• Beskriv tester som täcker alla funktionella krav

• Specificera tester noggrant för repeterbarhet – Hur testet görs

– Indata, utdata

– Normalfall, undantagsfall

• Daterad testlogg

(13)

Individuell dagbok och reflektion

2021-09-05 13

TDP003 Emma Enocksson Svensson

• Kom ihåg att skriva programmerardagbok!

• En skriftlig reflektion görs baserat på dagbok och Code Complete 2 (del 1, 3, och 4)

– Välj ut teman i Code Complete 2 som du känner att ni kommit i kontakt med under projektet, eller som

intresserar dig. Arbeta med dessa teman extra noga.

– Följ krav och riktlinjer på hemsidan

– Viktig examinationsform på flera kurser!

(14)

1. Kursinformation 2. Dokument

3. Projektplan 4. Frågor

5. Genomgång av projekt 6. Vad är ett API?

7. Kom ihåg

(15)

Vitsen med en projektplan

• Beskriver hur arbetet ska uppnås

 Hur ska ni samarbeta

 Vilka verktyg ska användas

 etc.

• Överenskommelse mellan er och kunden

 ...samt inom gruppen

2021-09-05

TDP003 Emma Enocksson Svensson 15

(16)

Projektplan

2021-09-05 16

TDP003 Emma Enocksson Svensson

• En projektplan ska (åtminstone):

Vara nedskriven i förväg

Beskriva

Vad som ska uträttas

När det ska uträttas

Hur det ska uträttas

Men ingen design

Vara välskriven, strukturerad, kortfattad och begriplig

Ta hänsyn till tänkbara olyckshändelser

Utvecklas i takt med projektet (ett levande dokument)

(17)

En projektplan kan innehålla

2021-09-05 17

TDP003 Emma Enocksson Svensson

Översikt

– Intro till arbetet, kunden, gruppens organisation

Fasplan/tidsplan

– Vilka utvecklingsfaser, vilka produkter, vilka datum, hur lång tid?

Organisationsplan

– Vilka team, vems ansvar?

Testplan

– Vem? Hur? Verktyg?

Hantering av artefakter

– Var och hur ska källkod och dokument lagras?

Dokumentationsplan

– Vilka, när, till vem? Vem godkänner?

(18)

En projektplan kan innehålla

2021-09-05 18

TDP003 Emma Enocksson Svensson

Utbildningsplan

– Intern, extern. Vem, när, resurser?

Plan för rapportering och granskningar – Vad, till vem, när?

Installationsplan

– Vilka procedurer krävs för att komma igång?

Plan för kvalitetssäkring

– Standarder som ska användas?

Varuplan

– Vad ska levereras, när? Delleveranser?

Resursplan

– Persontid, datortid. Summering av milstolpar!

(19)

Milstolpar

2021-09-05 19

TDP003 Emma Enocksson Svensson

Milstolpe Datum

LoFi-prototyp klar 2017-09-10

Projektplan inlämnad 2017-09-11

Projektplan klar 2017-09-15

load och get_project_count fungerar 2017-09-16

Datalagret klart 2017-09-20

Datalagret godkänt av assistent 2017-09-22 Vi kan visa en enkel sida med Flask och

Jinja2

2017-10-01

Projektsidan fungerar 2017-10-05

(20)

Tidsplanering

2021-09-05 20

TDP003 Emma Enocksson Svensson

• Arbeta i början!

• Dela upp problemet

• Sikta på professionell kurva

Nybörjar e Pr of essionell

Arbetsinsats Leverabler

(21)

Seminarium om projektplan

2021-09-05 21

TDP003 Emma Enocksson Svensson

• Tisdag 14 september

• Att göra innan:

– Gör och skicka in projektplaneringen till mig – Läs igenom exempelprojektplanerna innan – Läs igenom all info om projektplanen

• På seminariet:

– Vi diskuterar exemplen och hur man skriver en bra

projektplan

(22)

1. Kursinformation 2. Dokument

3. Projektplan 4. Frågor

5. Genomgång av projekt 6. Vad är ett API?

7. Kom ihåg

(23)

1. Kursinformation 2. Dokument

3. Projektplan 4. Frågor

5. Genomgång av projekt 6. Vad är ett API?

7. Kom ihåg

(24)

Skapa en webbportfolio

• Ett webbaserat system för att visa upp gjorda projekt

• Listar de projekt ni har gjort och egna projektsidor med information om projektet

• Ett verktyg åt er själva

• Ni är själva beställare av systemet

• Ni och andra som visar era projekt är användare

• Kursledningen är projektledare som dragit upp riktlinjer för arbetsordning (som ni har att acceptera som givna krav)

• Inom givna ramar har ni fria händer

2021-09-05

TDP003 Emma Enocksson Svensson 24

(25)

Idé

2021-09-05 25

TDP003 Emma Enocksson Svensson

• Vi har en samling av projekt som vi vill visa

• Varje projekt har ett namn, en beskrivning, en samling tekniker

• Vi vill kunna hitta alla projekt genom att bläddra, söka

• Vi vill också kunna hitta alla projekt som involverar

en viss teknik

(26)

Systemskiss

2021-09-05 26

TDP003 Emma Enocksson Svensson

• Fyra webbsidor med URL:er:

/list

/project/id

/techniques

/

(27)

Startsidan

2021-09-05 27

TDP003 Emma Enocksson Svensson

URL: http://foo/

• Statisk eller dynamisk

• Ska ha bilder

(28)

Listsidan

2021-09-05 28

TDP003 Emma Enocksson Svensson

URL: http://foo/list

• Dynamisk lista över projekt med liten bild och kort info för varje

• Ska vara möjligt att sortera och söka

(29)

Projektsidan

2021-09-05 29

TDP003 Emma Enocksson Svensson

URL: http://foo/project/project-id

• Visar fullständig information om ett projekt

• Ska ha en stor bild för projektet

(30)

Tekniksidan

2021-09-05 30

TDP003 Emma Enocksson Svensson

URL: http://foo/techniques

• Lista över era projekt, baserat på använda tekniker

• Helt OK att lägga till en extra sida (exempelvis

http://foo/techniques/html) som visar alla projekt

som innehåller en viss teknik

(31)

Arkitektur

2021-09-05 31

TDP003 Emma Enocksson Svensson

• Två delsystem med olika ansvar

– Presentation:

användarhändelser – Data: datahantering

Användare

Fil med data Presentation

Datalager

JSON-fil

(32)

JSON

2021-09-05 32

TDP003 Emma Enocksson Svensson

• JavaScript Object Notation (JSON)

• Datalagring och datautbyte

• Läsbart/skrivbart för människor

• Påminner om dictionary och andra datatyper i Python

• Många programmeringsspråk kan parsa JSON

(33)

JSON - exempel

2021-09-05 33

TDP003 Emma Enocksson Svensson

[ {

"Art": "Hund",

"Namn": "Idefix"

}, {

"Art": "Katt",

"Namn": "Sebbe"

}

]

(34)

Arkitektur

2021-09-05 34

TDP003 Emma Enocksson Svensson

• Två delsystem med olika ansvar – Presentation:

användarhändelser – Data: datahantering

• Standardiserat källkodsgränssnitt (API) till delsystemet data.

• Vi tillhandahåller test och testdata

Användare

Fil med data Presentation

Datalager

JSON-fil API

Flask Jinja2 HTML

CSS

(35)

1. Kursinformation 2. Dokument

3. Projektplan 4. Frågor

5. Genomgång av projekt 6. Vad är ett API?

7. Kom ihåg

(36)

API (Application Programming Interface)

• Man vill ofta strukturera kod så att man samlar relaterad kod i en enhet

– Funktioner, klasser, moduler – Abstraktion

• Behövs ett sätt att kommunicera mellan moduler!

• API: Strikt överenskommelse mellan moduler

• Att använda ett API är ett viktigt sätt att hantera komplexitet och isolera olika delar för att få dem utbytbara

2021-09-05

TDP003 Emma Enocksson Svensson 36

(37)

”API” på en restaurang

2021-09-05 37

TDP003 Emma Enocksson Svensson

• Köket har bestämt vad som kan serveras

• Köket har koll på hur man tillagar varje rätt

• Kunden kan titta i menyn och beställa det den vill ha – Menyn fungerar som ett API

• Kunden behöver INTE gå till köket och förklara hur rätten ska tillagas

• Vilken kund som helst kan gå till restaurangen och beställa det den vill ha

• Kunden kan skicka med extra information

(38)

Dyrt att ändra API

2021-09-05 38

TDP003 Emma Enocksson Svensson

• När ett API väl är satt och börjat användas är det dyrt att ändra

• Tänk om alla restaurangkunder hade fått en kopia av menyn och ringde in sin beställning (”En nr 17 tack!”)

• Om menyn ändras fungerar inga gamla kunders beställning längre – Varje gammal kund måste ”uppdateras”

• Tung övergångsperiod från gammalt till nytt API

– Både gammalt och nytt API måste stödjas

(39)

Windows-API

2021-09-05 39

TDP003 Emma Enocksson Svensson

• Microsoft Windows har ett API som alla windowsprogram använder för att visa sina fönster

• Så länge en ny version av Windows behåller samma API kommer gamla program att fortsätta fungera

(bakåtkompatibilitet)

• Om en ny version av Windows byter API måste alla gamla

program skrivas om!

(40)

API till datamodulen

2021-09-05 40

TDP003 Emma Enocksson Svensson

Köket Kunden

Datalagret

Presentationslagret

Meny API

(41)

API till datamodulen

2021-09-05 41

TDP003 Emma Enocksson Svensson

• Datamodulen har ett API bestående av 6 välspecificerade funktioner som presentationsmodulen får använda för att komma åt data

• Så länge API:t (specifikationen av funktionerna) inte

ändras kan vilken presentationsmodul användas på vilken datamodul som helst

• API:ets specifikation finns på kurshemsidan

(42)

API till datalagret

2021-09-05 42

TDP003 Emma Enocksson Svensson

• load(filename)

– Läser en JSON-fil, returnerar ett databasobjekt

• get_project_count(db)

– Hämtar antalet projekt i databasobjektet

• get_project(db, id)

– Hämtar projektet id från databasobjektet

• get_techniques(db)

– Hämtar en sorterad lista med alla tekniker

• get_technique_stats(db)

– Hämtar statistik över de tekniker som används

(43)

Sök i datalagret

2021-09-05 43

TDP003 Emma Enocksson Svensson

• search( db,

sort_by='start_date’, sort_order='desc’, techniques=None, search=None,

search_fields=None)

(44)

Testa datalagret

2021-09-05 44

TDP003 Emma Enocksson Svensson

• Enhetstestning

– Testar en specifik, avgränsad del av koden i taget – Testerna ska kunna köras igen och igen -> testfil – Testbibliotek för att underlätta körandet och

sammanställa resultat -> Pythons unittest-modul

• Alla API:ets 6 funktioner ska testas noggrant

• Ni får en grundläggande testfil

• Klassen ska tillsammans förbättra testfilen

• Krav för datalagret att alla tester blir godkända

(45)

1. Kursinformation 2. Dokument

3. Projektplan 4. Frågor

5. Genomgång av projekt 6. Vad är ett API?

7. Kom ihåg

(46)

Kom ihåg

• Anmäl er i Webreg (sista dag idag)!

• Göra klart Gruppkontraktet (deadline på torsdag)

• Kolla på planeringen av projektet (projektplaneringen)

• Skriv dagbok

• Börja kolla på installationsmanualen

• Skissa på er LoFi-prototyp

2021-09-05

TDP003 Emma Enocksson Svensson 46

(47)

www.liu.se

Emma Enocksson Svensson

References

Related documents

boolean hasNextDouble() returnerar värdet true om nästa token är en double, annars returneras false. boolean hasNextBoolean() returnerar värdet true om nästa token är en boolean,

Man tror även att efterfrågan på produkten kommer att vara väldigt hög, väldigt snabbt efter att produkten introduceras. Det finns stora

Under tiden för prövning av anbuden kan Lerums kommun komma att kontakta angivna referenter för att kontrollera att de av anbudsgivaren lämnade uppgifterna stämmer

• ska ta fram en robust allmän metod för tidsdiskret implementering av tidskontinuerliga regulatorer (som ska garantera att man aldrig hamnar i situationen i föreg.. Sampling

A/D-omvandling: Omvandling från kontinuerlig, analog signal till diskret, digital signal..

Tidigare har USA dominerat marknaden för animerad film men det är numer tydligt att andra länder kan göra lyckade produktioner som inte bara slår i hemläderna utan också på

• Representation i angränsande minne för arraylistor: elementen lagras i tabell/array (t.ex. den utök- ningsbara arrayen från föreläsning 2).. – elemAtIndex går i

Testet genomförs på ergometercykel under 10 minuter med en trampfrekvens på 70, 80 eller 90 varv/min (70, 80 eller 90 rpm) och med aktuell belastning enligt tabell nedan.