Osa 0
Kurssi on jo ohjelmointia hallitseville tarkoitettu johdanto ohjelmistotuotantoon, eli systemaattiseen tapaan tehdä hieman laajempia ohjelmistoja useamman hengen tiimissä ulkoiselle asiakkaalle. Erityinen paino kurssilla on niin sanotuissa ketterissä ohjelmistotuotantomenetelmissä.
Esitietovaatimuksina kurssilla on seuraavien kurssien suoritus (tai vastaavat tiedot)
- Ohjelmoinnin perusteet ja jatkokurssi
- Tietokantojen perusteet
- Tietokannat ja Web-ohjelmointi (aiemmalta nimeltään Tietokantasovellus)
Kurssin Tietokone työvälineenä suorituksesta on myös hyötyä.
Kurssin suoritettuaan opiskelijan tulisi omata riittävät tiedolliset ja tekniset valmiudet toimia juniorikehittäjän roolissa pienessä ohjelmistotiimissä, esimerkiksi Tietojenkäsittelytieteen osaston opintojaksolla ohjelmistotuotantoprojekti.
Hieman tarkemmin eriteltynä, suoritettuaan kurssin opiskelija
- tuntee ohjelmistoprosessin vaiheet (vaatimusmäärittely, suunnittelu, toteutus ja laadunhallinta)
- tietää miten vaatimuksia hallitaan ketterässä ohjelmistotuotantoprosessissa
- ymmärtää suunnittelun, toteutuksen ja testauksen vastuut ja luonteen ketterässä ohjelmistotuotannossa
- ymmärtää ohjelmiston laadunhallinnan perusteet
- osaa toimia ympäristössä, jossa ohjelmistokehitys tapahtuu hallitusti ja toistettavalla tavalla
Kurssin suorittaminen ja arvostelu
Kurssi koostuu kolmesta komponentista, luennoista, laskuharjoituksista ja miniprojektista.
Luennot
Kurssilla on 10 luentoa sekä neljä vierailuluentoa. Luennoista ensimmäinen tosin korvautuu tänä vuonna etukäteen tehdyllä tallenteella. Luennoilla käydään pääasiassa läpi ohjelmistotuotantoon liittyvää käsitteistöä ja teoriaa, samaa asiaa mihin tämä materiaali keskittyy.
Kurssin luennot pidetään salissa B123 (poislukien yksi toisen viikon luennoista) ja tallenteet ovat nähtävillä luentojen jälkeen jos Unitube-tallennus toimii… Vuoden 2023 tallenteet ovat myös käytettävissä, sisältö on päällisin puolin sama.
Laskuharjoitukset
Kurssiin liittyy viikoittaiset laskuharjoitukset. Tehtäviä harjoituksissa on kahden tyyppisiä.
Luennoilla ja tässä materiaalissa käytävää teoriaa kertaavat viikoittaiset monivalintatehtävät, monivalintatehtävien deadline on sunnuntaina klo 23.59. Poikkeuksena tähän on ensimmäistä kahta luentoa kertaavat viikon 1 monivalinnat joiden deadline on vasta toisen viikon sunnuntaina.
Toinen osa tehtävistä käsittelee ohjelmistotuotantoon liittyviä teknisempiä asioita, kuten versionhallintaa, testaamista ja ohjelmistojen konfigurointia, näiden deadline on maanantaina klo 23:59. Tehtävien ohjelmointikieli on Python.
Laskuharjoitusten oletettu kuormittavuus on noin 8 tuntia ensimmäisen kolmen viikon aikana ja 4 tuntia jälkimmäisinä viikkoina. Monivalintatehtäviin vastaaminen on suhteellisen nopeaa, mutta järkevästi vastaaminen edellyttää osallistumista luennoille ja/tai viikon materiaalin lukemista.
Miniprojekti
Kurssin loppupuolella, viikoilla 3-7 järjestetään miniprojekti, eli ryhmässä tehtävä pieni harjoitustyö, jonka pääasiallisena tarkoituksena on projektinhallinnan sekä eräiden laadunhallintatekniikoiden harjoittelu.
Kukin miniprojektiryhmä koostuu 4-6 opiskelijasta, ryhmillä on myös asiakas, jota ryhmä tapaa viikoittain. Ensimmäisellä viikolla asiakastapaamiseen tulee varata 90 minuuttia, jälkimmäisillä 30 minuuttia.
Kurssin lopussa on miniprojektien yhteinen 2h kestoinen demotilaisuus.
Miniprojekteissa työskentelyyn tulee varata yhteensä noin 6 tuntia aikaa viikossa.
Kurssin läpäisyn edellytyksenä on hyväksytysti suoritettu tai hyväksiluettu miniprojekti.
Miniprojektit tapaavat asiakasta kampuksella.
Miniprojektista lisää täällä.
Miniprojektin hyväksilukeminen
Miniprojektiin osallistuminen ei ole välttämätöntä jos täytät työkokemuksen perusteella tapahtuvan ohjelmistotuotantoprojektin hyväksiluvun edellyttävät kriteerit.
Kriteerit selviävät täältä kohdasta Laaja suoritus: Ohjelmistotuotantoprojekti
Toisin kuin Ohjelmistotuotantoprojektin hyväksilukuun, miniprojektin hyväksilukuun vaaditaan ainoastaan kolmen kuukauden työkokemus.
Jos hyväksiluet miniprojektin työkokemuksella, kerro asiasta emailitse (matti.luukkainen@helsinki.fi) siinä vaiheessa kun olet tehnyt ensimmäisen viikon tehtävät.
HUOM: miniprojektin hyväksiluku tapahtuu lähettämällä email osoitteeseen matti.luukkainen@helsinki.fi, eli ÄLÄ LÄHETÄ MAILIA osoitteeseen kumpula-student@helsinki.fi.
Kurssin arvostelu
Kurssilta on jaossa yhteensä 40 pistettä, jotka jakautuvat eri komponenttien kesken seuraavasti
- laskarit 10 pistettä
- luentoihin liittyvät monivalintatehtävät 2 pistettä
- viikoittaiset ohjelmointi/versionhallinta/konfigurointitehtävät 8 pistettä
- miniprojekti 11 pistettä
- koe 18 pistettä
- osallistuminen paikan päällä vierailuluennoille 1 piste (0.33 pistettä yhdestä vierailuluentokertaläsnäolosta)
Arvosanaan 1 riittää 20 pistettä, arvosanaan 5 tarvitaan 36 pistettä.
Läpipääsy edellyttää lisäksi miniprojektin hyväksyttyä suoritusta (tai hyväksilukua) ja vähintään puolia kokeen pisteistä. Lisäaikaa kokeeseen haetaan sähköpostilla opettajalta (matti.luukkainen@helsinki.fi).
Jos hyväksiluet miniprojektin, kokeen ja laskarien pistemääräsi skaalataan kertomalla 40/29:llä ja arvosana määritellään skaalatun pistemäärän perusteella.
Laskarien pisteytysperusteet
Viikoittaisista monivalintatehtävistä on siis tarjolla 2 kurssipistettä. Täysiin kurssipisteisiin riittää 90% monivalintakysymyspisteistä (mvp).
Pisteet tulevat seuraavan kaavan mukaan:
monivalintapisteitä | kurssipisteitä |
---|---|
4.5 | 2 |
4.0 | 1.5 |
3.5 | 1 |
3.0 | 0.5 |
2.5 | 0 |
Kaikki monivalintatehtävät ovat joukkoja väittämiä, joista jokainen voi olla oikein tai väärin. Jokaisen viikon monivalintakysymyksistä on tarjolla yksi mvp, joka lasketaan seuraavan kaavan mukaan:
- jos oikeatVastaukset/vaittamaLukumaara on pienempi tai yhtäsuuri kuin 0.45, on tuloksena 0 mvp:tä.
- jos oikeatVastaukset/vaittamaLukumaara on enemmän kuin 0.45, kasvaa mvp-määrä lineaarisesti siten, että kaikki kohdat oikein tuo yhden mvp:n.
Normaaleista laskareista on tarjolla 8 kurssipistettä. Täysiin kurssipisteisiin edellytetään 90 % normaalien laskareiden tekemistä.
Monivalintojen korvaaminen luentopäiväkirjalla
Kurssin viikkojen 1-5 luentoja kertaavat monivalintatehtävät (2/40 pistettä). Monivalinnat ovat herättäneet tunteita, en ole itsekään monivalintojen fani. Hyödyt ovat kuitenkin kiistattomat, kokeet menevät nykyään paremmin kuin monivalintoja edeltävänä aikana. Monivalinnoille nyt tarjolla vaihtoehto, viikoittainen luentopäiväkirja!
Luentopäiväkirja on noin A4:n kokoinen omin sanoin tehty yhteenveto viikon asioista. Muoto voi olla melkein mikä vaan, joko proosatekstiä, lista ranskalaisia viivoja tai vaikkapa mind map. Luentopäiväkirjan voi tehdä joko koneella tai käsin.
Luentopäiväkirja ei kuitenkaan missään tapauksessa saa olla plagiaatti (ts. luentomateriaalin copy paste) tai esim. ChatGPT:llä generoitu. Tällainen tulkitaan opintovilpiksi ja käsitellään HY:n vilppikäytänteiden mukaisesti.
Kunkin viikon luentopäiväkirjan deadline on viikon sunnuntai klo 23:59 (poislukien viikko 1 jonka deadline on vasta toisen viikon sunnuntai), palautus tapahtuu emailitse matti.luukkainen@helsinki.fi. Viikon palautus tuo 0-1 monivalintapistettä. Alle yhden pisteen saa lähinnä silloin jos luentopäiväkirjaa ei ole tehty tosissaan. Luentopäiväkirjoista koostuvat monivalintapisteet muuntuvat kurssipisteiksi kuten normaalit monivalintapisteet, ks. edellinen luku.
HUOM ainakaan tässä kurssiversiossa ei ole mahdollista tehdä osalla viikoista monivalintoja ja osalla luentopäiväkirjoja. Molemmat saa toki tehdä, ja tällöin kurssipisteet määrittyvät sen mukaan kumpi menee paremmin. Eli jos päätät tehdä luentopäiväkirjoja, tee niitä ensimmäisestä viikosta lähtien.
Versionhallinta 1 op
Saat bonuksena suoritusmerkinnän opintojaksolta Versionhallinta 1 op tekemällä kaikki tämän kurssin versionhallintatehtävät (merkattu tehtävän yhteyteen) ja suorittamalla hyväksytysti miniprojektin (tai hyväksilukemalla sen).
Luennot - laskuharjoitukset - miniprojekti
Kurssi siis sisältää kolme pääkomponenttia, luennot, viikoittaiset laskuharjoitukset sekä miniprojektin. Komponentit ovat luonteeltaan melko erilaisia, ja se on joskus aiheuttanut hämmennystä opiskelijoiden keskuudessa.
Kurssin luennoilla keskitytään pääosin ohjelmistokehityksen teoriaan ja käsitteistöön. Laskareista monivalintatehtävät liittyvät kunkin viikon luentoihin.
Versionhallintaa, ohjelmistojen konfigurointia, testausta ja ohjelmointia käsittelevien teknisempien tehtävien aihepiirejä ei taas luennoilla käsitellä oikeastaan ollenkaan (poislukien testaukseen liittyvä teoria).
Miniprojektin ideana taas on yhdistää luentojen teoria ja laskareissa käsitellyt teknisemmät asiat, ja soveltaa niitä käytännössä pienessä ohjelmistoprojektissa.
Kokeessa suurin paino tulee olemaan teoriassa ja sen soveltamisessa käytäntöön. Laskareiden teknisimpiä asioita, kuten versionhallintaa ei kokeessa tulla kysymään. Tarkemmin kokeesta ja siihen valmistautumisesta kurssin viimeisellä luennolla.
Kuten kohta tulemme näkemään, ohjelmistotuotanto kattaa suuren kirjon erilaisia asioita alkaen ihmisten johtamisesta aina teknisimpiin komentoriviltä suoritettaviin operaatioihin asti. Sama heijastuu myös kurssin rakenteessa, kurssilla on erihenkisiä komponentteja, näistä yksikään ei ole muita tärkeämpi, kullakin on oma painoarvonsa kurssin arvostelussa. Teoria-asioita arvioidaan koemenestyksen perusteella, käytännöllisimpiä asioita taas “jatkuvana arviona” laskareista kertyvien pisteiden ja miniprojektissa suoriutumisen perusteella.
Aikataulu
Viikko 1
- Luento 1: maanantai 28.10.
- Laskarit
- ohjelmointi/versionhallinta/konfigurointitehtävät deadline maanantai 4.11. klo 23:59
Viikko 2
- Luento 2: tiistai 5.11. klo 12-14 B123
- Luento 3: torstaina 7.11. klo 12-14 CK112
- Vaatimusmäärittely
- Ketterä vaatimusten hallinta
- tallenteet:
- Luento 4: perjantaina 8.11. klo 12-14 B123
- Laskarit
- Kahden ensimmäisen luennon monivalintatehtävät deadline sunnuntai 10.11. klo 23:59:00
- Luentojen 3 ja 4 monivalintatehtävät deadline sunnuntai 10.11. klo 23:59:00
- ohjelmointi/versionhallinta/konfigurointitehtävät deadline maanantai 11.11. klo 23:59
Viikko 3
- Luento 5: maanantai 11.11. klo 12-14 B123
- Laadunhallinnan perusteet
- tallenteet:
- Luento 6: tiistai 12.11. klo 12-14 B123
- Ketterien menetelmien testauskäytänteet
- tallenteet
- Laskarit
- monivalintatehtävät deadline sunnuntai 17.11. klo 23:59:00
- ohjelmointi/versionhallinta/konfigurointitehtävät, deadline maanantai 18.11. klo 23:59
- Miniprojekti
- Aloitustilaisuudet (jokainen osallistuu yhteen)
- ti 14-16 C221
- ke 14-16 Chemicum A128
- ke 16-18 Chemicum A128
- to 10-12 C124
- to 14-16 C124
- Aloitustilaisuudet (jokainen osallistuu yhteen)
Viikko 4
- Luento 7: maanantai 18.11. klo 12-14 B123
- Tuotannossa tapahtuva laadunhallinta
- DevOps
- tallenteet:
- Luento 8: tiistai 19.11. klo 12-14 B123
- Laskarit
- monivalintatehtävät deadline sunnuntai 24.11. klo 23:59:00
- ohjelmointi/versionhallinta/konfigurointitehtävät, deadline maanantai 25.11. klo 23:59
- Miniprojekti
- Asiakastapaamiset (sprintin 1 review, sprintin 2 suunnittelu)
Viikko 5
- Luento 9: maanantai 25.11. klo 12-14 B123
- Luento 10: tiistai 26.11. klo 12-14 B123
- Ville Nordberg (Trail openers): Vihreä IT
- Kristiina Vainio (Houston Inc): Juniorin kasvu senioriksi konsulttitalossa
- Laskarit
- ohjelmointi/versionhallinta/konfigurointitehtävät, deadline maanantai 2.12. klo 23:59
- Miniprojekti
- Asiakastapaamiset (sprintin 2 review, sprintin 3 suunnittelu)
Viikko 6
- Luento 11: maanantai 2.12. klo 12-14 B123
- Jami Kousa ja Aleksandr Tereshchenko (Unity): Metrics, Tracing and bugs in production
- Luento 12: tiistai 3.12. klo 12-14 B123
- Laskarit
- monivalintatehtävät deadline sunnuntai 8.12. klo 23:59:00
- ohjelmointi/versionhallinta/konfigurointitehtävät, deadline maanantai 9.12. klo 23:59
- Miniprojekti
- Asiakastapaamiset (sprintin 3 review, sprintin 4 suunnittelu)
Viikko 7
- Vierailuluennot
- Luento 13: maanantai 9.12. klo 12-14 B123
- Kasper Hirvikoski (Unity): Ohjelmistoprojektien johtaminen
- Luomus Mammal Database Team: tarinoita juniorikehittäjien elämästä
- Luento 14: tiistai 10.12. klo 12-14 B123
- Hannu Kokko (Elisa): Global product development
- Luento 13: maanantai 9.12. klo 12-14 B123
- Laskarit
- ohjelmointi/versionhallinta/konfigurointitehtävät, deadline perjantai 20.12. klo 23:59
- Miniprojekti
- Loppudemot (jokainen ryhmä osallistuu yhteen tilaisuuteen)
- ke 11.12. klo 12-14 B123
- to 12.12. klo 12-14 CK112
- Loppudemot (jokainen ryhmä osallistuu yhteen tilaisuuteen)
Viikko 8
- Koe Moodlessa torstaina 19.12. klo 7.00-14.00
- Koeaika on 4 tuntia siitä hetkestä kun aloitat kokeen
- Huomaa, että riippumatta siitä monelta kokeen aloitat, loppuu se klo 14.00, eli jos haluat käyttää 4h, tulee koe aloittaa viimeistään klo 10.
Typoja materiaalissa
Kun huomaat kurssimateriaalissa kirjoitusvirheitä, tee korjausehdotus. Kurssimateriaali on repositoriossa https://github.com/ohjelmistotuotanto-hy/ohjelmistotuotanto-hy.github.io tiedostoissa osa0.md jne.
Muutosehdotuksen tekeminen aloitetaan painamalla tiedoston kynä-symbolia:
Kun teksti on editoitu halutunkaltaiseksi, luodaan muutosehdotus sivun alalaidasta:
Tämän jälkeen vielä luodaan muutosehdotuksesta pull request
Kun kaikki klikkailu on tehty, syntyy materiaalirepositorioon pull request
Ja kun kurssihenkilökunta mergeää pull requestin, typo korjautuu materiaalista.