TimeWarriors, Grupp 1

Relevanta dokument
Filhanterare med AngularJS

Slutrapport. KOM - Linnéuniversitetet. Alva Fandrey. Jonas Erixon. Lukas Nilsson. Sofia Björkesjö

SLUTRAPPORT WEBBPROJEKT 1

Cob Media. Linnéuniversitetet - 1DV411 Webbprojekt I - Slutrapport

Kommunal Jämförelsetjänst

PROJEKT ALBYLEN. Datum: 25 mars AV: Magnus Lindgren, Mattias Jonsson, Alexander Paskota, Jimmie Yngvesson, Erik Nilsson

Rabattsystem TEXTILGALLERIAN RABATTSYSTEM

Intra EV. Webbprojekt I, 1DV411. Alex Driaguine. Kristoffer Karlsson. Martin Carlsson. Joakim Holmewi. Mattias Johansson. Uppdragsgivare: Grupp 4:

Slutrapport - Intranät

1DV411 Webbprojekt I Slutrapport

HejKalmar app. Projektrapport. Webbprojekt I

Röna fingrar e gött o ha:) SLUTRAPPORT BUDGETSYSTEM LNU

Projekt Effekt. Mjukvaruutvecklingsprojekt i grupp, 1DV611. Uppdragsgivare: Effect reklambyrå AB

En webbtjänst som är skapad i kursen 1DV611 - Mjukvaruutvecklingsprojekt i grupp.

Rapport Epaper. 1DV411, Webbprojekt I. Författare och termin: Joar Leth Frida Källberg Johan Sundén Mikael Östman VT13

sida 1 Grupp 6 co-browsing 1DV411 - Webbprojekt I Markus Axelsson Stavros Gemitzoglou Axel Hernborg Joakim Jonsson Rickard Karlsson Peter Magnusson

Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling

Slutrapport. Andreas Fürst, Martin Åhlin, Stefan Sahlin, Jenni Berndtson, Jimmy Sigeklint

Introduktion Vi har som uppgift att göra ett systemutvecklingsprojekt åt en kund. Målet är att tillfredställa alla behov denne kund har.

Matematikdidaktik. 1DV411 Webbprojekt I

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

Har du läst kursen på Campus eller distans Campus 8 53% Distans 7 47%

SLUTRAPPORT. Projekt Pion. Medverkande: David Strömbom, Morgan Nadler, Cheng Fong, Alexander Lind, Dzemal Becirevic,Tapani Välijeesiö

LiTH Segmentering av MR-bilder med ITK Efterstudie MCIV. Anders Eklund. Status

Connect medarbetarappen

Människa dator- interaktion Therese Andersson, Fredrik Forsmo och Joakim Johansson WP11D. Inledning

YH, Systemutvecklare agil webbprogrammering 400 Yh- poäng (utbildningsnummer: ) Connectivity och Internet of things IoT

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Projektplan, Schemaläggning/lokalbokning för Linnéuniversitetet 2012

Delta i undervisning online via Zoom

Projektrapport COURSEPRESS

Kravspecifikation. LiTH Segmentering av MR-bilder med ITK Anders Eklund Version 1.0. Status

Projektanvisning. Webbsideprojekt. Författare: Johan Leitet Version: 2 Datum:

Standardisera teknisk miljö i allmänna salar

INFORMATION TILL PEDAGOGER

AirPatrol WiFi Version 2 Fullständig Manual. for ios V4.2

Man kan sitta hemma och se föreläsningen. Vi som har längre till studieorten får fördel

Kursplan Webbutveckling 2, 100p Läsår

Kortfattad instruktion för installation och användning av streckodsapplikationer

Solvändan slutrapport Daniel Hallqvist, Therese Samuelsson & Emil Carlsson

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

Erik Lundgren GarageLoppisen.se. Projekt i kursen Individuellt Mjukvaruutvecklingsprojekt, 1dv430

Visualisering och lagring av tracerouteresultat

Projektplan. LiTH Segmentering av MR-bilder med ITK Anders Eklund. Version 1.0. Status. Bilder och grafik projektkurs, CDIO MCIV LIPs

