Climbing time. IIZO3030, IIO11100, IIM50300 Pekka Melgin H3173 Aleksi Olkkonen H4198. Loppuraportti

Samankaltaiset tiedostot
Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Lomalista-sovelluksen määrittely

Projektinhallintaa paikkatiedon avulla

Projektityö: Mobiiliajopäiväkirja. Mikko Suomalainen

Visual Case 2. Miika Kasnio (C9767)

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

AC Hannes Statistics Tool. Ilkka Hakkarainen

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

JS-kehitys - yleiskuvaus. TIEA255 - Juho Vepsäläinen

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio

Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen

Testidatan generointi

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Tapahtumakalenteri & Jäsentietojärjestelmä Toteutus

Tietokantasovelluksen määrittelydokumentti

IIO10200 Tietokantaohjelmointi (4 op)

TermBase NET versio (Beta)

IIO30100 TIETOKANTOJEN SUUNNITTELU (6 OP)

Ohjelmiston toteutussuunnitelma

TOIMINNALLINEN MÄÄRITTELY MS

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Luottamuksellinen sähköposti Trafissa

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Internet-pohjainen ryhmätyöympäristö

EDUBOX opetusvideopalvelu

T&M Autori Versio Series 60 -puhelimiin

IIZO3030 TIETOKANNAT (5 OP)

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Action Request System

IIO10200 TIETOKANTAOHJELMOINTI (4 OP) OPINTOJAKSON ESITTELY JOUNI HUOTARI

TTZC0800 TIETOKANNAT (5 OP)

Helsingin Sanomat ipad

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Uudelleenkäytön jako kahteen

opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

IIO30200 TIETOKANNAN HALLINTA (5 OP)

Kurssin hallinta -työväline

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Google Cloud Print -opas

Digitaalisen median tekniikat Luento 1: Intro

Raporttiarkiston (RATKI) käyttöohjeet Ohjeet

Asiakas ja tavoite. Tekninen toteutus

IIO30100 Tietokantojen suunnittelu (6 op)

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Luottamuksellinen sähköposti Lapin yliopistossa. Ilmoitusviesti

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AsioEduERP v12 - Tietoturvaparannukset

Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE. Kirjautuminen Moodleen ja työtilan valitseminen

Convergence of messaging

Järjestelmäarkkitehtuuri (TK081702)

PILVIPALVELUT HYÖTYKÄYTÖSSÄ. Jarkko Muhonen TeamProg

SOVELLUSPROJEKTIN ARVIOINTILOMAKE

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

A4.1 Projektityö, 5 ov.

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

IIO30100 Tietokantojen suunnittelu (6 op)

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita.

Ohjelmistojen mallintaminen, mallintaminen ja UML

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Googlen pilvipalvelut tutuksi / Google Drive

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

IIO30200 Tietokannan hallinta (5 op)

OPETUSSUUNNITELMA TUUPALAN KOULU. Tietotekniikka. valinnainen. 8. ja 9. luokat

Matematiikan oppifoorumi Projektisuunnitelma

Yksityiskohtaiset ohjeet. TwinSpacen käyttäminen

CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö

LOPPURAPORTTI Paperikonekilta Versio 1.0

Tietotekniikan Sovellusprojektit

Käyttöohje. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Vaatimusdokumentti v. 1.0

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

ecome Markkinoiden kehittynein julkaisujärjestelmä

Web sovelluksen kehittäminen sähkönjakeluverkon suojareleisiin

Ehdotusjärjestelmä. Henri Ylikotila. Finto-projektin laajennetun projektiryhmän kokous Esityksen kalvot:

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Googlen pilvipalvelut tutuksi / Google Drive

Pika-aloitusopas. Haku Voit etsiä sivustoja, henkilöitä tai tiedostoja. Sivuston tai uutisviestin luominen

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Tilastokeskuksen rajapintapalveluiden käyttöönotto MapInfo - ohjelmistossa Ohjeita laatiessa on käytetty MapInfon versiota 11.5.

