Dagbok Januar Uke 2 (7.1-11.1) Vi har lest halvveis på standard dokumentasjon og jobbet med forprosjektrapport. Vi har hatt vårt første møte med den interne veilederen vår Tor Hasle. Vi fortalte om at oppdraget gikk ut på å analysere store datamengder for å kunne utpeke hvilke rederier var de mest punktlige. Oppgaven vår var mest en backend-programmering og det var ikke stor krav til hvordan grafikken så ut. Videre snakket vi om hvilke verktøyene vi skal bruke for å utføre oppgavene. Vi fortalte at vi skal programmere med Python. Han anbefalte et program, Mathematica, som kunne brukes i sammenheng med Python og om å snake med en del lærere som hadde kunnskap om språket. Han sa at han ikke kunne hjelpe med den tekniske delen av oppgaven, men er full tilgjengelig for å hjelpe med den prosjekt delen. Vi ble bedt om å inkludere aktivitetsplan og use case diagram når vi leverer forprosjektrapport. Han mente også at det var lurt å vise forprosjektrapporten til oppdragsgiverne for å sikre at det ikke er noe misforståelse rundt oppgaven. Når det kom til dokumentasjonen, ønsker han at det er oversiktlig og presist, og ikke mye gjentagelser. Uke 3 (14.01-17.01) Vi jobbet videre med forprosjektet og snakket mer om hva oppgaven gikk ut på. Vi har også samlet en del spørsmål vi skal ta opp med oppdragsgiveren under møtet på torsdag. Uke 3 (17.01, 12:45-14:00) Vi hadde årets første møte med Vilhelm hos Xeneta. Veilederen fra skolen var også med i møtet og han snakket med oppdragsgiveren om hva oppgaven gikk ut på. Oppdragsgiveren
forklarte hvordan systemet var bygget opp og hvordan vi skulle arbeide med den ved å tegne et forenklet flowchart som viste dataflyten mellom komponentene som skal samarbeide med systemet vi kommer til å lage. Uke 4 (21.01-25.01) Vi fikk tilbakemelding på forprosjektrapporten med kommentar om å rette en del ting på det og legge til arbeids og fremdriftsplan før vi levere det. Det jobbet vi med hele uken. Vi fikk både skolen og oppdragsgiveren til å signere på avtale dokumentet. Uke 5 (28.1) VI har bestemt å spørre Vilhelm om vi kan få jobbe i deres lokale en gang i uken, helst en tirsdag. Vi brukte en del tid på å gå gjennom kildekoden til Xenetas API for å forstå hvordan vi skal jobbe med den. Uke 5 (29.1) Vi detaljerte kravspesifikasjonen. Vi startet med å lage use-case-beskrivelse av den første use case-en. Februar Uke 6 (4.2) Vi begynte å planlegge første iterasjon og bestemte at iterasjonslengden skulle være to uker. Uke 6 (5.2) Møte med Vilhelm. Han opprettet en testserver som vi skal forholde oss til. På serveren kjøres de samme prosessene som på produksjonsserveren (MongoDB, Celery, mail-server osv.) uten at den påvirker produksjonsserveren. Vi skal bruke testserveren til å teste implantasjonen vår. Han viste oss hvordan schedulene og AIS-dataene ser ut og hvordan vi skal parse AIS-data. En tredjeparts AIS-parser skal brukes.
Uke 7 (12.2) Vi startet i dag med å opprettet flere moduler som vi har tenkt å bruke. Eirik jobbet med å skrive pseudokode for metodene vi trenger og Altin jobber med å finne ut hvordan vi kan få tak filene fra email serveren. Uke 7 (15.2-16.2) Vi fikk beskjed av Vilhelm om å lage enhetstester (unit test) for programmet vi lager. Vi ble også bedt om følge pep8 standarden under kodeskriving. Altin prøvde å teste AIS-parseren som var installert på testserveren. Han fant ut at det oppstod segmentation fault etter at AIS-parseren hadde parset en del AIS-linjer. Han brukte en del tid på å prøve å finne årsaken og eventuelt en løsning til det. Haimanot og Eirik leste dokumentasjonen rundt den anbefalte AIS-parser programvare. Den er skrevet i C++. Det står mye om hvordan AIS-data er dekodet. Dokumentasjonen var på 2051. Det ligger i git hub. https://github.com/schwehr/libais/blob/master/docs/aivdm.txt Uke 7 (17.2) Altin opprettet en modul som skal brukes til å åpne filvedlegg fra shipmentlink.com og som skal sendes videre til en annen modul som parser schedule-filen. Han opprettet den sistnevnte filen. En klasse ble laget og flere metoder ble implementert ferdig. Haimanot har begynt med å lære seg det nye programmeringsspråket, Python. Uke 8 Eirik fortsatte med skriving av pseudokode i moduler som ble opprettet forrige uke. Altin fortsatte med ScheduleImporter-klassen, altså klassen som skal brukes til å parse rutetabellene sendt fra shipmenlink.com. Uke 8 (22.2) Vi hadde et kort møte med Vilhelm. Under møtet ble følgende bestemmelser tatt:
Systemet skal ikke ta imot oppdateringer av planlagte rute etter at skipet ruta gjelder for har forlatt havnen. Vi skal lagre mest mulig data, og dette vil si at alle rutetabellene (schedules) vi får tak i skal lagres i databasen som de er, i tilfelle Xeneta ønsker å referer til dem i framtiden. Når det gjelder logging, kommer vi til å logge : Exceptions: Hvis det skjer noe feil, slikk at vi kan lage enhetstester for de, slik at feilene kan håndteres neste gang de inntreffes. Hvis vi støter på en skip med udefinert rederi, Da søker vi i databasen etter mmsi til skipet, for å finne en match, og dermed finne hvilke rederi den tilhører Ellers legg alle slike skipene i en felles collection inntil rederiet skipet tilhører er funnet Hvis en prosess tar lang tid til å fullføre sin task, da må en mellomlagringsmekanisme på plass i tilfelle serveren går ned eller noe annet galt skjer. Enhetstest: Ha all testdata i en mappe som en tekstfil. Mars Uke 9 Vi bestemte oss for å jobbe hos Xeneta hver tirsdag. Vi fikk ikke gjort noe med prosjektet denne uken. Alle var opptatt denne uken med blant annet en oblig i et annet fag. Uke 10 (5.3) Altin jobbet videre med ScheduleImporter-klassen. Problemet akkurat nå med å parse schedule -filer fra shipmenlink.com er å fjerne repetisjoner i reiser for et skip og å finne en god lagringsstruktur på dette i databasen. Alltin kunne ikke jobbe mye med prosjektet på grunn av jobbintervjuer, der en av dem var i Trondheim. Eirik fant en annen tredjeparts AIS-parser som er kodet i Java. Han måtte endre en ganske stor del av koden for å tilpasse den til vårt behov.
Uke 11 Altin måtte jobbe hele uken og kunne ikke jobbe med hovedprosjektet. Eirik fortsatte med AISparseren. Kravspesifikasjonen ble også gjennomgått muntlig og tilpasset til å være mer spesifikk om datalagringen. Uke 12 (19.3-21.3) Altin fant en løsning på problemene med ScheduleImporter-klassen. Klassen kan nå lage en liste av alle reiser fra en havn til en annen for alle skip. Under møtet med Vilhelm i dag fant han ut hvordan man henter havnkoden til en havn. Vilhelm hadde laget en modul for dette og sa at jeg burde bruke dette. Uke 13 (22.3) Datakildene vi skal jobbe med er ikke strukturert som vi tenkte de skulle være og det tok mye mer tid enn forventet å sette seg inn i det. Det er mye mangel i informasjonen vi får, vi trodde at vi ville se relasjon mellom rederier og skipene. Vi antok at hver skip tilhørte en fast rederi, men det er ikke tilfellet. En del rederier kan leie ut eller leie en skip. Da kan vi ikke anta at skipet under reisen tilhører en rederi. Først måtte vi sette oss inni en AIS-parser som var foreslått av oppdragsgiveren. Det tok en del tid å gjøre det, ettersom både programmeringsspråket og databasehåndteringssystemet var nytt for oss. Etter hvert fant vi ut at den AIS-parseren vi jobbet med hadde noe feil i seg, vi fikk segmentation fault, og vi kunne ikke finne ut hva som forårsaket problemet, og vi var nødt til å finne ut en annen AIS-parser. Det tok også sin tid. Til slutt fant Erik en AIS-parser som er kodet i Java, han måtte modifisere den veldig mye. Han måtte sette seg inni mange klasser Haimanot bruker regulære uttrykk (regex) for å trekke ut de dataene og lagrer dem i database. Altin hadde problemer med å lage liste over reiser som et skip skal ta eller har tatt, men han fant ut av det til slutt. Han jobber nå med å finne ut hvordan man ekstraherer filvedlegg fra e- postmeldinger som sendes til e-postserveren. Vi hadde et møte med veilederen og fikk følgende tips: - Skriv om problemene dere støtte dere på under prosjektet i rapporten
- Vi kan endre prioriteten, men vi må argumentere/resonnere for hvorfor dette var nødvendig, og dette må skje i overenstemmelse med oppdragsgiver. - Tenk på layouten til rapporten slik at vi kan legge headingene på plass, og da kan vi legge dokumentasjonstekst under sin tilhørende tittel, og dette gjør at dokumentasjonene kan vokse fritt frem. - Vi må sette av god tid til rapportskriving, for det er ikke kun sluttproduktet som gir uttelling, men en god rapport er også avgjørende for karakteren. - Vi må passe på å fordele oppgavene likt, slik at alle har noe å gjøre. - Testing av delsystemet bør værutført av andre gruppemedlemmer som ikke har kodet delsystemet. - Det er greit å spørre oppdragsgiveren hvordan han ønsker å få dataene lagret. Uke 12 (23.3-24.3) Altin hadde problemer med å ekstrahere filvedlegg fra e-postmeldinger. Han jobbet videre med å finne en løsning på dette og fant en løsning på det etter noen timer med prøving og feiling. Det viste seg at det var en import-setning som hindret at e-postmeldinger ble parset riktig. Altin fjernet denne. ScheduleImporteren fungere nå Uke 13 (25.3) Altin rettet på en del feil i koden for ScheduleImporter. Programmet kan nå parse Schedule-filer sendt via e-post. Uke 13 (26.3) Vi var hos Xeneta i dag (tirsdag). Altin brukte en god del tid på å fikse loggingsmeldingene. Vilhelm måtte oppdatere programvaren som hadde med logging å gjøre på testserveren. Logging av feilmeldinger og unntak fungerte ikke før nå på testserveren. Uke 13 (27.3--31.3) Altin lagde en enhetstest for ScheduleImporter-klassen og fikset noen feil i koden etter å ha testet den med enhetstesten. Nå vil schedule-filer fra shipmenlink.com parses automatisk når
de kommer inn og rutetabellene lagres i databasen. Nå gjenstår det kode som skal lage en liste over reiser i den kommende uken. April Uke 14 (01.4-07.4) Altin måtte skrive om store deler av dagboka. Altin la til oppgaver som var gjort og skal gjøres på Symphonical. Han ble ferdig med modulen som parser rutetabellene fra shipmentlink.com. All data lagres nå riktig i databasen. Både logging og testing fungerer riktig, men måtte omstruktureres. Altin rettet enhetstesten for ScheduleImporter. Uke 15 (08.4-14.4) Haimanot har begynt med en skisse for sluttdokumentasjonen. Altin begynte med å lage pseudokode for metoder som skal sjekke om et skip har ankommet et havn eller har begynte å reise. Metodene skal også kunne lagre statistikker. Uke 16 (15.4-21.4) Altin fortsatte med å implementere koden som skal sjekke om et skip har ankommet havn og som skal registrere statistikker. Eirik fortsetter med testing av ais-parseren. Uke 17 (22.4-28.4) Eirik ble ferdig med den endelige versjonen av AIS-parseren. Mai Uke 18 (29.4-05.5) Altin ble ferdig med all kode som har med registrering av statistikk i databasen for rederier. Altin lagde også enhetstester for dette. Mye arbeid gikk på å lage testdata for enhetstesten. Eirik lagde et designforslag for grafer på webside.
Uke 19 (06.5-12.5) Altin lagde funksjoner som returnerer statistikkdata for alle rederier. Altin måtte lage også testdata. Det ser ut som vi ikke får testet programmet med AIS-data. Vilhelm har ennå ikke kjøpt AIS-data. VI må dessverre bare bruke testdata (både AIS og aggregerte punktlighetsstatistikker for rederier) i dette prosjektet. Haimanot og Eirik skrev i dokumentasjonen. Haimanot fikk ansvar for prosessdokumentasjon. Eirik og Altin fikk som hovedansvarsområde å skrive i produktrapporten. Uke 20 (13.5-19.5) Arbeidet på produktet ble avsluttet i dag. Selv om det er en feil med Celery og logg, så må vi ignorerer det og fokusere bare på rapporten. Alle i gruppen skrev på sluttrapporten. Det var mye diskusjon, og alle kom med forslag til hvordan vi burde skrive om de forskjellige delene av rapporten. Uke 21 (20.5-26.5) Vi ble ferdig med å skrive sluttrapporten. Gruppen hadde fordelt mellom seg hvem som skal skrive de forskjellige delene av rapporten. Etter vi ble ferdig med hver vår del, gikk vi gjennom de andre rapportene andre har skrevet og kom med forslag til forbedring. Juni Uke 22 (27.5-2.6) Sluttrapporten ble overført til Microsoft Word 2013 slik at dokumentet kan ha et ønsket format og mal. Google Docs mangler disse funksjonalitetene. Vi klargjorde rapporten. Rapporten ble skrevet ut og bindet. Vi leverte tre eksemplarer; en til HiOAs administrasjon og to til Thor Hasle.
Uke 23 (3.6-9.6) Vi forberedte oss til presentasjonen av hovedprosjektet. Vi snakket med veilederen og spurte om veiledning til presentasjonen. Alle leste det som står i standarddokumentasjon om hvordan man forbereder og presenterer et prosjekt. Plakaten ble laget ferdig og lastet opp på siden.