Logistiksystem Päron AB Bakgrund Problembakgrund Krav på lösning Lösningen

Vis it. jquery jquery används lite överallt i appen på olika sätt. Det främsta användningsområdet är vid selektering och manipulering av HTML element.

MANUAL FÖR STÖDCHATTEN KÄRLEKEN ÄR FRI

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Webbteknik II - 1DV449 Laboration 3

Dokumentation och presentation av ert arbete

E-Control. Energy Control, den smarta vägen till ett energisnålt hem.

Sales Scenario bloggradio

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Projektuppgift- Mashup- Applikation

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

Efterstudie. Redaktör: Jenny Palmberg Version 1.0. Status. LiTH Fordonssimulator. Granskad Godkänd. TSRT71 Jenny Palmberg

Mighty. Mobilapplikation för evenemang

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

hypernet Direkt Användarmanual för Personal Version 1.0

Programmera i teknik - kreativa projekt med Arduino

Slutrapport YUNSIT.se Portfolio/blogg

Cambros elektroniska utvärderingssystem

Gillakampen. av Merkur Hoxha WP

David A, Niklas G, Magnus F, Pär E, Christian L CHALMERS INLÄMNING1. IKOT Grupp B4

Dokumentation och presentation av ert arbete

Användarmanual Vklass lärplattform. Student/Elev

Installations- och bruksanvisning

1DV405 - Databasteknik. Kursintroduktion. Så här är kursen planerad.

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

Webbtjänster med API er

Kom-igång med WiFi-bryggan. Technicolor TG234

LiTH. WalkCAM 2007/05/15. Testplan. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Videochat. Denna manual beskriver Högskolan Dalarnas Videochat som används vid direktsända (streamade) föreläsningar.

Gränssnitt för FakeGranska. Lars Mattsson

Slutrapport - VisitOland

eller Smarta mobiler som hjälpmedel för personer med dövblindhet

E13 "Behind the Wild"

Programmera ett övergångsställe

Slutrapport Grupp 4, Webscraping

Att använda talsyntesen ClaroRead Pro Version 6

Installationsguide wifi-brygga. Technicolor OWA 0130

Dokumentation och presentation av ert arbete

Logga in med ditt användarnamn och lösenord

First Class uppgift 2

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Sam Ansari Nv3a Tensta Gymnasium

1 INLEDNING. Välkommen till det digitala utbildningskortet.

Välkomna! Utveckling och drift av mjukvarusystem. Webbprogrammerare. #wplnu #udmlnu.

Idrottsapen. 1. Inledning. 2. Mål och syfte. 3. Projektbeskrivning

SP-1101W/SP-2101W Quick Installation Guide

Labrapport över Rumbokningssytemet Grupp:1

Undervisningen i ämnet mobila applikationer ska ge eleverna förutsättningar att utveckla följande:

Installations- och bruksanvisning

Från Smart TV till Smartare upplevelse Av: Kim Huber och Connie Huanca

Uppdragsbeskrivning. Google Glass. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Erik Holmström Projektrapport- KalmarKendo Erik Holmström UD12 Individuellt mjukvaruutvecklingsprojekt

Lathund för Svenskt Näringsliv

Personas, Scenarier och Kravspecifikation

IKOT-Projekt. Kontaktdon till elbil

LectureMopp - Projekt i Nätverksprogrammering

Transkript:

TimeWarriors, Grupp 1 Kund: Johan Leitet, Linnéuniversitetet Kalmar Projektgrupp: Mathias Sundin, Richard Söderman, Anton Larsson, Wictor Kihlbaum, Lucas Wik, Jonas Tornfors Handledare: David Grenmyr Kurs: Webbprojekt I, 1DV411

