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
- harjoitukset 14.10. ja 21.10. klo 11:15 - 14:00 (r4) poikkeuksellisesti klo 11:00 - 13.jotain ja
28.10. klo 12:00 - 14:00
- 7.10. Tänään iltaryhmä (r5, 16-19) joutuu
valitettavasti työskentelemään itsenäisesti
ohjaajan sairastumisen vuoksi. Kollegalla oli aikaisempia sitoumuksia
ko. ajalle, joten apua tai opastusta harjoitustyönsä kanssa
tarvitsevat voivat kysellä sitä sähköpostitse
tänään tai seuraavissa harjoituksissa ohjaajalta. (JLa)
- 24.09. Keskiviikon (30.09.) klo 11:15 - 14:00 harjoitukset alkavat
poikkeuksellisesti klo 12:00. Molemmat herjoituksia vetävät Jounit on määrätty englannin
kielen kurssille, jossa on 100% osallistumispakko. Voitte toki aloittaa luokassa (IT106)
normaalisti klo 11:15 mutta allekirjoittanut konkoilee paikalle vasta 12:00 ja jatkaa
tarpeen vaatiessa klo 14:15 saakka, jolloin kolmea oppituntia vastaava aika täyttyy.
Allekirjoittanut muuten hoitaa tuon luokan oven auki niin pääsette sisään. (JKo)
- 23.09. Tiistai-illan harjoitusryhmä 17:15 - 20:00 on lakkautettu osallistujamäärän
vähäisyydestä johtuen (JKo)
- 20.09. Lisätty harjoitusviikojen 3 ja 4 matskut. Pienet muutokset mahdollisia mutta eivät
vaikuta kokonaisuuteen (JKo)
- 02.09.2009: Tulevaa kurssia varten muokkauksia tehty - merkitty lähinnä kohdat
jotka tulevat muuttumaan.
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:
- R1: Ma 08-11 (JKo)
This group is also for all english-speaking students and I must also with help of google
translate put this for you "Bienvenido a los estudiantes que hablan Inglés - "
- R2: Ma 13-16 (JKo)
R3: Ti 17-20 (JLa)
has been cancelled by JKo 23.09.2009 because of so few participants
- R4: Ke 11-14 (JKo)
Huom! harjoitukset 14.10. ja 21.10. klo klo 11:00 - 13.jotain ja 28.10. klo 12:00 - 14:00
- R5: Ke 16-19 (JLa)
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:
- Työsuunnitelma (viikkosuunnitelma päivityksineen)
- Ohjelmiston alkutilan määrittely
- Ongelma-alueen analyysi (lyhyt kuvaus sovelluksesta, sen toiminnasta, ketkä sitä käyttävät,
miksi sovellus tehdään ja kenelle se tehdään jne.)
- Vähintään kolme käyttöskenaariota
(avattu tekstinä sovelluksen käytöstä jossain
kontekstissa)
- Käyttötapauskaavio (käyttötapaukset + aktorit)
- Kolmesta valitusta käyttötapauksesta dokumentaatio Wiegersin pohjaan
- Sovelluksista toiminnalliset (20 kpl) vaatimukset (jokaisesta vaatimuksesta vaatimuksen
alkuperä, kuvaus, rajoitteet ja yksilöllinen tunniste)
- Sovelluksista tarkennetut (30 kpl) vaatimukset (johdettu toiminnallisista vaatimuksista,
jokaisesta vaatimuksesta tunniste, kuvaus ja alkuperä)
- Toiminnallisten ja tarkennettujen vaatimusten jäljitettävyysmatriisi
- Sovellusten luokkakaavio (kaavion ja jokaisen luokan ja metodin dokumentaatio, attribuutit,
parametrit ja paluuarvot tulee olla näkyvissä)
- Sekvenssikaaviot (yhdemukainen käyttötapausten ja luokkakaavion kanssa, lyhyt toiminnan
kuvaus dokumenttiin)
- Testaussuunnitelma, testitapaukset valituista toiminnallisista vaatimuksista,
näiden valittujen toiminnallisten vaatimusten tarkennetut vaatimukset tulee olla testitapausten
avulla testattu
- Testiraportti, sisällytetään testaussuunnitelmaan
Dokumenttipohjat
- Karl Wiegersin Use Case Template (DOC).
Apuna käyttötapausten dokumentoinnissa.
- Viikkosunnittelma(DOC).
- Ohjelmiston suunnittelu
(DOC). Apuna komponenttien dokumentoinnissa ja komponenttien ja tarkennettujen
vaatimusten jäljitettävyysmatriisin rakentamisessa sekä luokkien dokumentoinnissa.
- Ohjelmiston vaatimukset
(DOC). Apuna toiminnallisten vaatimusten sekä tarkennettujen vaatimusten
dokumentoinnissa ja luonnissa, dokumentin lopussa vaatimusten jäljitettävyysmatriisi.
- Testaussuunnitelma (DOC).
Apuna testien suunnittelussa ja dokumentoinnissa, loppuun voi liittää testiraportin
suoritetuista testeistä.
- Modern Requirements Template
(DOC). Apuna vaatimusten dokumentoinnissa, englanninkielinen.
- Test Plan Template (DOC). Apuna
testisuunnitelman teossa, englanninkielinen.
- Virheraportti(DOC). Apuna
testisuunnitelman kirjoittamisessa. Sisältää kätevän virheraportointitaulukon.
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