PROJEKTISUUNNITELMA. FotMana17

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka

INTINU13A6 Java sovellukset

Käyttöohje. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Liikkuva-sovellusprojekti

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Ylläpito-ohje. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

Send-It ilmoittautumisjärjestelmä (judotapahtumat Suomessa)

Internetin hyödyt ja vaarat. Miten nettiä käytetään tehokkaasti hyväksi?

Maiju Mykkänen Susanna Sällinen

Keskustelusivusto. Suunnitteludokumentti

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Transkriptio:

Climbing time IIZO3030, IIO11100, IIM50300 Pekka Melgin H3173 Aleksi Olkkonen H4198 Loppuraportti 4.2015 Ohjelmistotekniikan koulutusohjelma Tekniikan ja liikenteen ala

1 Sisältö 1 Johdanto... 3 2 Yleiskuvaus... 3 2.1 Sovelluksen kuvaus... 3 2.2 Ongelma... 4 3 Toteutus... 5 3.1 Vaatimusmäärittely... 5 3.2 Suunnittelu... 6 3.3 Tietokannan suunnittelu ja luonti... 7 3.4 Koodaaminen... 7 3.5 Sovelluksen kokonaisrakenne... 9 3.6 Funktiot ja luokat... 9 3.7 Työnjako... 9 4 Ongelmat... 10 5 Lähdekoodi... 10 6 Itsearvio... 11 6.1 Tietokannat... 11 6.2 Palvelinohjelmointi... 11 6.3 Ohjelmistosuunnittelu... 12 Liitteet... 13 Liite 1. Prototyypit/mockup... 13 Liite 2. Käsitemalli... 16 Liite 3. Luokkamalli... 17 Liite 4 Sekvenssikaavio suorituksen lisäämisestä... 17

Liite 5 Sekvenssikaavio sisäänkirjautumisesta... 18 2 Liite 6 Sekvenssikaavio uloskirjautuminen... 18 Liite 7 Sekvenssikaavio reitin lisäämisestä palveluun... 19 Liite 8 Kokonaisrakenteen kuvaus... 19 Liite 9 Commit historia... 19

3 1 Johdanto Tämä dokumentti liittyy Jyväskylän Ammattikorkeakoulun opintojaksojen IIZO3030 Tietokannat, IIO11100 Ohjelmistosuunnittelu sekä IIM50300 palvelinohjelmointi loppudokumentointiin Harjoitustyön tavoitteena on tutustuttaa opiskelija www-palvelinsovelluksen toteuttamisen periaatteisiin ja rajoitteisiin. Osaa toteuttaa tietokantaratkaisuun pohjautuvan www-palvelinsovelluksen ja osaa hyödyntää palvelinohjelmien ominaisuuksia sovelluskehityksessä. Ymmärtää tietokantajärjestelmän yleisen rakenteen ja toimintaperiaatteen, osaa luoda ja suunnitella tietokannan sekä osaa käyttää tietokantaa. Tuntee ohjelmistosuunnittelun eri vaiheet sekä keskeiset käsitteet ja yleisesti käytetyt toimintatavat ja kuvauskielet. Harjoitustyöhön kuuluu suunnitelma joka toteutettiin ohjelmistosuunnittelu-opintojakson vaatimusten mukaisesti. Laaja ja kattava tietokanta suunniteltiin ja toteutettiin Tietokannat-opintojakson harjoitustyönä. Palvelinohjelmointi-opintojaksossa tuotettiin varsinainen sovellus. Tässä dokumentissa käytetään termiä crag osoittamaan luonnosta löytyviä kalliomuodostelmia tai isoja lohkareita jotka voivat sisältää yhden tai useampia reittejä. 2 Yleiskuvaus 2.1 Sovelluksen kuvaus Tuotettava ohjelmisto on selaimessa toimiva palvelu, jonka tarkoituksena on toimia kiipeilyharjoittelun seurannan apuna. Käyttäjä voi rekisteröityä palveluun joka mahdollistaa omien harjoituskertojen tietojen tallennuksen palvelimelle omaksi ja muiden nähtäväksi. Harjoituskertoja voi tallentaa sekä sisällä, että ulkona suoritettavaan harjoitteluun. Palvelusta löytyy ulkoa löytyviä crageja jotka sisältää reittejä. Käyttäjä

