Commit 15d92f754ffe7bf213f11321871c565a7e45cd9b

  • avatar
  • Jonne Itkonen <jonne.itkonen @j…u.fi> (Committer)
  • Mon Sep 14 17:11:49 EEST 2015
  • avatar
  • Jonne Itkonen <jonne.itkonen @j…u.fi> (Author)
  • Mon Sep 14 17:11:49 EEST 2015
julkaistava versio
harjohje.org
(66 / 64)
  
1111
1212#+text: *Ville Tirronen ja Jonne Itkonen*
1313#+text:
14#+text: *9.9.2015, 6.3.2013*
14#+text: *14.9.2015, 6.3.2013*
1515#+text:
1616#+text: *Kari Kärkkäinen ja Jukka-Pekka Santanen*
1717#+text:
3535
3636* Johdanto
3737
38Tietotekniikan ohjelmointityöt ovat [[https://www.jyu.fi/it/laitokset/mit/opiskelu/kandidaattiopinnot][tietotekniikan
39kandidaattiopintojen]] viimeisiä opintojaksoja. Niiden tarkoituksena on
40totuttaa opiskelija kurssien harjoitustöitä laajempien
41ohjelmointitöiden toteuttamiseen. Ohjelmointitöissä perehdytään itse
42ohjelmoinnin lisäksi aiheen määrittelyyn ja rajaamiseen, suunnitteluun
38Tietotekniikan ohjelmointityön tarkoituksena on totuttaa kurssien
39harjoitustöitä laajempi tietokoneohjelma tai -ohjelmisto.
40Ohjelmointitöissä perehdytään itse ohjelmoinnin lisäksi varsinaiseen
41ohjelmointityöhön -- aiheen määrittelyyn ja rajaamiseen, suunnitteluun
4342sekä dokumentointiin. Ohjelmointityöstä saatavat
4443ohjelmointikokemukset ovat hyödynnettävissä myös työelämässä.
4544
4747löytyy erillinen ohje [[http://www.mit.jyu.fi/santanen/info/kirjoittamisesta.html][toiselta sivulta]]. Ohjelmointityön tekijän
4848suositellaan tutustuvan lisäksi [[http://www.mit.jyu.fi/palvelut/sovellusprojektit/projohje.html][Sovellusprojektien ohjeeseen]].
4949
50[[Ohjelmointit%C3%B6iden%20aiheet%20ja%20ohjaus][Luvussa 2]] käsitellään ohjelmointitöiden ohjausta, laajuutta ja
51aiheiden hankkimista sekä sitä, keiden opintoihin ohjelmointityöt
52yleisesti kuuluvat. [[Pakollisuus%20ja%20laajuus][Luvussa 3]] kuvataan ohjelmointitöiden
53hyväksymiseen vaadittavia dokumentteja.
50# Seuraavassa luvussa käsitellään ohjelmointitöiden ohjausta, laajuutta ja
51# aiheiden hankkimista sekä sitä, keiden opintoihin ohjelmointityöt
52# yleisesti kuuluvat. [[Pakollisuus%20ja%20laajuus][Luvussa 3]] kuvataan ohjelmointitöiden
53# hyväksymiseen vaadittavia dokumentteja.
5454
5555* Ohjelmointitöiden aiheet ja ohjaus
5656
8282*tulee olla* opetuksessa vapaasti käytettävissä.
8383
8484*Ohjelmointityöstä tulee sopia mieluiten ennakkoon vastaavan ohjaajan kanssa*
85sekä toimittaa hänelle työstä lyhyt esikuvaus (katso [[Esikuvaus][luku 3.2]]).
85sekä toimittaa hänelle työstä lyhyt esikuvaus (katso [[Ehdotus ja kuvaus][Ehdotus-luku]]).
8686
8787** Työn määrittely ja ohjaus
8888
112112hyvistä ohjelmointitavoista voi kysyä ohjelmointityön ohjaajalta ja
113113kurssien luennoitsijoilta.
114114
115*Versiohallinnan* käyttö on pakollista.
115*Versiohallinnan* käyttö on pakollista. Tällöin lähdekoodi muutoksineen
116pysyy tallessa, joten vanhaan versioon on helppo palata. Myös uusia
117vaihtoehtoja toteutuksille voi helpommin kokeilla, sillä paluu vanhaan
118onnistuu ongelmitta.
116119
117120*Ohjelmointityön ongelmia pystyy osin välttämään ja hallitsemaan
118suunnittelun avulla.* Ohjelmointityön suunnitelmassa kannattaa kuvien
121suunnittelun avulla.* Ohjelmointityön suunnitelmassa kannattaa kuvien
119122ja tekstin avulla hahmotella toteutettavan ohjelman ja sen osien
120123rakennetta sekä yhteyksiä muihin ohjelmiin, tiedoistoihin,
121tietokantoihin ja laitteisiin. Lisäksi suunnitelmassa tulee
122kriittisesti tarkastella käytettäviä työkaluja ja arvioida millaisia
123ongelmatilanteita työssä tullaan kohtaamaan. Jo pelkkä vapaalla
124kädellä paperille hahmoteltu suunnitelma auttaa työssä, mutta monesti
125tekstinkäsittelyohjelmalla toteutettu suunnitelma soveltuu suurelta
126osin työselosteen pohjaksi. Esitä suunnitelma ohjaajalle työn
127alkuvaiheessa.
124tietokantoihin ja laitteisiin. Lisäksi suunnitelmassa on hyvä
125kriittisesti tarkastella käytettäviä työkaluja, sekä arvioida
126millaisia ongelmatilanteita työssä tullaan kohtaamaan. Jo pelkkä
127vapaalla kädellä paperille hahmoteltu suunnitelma auttaa työssä.
128Esitä suunnitelma ohjaajalle työn alkuvaiheessa.
128129
129130Suunnitelmaa ei kuitenkaan aina kannata noudattaa liian orjallisesti,
130131sillä se antaa lähinnä suuntaviivat työlle. Työn edetessä tekijä
131132oppii tuntemaan paremmin aihetta ja työkaluja, jolloin sovelluksen
132toteuttamiseen saattaa löytyä suunnitelmaa parempia ratkaisuja. Ennen
133suunnitelman laatimista kannattaa tutustua [[http://www.mit.jyu.fi/palvelut/sovellusprojektit/projohje.html][sovellusprojektien
134ohjeeseen]].
133toteuttamiseen saattaa löytyä suunnitelmaa parempia ratkaisuja.
134# Ennen suunnitelman laatimista kannattanee tutustua [[http://www.mit.jyu.fi/palvelut/sovellusprojektit/projohje.html][sovellusprojektien ohjeeseen]].
135135
136136Ongelmien välttämiseksi tulee tekijän ottaa jo ohjelmointia
137aloittaessaan tavakseen *kommentoida tekemänsä ohjelma hyvin*.
138Tällöin tekijän on jälkeenpäin helppo palauttaa mieleensä kuhunkin
139ohjelmakohtaan alunperin suunniteltu toiminto. Lisäksi virheen
140jäljittäminen kommentoidusta koodista on paljon helpompaa ja
141nopeampaa. Apua pyydettäessä ohjaaja kieltäytyy jäljittämästä
142virhettä huonosti kommentoidusta lähdekoodista. Myöskään
143monimutkainen ja sätösmäinen ohjelmakoodi ei tarkoita sitä, että
144ohjelmointityö on onnistunut ja erinomainen. Yleensä tällöin on kyse
145täysin päinvastaisesta.
137aloittaessaan tavakseen *kommentoida tekemänsä ohjelma hyvin*, sekä
138kirjoittaa muistiin perustelut tehdyille valinnoille. Tällöin tekijän
139on jälkeenpäin helppo palauttaa mieleensä kuhunkin ohjelmakohtaan
140alunperin suunniteltu toiminto. Lisäksi virheen jäljittäminen
141kommentoidusta koodista on paljon helpompaa ja nopeampaa. Apua
142pyydettäessä ohjaaja kieltäytyy jäljittämästä virhettä huonosti
143kommentoidusta lähdekoodista. Myöskään monimutkainen ja sätösmäinen
144ohjelmakoodi ei tarkoita sitä, että ohjelmointityö on onnistunut ja
145erinomainen. Yleensä tällöin on kyse täysin päinvastaisesta.
146146
147147*Ongelmien sattuessa kannattaa rohkeasti ottaa yhteyttä
148148ohjelmointityön ohjaajaan.* Usein paras neuvoja on aihetta ehdottanut
150150
151151* Ohjelmointityön dokumentointi
152152
153Ohjelmointityöt ovat [[http://www.mit.jyu.fi/opiskelu/opas/Tietotekniikka.html][tietotekniikan kandidaattiopintojen]] viimeisiä
154opintojaksoja, joten niiden tulee sisältää kaikki työelämän
155ohjelmointiin sisältyvät osaset kunnollista dokumentointia myöten.
153# Ohjelmointityöt ovat [[http://www.mit.jyu.fi/opiskelu/opas/Tietotekniikka.html][tietotekniikan kandidaattiopintojen]] viimeisiä
154# opintojaksoja, joten niiden tulee sisältää kaikki työelämän
155# ohjelmointiin sisältyvät osaset kunnollista dokumentointia myöten.
156156*Dokumentointia*, erityisesti lähdekoodin, mutta myös työselosteen
157157osalta, *tulee tehdä koko ohjelmointityön ajan*. Tällöin lähdekoodit
158158säilyvät tekijälle ymmärrettävinä ja työselosteenkin teko on
162162
163163Tietotekniikan cum laude -ohjelmointitöiden dokumentointiin kuuluvat
164164
165- esikuvaus,
165- ohjelman tai ohjelmiston kuvaus,
166166- sovelluksen käyttöohje (ellei se ole integroituna toteutukseen),
167167- ohjelman lähdekoodi kommentteineen,
168- työn tilaajan lausunto tietotekniikan laitoksen ulkopuolelle
168- työn tilaajan lyhyt lausunto tietotekniikan laitoksen ulkopuolelle
169169 toteutetun ohjelmointityön tapauksessa, sekä
170170- tekijän itsearviointi ja työn jälkiselvitys.
171171
172*Työ ja dokumentit palautetaan käyttämällä* versionhallintapalvelua,
173esimerkiksi yliopiston [[http://yousource.it.jyu.fi/][YouSource-versiohallintapalvelua]] tai muuta
174julkista ja avointa palvelua. Suosimme git-pohjaisia
175versiohallintajärjestelmiä, mutta muutkin julkisesti ja ilmaisesti
176saatavilla olevat kelpaavat.
172*Työ ja dokumentit palautetaan* käyttämällä *versionhallintapalvelua*,
173esimerkiksi yliopiston [[http://yousource.it.jyu.fi/][YouSource-versiohallintapalvelua]], tai jotain
174muuta julkista ja avointa palvelua. Suosimme git-pohjaisia
175versiohallintajärjestelmiä, mutta muutkin vastaavasti saatavilla ja
176käytettävissä olevat kelpaavat.
177177
178Huomaa myös, että hyvä ohjelmointitapa edellyttää versionhallinnan
178Huomaathan myös, että hyvä ohjelmointitapa edellyttää versionhallinnan
179179käyttöä myös työn aikana. Jos näin ei ole tehty, työ hylätään
180180välittömästi.
181181
182** Esikuvaus
182** Ehdotus ja kuvaus
183183
184184*Aiheen hyväksyminen Tietotekniikan ohjelmointityöksi edellyttää lyhyen
185185esikuvauksen toimittamista ohjelmointitöiden ohjaajalle*. Kyseinen lyhyt
204204
205205Jos tarjoat ohjelmointityöksi jo aiemmin valmistunutta ohjelmaa
206206varmista, että siitä on saatavilla esikuvaus, tai että vastaavat asiat
207löytyvät muusta dokumentaatiosta.
207löytyvät muusta dokumentaatiosta. Varmista myös, että ohjelma
208lähdekoodeineen on opetuksessa vapaasti käytettävissä.
208209
210Esikuvaus täydennetään lopulliseksi kuvaukseksi työn aikana.
211
209212** Itsearviointi ja jälkiselvitys
210213
211214Tekijän *itsearvion* tulee sisältää seuraavat kohdat.
223223- Sovelluksen mahdollinen jatkokehitys sekä ohjeet jatkokehittäjälle.
224224- Yhteenveto.
225225
226*Käytännön toteutus*
226*** Käytännön toteutus
227227
228228Tässä kappaleessa tulee kuvata sovelluksen kokonaisrakenne, mielellään myös
229229graafisesti. Kuvauksen tulee kattaa vähintään ohjelman osien suhteet sekä
290290
291291* Yhteenveto
292292
293Tämä ohje antaa neuvoja ohjelmointitöiden menestykselliseen
294läpiviemiseen Jyväskylän yliopiston tietotekniikan laitoksella. Ohjeet
295käsittelevät sekä ohjelmointityönä toteutettua sovellusta että siihen
296liittyviä dokumentteja. Ohjeiden laadinnassa on huomioitu aiemmista
297ohjelmointitöistä saadut kokemukset.
293Ohjelmointityö tulee tehdä hyvien ohjelmointikäytänteiden mukaisesti.
294Työ palautetaan versiohallintajärjestelmän kautta. Työ tulee
295dokumentoida niin, että sen käyttö onnistuu myös meiltä. Työn tulee
296olla niin julkinen ja avoin, että sitä voidaan halutessa käyttää apuna
297opetuksessa alkuperäinen tekijä tunnustaen.
298298
299299Ohjelmointitöistä voi kysyä lisätietoa ohjaajilta [[https://www.jyu.fi/it/laitokset/mit/henkkunta/henkiloekunta/ji][Jonne Itkonen]] ja
300300[[https://www.jyu.fi/it/laitokset/mit/henkkunta/henkiloekunta/aleator][Ville Tirronen]]. Myös kritiikki, positiiviset ja negatiiviset
301kokemukset sekä kommentit otetaan mielellään vastaan, jolloin niitä
302voidaan hyödyntää ohjelmointitöiden kehittämisessä. Ohjelmointitöiden
301kokemukset sekä kommentit otetaan mielellään vastaan. Niitä
302hyödynnetään kurssin kehittämisessä. Ohjelmointitöiden
303303aiheita otetaan myös erittäin mielellään vastaan.
304304
305305*Hauskoja ja antoisia hetkiä ohjelmointityön parissa!*
306306
307307--------------
308308
309Ville Tirronen 2015-09-09
310Jonne Itkonen 2015-09-09
309Ville Tirronen 2015-09-14
310Jonne Itkonen 2015-09-14
311311Kari Kärkkäinen 2003-08-05
312312
313* Aputyökalut :NOEXPORT:
313# * Aputyökalut :NOEXPORT:
314314
315#+BEGIN_SRC elisp
316 ;; muista export-to-html ensin, tai opettele, Jonne, kirjoittamaan
317 ;; se lispillä tähän kohtaan
318 ;(org-export-as-html)
319 (shell-command "rsync -av harjohje.org harjohje.html harjohje.pdf jalava.cc.jyu.fi:/var/www/virtual.hosts/www.mit.jyu.fi/opiskelu/opinnayte/info")
320#+END_SRC
315# #+BEGIN_SRC elisp
316# ;; muista export-to-html ensin, tai opettele, Jonne, kirjoittamaan
317# ;; se lispillä tähän kohtaan
318# ;(org-export-as-html)
319# (shell-command "rsync -av harjohje.org harjohje.html harjohje.pdf jalava.cc.jyu.fi:/var/www/virtual.hosts/www.mit.jyu.fi/opiskelu/opinnayte/info")
320# #+END_SRC
321321
322#+RESULTS:
323: 0
322# #+RESULTS:
323# : 0