# Ohjelmistokehityksen menetelmät ja käytänteet

Opas on tarkoitettu ohjelmistokehityksessä tarvittavien menetelmien sekä käytänteiden kouluttamiseen. Tutustutaan eri työkalujen käyttöön, joita päivittäin ja viikottain tarvitaan. Opas on tehty opettamisen tueksi.

### Sisältö <a href="#sis-c3-a4lt-c3-b6" id="sis-c3-a4lt-c3-b6"></a>

[Tavoitteet](https://book.sovelluskontti.com/tavoitteet)

**Versionhallinta**

Perusteet luvun tehtävät koostuvat useammasta tasosta. Tasot on yritetty kokoa loogiseen järjestykseen siten, että aina ennen seuraavaa tasoa olisi hyvä tehdä edellinen. Loppupäässä tehtävät ovat kuitenkin vapaampia ja enemmän tiedonhakuun liittyviä, koska joitakin asioita versionhallinnan käytöstä on vaikeampi opettaa suoraan. Erikoistilanteiden luominen opetusta varten on hankalaa ja sen sijaan pyritään tuomaan esille erilaisia tilanteita, joita työskentelyn aikana kohtaa. Monet ovat kuitenkin harvinaisia mutta varsinkin aluksi voi syntyä paljonkin erikoistilanteita mihin ei löydy suoraa vastausta tästä oppaasta.

[Opas Gitin perusteisiin](https://book.sovelluskontti.com/versionhallinta/opas-gitin-perusteisiin)

[Sanasto (GIT)](https://book.sovelluskontti.com/versionhallinta/sanasto)

[Git perusteet 101](https://book.sovelluskontti.com/versionhallinta/git-perusteet-101)

[Git perusteet 102](https://book.sovelluskontti.com/versionhallinta/git-perusteet-102)

[Git perusteet 103](https://book.sovelluskontti.com/versionhallinta/git-perusteet-103)

[Git perusteet 104](https://book.sovelluskontti.com/versionhallinta/git-perusteet-104)

[Git perusteet 105](https://book.sovelluskontti.com/versionhallinta/git-perusteet-105)

[Git perusteet 106](https://book.sovelluskontti.com/versionhallinta/git-perusteet-106)

[Git perusteet 107](https://book.sovelluskontti.com/versionhallinta/git-harjoitus-107)

[Git perusteet 108](https://book.sovelluskontti.com/versionhallinta/git-harjoitus-108)

[Git muu materiaali ja lähteitä](https://book.sovelluskontti.com/versionhallinta/git-muu-materiaali-ja-laehteet)

**Yksikkötestaus**

Perusteissä käydään läpi yksikkötestauksen pääperiaatteet käytännössä. Tasot on suunniteltu siten, että alempi taso täydentää ylempää. Sisällöt auttavat tutustumaan aiheeseen ja opiskelijan tehtävä on itsenäisesti löytää näihin kysyttyihin asioihin vastaukset. Yksikkötestauksen harjoituksissa käytetään xUnit perheeseen kuuluvia yksikkötestauskirjastoja. Esimerkit ovat C# -ohjelmointikielellä tehtyjä mutta samat periaatteet toimivat ohjelmointikielestä riippumatta.

[Ohjelmistotestauksen periaatteet](https://book.sovelluskontti.com/yksikkoetestaus/ohjelmistotestauksen-periaateet)

[NUnit perusteet 101](https://book.sovelluskontti.com/yksikkoetestaus/nunit-perusteet-101)

[NUnit perusteet 102](https://book.sovelluskontti.com/yksikkoetestaus/nunit-perusteet-102)

[NUnit perusteet 103](https://book.sovelluskontti.com/yksikkoetestaus/nunit-perusteet-103)

[NUnit muu materiaali ja lähteitä](https://book.sovelluskontti.com/yksikkoetestaus/nunit-muu-materiaali-ja-laehteitae)

**Test Driven Development (TDD)**

Testausvetoinen kehitys tai kuten se paremmin tunnetaan termillä Test Driven Development, on tärkeä osa-alue testien kirjoittamisessa. Aihe on hankalampi opettaa ja vaatii kokemuksen kerryttämistä. Esimerkeissä tullaan kuitenkin tarjoamaan mahdollisuus tämän aiheen oppimiseen mutta parhaiten taidon omaksumisesta voi varmistua, kun kokeneempi kehittäjä antaa siitä palautteen. Teoriassa helppo aihe mutta käytännössä haastava.

[TDD perusteet 101](https://book.sovelluskontti.com/yksikkoetestaus/tdd-perusteet-101)

[TDD perusteet 102](https://book.sovelluskontti.com/yksikkoetestaus/tdd-perusteet-102)

[TDD muu materiaali ja lähteitä](https://book.sovelluskontti.com/yksikkoetestaus/tdd-muu-materiaali-ja-laehteitae)

**Ketterä ohjelmistokehitys (Agile development)**

Kirjassa ei ole varsinaisia tehtäviä ketterän ohjelmistokehityksen osalta. Lähteet toimivat vain aiheen esittelijänä. Tarkoitus on lisätä myöhemmin käytännön asioita miten kokonaisuus voi toimia ja minkälaisia hyötyjä menetelmien noudattamisesta on.

[Agile, Muu materiaali ja lähteitä](https://book.sovelluskontti.com/ketterae-ohjelmistokehitys/agile-muu-materiaali-ja-laehteitae)

[Agile esimerkki, sykli ](https://book.sovelluskontti.com/ketterae-ohjelmistokehitys/agile-esimerkki-sykli)(alunperin valmisteltu projektityöskentelyn harjoitusta varten)