Sammanfattning Vi fick i uppgift att till vår kund, Johan Leitet som jobbar på Linnéuniversitetet i Kalmar, att utveckla flera system. Leitet har som vision att den nybyggda datavetenskapliga avdelningen nere i hamnen ska förmedla en teknisk och framtidsinspirerad känsla. Systemens uppgift blev att underlätta för elever och lärare att se om en sal är bokad eller inte. Systemet är även till för att underlätta för lärare under föreläsningar samt på ett enkelt sätt visa tillgängligheten på lärare. I denna projektrapport kommer vi att gå igenom vårt genomförande, de problem som uppstod, vad som gick bra och vad som gick mindre bra under arbetsprocessen. 1

Innehållsförteckning Ordlista: 3 Inledning/bakgrund/Syfte och mål 4 Projektorganisation: 5 Genomförande: metodik, teknik 6 Resultatbeskrivning/måluppfyllelse 9 Avvikelser/Efterkalkyl 10 Slutsats 11 Förslag på vidareutveckling 12 Eventuell övertagande organisation 12 Litteraturförslag/dokumentationshänvisning 12 Förslag till förbättringar inför kommande projekt 12 2

Ordlista: Närvaro klient En webbapplikation som visar kort av varje lärare och med hjälp av indikation av olika bakgrundsfärger på dessa kort så kan man se om en lärare befinner sig i skolområdet. TimeLamp En del i vårt projekt som sköter det mesta med lamporna. TimeEditAPI En del i vårt projekt som läser av TimeEdit. TimeEdit En schema applikation som Linnéuniversitetet använder. IFTTT (If this then that) En webbtjänst som finns på ifttt.com. Slack En chat applikation som finns på slack.com. 3

Inledning/bakgrund/Syfte och mål Johan Leitet har länge velat att de nya lokalerna i hamnen ska ha en väldigt modern känsla som nästan känns som framtiden. Det ska finnas elektroniskt frostade glas, visualisering av commits, en sida där man kan se närvaro på lärarna, en klient som ska filtrera ut frågor och problem ur en Slack kanal så att detta kan visas på en skärm under ett undervisningstillfälle och även lampor som visar tillgänglighet på salarna i skolan. Vi fick då i uppgift att sköta de tre sistnämnda, nämligen: skärmar med lärarnas närvarostatus, skärmar med Slack chat samt lampor som visar tillgänglighet på salarna. Lärarnas närvaro som ska visas på skärmar började som en annan idé: att det skulle visas med små lampor vid namn Blink(1) mk2. Men detta ändrades till att bara visas på en hemsida istället. När en lärare går in eller ur skolområdet ska denna sidan automatiskt uppdateras för att visa andra om dem är tillgängliga eller ej. Detta för att man inte ska behöva gå förbi de andra lärarnas kontor för att sedan mötas av ett tomt kontor där läraren man söker brukar sitta. Detta gör det lättare för både den som söker personen och även de som sitter i sina egna kontor som då slipper undra om den som går utanför deras kontor söker dem eller inte. Lamporna ska primärt vara styrda av salarnas scheman det ska vara enkelt för någon som är utanför en sal att veta om de kan sätta sig ner och jobba i salen eller om den strax är bokad. Detta ska då ske utefter salarnas schema på TimeEdit och ska visas med hjälp av Philips Hue lampor. Är en sal ledig de närmsta timmarna så ska salens lampa lysa grönt, är den inom ett tidsinterval när salen närmar sig en bokning ska den lysa gult och när tiden är knapp så ska den lysa orange för att sedan slå över till rött när salen är upptagen. Det vi har gjort är ett system som binder ihop TimeEdit och Philips Hue lamporna. När ett rum är bokat och lamporna indikerar detta ska lamporna också indikera om en elev har en ny fråga eller om det är problem på föreläsningens stream. Detta ska ske genom att läsa av den chatt som används under lektionen. Denna chatt är något som har ändrats flera gånger under projektets gång. Från Adobe Connect till LiveCoding men sedan slutligen till att endast använda sig utav Slack. Genom Slacks API så ska vi läsa av chatten för att se om en elev har en fråga eller om de skriver att det är något problem med streamen. Har tittarna en fråga eller meddelande om problem med streamen så indikeras detta genom blinkning på lampan i rummet. Detta för att läraren ska kunna fokusera på undervisningen utan att behöva hålla koll på sin skärm hela tiden för att se om det är något problem eller om det finns några frågor på distans. Här kommer även en till del upp med att de meddelanden som är markerade som frågor eller problem ska visas på en skärm i salen som läraren lätt kan läsa. Meddelandena ska 4

