{"version":1,"pages":[{"id":"-LK5fotNNhnSTqh_zvvL","title":"Ohjelmistokehityksen menetelmät ja käytänteet","pathname":"/","siteSpaceId":"sitesp_xSGwc","description":""},{"id":"-LK6HIpFQenzc88oY2mD","title":"Tavoitteet","pathname":"/tavoitteet","siteSpaceId":"sitesp_xSGwc","description":""},{"id":"-LXnkdU6Zw4cZqY5iKZu","title":"Työkalut","pathname":"/tyoekalut","siteSpaceId":"sitesp_xSGwc","description":""},{"id":"-Lz0UxyM52BOBqdWkcs4","title":"Projektityön rajaukset ja toimeksiannot","pathname":"/toimeksiannot-2020-01/toimeksiannon-rajaukset","siteSpaceId":"sitesp_xSGwc","description":"Toimeksiantoja projektityöhön.","breadcrumbs":[{"label":"Toimeksiannot"}]},{"id":"-Lz0UQlNUfvivDoIe8PG","title":"Palkanlaskenta","pathname":"/toimeksiannot-2020-01/palkanlaskenta","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustyöhön annettu toimeksianto","breadcrumbs":[{"label":"Toimeksiannot"}]},{"id":"-Lz0UsTzBOgiGR8Yk6-5","title":"Kilometrikorvaus","pathname":"/toimeksiannot-2020-01/kilometrikorvaus","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustyöhön annettu toimeksianto","breadcrumbs":[{"label":"Toimeksiannot"}]},{"id":"-Lz0dZcRN1a0oZIXPUnm","title":"Laskutus","pathname":"/toimeksiannot-2020-01/laskutus","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustyöhön annettu toimeksianto","breadcrumbs":[{"label":"Toimeksiannot"}]},{"id":"-MRUbPxnuNVW5FDbvxt2","title":"Laskun perintä","pathname":"/toimeksiannot-2020-01/laskun-perintae","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Toimeksiannot"}]},{"id":"-LK6IVVeeAKvEi1zNZnK","title":"Agile esimerkki, sykli","pathname":"/ketterae-ohjelmistokehitys/agile-esimerkki-sykli","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Ketterä ohjelmistokehitys"}]},{"id":"-LK6ZRAMLbqtcYgpS6Zm","title":"Agile, Tuotteen tehtävälista","pathname":"/ketterae-ohjelmistokehitys/agile-tuotteen-tehta-va-lista","siteSpaceId":"sitesp_xSGwc","description":"Esimerkki tuotteen tehtävälistasta.","breadcrumbs":[{"label":"Ketterä ohjelmistokehitys"}]},{"id":"-LK6RmeGNbfA4FgQ-kTm","title":"Agile, Käyttäjätarina ja käyttötapaus","pathname":"/ketterae-ohjelmistokehitys/agile-kaeyttaejaetarina-ja-kaeyttoetapaus","siteSpaceId":"sitesp_xSGwc","description":"Esimerkki käyttäjätarinasta ja käyttötapauksesta","breadcrumbs":[{"label":"Ketterä ohjelmistokehitys"}]},{"id":"-LK6Iaj-S0yGN5GQdGy2","title":"Agile muu materiaali ja lähteitä","pathname":"/ketterae-ohjelmistokehitys/agile-muu-materiaali-ja-laehteitae","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Ketterä ohjelmistokehitys"}]},{"id":"-LXbczBDoxY_aRXwyWCY","title":"Agile termit (scrum)","pathname":"/ketterae-ohjelmistokehitys/agile-termit-scrum","siteSpaceId":"sitesp_xSGwc","description":"Koostettu käytetyimpiä termejä joita vilisee puhekielessä. Nämä on hyvä ymmärtää.","breadcrumbs":[{"label":"Ketterä ohjelmistokehitys"}]},{"id":"-LzRjRkkpW2d4pRqJUUd","title":"Sanasto Git","pathname":"/versionhallinta/sanasto","siteSpaceId":"sitesp_xSGwc","description":"Sanastoa Git versionhallintaan. Termejä suomeksi ja englanniksi.","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LzTXkD7AkHsQBXV27dD","title":"Opas Gitin perusteisiin","pathname":"/versionhallinta/opas-gitin-perusteisiin","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LK6ItA879rRxxPS6Dhw","title":"Git perusteet 101","pathname":"/versionhallinta/git-perusteet-101","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LK6J7Pxjdud5U1EWDtf","title":"Git perusteet 102","pathname":"/versionhallinta/git-perusteet-102","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LK6JETafXlaNjlrftk2","title":"Git perusteet 103","pathname":"/versionhallinta/git-perusteet-103","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LK6JJSMF7DydvIOXzKl","title":"Git perusteet 104","pathname":"/versionhallinta/git-perusteet-104","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LK6JQrH54UejyjsWumX","title":"Git perusteet 105","pathname":"/versionhallinta/git-perusteet-105","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LX9R_PLwLb0OMIPkCNp","title":"Git perusteet 106","pathname":"/versionhallinta/git-perusteet-106","siteSpaceId":"sitesp_xSGwc","description":"Tavoitteena on oppia tekemään ensimmäinen merkintä versionhallintaan.","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LX9X5-0pUScs97A4n1x","title":"Git perusteet 107","pathname":"/versionhallinta/git-harjoitus-107","siteSpaceId":"sitesp_xSGwc","description":"Tavoitteena on saada koko kehitystiimiltä ensimmäiset merkinnät versiohallintaan.","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LX9_7vnUyE0zKOs4nKD","title":"Git perusteet 108","pathname":"/versionhallinta/git-harjoitus-108","siteSpaceId":"sitesp_xSGwc","description":"Tavoitteena on ymmärtää mikä on merge conflict ja miten sellainen selvitetään.","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LK6J0IWuk58ftnipyEH","title":"Git muu materiaali ja lähteet","pathname":"/versionhallinta/git-muu-materiaali-ja-laehteet","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Versionhallinta"}]},{"id":"-LzYEmJfUMeelpVAZEqg","title":"Ohjelmistotestauksen periaateet","pathname":"/yksikkoetestaus/ohjelmistotestauksen-periaateet","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LzcTsI238C_4QnKWXXl","title":"NUnit lisääminen VS2019","pathname":"/yksikkoetestaus/nunit-lisaeaeminen-vs2019","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LK6JfQeHzGQiGUWHIPy","title":"NUnit perusteet 101","pathname":"/yksikkoetestaus/nunit-perusteet-101","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LK6JkJ93Iuod3Kc0Xjg","title":"NUnit perusteet 102","pathname":"/yksikkoetestaus/nunit-perusteet-102","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LK6JqdR6zUGC-q_NNd7","title":"NUnit perusteet 103","pathname":"/yksikkoetestaus/nunit-perusteet-103","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LzYLc4NbdBIHvApoLp9","title":"NUnit perusteet 104","pathname":"/yksikkoetestaus/nunit-perusteet-104","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LzYLZgi044_0HvP551s","title":"NUnit perusteet 105","pathname":"/yksikkoetestaus/nunit-perusteet-105","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LzYLmfuL50G4rECWCnK","title":"NUnit perusteet 106","pathname":"/yksikkoetestaus/nunit-perusteet-106","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LK6JXTAaZ9Gkxd-Hx-j","title":"NUnit muu materiaali ja lähteitä","pathname":"/yksikkoetestaus/nunit-muu-materiaali-ja-laehteitae","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LK6KPBs7NsZlq3S9-S5","title":"TDD perusteet 101","pathname":"/yksikkoetestaus/tdd-perusteet-101","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LK6KUNkuLN4CViTnSEb","title":"TDD perusteet 102","pathname":"/yksikkoetestaus/tdd-perusteet-102","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LmGYpuohRxfbq-b4F0X","title":"TDD perusteet 103","pathname":"/yksikkoetestaus/tdd-perusteet-103","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"-LK6KL6zJYpzyIQ2TCi2","title":"TDD muu materiaali ja lähteitä","pathname":"/yksikkoetestaus/tdd-muu-materiaali-ja-laehteitae","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Yksikkötestaus"}]},{"id":"DCQhkM0BqgnwmkFDKza1","title":"Johdanto","pathname":"/uml-mallinnuskieli/johdanto","siteSpaceId":"sitesp_xSGwc","description":"UML (Unified Modeling Language) -kaavioiden perusteet.","breadcrumbs":[{"label":"UML mallinnuskieli"}]},{"id":"-LoqG1SN001E3TL-IXux","title":"Johdanto","pathname":"/relaatiotietokannat/johdanto","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LoqHwokperEG58xsn-M","title":"Sanasto","pathname":"/relaatiotietokannat/sanasto","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LyAsTg5dQLDHVc9so-x","title":"Mysql perusteet -videosarja","pathname":"/relaatiotietokannat/mysql-perusteet-videosarja","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LoqGPmMwna8ZhyZAWlY","title":"Pää- ja viiteavaimet","pathname":"/relaatiotietokannat/paeae-ja-viiteavaimet","siteSpaceId":"sitesp_xSGwc","description":"Luvussa käsitellään pää- ja viitevainten tarkoitusta sekä miten niitä tulisi käyttää.","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LoqjxNTxIBZu-fkqurf","title":"ER kaaviot","pathname":"/relaatiotietokannat/er-kaaviot","siteSpaceId":"sitesp_xSGwc","description":"Luvussa käsitellään Entity Relationship -kaavioita. Lyhennettynä ER tai ERD riippuen lähteistä. Niiden tarkoitus on olla apuna tietokannan suunnittelussa sekä kommunikoinnissa.","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LxqDinhxje08vvTG_sH","title":"Viite-eheys ja ACID","pathname":"/relaatiotietokannat/viite-eheys-ja-acid","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-Lofj6DEZ6MBYTGE1Xok","title":"SQL JOIN -lauseke","pathname":"/relaatiotietokannat/sql-join-lauseke","siteSpaceId":"sitesp_xSGwc","description":"Artikkelissa käydään läpi mikä JOIN -lausekkeen tarkoitus SQL -kielessä. Jos et ole opetellut SQL perusteita niin se kannattaa käydä ensin läpi.","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LoqkALflQ46cI07Aw7Q","title":"Normalisointi","pathname":"/relaatiotietokannat/normalisointisaeaennoet","siteSpaceId":"sitesp_xSGwc","description":"Luvussa käsitellään tietokantojen normalisointisääntöjä, jotka tulisi tuntea tietokantasuunnittelun vuoksi. Normalisointisäännöt ohjaavat kohti hyvää tietokantaratkaisua.","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-Lot3nrt7ciC_JZFtzy8","title":"SQL View","pathname":"/relaatiotietokannat/sql-view","siteSpaceId":"sitesp_xSGwc","description":"View on niin sanotusti virtuaalinen taulu, joka muodostetaan halutusta kyselystä.","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-MIOClPpr_NfVzMnuFPI","title":"Tehtävä 001 Tietokannan suunnittelu","pathname":"/relaatiotietokannat/tehtaevae-001-tietokannan-suunnittelu","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LoqkL6BBiYk3Be8bTn4","title":"Indeksointi","pathname":"/relaatiotietokannat/indeksointi","siteSpaceId":"sitesp_xSGwc","description":"Mitä tarkoitetaan tietokantojen indeksoinnilla.","breadcrumbs":[{"label":"Relaatiotietokannat"}]},{"id":"-LqqgHplF92DZykQ3Y8m","title":"Hitaat hakukyselyt","pathname":"/relaatiotietokannat/indeksointi/hitaat-hakukyselyt","siteSpaceId":"sitesp_xSGwc","description":"Luku pohjustaa asiaa miksi indeksit, taulujen osiointi ja muut vastaavat tavat ovat eduksi tietokantoja suunnitellessa.","breadcrumbs":[{"label":"Relaatiotietokannat"},{"label":"Indeksointi"}]},{"id":"-Lxa1CvB1SfYR99spTiK","title":"Esimerkkitietokannan käyttöönotto","pathname":"/sql-harjoitukset-ja-esimerkit/esimerkkitietokannan-kaeyttoeoenotto","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-LxaML9GyPHYOVLbThHK","title":"Mysql perusteet 101","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-101","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustietokanta https://dev.mysql.com/doc/sakila/en/","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-Lxa0dncn_ZbvTfcrFh0","title":"Mysql perusteet 102","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-102","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustietokanta https://dev.mysql.com/doc/sakila/en/","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-MFVqNDic41iqISQA8lU","title":"mysql-perusteet-102-vastaukset","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-102/mysql-perusteet-102-vastaukset","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"},{"label":"Mysql perusteet 102"}]},{"id":"-LxaDRG4HNdbFdxCg3mL","title":"Mysql perusteet 103","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-103","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustietokanta https://dev.mysql.com/doc/sakila/en/","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-MFVbl6yfU0xbbS2SqBu","title":"mysql-perusteet-103-vastaukset","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-103/mysql-perusteet-103-vastaukset","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"},{"label":"Mysql perusteet 103"}]},{"id":"-Lxa0sE4zbgwRnotOPNv","title":"Mysql perusteet 104","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-104","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustietokanta https://dev.mysql.com/doc/sakila/en/","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-MFVmmcseL27HQVw5o4X","title":"mysql-perusteet-104-vastaukset","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-104/mysql-perusteet-104-vastaukset","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"},{"label":"Mysql perusteet 104"}]},{"id":"-LxbjKidt9WaQ6q_4BOE","title":"Mysql perusteet 105","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-105","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustietokanta https://dev.mysql.com/doc/sakila/en/","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-MFVq_flNblC1M60vKl4","title":"mysql-perusteet-105-vastaukset","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-105/mysql-perusteet-105-vastaukset","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"},{"label":"Mysql perusteet 105"}]},{"id":"-Lxby0f1u-iTho9Fq7eZ","title":"Mysql perusteet 106","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-106","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustietokanta https://dev.mysql.com/doc/sakila/en/","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-MFVqoXhctycf40zfuI1","title":"mysql-perusteet-106-vastaukset","pathname":"/sql-harjoitukset-ja-esimerkit/mysql-perusteet-106/mysql-perusteet-106-vastaukset","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"},{"label":"Mysql perusteet 106"}]},{"id":"-LoimehEdk_KD4YpEvp6","title":"SQL hakukyselyjä (VANHAT)","pathname":"/sql-harjoitukset-ja-esimerkit/sql-hakukyselyjae","siteSpaceId":"sitesp_xSGwc","description":"Sivulle on kerätty harjoituksina tehtyjä kyselyjä. Kaikkia kyselyjä ei ole tarkistettu, joten niissä voi olla joitakin virheitä.","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-Mj4Zh3G6VrTM_W0R_XT","title":"SQL harjoitukset syksy 2021","pathname":"/sql-harjoitukset-ja-esimerkit/sql-harjoitukset-syksy-2021","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"}]},{"id":"-Mj4xDzA7Y8cs1uvoBGq","title":"Vastaukset SQL harjoitukset syksy 2021","pathname":"/sql-harjoitukset-ja-esimerkit/sql-harjoitukset-syksy-2021/vastaukset-sql-harjoitukset-syksy-2021","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SQL harjoitukset ja esimerkit"},{"label":"SQL harjoitukset syksy 2021"}]},{"id":"-LmujYHnZlD5BdQbUV0-","title":"TL;DR","pathname":"/miten-yrittaejaenae-voin-hyoetyae-ohjelmistokehityksen-ostamisesta/tl-dr","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Miten yrittäjänä voin hyötyä ohjelmistokehityksen ostamisesta?"}]},{"id":"-LWS2RAb6FwMr6qu3Vb5","title":"Toimeksianto 2019/01","pathname":"/toimeksiannot-2019-01/toimeksianto-2019-01","siteSpaceId":"sitesp_xSGwc","description":"Aiheiden opiskeluun suunniteltu toimeksianto. Sisältö vastaa esimerkkiä työelämään tehdystä toimeksiannosta.","breadcrumbs":[{"label":"Toimeksiannot (2019/01)"}]},{"id":"-LKBFgkhytEk0K06sZtM","title":"Käytänteet ja menetelmät","pathname":"/toimeksiannot-2019-01/projekti-2018-01-kaeytaenteet","siteSpaceId":"sitesp_xSGwc","description":"Luvussa on listattu ne käytänteet, joita tulisi hyödyntää toimeksiannon tekemisen aikana.","breadcrumbs":[{"label":"Toimeksiannot (2019/01)"}]},{"id":"-LYw-ozeW3OaIevGaU14","title":"Konsoliohjelman refaktorointia","pathname":"/toimeksiannot-2019-01/konsoliohjelman-refaktorointia","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Toimeksiannot (2019/01)"}]},{"id":"-M-eWFIF3IWTuSbqhpFl","title":"Harjoitustyön sisältö","pathname":"/scrum-harjoitustyoe-2020-01/harjoitustyon-sisalto","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"SCRUM harjoitustyö (2020/01)"}]},{"id":"-M-eVlDe3qFZrs6jvGdt","title":"Harjoitustyö: Matkalasku","pathname":"/scrum-harjoitustyoe-2020-01/harjoitustyoe-matkalasku","siteSpaceId":"sitesp_xSGwc","description":"Harjoitustyö ohjelmistokehityksen taitojen syventämiseen.","breadcrumbs":[{"label":"SCRUM harjoitustyö (2020/01)"}]},{"id":"-LnaiR7R1Kkc8-boYhDl","title":"Toimeksianto 2019/02","pathname":"/toimeksiannot-2019-02/untitled","siteSpaceId":"sitesp_xSGwc","description":"Toimeksiannon kuvaus syksyn opetusta varten.","breadcrumbs":[{"label":"Toimeksiannot (2019/02)"}]},{"id":"-LK6cKHCNfhRAW8LCuac","title":"Projekti 2018/01","pathname":"/toimeksiannot-2018-01/projekti-2018-01","siteSpaceId":"sitesp_xSGwc","description":"Lukuun on luotu alustava kuvaus toteutettavasta ohjelmasta. Toimeksianto on harjoitusprojekti, johon sisältyy ajankohtaisista asiakasprojekteista poimittuja tilanteita.","breadcrumbs":[{"label":"Toimeksiannot (2018/01)"}]},{"id":"-LMHlQ354Yeub2VvC5UW","title":"Projekti 2018/01 Perjantaille 14.9","pathname":"/toimeksiannot-2018-01/projekti-2018-01-perjantaille-14.9","siteSpaceId":"sitesp_xSGwc","description":"Kuvattu tehtävä tunneille, josta lähdetään liikkeelle.","breadcrumbs":[{"label":"Toimeksiannot (2018/01)"}]},{"id":"-LN4HiumRbm_h9wq7yoI","title":"Projekti 2018/01 Käyttötapauksesta työtehtäviin","pathname":"/toimeksiannot-2018-01/projekti-2018-01-kaeyttoetapauksesta-tyoetehtaeviin","siteSpaceId":"sitesp_xSGwc","description":"Esitelty tapa tai enemmän se oma tapa lähteä purkamaan toimeksiantoa pienempiin konkreettisimpiin tehtäväkokonaisuuksiin.","breadcrumbs":[{"label":"Toimeksiannot (2018/01)"}]},{"id":"-LO8E_rtSliL_pj8gCPU","title":"Projekti 2018/01 Ohjelmoinnin aloittaminen","pathname":"/toimeksiannot-2018-01/projekti-2018-01-ohjelmoinnin-kaesitteitae","siteSpaceId":"sitesp_xSGwc","description":"Sisältö tuotettu tukemaan projektin aikana kohdattuja hidasteita. Keskittyy lähinnä ohjelmoinnin käsitteisiin ja perusteisiin. Oletamme, että näitä rakenteita on jo käyty läpi esimerkein.","breadcrumbs":[{"label":"Toimeksiannot (2018/01)"}]},{"id":"-LP0hSbKy3JZIk7gBlTt","title":"Projekti 2018/01 TDD esimerkki","pathname":"/toimeksiannot-2018-01/projekti-2018-01-tdd-esimerkki","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Toimeksiannot (2018/01)"}]},{"id":"-LNB_7GnAqm-Uy8wseYi","title":"Käyttäjätarinat","pathname":"/harjoitteet/kaeyttaejaetarinat","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Harjoitteet (keskeneräiset)"}]},{"id":"-LNBZ8p_2qgiKSIGf9Jn","title":"Pariohjelmointi","pathname":"/harjoitteet/pariohjelmointi","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Harjoitteet (keskeneräiset)"}]},{"id":"-LNBZBdAqqPynNUXzK-Q","title":"Versionhallinta","pathname":"/harjoitteet/versionhallinta","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Harjoitteet (keskeneräiset)"}]},{"id":"-LNBZKmuKr9e1MyrnbuF","title":"Testivetoinen kehitys","pathname":"/harjoitteet/testivetoinen-kehitys","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Harjoitteet (keskeneräiset)"}]},{"id":"-LNBZn74r-gRP4GcxKHe","title":"Jatkuva integraatio","pathname":"/harjoitteet/jatkuva-integraatio","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Harjoitteet (keskeneräiset)"}]},{"id":"-LNBZrtQeCGF1p0F3zPf","title":"Inkrementaalinen dokumentointi","pathname":"/harjoitteet/inkrementaalinen-dokumentointi","siteSpaceId":"sitesp_xSGwc","description":"","breadcrumbs":[{"label":"Harjoitteet (keskeneräiset)"}]}]}