Ohjelmistoarkkitehtuurit syksy 2013
1 Yleistä
Kurssi käsittelee perusasioita ohjelmistoarkkitehtuureista, niiden suunnittelusta ja toteuttamisesta. Samalla käsitellään ohjelmistoarkkitehtuureihin läheisesti liittyviä asioita, kuten ohjelmistokomponentteja, malleja ja mallikieliä, sekä ohjelmistokehyksiä. Vaikka ohjelmistoarkkitehtuurit eivät ole vain olio-ohjelmien yksinoikeus, käsittelemmen oliolähestymistavan tuttuuden vuoksi myös erityisesti olioarkkitehtuurin kehittämistä.
2 Suoritus
Kurssi suoritetaan osallistumalla luennoille ja demoihin.
Luennoilla käydään läpi ohjelmistoarkkitehtuuria pitkälti Koskimiehen ja Mikkosen kirjan mukaan, joitakin kohtia tarkentaen ja joitakin pois jättäen. Kirjaan liittyvät videot ja kalvot ovat tarjolla Tampereen teknisen yliopiston vastaavan kurssin sivuilla (kts. linkit alla). Luennoilla pyritään myös keskustelemaan esitettävistä asioista.
Demoista saa tänä vuonna lisäpisteitä tenttiin. Demot tehdään osittain kotona ja osittain demotilaisuudessa, mutta tämä vaihtelee demokerroittain.
Etäopiskelijat voivat lukea jonkin aiheeseen liittyvän kirjan ja tulla tenttiin. Kirjaksi käy esimerkiksi Koskimiehen ja Mikkosen Ohjelmistoarkkitehtuurit-kirja. Etäopiskelijana ei ole mahdollista saada lisäpisteitä demoista, mutta ne silti kannattaa tehdä, sillä ne valmistavat hyvin tenttiin.
3 Luennot
Luennot perustuvat pitkälti TTY:n vastaavaan kurssiin ja kirjaan. Alla on lueteltu lähinnä poikkeavuudet.
3.1 Luento 1: Kurssin esittely ja suoritus, arkkitehtuurin määritelmä
3.3 Luento: Arkkitehtuurityylit
- Boschin QASAR ja tyylit
3.4 Luento: Mallit ja malliajattelu
Katso linkeistä:
- Brad Appletonin kirjoitus
- Hillside Groupin kotisivut
- Koskimiehen ja Mikkosen kirjassa hieman reseptimäinen kuvaus malleista, joten lue tuo Appleton ja Hillsidestä mallin määritelmä (Coplien & Gabriel)
3.5 Luento: Komponentit
3.6 Luento: Komponenttien välinen vuorovaikutus
3.7 Luento: Hajuja ja sääntöjä
- Robert C. Martin: Principles and Patterns
3.8 Luento: Arkkitehtuurin dokumentointi
- Kruchtenin 4+1
3.9 Luento: Tuoterungot, kehykset ja muunneltavuus
4 Demot
- Lämmitellään Tampesterin ekoilla demoilla: http://www.cs.tut.fi/~ohar/harjoitukset/harkat2012/HT1.pdf
- Kertaa läpi arkkitehtuurityylit, ja mieti pari esimerkkiä ohjelmista, jotka olisivat tehty jollain tai joillain tyyleillä. Tyyli vapaa, samoin esitysmuoto, eli voit esittää vastauksen UML:llä, laatikoilla ja nuolilla, ohjelmana, …
- Valitkaa kaksi mallia, toinen, joka näyttäisi hyödylliseltä, ja toinen, jota olette jossain käyttäneet (jos tällaista ei ole, sitten kaksi kiinnostavaa). Katsellaan löytöjä demoissa.
- Toteuttakaa mahdollisimman monta komponenttien vuorovaikutuksien kalvojen "vuorovaikutusesimerkkiä". Asynkronisuutta ja rinnakkaisuutta, moniajoa ei vaadita. Toteutustapa ja tyyli vapaa, kuten tehtävässä 2.
- Toteuta kokonaan tai osittain kalvojen "Viestipohjaisen yritystietojärjestelmän arkkitehtuuri" mukainen ohjelmisto. Oikoa saa, samanaikaisuutta ja rinnakkaisuutta ei vaadita. Toteutustapa ja tyyli vapaa, kuten tehtävissä 4. ja 2. Yhteistyö on sallittua, jopa suotavaa.
5 Linkkejä meille ja maailmalle
- Vastaava kurssi Ohjelmistoarkkitehtuurit Tampereen teknisellä yliopistolla.
- Kai Koskimies, Tommi Mikkonen: Ohjelmistoarkkitehtuurit, Talentum 2005
- Shaw & Garlan: An Introduction to Software Architecture - klassikko
- Frustrated Architect - videoita ja esityksiä.
- Hillside Groupin kotisivut Kaikki malleista
- Portland Pattern Repository Mallien alkulähde
- Patterns and Software: Essential Concepts and Terminology Brad Appletonin kattava kirjoitus malleista
- Design Patterns in Java GOF-suunnittelumalleja hyvin selitettynä ja Java-esimerkeillä täydennettynä. Muista, etteivät pelkät esimerkit ja ohjelmointikieli- tai UML-toteutukset yksistään riitä!
- Robert C. Martin: Clean Architecture