därför visas på en applikation som visas på skärmen och denna applikation ska också kunna styras genom en administrationssida där de kan ta bort besvarade frågor och lösta problem med video ström, eller framhäva frågor som de ska prata om. Allt detta ville Leitet ha gjort i Node.js och att det ska vara väldigt lätt att vidareutveckla om intresset och/eller behovet för det uppstår. Projektorganisation: Kund: Johan Leitet Handledare: David Grenmyr Projektgrupp(TimeWarriors): Lucas Wik Projektledare Anton Larsson Kund och kravansvarig Mathias Sundin Kund och kravansvarig Jonas Tornfors Testansvarig Wictor Kihlbaum Teknisk ansvarig Richard Söderman Teknisk ansvarig 5

Genomförande: metodik, teknik Tekniken vi har använt på efterfrågan utav kunden är Node.js och då föll det sig naturligt att använda sig utav JavaScript som standardspråk. Vi har också använt oss utav websocket i form av ramverket Sockets.io, då vi jobbar mot en klient som ska köras i samband med snabba uppdateringar. Vi såg Sockets.io som bästa lösningen då det näst intill uppdaterar i realtid. För enhetstestning valde vi att använda oss utav testramverket Mocha. Vi valde Mocha för att det såg enkelt ut och fick det som rekommendation från vår handledare att det var bra när vi nämnde att vi hade studerat det. Tanken var att i slutet av varje iteration skulle vi testa systemet och uppdatera de nuvarande testerna. En utav våra klienter valde vi att bygga med hjälp av frontend ramverket Vue.js. Vi valde Vue.js på grund av tidigare erfarenheter och dess enkelhet. Genomförandet av projektet har utförts med en kombination av Unified Process och SCRUM. Vi använde oss utav denna kombination då det är det som skolan har lärt ut och att vi kände oss bekväma att jobba enligt de modellerna. Vi har inför varje vecka skapat iterationsplaner som grund för att veta vad vi ska arbeta med under veckan. Då vi har jobbat med mer än en uppgift i vårt projekt samtidigt så valde vi att dela upp arbetsuppgifterna i mindre grupper. Det här skapade en förbättring då vi kunde parprogrammera och arbeta med flera saker samtidigt samt effektivisera vårt arbete så mycket som möjligt. Enligt vår planering kom vi fram till att vi behövde arbeta 20 timmar varje vecka per person. Det vill säga 180 timmar per person för hela projektet. De här 20 timmarna är bara effektiv arbetstid med våra krav och med vår dokumentation. Eftersom vi har arbetat mot en fysisk produkt har vi valt att installera denna produkt i en specifik sal. Detta har gjort att vi under projektets gång suttit i samma sal hela tiden. Vi valde även att alltid sitta ihop i samma sal för att delprojekten mer eller mindre hörde ihop med varandra. 6