pystyy myös lisäämään omia löytämiään reittejä sekä crageja palveluun, joita käyttäjät voivat kiivetä. Näitä pystyy myös selaamaan. 4 Palvelun käyttöympäristönä toimii Internet-selain. Tämä mahdollistaa palvelun käyttämisen monella eri laitteella käyttöjärjestelmästä sekä näytön resoluutiosta riippumatta. Tällä hetkellä palvelu on optimisoitu vain mobiilikäyttöön. Palvelun tarvittavan toiminnalisuuden tuottamiseen käytettiin seuraavia teknologiota/työkaluja: - Palvelimena toimii LAMMP-pohjainen(LAMP+MongoDB) Ubuntu 14.04.2 LTS osoitteessa: www.climbingti.me - Apache versio: 2.4.7 - PHP versio: 5.5.9 - Tietokannnanhallintajärjestelmänä toimii MariaDB 10.0.17 - MongoDB 3.0.0 - HTML5 & CSS3 - Jquery 2.1.3 - Google Maps Javascript API V3 - Google maps Geolocation-marker extension/plugin - Chart.js - Image.class.php Manuel Reinhard, manu@sprain.ch 2.2 Ongelma Kynä ja paperi liian työlästä ja hidasta käyttää, huono käyttöliittymä. Paperille liian vaikea laittaa tietoa ylös, pitää ajatella enemmän. Statistiikan kerääminen paperille talletetuista tiedoista on äärimmäisen vaikeaa sekä työlästä. Ei ole olemassa tarvittavaa sovellusta. Kaikilla on joko puhelin tai tietokone. Webbi-pohjaiset palvelut/softat isossa nousussa. Nyky-aikana kaikki on puhelimessa tai netissä.

5 3 Toteutus 3.1 Vaatimusmäärittely Kiipeilyreenikerrat joutuu kirjoittamaan kynällä paperille. Nykypäivänäkään ei ole vielä olemassa kunnollista palvelua johon voisi kirjoittaa omat reenit muistiin. Ohjelmalla ratkaistaan kiipeilyn harjoittelemisen datan tilastointi. palvelun/ohjelman ominaisuudet: - profiili(käyttäjätunnukset yms.) - suoritukset - reitit - topatut reitit - yritykset - reittien greidaus - fingerboard pidot - muiden käyttäjien profiilien selaaminen ja kommentointi - reittien paikkojen merkitseminen - statistiikka - kuvien lisääminen User storyt: - käyttäjänä haluan tallentaa suoritukseni nettiin (topatut reitit, yritysten määrä, fingerboard pidot, campus (metolius(4inch), moon spacing (the standard 22cm)), sis. reittien greidit, otetyypit esim. krimppi, slope jne. ) - käyttäjänä haluan selata aikaisempia suorituksiani - käyttäjänä haluan nähdä suoritusteni statistiikkoja - käyttäjänä haluan nähdä muiden käyttäijen suorituksia - käyttäjänä haluan merkata reittejä mitä olen löytänyt/luonnosta löytyneitä reittejä - käyttäjänä haluan myös rekisteröityä palveluun jotta tietoni tallentuisivat palveluun - käyttäjänä haluan ehdotuksia reiteistä jotka voisivat olla minulle sopivia

