Ohjelmistoprojekti 2, SOF007AS3A

Tämä Git-repositorio sisältää Ohjelmistoprojekti II -kurssin dokumentaation ja tiedostot.

Kurssin sisältö

Opintojaksolla opiskelijat suunnittelevat ohjelmiston oikeaan tarpeeseen. Opiskelijat:

  1. Organisoivat oman ryhmänsä toiminnan.
  2. Tutustuvat tarpeeseen, joka voidaan ratkaista ohjelmistolla.
  3. Määrittelevät ja suunnittelevat ratkaisun tuotantoiteraatio kerrallaan.
  4. Toteuttavat ja esittelevät tuotantokelpoisia ratkaisuversioita.
  5. 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:

Kurssin opettajat

Jukka Juslin (jukka.juslin@haaga-helia.fi) ja Jukka Remes (jukka.remes@haaga-helia.fi)

📑 Aiemmin hankitun osaamisen tunnistaminen (AHOT)

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 aikataulu (kevät 2024)

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.

Sprint 0: Projektien käynnistys (16.1.-30.1.)

📅 16.1. tiimien muodostaminen

✏️ Tehtävä

  • 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.

📅 23.1. "define sprint"

✏️ Tehtävä

  • 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.
  • User storyjen valinta ensimmäiselle sprintille ja niiden jakaminen teknisiin taskeihin
  • User storyjen lisääminen product backlogille ja taskien lisääminen sprint backlogille
  • 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 (30.1.-13.2.)

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.

🏃 30.1. Sprint 1:n käynnistys

  • 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.

📅 6.2. ja 13.2.

Sprint 1 jatkuu. Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät opettajien ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.

🔎 13.2. Sprint 1 katselmoinnit

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ä.

Sprint 2 planning

Katselmointien jälkeen tiimit valitsevat käyttäjätarinat sprintille 2 ja tekevät niihin tarvittavat tarkennukset ja määrittelyt.

Sprint 2 (27.2.-12.3.) (2 viikon sprint)

🏃 27.2. Sprint 2:n käynnistys

Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.

📅 5.3.

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.

📅 12.3.

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.

🔎 12.3. Sprint 2 katselmoinnit

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.

Sprint 3 planning

Katselmointien jälkeen tiimit valitsevat käyttäjätarinat sprintille 3 ja tekevät niihin tarvittavat tarkennukset ja määrittelyt.

18.-24.3. Intensiiviviikko

Ei kurssin yhteisiä tapaamisia.

Sprint 3 (26.3.-16.4.)

🏃 26.3. Sprint 3:n käynnistys

Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.

📅 2.4. ja 9.4.

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.

🔎 16.4 Sprint 3 katselmoinnit

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.

Sprint 4 planning

Katselmointien jälkeen tiimit valitsevat käyttäjätarinat sprintille 4 ja tekevät niihin tarvittavat tarkennukset ja määrittelyt.

Sprint 4 (16.4.-7.5.)

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.

🏃 16.4. Sprint 4:n käynnistys

Tiimit työskentelevät itsenäisesti projektien parissa ja hyödyntävät ohjausta kutsumalla opettajat mukaan tiimin tapaamisiin.

📅 23.4.

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).

📅 30.4.

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.

🔎 7.5. Projektien loppudemot

Sprint 4 päättyy kurssin loppudemoihin, joissa kukin tiimi esittelee tuloksiaan muille.

Muistakaa myös dokumentoida projektinne mahdolliset tunnettut puutteet ja bugit (GitHub issueina).

📅 14.5.

Varapäivämäärä mahdollisten sairastumisten varalta.

Itse- ja vertaisarvioinnit

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.