Detta har varit vår arbetsstation då vi satte upp våra Philips Hue lampor här som kan ses vid fönsterna (sal 106). Iterationerna inleddes varje vecka med ett möte med vår handledare. Detta möte resulterade i att vi i gruppen delade upp uppgifter som sedan genomfördes under dagen. För oss var kundkontakten viktig och därför hade vi ett möte tidigt varje vecka med kunden angående uppgiften vi blivit tilldelade. Anledningen till att vi ville ha handledarmöte och kundmöte tidigt i veckan var för att vi skulle stämma av så att projektet ligger i fas och är i riktning med kundens tankar. Resterande av veckan arbetade man med de ändringar som skulle göras, vidare arbete med baskraven samt potentiella nya krav. Vi har inte haft några kontinuerliga leveranser till vår kund. Vi har dock visat upp arbetet varje vecka och berättat om vad vi gjort. Vi valde att arbeta enligt denna process för att stämma av med kunden om vi uppfyllde kraven och om vi implementerade de funktioner som efterfrågades. Vi har fått riktlinjer utav vår handledare och kursansvarig och vi anser att riktlinjerna varit till mycket hjälp under projektets gång. Vi tyckte även att riktlinjerna var mycket tydliga. När det kommer till de olika delarna i projektet så har vi TimeLamp, Slack Reader, TimeEdit och IFTTT API. Alla delar är byggda med hjälp utav Node.js men de alla har sitt eget sätt hur de är uppbyggda. TimeLamp är en modulbaserad kontroller över Philips Hue lamporna. Med hjälp utav TimeEdit API:et skapas ett schema för TimeLamp som styr lampornas egenskaper. Uppgiften för vårt IFTTT API är att ta emot anrop från IFTTT tjänsten. Dessa anrop skapas av användare för närvaroklienten då de innehåller data som ska ändra status på en lärare. Den information vi är intresserade av är om en lärare är inom en radie för skolområdet eller ej. Vi är även intresserade om läraren befinner sig inom en radie för ett skolområde på annan 7

ort. Den här informationen skickas sedan vidare till en klient med hjälp utav websockets för att kunna uppdateras i realtid. Slack Reader läser av samtliga kanalers skickade meddelanden i team CoursePress. Detta sker med hjälp av Slacks real time messaging API vilket är websocket baserat. De skickade meddelandena hanteras enbart om de innehåller #!, #? och #I. Meddelanden som innehåller #? presenteras på en skärm som föreläsare sedan enkelt kan se utan att behöva stå vid en dator. 8

Resultatbeskrivning/måluppfyllelse Det vi har utvecklat är som tidigare nämnt uppdelat i fyra olika delar och vi kan stolta säga att alla fyra delarna har uppfyllt sina krav och blev redo för leverans. Vi lyckades med att tackla alla de nya krav som tillkommit under projektets gång. Som vi nämnde tidigare har vi arbetat i iterationer veckovis med 20 timmar för varje person. Varje vecka kunde inte alla nå upp till 20 timmar, delvis på grund av brist på arbete och personliga skäl. Med detta i baktanke så höll vi nästan tidsplanen men det saknas någon timme här och där. När det kommer till vår dokumentation så tycker vi den blev heltäckande för alla delar och har den information som vi anser vara väsentlig. Den funktionalitet som vårt delprojekt vid namn TimeLamp uppfyller idag är att med hjälp utav ett API som vi själva har skapat runt TimeEdit, läsa av olika bokningar på ett schema för ett specifikt rum. Med detta schema bygger TimeLamp upp ett eget schema som sedan används för att styra färgen på de olika Philips Hue lamporna som sitter i respektive rum. TimeEdit API läser av varje rums schema och skapar ett eget schema till sina lampor. Vi har även skapat ett energisparläge för lampan som vi kallar för NightMode. Energispararläget går igång fram mot kvällen och gör så att lampans ljusstyrka sänks samt att färgen ändras till mörkblå. Lamporna går bara in i NightMode då det inte är någon bokning på rummet lampan sitter i. I TimeLamp ingår även en av våra andra delar i projektet vid namn Slack Reader. Slack Reader s funktionalitet idag är att läsa av en specifik Slack kanal och leta efter specifika tecken. När den hittar ett av dessa tecken så skickar den vidare meddelandet till vår TV klient vars uppgift är att visa meddelandet som skrevs. Meddelandet skickas även till vår administratörs klient som är till för att manövrera TV klienten på olika sätt. Anledningen till att vi inte brutit ut Slack Readern från TimeLamp är att Philips Hue lamporna är kopplade till den. När någon använder sig utav de tecknen vi nämnde tidigare så blinkar lampan i blå färg för att visa att ett meddelande är motaget. Vårt sista delprojekt är ett API byggt kring IFTTT som vi använder för att visualisera lärarnas närvaro på en närvaroklient. Detta delprojekt ligger inte under TimeLamp utan vi har valt att bryta loss denna del ifrån de övriga delprojekten. Vi valde denna lösning då vårt API inte har några beroende utav de övriga delprojekten. Delprojektets uppgift idag är att ta emot data ifrån IFTTT tjänsten då den datan representerar närvarostatusen på lärarna för datavetenskapliga avdelningen. Detta presenteras sedan på vår närvaroklient med hjälp utav grönt, gult och rött ljus. 9