fdgff fff ff fff ff fff ff fff fff ff fff ff fff ff fff fff 6 - käyttäjänä haluan katsoa muiden käyttäjien profiileja - käyttäjänä haluan voida ehdottaa jo entuudestaan mentyjen reittien greidauksia - käyttäjänä haluan lisätä kuvia palveluun - vierailijana haluan selata palveluun lisättyjä reittejä - vierailijana haluan kokeilla palvelua ensin ilman rekisteröitymistä 3.2 Suunnittelu Projektin toteutuksessa käytettiin aluksi Google Drivea säilyttämään lähdekoodit. Työn edetessä huomattiin tämän ratkaisun täydellinen sopimattomuus sovelluskehitykseen, joten siirryttiin nopeasti käyttämään Gittiä versionhallintana. Projekti aloitettiin määrittelemällä sovelluksen tärkeimpien toimintojen vaatimukset, muun muassa user storyja hyväksikäyttäen. User storyja miettittiin projektin toteuttajien (innostuneita kiipeilijöitä) omien toiveiden pohjalta. Suunnittelun alkuvaiheessa laadittiin myös alustavia käyttöliittymäprototyyppejä. kuvio 1 prototyyppimalleja. Näiden jälkeen aloitettiin luokkamallien suunnitteleminen. Tässä vaiheessa huomattiin että nykyisillä taidoilla luokkien suunnitteleminen etukäteen osoittautui erittäin

7 hankalaksi, joten tehtiin päätös suunnitelman täydentämiseen toteuttamisen lomassa, ja siirryttiin tietokannan suunnitteluun ja luontiin. 3.3 Tietokannan suunnittelu ja luonti Käsiteanalyysi suoritettiin aluksi ja se löytyy täältä. Tietokannan suunnittelussa ei ilmennyt projektia seisauttavia ongelmia. Kannasta tuli laaja sekä kattava. Suunnittelussa huomattiin suoritusten merkkaamiseen vaadittavien taulujen rakenteet olivat hyvin yhdenmukaisia toistensa kanssa. MariaDB:ssä tauluja olisi tullut neljä (4) kappaletta joiden kentät olisivat olleet identtisiä yhtä tai paria saraketta lukuunottamatta. Päädyttiin ratkaisuun suoritusten säilyttämiseen MongoDB:ssä. kuvio 2 tietokannan yleisrakenne kuvattuna. 3.4 Koodaaminen Projektin koodaaminen aloitettiin tuottamalla ensin prototyyppien mukaisesti layoutit sovellukselle. Tämä vaati monia työtunteja HTML:n, CSS:n ja JavaScriptin kanssa. Front-end puolen valmistumisen jälkeen alettiin työstämään Back-endiä. Tämä toteutettiin käyttämällä php-ohjelmointikieltä ja sen versiota 5.5.9.

8 Sovellus toteutettiin olio-ohjelmoinnin periaatteita hyödyntäen ja soveltaen. PHP:n ja MariaDB:n yhteydet toteutettiin PDO-ajuria käyttäen, ja kaikki sql-kyselyt suojattiin sql-injektiolta parametrisouduilla kyselyillä. MongoDB:n yhteydet hoidettiin käyttämällä PHP:n mongo-driver-moduulia. Kuvio 3 luokkamalli valmiista sovelluksesta.

9 3.5 Sovelluksen kokonaisrakenne kuvio 4 funktioiden suhteet toisiinsa sekä tietokantoihin 3.6 Funktiot ja luokat Funktioiden kommentointi hoidettiin PHPdocilla. Kyseisen dokumentoinnin näkee seuraavasta linkistä. Myös lähdekoodia voi tarkastella PHPdocin kautta. http://climbingti.me/phpdoc/climbphpdoc.html 3.7 Työnjako Työtä tehtiin yhteistyössä pääasiassa koulun tarjoamissa tiloissa, eikä erillisiä vastuualueita suunnitteluvaiheessa määritelty. Näiden yhteistyötyöskentelyjen lisäksi projekti eteni silloin tällöin myös projektin jäsenten omatoimisella työskentelyllä. Projektin alussa tuntimääristä pidettiin kirjanpitoa, mutta työskentelyn edetessä tämä jäi

