Tämä Git-repositorio sisältää Ohjelmistoprojekti II -kurssin dokumentaation ja tiedostot.
Opintojaksolla opiskelijat suunnittelevat ohjelmiston oikeaan tarpeeseen. Opiskelijat:
- Organisoivat oman ryhmänsä toiminnan.
- Tutustuvat tarpeeseen, joka voidaan ratkaista ohjelmistolla.
- Määrittelevät ja suunnittelevat ratkaisun tuotantoiteraatio kerrallaan.
- Toteuttavat ja esittelevät tuotantokelpoisia ratkaisuversioita.
- Julkaisevat ohjelmistoratkaisun.
Kurssin suoritettuaan opiskelija ymmärtää ongelman ratkaisemiseen tarvittavia ohjelmistokehittäjän taitoja. Hän kykenee ymmärtämään ja kuvaamaan tarpeita ja ehdottamaan niihin soveltuvia ohjelmistoratkaisuja. Hän osaa itsenäisesti lisätä osaamistaan aiemmin tuntemattomista teknologioista. Hän oppii arvioimaan ja valitsemaan avoimen maailman ongelmanratkaisuun soveltuvia teknologioita ja menetelmiä. Hän osaa ottaa vastuun jostakin toteutettavan ratkaisun osa-alueesta. Hän osaa jakaa hankkimaansa osaamista muille tiiminsä jäsenille. Opiskelija osaa tiimin jäsenenä toteuttaa tuotantokelpoisen ohjelmistoratkaisun ongelmaan.
Kurssin arviointi perustuu ryhmätyöskentelyyn, ryhmän lopullisen tuloksen tarkoituksenmukaiseen toimivuuteen sekä kurssin lopuksi yksilötyönä tehtävään esseeseen, jossa arvioidaan omaa ja ryhmän toimintaa.
Ohjelmistokehityksen teknologioita -kurssi toimii osin tämän kurssin teknisenä tukikurssina. Suosittelemme hyödyntämään kyseisellä kurssilla käsiteltyjä aiheita, kuten testausta ja jatkuvaa integraatiota, tämän kurssin projektissa.
Kurssin lopputulokset julkaistaan lähtökohtaisesti avoimella lisenssillä.
Katso myös:
Jukka Juslin (jukka.juslin@haaga-helia.fi) ja Jukka Remes (jukka.remes@haaga-helia.fi)
Jos olet hankkinut tämän opintojakson mukaisen osaamisen työsi kautta, voit osoittaa osaamisesi tavanomaisen osallistumisen sijasta AHOT-menettelyllä. Osaamisen tunnistamiseksi ilmoittaudu tälle kurssille normaalisti, ja ole yhteydessä kurssin opettajiin AHOT-järjestelyjen osalta viimeistään kurssin ensimmäisen viikon aikana.
Tarkemmat ohjeet AHOT-käytäntöjen suhteen löydät erilliseltä sivulta.
Kurssin yhteiset tapaamiset järjestetään tiistaisin klo 8:00-10:30 luokassa 5006 16.1. alkaen.
Kurssille varattuina ajankohtina työskennellään projektin parissa scrum-kehyksen mukaisesti. Tavoitteenamme on työskennellä kolmen viikon sprinteissä, joita mahtuu kurssille 4 kappaletta. Intensiivi- ja lomaviikkoja ei huomioida osana sprinttien kestoa.
Kunkin tiimin sprintin aloitukset ja katselmoinnit pyritään järjestämään toistuvasti samoina viikonpäivinä ja kellonaikoina, jolloin sprinttien pituudet pysyvät tasaisina.
Kurssin laajuus on 10 opintopistettä, eli noin 270 tuntia. Kurssin aikana viikoittaiseksi työmääräksi tulee noin 17 tuntia. Tulet siis työskentelemään merkittävässä määrin myös yhteisten tapaamisten ulkopuolella.
- Opetustilaisuuden kalvot
- Kurssin käytäntöjen ja tavoitteiden käsittely
- Ketterä ohjelmistokehitys ja Scrum
- Jakautuminen tiimeihin. Tiimin tavoitekoko on 5 henkilöä
- Palvelujen kehittämisen menetelmät (haaga-helia.fi)
- Esimerkkejä avoimen rajapinnan tarjoavista palveluista
- Projektiaiheiden pohtiminen tiimin kesken. Hyviksi aiheiksi on todettu scopeltaan eli laajuudeltaa siinä määrin pienet, että ei jouduta tekemään esimerkiksi 15 tietokantataulua. Ohjelmistoa kannattaisi tehdä siinä toivossa, että se tulisi oikeasti käyttöön, vaikkakin tavoite on usein osoittautunut erittäin haastavaksi.
- Yksi kaikille tarjottu aihe on Haaga-Helian helpdeskin vetäjän ehdottama lentohintojen seuraaminen: https://www.youtube.com/watch?v=16A4tTeLq4g
- Jos ideoita ei meinaa spontaanisti syntyä, niin opettajille on ehdottaa seuraavia aiheita: 1) sovellus verenpaineiden noin päivittäiseen mittaamiseen mahdollisesti pienellä graafisella kuvaajalla 2) Työtuntien nauhoitussovellus sitä varten, että kun tekee tuntityötä jollekin, niin on oltava tarkka kirjanpito siitä, että mitä on tehty, milloin ja kuinka pitkään. Tuntityössähän usein on jokin palkka, esimerkiksi 40 euroa. 3) Opiskelijan omaan käyttöön voisi tehdä juna/bussi/raitiovaunu/metro sovelluksen joka hakisi avoimista rajapinnoista tarkkaa tietoa yksittäisen opiskelijan tarpeisiin kustomoituna ja sivu olisi niin yksinkertainen, että se on helppo avata puhelimellakin.
- Avoimen datan lähteisiin ja avoimen lähdekoodin projekteihin tutustuminen.
- Opetustilaisuuden kalvot
- Vaatimusmäärittely ketterässä ohjelmistokehityksessä
- Käyttäjätarinat
- Esimerkki määrittelydokumentista ja käyttäjätarinoista: Form Autofill for Firefox Desktop
- Scrum backlogit
- GitHub project -palvelun nopea intro
- Projektin GitHub-repositorion luominen ja jakaminen opettajalle.
- Projektin kuvaus GitHub-repositorion README-tiedostoon. Kuvauksesta tulee tässä vaiheessa tulla ilmi ainakin seuraavat asiat:
- Alustava kuvaus projektista, jossa vastataan ainakin seuraaviin kysymyksiin:
- Projektin nimi.
- Mikä on toteuttavan sovelluksen tarkoitus?
- Mitkä ovat sovelluksen tärkeimmät ominaisuudet, eli mitä sovelluksen käyttäjä voi sillä tehdä?
- Mitä toteutusteknologioita (esim. ohjelmointikieltä, tai sovelluskehystä kuten Spring Boot, tai Django) projektin toteutuksessa tullaan käyttämään. Tässä on tärkeää, että jos esimerkiksi Palvelinohjelmointi eli nykyiseltä nimeltään Back end-ohjelmointi ei ole arvosanaa 5, niin tilanne ei parane vaihtamalla tekniikkastäkkiä.
- Ryhmän jäsenten nimet.
- Alustava kuvaus projektista, jossa vastataan ainakin seuraaviin kysymyksiin:
- User storyjen valinta ensimmäiselle sprintille ja niiden jakaminen teknisiin taskeihin
- User storyjen lisääminen product backlogille ja taskien lisääminen sprint backlogille
- Ks. user storyn kirjoitussyntaksi ideoineen Atlassianin sivuilta kohdasta User story template and examples
- Linkki backlogeihin GitHub-reposiorion README-tiedostoon
- Varmistakaa, että GitHub-repositorio ja backlog on julkinen, jotta opettaja voi tarkastella sitä
Jokaisen tiimiläisen tulee palauttaa tiimin projektin GitHub-repositorion linkki Moodlen-kautta tiistai 23.1. klo 8 mennessä.
Sprint 1:llä tiimit aloittavat itsenäisen työskentelyn projektin toteuttamisen parissa ja hyödyntävät ohjausta opetustilaisuuksissa ja Teams-kanavalla. Sprintti päättyy tiimikohtaisiin katselmointeihin.
- Harjoitellaan Git:in käyttöä tiimityöskentelyssä
- Gitin ja githubin toiminta on kuvattu hyvin seuraavassa materiaalissa: Versionhallinta: Git ja GitHub-materiaali läpi ennen opetuskertaa
- Parityönä voi suorittaa Git harjoituksen, jonka Jukka Juslin on tehnyt: https://jtjuslin.kapsi.fi/git-opetus/git-exercises-version11.pdf Git-harjoituksen. Suoritus on vapaaehtoista.
- Tiimit aloittavat itsenäisen työskentelyn projektien parissa. Opettajat tutustuvat tiimien backlogeihin ja keskustelevat/antavat palautetta suunnitelmista.
Sprint 1 jatkuu. Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät opettajien ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Kukin tiimi esittelee sprintin tulokset ja ensimmäisen version dokumentaatiostaan (README). Tiimit pitävät itsenäisesti retrospektiivit, joiden perusteella työtapoja kehitetään seuraavaa sprinttiä varten.
Tällä sprintillä esiteltävä versio voi hyvin olla paikallisesti ajossa kehittäjällä.
Katselmointien jälkeen tiimit valitsevat käyttäjätarinat sprintille 2 ja tekevät niihin tarvittavat tarkennukset ja määrittelyt.
Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Sprint 2 työskentely jatkuu. Opettajat nimeävät jokaiselle tiimille vertaisryhmän, jotka katselmoivat toistensa lähdekoodit ja antavat palautetta demoissa.
Vertaisryhmät tekevät toisilleen katselmointipyynnöt ennen seuraavaa opetuskertaa, jossa ovat rajanneet omasta projektistaan katselmoitavan osan.
Koodin katselmoinnin ohjeistus.
Sprint 2 jatkuu. Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät opettajien ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Vertaisryhmät tekevät toisilleen viikon aikana koodikatselmoinnin ja toimittavat sen ennen seuraavaa opetuskertaa.
Koodin katselmoinnin ohjeistus.
Kukin tiimi esittelee sprintin tulokset opettajille ja vertaisryhmille. Mahdollisuuksien mukaan sovelluksen tulisi olla ajossa tuotantoympäristöä vastaavassa ympäristössä, tai tuotantoympäristön tulisi olla vähintään valittu perustellusti.
Tiimit käy yhdessä läpi koodikatselmoinnin ja sopii sen perusteella tehtävistä parannuksista.
Tiimit pitävät itsenäisesti retrospektiivit, joiden perusteella työtapoja kehitetään seuraavaa sprinttiä varten.
Katselmointien jälkeen tiimit valitsevat käyttäjätarinat sprintille 3 ja tekevät niihin tarvittavat tarkennukset ja määrittelyt.
Ei kurssin yhteisiä tapaamisia.
Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Vertaisryhmät tekevät toisilleen katselmointipyynnöt ennen seuraavaa opetuskertaa, jossa ovat rajanneet omasta projektistaan katselmoitavan osan.
Koodin katselmoinnin ohjeistus.
Kukin tiimi esittelee sprintin tulokset opettajille ja vertaisryhmille.
Vertaisryhmät tekevät toisilleen viikon aikana koodikatselmoinnin ja toimittavat sen ennen seuraavaa opetuskertaa.
Tiimit pitävät itsenäisesti retrospektiivit, joiden perusteella työtapoja kehitetään seuraavaa sprinttiä varten.
Katselmointien jälkeen tiimit valitsevat käyttäjätarinat sprintille 4 ja tekevät niihin tarvittavat tarkennukset ja määrittelyt.
Tiimit pyrkivät viimeisessä sprintissä stabiloimaan projektinsa, eli he keskittyvät erityisesti toimintavarmuuden takaamiseen uusien ominaisuuksien jäädessä pienemmälle painoarvolle.
Sprintin tavoitteena on projektien lähdekoodien julkaisu, sekä sovellusten mahdollinen julkaisu sovelluskaupassa, npm:ssä tai web-palvelimella.
Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Ohjeita projektin viimeistelyyn (dokumentointi, stabilointi ja tietoturva).
Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.
Tiimit reflektoivat omaa ja tiimin työskentelyä projektin aikana tekemällä itse- ja vertaisarvioinnin. Jokaisen tiimiläisen täytyy tehdä vertaisarviointi ennen seuraavaa opetuskertaa. Vertaisarvioinnin tekeminen on pakollista kurssinmerkinnän saamiseksi. Myöhässä palautettu vertaisarviointi vaikuttaa arvosteluun heikentävästi.
Lisätkää repositoryn README.md tiedostoon jokaisen ryhmäläisen kokonimi ja linkki github-profiiliin.
Tiimit reflektoivat työskentelyään myös tekemällä projektistaan lyhyen loppuraportin.
Sprint 4 päättyy kurssin loppudemoihin, joissa kukin tiimi esittelee tuloksiaan muille.
Muistakaa myös dokumentoida projektinne mahdolliset tunnettut puutteet ja bugit (GitHub issueina).
Varapäivämäärä mahdollisten sairastumisten varalta.
Kurssin itse- ja vertaisarviointien kirjoittaminen ja oman oppimisen pohdinta. Tarkemmat ohjeet ja aikataulun julkaistaan projektien loppuvaiheessa.
Tämän sivuston ovat kehittäneet Teemu Havulinna, Ismo Harjunmaa, Kalle Ilves ja Jukka Juslin. Materiaali pohjautuu suuresti Ohto Rainion kurssimateriaaleihin.