Ohjelmistotekniikka - harjoitustyösivut 

Sivuja on päivitetty viimeksi . Viimeisen muutoksen tehnyt Jouni ei ole yliviivattu
Jouni kokkoniemi (jouni.kokkoniemi(at)oulu.fi),
Jouni Lappalainen (jouni.lappalainen(at)oulu.fi)

Course pages in English (year 2008).
Training times briefly in English by JKo. Little changes are possible (exercise 5 can be changed but no one know how ;) yet).
Practice work delivery guidelines in english

Yleistä harjoituksista ja tiedotteet

Linkkejä ja työkaluja

Harjoitukset ja niiden sisältö

Harjoitusten sisältö pyritään lisäämään sivuille aina ennen uuden harjoitusviikon alkua.

Kurssikansio Optimassa

Ohjelmistotekniikka-kurssilla käytetään kurssikansiota Optimassa. Kurssikansio ilmestyy Optimaan ilmoittautumisen jälkeen muutaman päivän viiveellä. Jos et jostain syystä näe kurssikansiota Optimasa, ole yhteydessä Jouniin sähköpostitse. Ensimmäiset kurssille osallistujat lisätään kurssikansion jäseneksi kurssin luentojen alkaessa. Optimassa jaetaan informaatiota harjoitustyöhön liittyen, joten kannattaa seurata myös Optimaa kurssin työvälineenä.

Harjoitustyö

Kurssin pakollinen osa on harjoitustyö. Kurssin suorittamiseen kuuluu tentti ja harjoitustyö. Tentin voi korvata esseellä. 80 prosentin läsnäolo harjoituksissa oikeuttaa sinut Projekti I -kurssille, vaikka Ohjelmistotekniikan tentin hyväksytty suoritus puuttuu. Näin varmistat etenemisesi Projekti I -kurssille seuraavana lukuvuonna. Esseeasioissa ole yhteydessä Ilkka Tervoseen.

Harjoitusten vetäjät auttavat ryhmääsi etenemään harjoitustyössäsi - harjoituksissa ei äsitellä laajemmin teoria-asioita. Harjoitusten vetäjät ovat asiakkaita, jotka ovat tilanneet harjoitusryhmältäsi kuvitteellisen ohjelmistoprojektin.

Harjoitustyön palautusohjeet.

Harjoitustyöaihe ja taustaa

Ryhmältänne tilataan ohjelmistoprojekti. Harjoitustyöaihe on keskusteluohjelmisto (chat). Järjestelmä tilataan pienen ohjelmistotalon sisäiseen käyttöön. Järjestelmän tulee tukea organisaation sisäistä kommunikointia. Alkuvaiheessa ryhmän tulee käyttää mielikuvitusta ja hahmottaa vaatimuksia käyttämistänne keskusteluohjelmistoista (esimerkiksi IRC, erilaiset chatit jne.). Järjestelmän tulee koostua serveristä (server) ja asiakasohjelmistosta (client). Molempia komponentteja loppukäyttäjän tulee voida käyttää graafisen käyttöliittymän kautta. Jos client poistuu, tulee sen ilmoittaa siitä serverille. Käyttöliittymän tulee olla helposti siirrettävissä toisille alustoille.

Suunnittele ohjelmisto PC-tietokoneella käytettäväksi. Mallinna ohjelmisto niin, että käyttöliittymä on eritelty mallista. Hyvä arkkitehtuuri on MVC-malli.

MVC-malli java.sun.com: Model-View-Controller.

Morse S. & Anderson C.: Introducing Application Design and Software Engineering Principles in Introductory CS Courses: Model-View-Controller Java Application Framework (PDF)

Harjoitusryhmät

Oulun harjoitustyhmät:

Tarkista salit lukujärjestyksestä!

Harjoituksia Oulussa vetävät Jouni Kokkoniemi ja Jouni Lappalainen. Harjoitusryhmiä voidaan yhdistellä, jos ryhmäkoko putoaa alle kymmeneen. Jos ryhmänne haluaa ryhmäkohtaisen harjoitustyökansion Optimaan, ota yhteyttä sähköpostitse.


Harjoitustyön rakenne

Harjoitustyöhön tullaan sisällyttämään harjoitusviikkojen aikana:

  1. Työsuunnitelma (viikkosuunnitelma päivityksineen)
  2. Ohjelmiston alkutilan määrittely
  3. Ongelma-alueen analyysi (lyhyt kuvaus sovelluksesta, sen toiminnasta, ketkä sitä käyttävät, miksi sovellus tehdään ja kenelle se tehdään jne.)
  4. Vähintään kolme käyttöskenaariota (avattu tekstinä sovelluksen käytöstä jossain kontekstissa)
  5. Käyttötapauskaavio (käyttötapaukset + aktorit)
  6. Kolmesta valitusta käyttötapauksesta dokumentaatio Wiegersin pohjaan
  7. Sovelluksista toiminnalliset (20 kpl) vaatimukset (jokaisesta vaatimuksesta vaatimuksen alkuperä, kuvaus, rajoitteet ja yksilöllinen tunniste)
  8. Sovelluksista tarkennetut (30 kpl) vaatimukset (johdettu toiminnallisista vaatimuksista, jokaisesta vaatimuksesta tunniste, kuvaus ja alkuperä)
  9. Toiminnallisten ja tarkennettujen vaatimusten jäljitettävyysmatriisi
  10. Sovellusten luokkakaavio (kaavion ja jokaisen luokan ja metodin dokumentaatio, attribuutit, parametrit ja paluuarvot tulee olla näkyvissä)
  11. Sekvenssikaaviot (yhdemukainen käyttötapausten ja luokkakaavion kanssa, lyhyt toiminnan kuvaus dokumenttiin)
  12. Testaussuunnitelma, testitapaukset valituista toiminnallisista vaatimuksista, näiden valittujen toiminnallisten vaatimusten tarkennetut vaatimukset tulee olla testitapausten avulla testattu
  13. Testiraportti, sisällytetään testaussuunnitelmaan

Dokumenttipohjat

Dokumenttipohjia voi käyttää vapaasti - pääasia on, että asia tulee ymmärretyksi. Kaikkia kohtia ei ole tarkoitus täyttää orjallisesti. Dokumenttipohjia voi vapaasti myös yhdistellä (ottaa tarvittavat kappaleet esimerkiksi sekaisin eri pohjista). Harjoitusten tarkoitus on myös löytää ja hyödyntää projeltille oleellisimmat asiat dokumenttipohjista.

Lisämateriaalia

Tutustu vähintään kaikkiin johdantokappaleisiin: SWEBOK (PDF). Linkki ei toimi, joten pistä googleen hakusanaksi SWEBOK ja ...
Alistair Cockburn: Writing Effective Use Cases (PDF)
Bell A.E, Schmidt R.W.: UMLoquent expression of AWACS software design (PDF)
Holtzblatt K., Beyer H.R.: Requirements gathering: The human factor (PDF)
Binder R.V.: Extended use case test design pattern (PDF)
Sommerville I.: Integrated Requirements Engineering: A Tutorial (PDF)
IEEE standard for requirements documentation: IEEE Std 830-1998
Lauesen S.: Task Descriptions as Functional Requirements (PDF)
Sommerville I.: Integrated Requirements Engineering: A Tutorial (PDF)
Leishman T.: But I Only Changed One Line of Code