10 vähemmälle huomiolle. Kaiken kaikkiaan projektiin kului aikaa noin 14 viikkoa yhtämittaista työskentelyä. Githubin commit-historiasta näkee työn etenemisen (yhteistyötyöskentelyjen commitit merkattiin Aleksi Olkkonen-käyttäjällä), katso liite 9. 4 Ongelmat Ongelmia tuli yhdellä taululla oli kolme vaihtoehtoista kohdetta. Ratkaisu vaihtoehtoina oli laittaa kaikki Foreign key:t not not nulliksi, toisena oli laittaa välitaulut jokaiseen kohtaan. Päädyttiin käyttämään välitauluja. Toisena ongelmana tuli suoritustietojen säilyttäminen MariaDB:ssä. Mariassa tauluja olisi tullut neljä (4) kappaletta joiden kentät olisivat olleet identtisiä yhtä tai paria saraketta lukuunottamatta. Päädyttiin siihen tulokseen että kaikki suoritustiedot säilytetään MongoDB:ssä. 5 Lähdekoodi Lähdekoodi on luettavissa php-highlighterin avulla seuraavista osoitteista: www.climbingti.me/highlighter.php www.climbingti.me/classes/highlighter.php www.climbingti.me/ajax/highlighter.php www.climbingti.me/includes/highlighter.php Palvelimelle on tehty testikäyttäjä, ara:pokemon666ara, jolla pääsee tarkastelemaan tiedostorakennetta ja selaamaan kaikkia tiedostoja. Sivu löytyy palvelimelta polusta /var/www/html.

11 6 Itsearvio 6.1 Tietokannat Pekka Melgin: 5 Paljon tauluja ja vielä enemmän yhteyksiä niiden välillä. MongoDB:n integrointi harjoitustyöhön. Aleksi Olkkonen: 5 Paljon tauluja ja vielä enemmän yhteyksiä niiden välillä. MongoDB:n integrointi harjoitustyöhön. Tietokanta suunniteltu yhdessä aivoriihessä. 6.2 Palvelinohjelmointi Pekka Melgin: 4 Aleksi Olkkonen: 4 Virheiden käsittely suurimmilta osilta puuttuu sekä syötteiden tarkistaminen koska aika alkoi loppumaan. Projektin parissa työskenteltiin jatkuvasti loppuun asti ominaisuuksia lisäillen ja parannellen, tietyt ominaisuudet ja toiminnot jäivät puuttumaan ainoastaan ajanpuutteen vuoksi. PHP:n koodaaminen kaiken kaikkiaan sujui kivutta.

12 6.3 Ohjelmistosuunnittelu Pekka Melgin: 3 Aleksi Olkkonen: 3 Vaatimusmäärittelyn tekeminen onnistui hyvin, ongelmat ilmenivät luokkamallin suunnittelemisessa, projektin laajuuden sekä ohjelmistosuunnittelun vähäisen kokemuksen vuoksi. Tästä johtuen luokkamallia suunniteltiin koodaamisen yhteydessä. Loppujen lopuksi kaikki vaadittavat dokumentit saatiin tuotettua.

13 Liitteet Liite 1. Prototyypit/mockup

14

15

Liite 2. Käsitemalli 16

17 Liite 3. Luokkamalli Liite 4 Sekvenssikaavio suorituksen lisäämisestä

18 Liite 5 Sekvenssikaavio sisäänkirjautumisesta Liite 6 Sekvenssikaavio uloskirjautuminen

19 Liite 7 Sekvenssikaavio reitin lisäämisestä palveluun Liite 8 Kokonaisrakenteen kuvaus Liite 9 Commit historia katso commit_historia.png