Dette prosjektet er tilknyttet emnet IT1901 Informatikk prosjektarbeid I.
- Selve kodingsprosjektet ligger i mappen
foodie
. Her er prosjektet delt inn i tre moduler: core, ui og rest. - Kjernelogikken og filbehandling, samt tester til disse klassene ligger i mappen
core
. Logikken er skrevet i Java og tilknyttede tester med JUnit 5. Vi har valgt å bruke Jackson-biblioteket for å lese og skrive JSON objekter til fil. - Design av brukergrensesnittet er laget med JavaFX og kontroller-klassene som styrer dette ligger i
ui
. - REST-APIet og restserver ligger i mappen
rest
, og er implementert med Spring Boot. - Brukerhistorier som viser appens hovedfunksjonalitet ligger i mappen
foodie
. - Dokumentasjonen for hver release ligger i mappen
docs
.
Prosjektet bruker Maven til bygging og kjøring. For å kjøre prosjektet, skriv følgende kommandoer i terminalen. Dette kjører også alt av tester.
cd foodie
mvn install
cd rest
mvn spring-boot:run
for å starte serveren- Åpne en ny terminal og skriv
cd foodie
mvn -pl ui javafx:run
For å se appen i GitPod må du inn på Remote Explorer og trykke på "Open browser" på port 6080. For å avslutte appen, kryss ut appen (øverst til høyre) og lukk app-vinduet. For å avslutte serveren, gå inn i terminalen der serveren ble startet og skriv Control + C
.
Vi bruker jlink og jpackage for å lage et "shippable product" av vår applikasjon. jlink genererer en kjørbar fil (.exe, .app), mens jpackage oppretter installasjonsprogrammet for den kjørbare filen. Installasjonsfilen kan kjøres på en annen maskin med samme operativsystem. jpackage vil lage en .dmg fil for Mac, .msi fil for Windows og .deb eller .rpm for Linux.
Applikasjonen kan kjøres med disse tilleggene lokalt på IDE, men ikke i Gitpod, grunnet at "fakeroot" ikke er tilgjengelig.
For å starte jlink og jpackage skriv følgende kommandoer i terminalen:
cd foodie
mvn install
cd rest
mvn spring-boot:run
for å starte serveren- Åpne en ny terminal og skriv
cd foodie/ui
mvn clean compile javafx:jlink jpackage:jpackage
Vi har brukt følgende verktøy tilknyttet kodekvalitet:
- Checkstyle - sjekker mer overfladiske og stilmessige egenskaper til koden som tekst.
- Spotbugs - analyserer koden for vanlige feil.
- Jacoco - samler inn og presenterer informasjon og testdekningsgrad.
For å kjøre alle testtilleggene, skriv følgende kommandoer i terminalen:
cd foodie
mvn verify
Jacoco genererer en rapport som viser testdekningsgrad. Denne ligger i mappen target/site
i ønsket modul. Åpne filen index.html med Live Server for en god visuell representasjon.
Vi har brukt Scrum som en del av vår utviklingsprosess. Scrum er et rammeverk for å støtte smidig utvikling av informasjonssystemer.
Her struktureres utviklingen i sykler kalt sprinter. I starten av hver sprint har vi hatt et møte for å sette opp en Sprint backlogg, som ligger i mappen docs
. Her ble det også foretatt en vurdering av tidligere arbeid. Vi har møttes minst to ganger i uken for å jobbe sammen med prosjektet. Da har vi vekslet mellom parprogrammering og programmering individuelt.
Vi har hatt en god og strukturert arbeidsflyt underveis i utviklingsprosessen. Hver milestone i prosjektet er tilknyttet en sprint. For hver sprint har vi benyttet boards på Gitlab for å danne en oversikt over alle issues (kodingsoppgaver) tilknyttet denne sprinten. Her kan man se hvilke issues som gjenstår å løses, er under arbeid og er løst. Hvert issue ble merket med passende labels og tildelt et eller flere av gruppemedlemmene. Når et gruppemedlem tok på seg et issue, opprettet de en branch tilknyttet dette issuet. Etter at et issuet var løst, ble det opprettet en merge request fra tilknyttet branch til master. Vi har brukt code review, slik at et av de andre gruppemedlememmene så over merge requesten og ga en kort tilbakemelding. Dersom vedkomne var fornøyd med endringene, ble branchen merget med master.