TIES441 Ensimmäinen luento 2012
TIES441 Ohjelmistoarkkitehtuurit - kevät 2012
Sisällysluettelo
1 Sisältö
- Kurssin tavoite
- Kurssin sisältö
- Kurssin suoritustapa
2 Tavoite
- Kurssin jälkeen ymmärrätte, mikä tai mitä on ohjelmistoarkkitehtuuri, miten sellainen luodaan ja dokumentoidaan, ja mikä on sen merkitys ohjelmistokehitykselle.
- Sivujuonteina tulevat esille komponentit, ohjelmistokehykset, tuoterungot, mallit ja mallikielet, sekä jotain olio-ohjelmien arkkitehtuurista.
- Heti ensin:
Ohjelmistoarkkitehtuuri ei ole vain joku oliojuttu.
- Tästä hyötyvät myös imperativistit, funktionalistit ja loogikot.
- Seuraus: Ohjelmistoarkkitehtuuri ei ole vain kasa UML-kaavioita.
3 Kurssin sisältö
- Ohjelmistoarkkitehtuuri
- Ohjelmistokomponentit
- Mallit ja mallikielet
- Kehykset ja tuoterungot
- Olioarkkitehtuurit
- Yms…
4 Suoritustapa
- Kurssimateriaali
- Suoritustapa
- Luennot
- Demot
4.1 Kurssimateriaali
- Kirjallisuus
- Kalvot
- Muu
4.1.1 Kirjallisuus
- Koskimies, Mikkonen: Ohjelmistoarkkitehtuurit (IT-Paino)
- Loppuunmyyty? Ei hätää, saanette PDF:nä.
- https://trac.cc.jyu.fi/projects/ties441
- Käyttöoikeus teille vasta tulossa.
4.1.2 Kalvot
- Kalvot kirjaan liittyen (ei paikalliset) http://www.cs.tut.fi/~ohar/luennot/
- Paikalliset kalvot kurssin sivuilla (HT Etsi kurssin kotisivut.)
4.1.3 Muu
- Videoluennot kirjaan liittyen (ei paikalliset) http://www.cs.tut.fi/~ohar/luennot/
- Simon Brown: The Frustrated Architect; GoTo2011 Aarhus
4.2 TDD
4.2.1 Sovelletaan
- Te teette tentin
- Tentin perusteella pidän teille luennot
- Te teette tentin
- Jos tentti ei mene läpi, pidän uudet luennot
- Minä heijastan teidän kommentit luentoihin (materiaaliin)
- Toistetaan, kunnes kurssin asiat käyty läpi
- Teille opintopisteet ja osaaminen, minulle julkaisu
4.2.2 Sovelletaan lisää
Jep, minuakin jännittää, joten liudennetaan hieman. Luennoin hetken aikaa alussa, kokeillaan vähän ViLLEä demoissa, ja sitten vasta lähdetään TDL:llä vauhtiin.
4.2.3 Jos kaikki menee hyvin…
…eli jos pääsette loppuun, ja valo on vihreä (kaikki testit meni läpi), niin: Onnittelut! Olette läpäisseet kurssin! Arvosana? Tehtyjen tehtävien perusteella:
Kriteeri | Arvosana |
---|---|
Kaikki tehtävät | 5 |
… | 4 |
Perustehtävät | 3 |
… | 2 |
Riittävä taso | 1 |
Alle riittävän tason | hylkäys |
4.3 Luennot
- Paikalliset luennot
- Yksi luento on n. neljä opetustuokiota
- Opetustuokiot määräytyvät tenttien perusteella
- Ei videointia, yritän tehdä "kalvoja"
- Videoluennot (ei paikalliset) http://www.cs.tut.fi/~ohar/luennot/
- Aijoo, olen helmikuussa hetken lomalla, jos ihmettelette luentojen puutetta…
4.4 Demot
- Pakolliset (vrt. TDD-testi)
- Demoissa tehdään viikkotestejä, joiden perusteella päätetään (osittain) seuraavan viikon opetus
- Demoaikoja vähän, teitä paljon, joten demot kestävät tunnin ja sitten uusi poppoo sisälle. (Korpissa vielä väärin, korjailen)
- Tehtävät tulevat ViLLEen
4.4.1 ViLLE
- Esittely: http://ville.cs.utu.fi/
- Saatte linkin tehtäviin myöhemmin
- Tuttu mm. ohjelmointikursseilta https://trac.cc.jyu.fi/projects/ohj1/wiki/ville
4.4.2 Reflektio!
- Kirjoittakaa ylös kokemuksia ja mielipiteitä!
- Lähettäkää ne minulle!
- Koetan laittaa tarjolle myös ViLLE-kysymyksiä tästä
- ViLLEn kysymyksiä voi myös arvostella tähdillä, pliis, tehkää niin!
4.5 Kysyttävää?
5 Kurssin sisältö tarkemmin
- Ohjelmistoarkkitehtuuri
- Ohjelmistokomponentit
- Rajapinnat ja riippuvuudet
- Mallit ja mallikielet
- Kehykset ja tuoterungot
- Olioarkkitehtuurit
- Muut jutut
5.1 Ohjelmistoarkkitehtuuri
- Mikä on ohjelmistoarkkitehtuuri?
- Mitä hyötyä?
- Miksi?
5.1.1 Kysymys
Ohjelmisto kehitetään tekemään jotain, mitä asiakas toivoo. Asiakkaan toivomus ilmenee toiminnallisista vaatimuksista. Kun ohjelmisto täyttää toiminnalliset vaatimukset, on testattu ja toimii, onko se valmis?
5.1.2 Vastaus
Ei välttämättä ole, hyvällä tuurilla on.
5.1.3 Selitys
Ohjelmiston oikean toiminnan lisäksi (toiminnalliset vaatimukset on täytetty) tulee ohjelmisto olla oikein kehitetty. Oikein kehitetty selviää laadullisista vaatimuksista.
Laadulliset vaatimukset sanelevat ohjelmistoarkkitehtuurin, niiden perusteella valitaan ohjelmiston rakenne.
Ohjelmistoarkkitehtuuri jakaa ohjelmiston komponentteihin ja niiden välisiin kytkentöihin, ja kuvaa näiden molempien väliset ja ulospäin näkyvät ominaisuudet, sekä suhteet ympäristöön.
Ohjelmistoarkkitehtuuri on kyseisen ohjelmistonsa perustuslaki, jota ei helposti muuteta, ja joka sanelee kehityksen rajat.
5.2 Ohjelmistokomponentit
Ohjelmistokomponentin käsite on hyvin epämääräinen. Toisille se on sama kuin painonappi GUI:ssa, jollekin se tarkoittaa ohjelmiston liitännäistä (plug-in), kolmannelle koko GUI voi olla ohjelmistokomponentti.
Yhtä kaikki, ohjelmistokomponentti on kokonainen, jonkin toiminnon kapseloiva yksikkö, jolla on selkeästi määrätyt rajapinnat.
"High cohesion, low coupling, design by contract® , Liskov substitution"
5.3 Mallit ja mallikielet
"Isältä pojalle" "Kansantietämys" "Hiljainen tieto"
5.4 Kehykset ja tuoterungot
Selitetty ihan tajunnanvirtana luennolla, asiaan palataan myöhemmin tarkemmin…
5.5 Olioarkkitehtuurit
Selitetty ihan tajunnanvirtana luennolla, asiaan palataan myöhemmin tarkemmin…
5.6 Muut jutut
Selitetty ihan tajunnanvirtana luennolla, asiaan palataan myöhemmin tarkemmin…