Avvikelser/Efterkalkyl I samråd med kunden kunde vi själva skapa våra krav utifrån hans tankar och idéer. Under projektets gång uppkom flera krav som både var med hög och låg prioritet. Alla våra krav blev uppfyllda och inga påverkande avvikelser uppkom. De avvikelser vi har haft är på grund av nya kravändringar ifrån kunden som resulterade i att tidigare krav föll bort. De krav som föll bort var alla krav för Blink(1) mk2, Adobe Connect och Livecoding.tv. Anledningen till att de här kraven blev ersatta är att vi inte skulle använda oss utav Blink lampan eller strömnings tjänsterna längre. Blink lampan blev istället ersatt med en närvaroskärm samt att i framtiden kommer Slack vara huvudchatten för alla strömnings tjänster för datavetenskapliga avdelningen på Linnéuniversitetet. 10

Slutsats Samarbetet mellan grupp och kund har fungerat bra. Det har fungerat bra då vår kund alltid varit tillgänglig för oss via mail, Slack och personlig närvaro. Grupparbetet gick bra då vi alltid suttit tillsammans på campus och arbetat. Vi har under projektets gång haft bra kommunikation, respekt och högt i tak till varandra. Kunden har varit väldigt lös med sina krav och haft svårt att hålla sig till den vision som han haft. Detta har gjort så att vi själva fått ta beslutet om kraven uppfyller hans vision eller inte och därmed har vi lagt mycket tid på våra krav. Vi har varit mindre bra på att dokumentera kontinuerligt och hade inte så bra struktur i början av vårt projekt. An av anledningarna till detta var dels för att vi missade att skicka in första milstenen och därmed fick vi ingen feedback i början av projektet. Ett annat skäl till att dokumentationen föll i glömska var för att det är väldigt lätt att fastna i att skriva kod. Tittar man på vårt projekt på kort och lång sikt ser vi näst intill inga fenomen som kan utdatera vårt arbete, det skulle i så fall vara om TimeEdit skulle ändra sin struktur helt och hållet. I så fall skulle vår webbskrapa sluta fungera och behöva en uppdatering. En risk för närvaroklienten är om IFTTT skulle stänga ner sin tjänst, då vi är beroende utav denna och skulle isåfall få hitta eller skapa en ny lösning. 11

Förslag på vidareutveckling Då TimeLamp är gjort för att kunna vidareutvecklas så finns det praktiskt taget oändligt många funktioner man kan lägga till där. IFTTT kan vidareutvecklas för att kolla om till exempel en lärare är sjuk. Sen vet vi inte om det är möjligt men på något sätt skapa recept åt användare i settings filen för att underlätta användarvänligheten men detta är inget vi har kollat upp om det fungerar. I Slack Reader kan man lägga till flera hashtags och lägga till mer funktionalitet för botten, exempelvis funktionalitet för att bannlysa en användare. Eventuell övertagande organisation Projektet är open source så vem som helst kan ta del utav detta, men i huvudtanke så har det varit utvecklat mot Linnéuniversitetet. Litteraturförslag/dokumentationshänvisning Vi har under projektets gång inte använt oss utav någon litteratur. Vi har istället lutat oss tillbaka och skrivit vår egna litteratur på vår Wiki sida under vår organisation på Github. Förslag till förbättringar inför kommande projekt Till kommande projekt rekommenderar vi att kontinuerligt uppdatera dokumentationen så att den alltid representerar vad som finns i projektet och inte låta det byggas upp och falla i glömska. Börja testa tidigt så det är enkelt att underhålla koden samt tidigt implementera något testramverk som underlättar testning. 12