diff --git a/lectures/build.gradle b/lectures/build.gradle index a21305d1f2087a1d26a9b00171a82c8f045797b4..13f17387144c256fca1498f744148dc6f2c04e96 100644 --- a/lectures/build.gradle +++ b/lectures/build.gradle @@ -59,6 +59,13 @@ asciidoctorRevealJs { include '*.adoc' } outputDir file('build/docs/revealjs') + resources { + from('revealjs') { + include '**/*.png' + include '**/*.css' + } + into '.' + } attributes 'sourceDir': 'revealjs', 'imagesDir': 'revealjs', diff --git a/lectures/revealjs/agiletools.adoc b/lectures/revealjs/agiletools.adoc new file mode 100644 index 0000000000000000000000000000000000000000..aff88dae690f8df4003c449f2335ffab83942de9 --- /dev/null +++ b/lectures/revealjs/agiletools.adoc @@ -0,0 +1,127 @@ += Smidig praksis og verktøy +:customcss: slides.css +:icons: font + +== Smidig praksis og verktøy + +* fokuserer på bygging av produkt som kan prøves ut +* sentrert rundt prosesser for dette, og ikke på verktøy og teknikk +* men... forutsetter i praksis verktøystøtte +** smidighet krever automatisering +** verktøy smører prosessene + +== Ulike typer verktøy + +* oppfølging av den smidige prosessen +** oversikt over (ulike typer) utviklingsoppgaver +** planlegging av iterasjoner +** samarbeidsstøtte +* håndtering av kildekode +** distribuert utvikling +** endringshåndtering +** versjonskontroll + +== Ulike typer verktøy forts. + +* kontinuerlig integrasjon (CI) +** testing +** bygging av artifakter + +== Historien om en utviklingsoppgave + +Kunden ønsker å kunne importere et gammelt filformat. Dette funksjonsønsket deles opp i to utviklingsoppgaver, én for kjernefunksjonaliteten og én for brukergrensesnittet. + +Cecilie starter med kjernen og skisserer først hvordan hun tenker å løse det teknisk vha. noen enkle klassediagram. Så defineres oppførselen til hver klasse i form av tester, og tomme klasser opprettes. + +== Historien om ... forts. + +Kristian kan starte på brukergrensesnittet til importfunksjonaliteten så snart klassedeklarasjonene er klare, han trenger ikke selve implementasjonskoden i starten. + +Cecilie jobber seg så gjennom implementasjonen, og sjekker hele tiden at den er som tenkt ved å kjøre testene. Hun er ferdig i god tid før Kristian, og når han er det så... bare virker det! Til slutt oppsummerer de begge hva som ble gjort og gjør funksjonen tilgjengelig for kunden. + +== Historien om ... og verktøy + +Hva har dette å si for verktøystøtte? + +* oppfølging av den smidige prosessen: +** to utviklingsoppgaver knyttet til hhv. Cecilie og Kristian +** del av inneværende iterasjon +** dialog/diskusjonstråd knyttet til oppgaven + +== Historien om ... og verktøy forts. + +* håndtering av kildekode: +** Cecilie må kunne dele sin kjernekode med Kristian, men holde den unna de andre +** det må komme frem at koden er knyttet til respektive utviklingsoppgaver +** den nye koden er knyttet til _neste_ versjon + +== Historien om ... og verktøy forts. + +* kontinuerlig integrasjon (CI): +** hyppig kjøring av testene +** ny versjon rulles raskt ut til kunden + +== `gitlab.stud.idi...` + +[.smaller] +* profesjonelt støtteverktøy for smidig utvikling +* IDI har egen installasjon (tas kanskje over av NTNU IT) +** innlogging med NTNU-navn og -passord +* hierarki av _grupper_, med _prosjekter_ (repo) under +** IT1901-emnet er en gruppe: https://gitlab.stud.idi.ntnu.no/it1901[it1901] +*** emnet har repo med læringsmateriale inkl. kode +** hver gruppe er egen _undergruppe_ (it1901-gr19xy) +*** gruppene opprettes av oss, så inviteres dere inn +*** dere oppretter nødvendige repo + +== Oppgavesporing (issue tracking) + +En _oppgave_ (issue) er arbeid som skal følges opp + +* ny funksjon, forbedring, feilretting, konfigurasjon ... +* hver oppgave har en dialog/diskusjonstråd +* halvautomatisk knytning til _endringer_ (commits) + +== Oppgavesporing forts. + +Oppgavesporing er viktig for transparens + +* kunder trenger innsyn i prosess +* teamet trenger å dele kunnskap +* løse og distribuerte prosjekter (f.eks. åpen kildekode) har ekstra behov +* støtter vurdering... + +== Oppgavesporing forts. + +[.smaller] +* oppgaver opprettes ifm. planlegging av iterasjon, f.eks. fra _brukerhistorier_, _funksjonsønsker_ eller _feilrapporter_ +* oppgaver knyttes til +** _milepæl_ for iterasjon +** utviklinger som jobber med den +* _merkelapper_ (labels) kan angi _fasen_ en oppgave er i +** f.eks. planlagt, utvikling, testing, godkjent +** _oppgavetavler_ (issue boards) visualiserer fremdrift + +== Oppgavetavle (issue board) + +image::https://about.gitlab.com/images/blogimages/workflow.png[size=80%] + +== Oppgavesporing forts. + +* dialog/diskusjonstråd dokumenterer prosessen +** designidéer, avgjørelser, avhengigheter, ... +** knyttes til endringer (commits) gjennom oppgavenummer (#) +** oppsummerer hva som ble gjort + +[.center-paragraph] +Viktig for transparens! + +== Kildekodehåndtering + +[.center-paragraph] +link:scm.html[Source code management (SCM)] + +== Kontinuerlig integrasjon + +[.center-paragraph] +link:ci.html[Continuous Integration (CI)] diff --git a/lectures/revealjs/ci.adoc b/lectures/revealjs/ci.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e1389f36589737d8927bcde10dbd786f215531b4 --- /dev/null +++ b/lectures/revealjs/ci.adoc @@ -0,0 +1,3 @@ += CI +:customcss: slides.css +:icons: font diff --git a/lectures/revealjs/course-intro.adoc b/lectures/revealjs/course-intro.adoc index 8faea6aa53ec8906dc324e2cf10ad0448ba192ee..7eb5bbe6b3cc18cbadce7a0bd5d53a7830a80059 100644 --- a/lectures/revealjs/course-intro.adoc +++ b/lectures/revealjs/course-intro.adoc @@ -1,9 +1,11 @@ -== Multi-eksempel +== Introduksjon til IT1901 -Dette eksemplet viser hvordan rigger et multi-prosjekt med gradle, -med del-prosjekter for +Smidig og moderne praksis og konstruksjon -- domenelogikk (core) -- brukergrensesnitt med JavaFX og FXML (fx) -- React-basert web-klient (react) -- web-server med JAX-RS og Jersey (jersey) +- praksis i smidige prosjekter +- verktøy for smidig utvikling +- mer om objektorientert design +- enkle, moderne arkitekturer +** desktop +** mobil +** web diff --git a/lectures/revealjs/scm.adoc b/lectures/revealjs/scm.adoc new file mode 100644 index 0000000000000000000000000000000000000000..33bde303b58bd583db9dd3572139a90e73d73322 --- /dev/null +++ b/lectures/revealjs/scm.adoc @@ -0,0 +1,3 @@ += SCM +:customcss: slides.css +:icons: font diff --git a/lectures/revealjs/slides.css b/lectures/revealjs/slides.css new file mode 100644 index 0000000000000000000000000000000000000000..6733f42d8b9c7149f3dd54d86103d08fd301fa25 --- /dev/null +++ b/lectures/revealjs/slides.css @@ -0,0 +1,15 @@ +.paragraph { + text-align: left; +} + +.ulist { + text-align: left; +} + +.center-paragraph { + text-align: center; +} + +.smaller { + font-size: 80% +}