TKK TKK - TKO - T-106.250 Tietorakenteet ja algoritmit T

Suunnittelutehtävän ratkaisuvaihe

Ajankohtaista

Kurssiesite

Suorittaminen
   Ilmoittautuminen
   Luennot
   Laskuharjoitukset
   Tentti

   Suunnittelutehtävä

Henkilökunta

Oppimateriaalia

Pistari
   Pelaa
   Käyttöohjeet
   parhaat 20
   Palaute


Aiemmat kurssit

In English

Ratkaisuvaiheessa esitetään tekninen periaateratkaisu asetetulle ongelmalle. Periaateratkaisu ymmärretään tässä siten, että ratkaisun lukija pystyy sen perusteella selkeästi ymmärtämään ratkaisun perusideat, eri toiminnoissa käytettävät tietorakenteet ja algoritmit sekä niiden perustelut. Periaateratkaisu pyritään esittämään sillä yksityiskohtaisuuden tasolla, että sitä voitaisiin varsin suoraviivaisesti täsmentää edelleen implementaatiotasolle saakka. Ratkaisussa ei edellytetä ohjelmakoodin kirjoittamista.Ohjelmakoodi voi jopa vaikeuttaa yleiskuvan saamista, koska kuvauksessa on silloin mukana niin runsaasti yksityiskohtia.

Ratkaisuesityksen rakenne

Ratkaisun esittämisessä pyritään noudattamaan seuraavaa jakoa. Ohjetta voi soveltaa, jos se tuntuu perustellulta. Alkuosan tekstissä voi käyttää hyväksi määrittelyvaiheen tuottamaa osuutta. Sellainen ei kuitenkaan käy, että tekstissä vain viitataan, että asiaa on käsitelty määrittelyosuudessa. Ratkaisudokumentin lukijalla tulee olla helposti saatavilla kaikki olennainen materiaali palautetun dokumentin mukana. Ohjenuorana tässä on ratkaisuesityksen selkeys ja helppo luettavuus, joten voi olla kannattavaa editoida määrittelyn tekstiä ja tiivistää tai täydentää se suoraan mukaan ratkaisudokumenttiin.

  1. Yleiskuvaus
    • Järjestelmän tavoitteet
    • Suunnitellun järjestelmän osan tavoitteet
  2. Toiminnallisuus
    • Kuvataan kaikki suunnitellun järjestelmän osan keskeiset toiminnot. Mitä järjestelmä niissä tekee?
    • Mitä se tuottaa toimintojen tuloksena ja missä muodossa tulostieto esitetään?
  3. Tiedon siirto
    • Esitetään suunnitellun järjestelmän osan ja muun järjestelmän välisten rajapintojen kautta kulkeva tieto.
    • Mitä tietoja siirretään suunnitellun osan ja muun järjestelmän välillä ja missä muodossa ne esitetään?
    • Rajapinnoista ei tarvitse esittää funktio- tai metodikutsuja
  4. Ohjelman tarvitsemat tietorakenteet
    • Mitä keskeisiä tietorakenteita toteutettava osa käyttää toiminnassaan?
    • Eri tietorakenteiden määrittelyt (tietosisältö, tiedon esitystapa)
  5. Eri toimintojen toteutus
    • Kustakin eri toiminnosta esitetään seuraavat asiat:
      • Algoritmi(e)n yleiskuvaus sanallisesti. Sitä voi täydentää esittämällä algoritmi(t) pseudokoodilla ellei sanallinen kuvaus itsessään jo ole riittävän tarkka ja täsmällinen. Pseudokoodin kirjoittaminen ei siis ole itsetarkoitus vaan se yksi mahdollinen kuvaustapa. Pseudokoodista voi katsoa ohjeita täältä.
      • Koodiakin voi kirjoittaa, mutta silloin helposti mennään liian detaljitasolle, mikä lisää työmäärää. Missään nimessä tarkoitus ei ole, että koodi käännetään ja testataan huolellisesti. Koodi ei myöskään korvaa sanallista kuvausta.
      • Jos jokin ratkaisun osa perustuu siihen, että käytetään suoraan jotain kurssilla käsiteltyä perustietorakennetta tai algoritmia, tämän toimintaa ei tarvitse selittää erikseen. Esimerkki: "Asiaan XXX liittyvät tiedot talletetaan hakurakenteeseen, joka toteutetaan AVL-puuna". AVL-puun käsittelyalgoritmeja ei tarvitse tällöin kuvata. Sen sijaan, jos AVL-puuta muokataan (vaikka duplikaattien käsittelyn vuoksi) perusratkaisusta, toiminnan erot standardialgoritmiin nähden tulee kuvata.

        Lisäksi, jos käytetään tietorakenteita, joita kurssilla ei käsitellä, tulee dokumenttiin laittaa viitteet lähteisiin.

  6. Ratkaisun perustelut ja analyysi
    • Analysoidaan esitettyä ratkaisua.
      • Miksi tehtävään esitetään tällaista ratkaisua?
      • Miten voidaan perustella, että ratkaisu toimii?
      • Mitkä ovat ratkaisun hyvät puolet?
      • Mitkä ovat ratkaisun ongelmat?
      • Mikä on ratkaisualgoritmien tehokkuus esim. O()-notaatiossa? Perustelut?
      • Mikä on käytettävien tietorakenteiden koko?  Perustelut?
      • Voidaanko ratkaisua tai sen osia parantaa?  Jos, niin miten?

Ratkaisun esittämisessä selkeys, ymmärrettävyys ja perustelut ovat tärkeitä asioita. Luonnollisesti ratkaisun oikea toiminnallisuus on pohjalla. Esityksen tavoiteltua pituutta ei voi oikein ilmaista sivumääränä. Jonkinlaista suuntaa antaa sanamäärä, esim. 1500-2000 sanaa (tällä sivulla on karkeasti n. 400 sanaa). Pituus ei sinällään ole ansio eikä tekstiä pidä tarpeettomasti venyttää.


Pseudokoodista voi katsoa ohjeita täältä.


Kurssin uutisryhmä: opinnot.tik.trak webnews
Kurssin sähköposti: trak@niksula.hut.fi
Sivua päivitetty viimeksi: 2005-08-26
<URL: http://www.cs.hut.fi/Opinnot/T-106.253/k2005/ suunnittelutehtava/ratkaisuohje.html >