Kurssilla jaossa 60 pistettä. Pisteet jakautuvat seuraavasti
- Viikkodeadlinet 17p
- Koodikatselmointi 2p
- Dokumentaatio 12p
- Määrittely
- Arkkitehtuuri
- Käyttö/asennusohje
- Testidokumentti
- JavaDoc
- Testaus 5p
- Testit
- Lopullinen ohjelma 24p
- Toiminnallisuus
- Koodin laatu
Arvosanaan 1 riittää 30 pistettä, arvosanaan 5 tarvitaan noin 55 pistettä.
Läpipääsyyn vaatimuksena on lisäksi vähintään 10 pistettä lopullisesta ohjelmasta.
Pisteet (yht 24) jakautuvat seuraavasti
- Käyttöliittymä 4p
- 0p yksinkertainen tekstikäyttöliittymä
- 1-2p monimutkainen tekstikäyttöliittymä
- 2-3p yksinkertainen graafinen käyttöliittymä
- 4p laaja graafinen käyttöliittymä
- Talletetun tiedon käyttö ja tiedon tallettaminen 4p
- ei pysyväistallennusta
- 1-2p tiedosto (1p jos ohjelma ainoastaan lukee tiedostoja)
- 3-4p tietokanta (3p jos ohjelma ainoastaan lukee tietokannasta dataa)
- 3-4p internet (esim. google docs tai joku muu talletusratkaisu)
- Pisteytys riippuu käsiteltävän tiedon monimutkaisuudesta
- Sovelluslogiikan kompleksisuus 3p
- Ohjelman laajuus 4p
- Ulkoisten kirjastojen hyödyntäminen 1p
- Suorituskelpoinen jar-tiedosto 1p
- Tiedosto generoitavissa tai löytyy repositoriosta loppupalautus-nimisestä releasesta
- Koodin laatu 4+1p
- Kooste laatuvaatimuksista
- 4p hyvät abstraktiot (esim. Design patternien kuten DAO hyödynnys), hyvä luokkarakenne, helposti testattava ja laajennettava, ei ilmeistä copypastea
- +1p checkstylesäännöt kunnossa (muutama checkstyletyylin rikkomus saatetaan katsoa läpi sormien, jos tyylirikon poisto esim. huonontaisi muuten koodin laatua)
- virheiden käsittely 2p
- 2p Sovellus toimii konsistentisti, ei kaadu virheellisillä syötteillä, ei heitä poikkeuksia ja antaa järkevät virheilmoitukset
- Älä jätä sovellukseesi poiskommentoitua koodia, tai koodia jota sovellus ei käytä (esim. refaktoroinnin myötä turhaksi muuttuneet metodit/luokat)
- jos jätät, vähenevät koodin laadun pisteet -1 tai -2p riippuen kommentoidun/turhan koodin määrästä
-
Miten laaja on laaja?
-
Kurssin referenssisovellus olisi laajuudeltaan juuri ja juuri 2 pisteen arvoinen, sovelluslogiikaltaan se on aika suoraviivainen ja ansaitsisi vain yhden pisteen
-
Laajuutta ei voida määritellä tarkasti esim. luokkien tai metodien määrällä, laajuus on aina suhteellinen sovelluksen tyyppiin ja kompleksisuuteenkin
-
Eräs tapa laajentaa sovellusta ja lisätä sen kompleksisuutta on tehdä siitä parametrein konfiguroitava ja laajennettava, esim:
- Sovelluksen käyttämän tietokantatiedoston nimi ei ole kirjoitettu koodiin vaan on käyttäjän määriteltävissä
- Pelissä eri vaikueustasojen pelimaailmat eivät ole määritelty koodissa vaan luodaan erillisten tiedostojen perusteella
- Pacmanissa hirviöiden määrä ei ole ohjelmakoodiin kovakoodattu vakio vaan valittavissa käyttöliittymästä
- Konfiguroitavuus voidaan toteuttaa joko käyttöliittymän tai konfiguraatiotiedostojen avulla
Täysien pisteiden (5p) edellytys:
- Testattu kattavasti: rivi- ja haarautumakattavuus korkea (noin 70%)
- Testien pitää testata hyödyllisiä asioita, pelkät testikattavuutta nostavat hyödyttömät (esim. assert-komentoja sisältämättömät) testit eivät tuo pisteitä
- Testaus riittävää sekä yksikkö- että integraatiotasolla
- eli yksittäisten luokkien lisäksi on testattava myös monen luokan yhdistelmän tuottavaa toiminnallisuutta
- Sovelluslogiikkaa testataan realistisilla skenaarioilla
- Testit testaavat mielekkäitä asioita
- jos testit on tehty ainoastaan testauskattavuuden kasvattamiseksi, ei pisteitä ole montaa odotettavissa
- Riippuvuudet käsitelty järkevästi
- tietokantaa käyttävissä sovelluksissa testeissä käytössä "testitietokanta"
- myös valekomponentit ovat hyviä joissain tilanteissa, ks. esim referenssisovellus
Dokumentaatio tuo yhteensä maksimissaan 12 pistettä, jotka jakautuvat seuraavasti
- Määrittelydokumentti 2p
- päivitetty vastaamaan lopullisen ohjelman toiminnallisuutta
- päivittämätön määrittelydokumentti tuo 0 pistettä
- Arkkitehtuurikuvaus 4p
- Käyttö/asennusohje 1p
- arvostelijan tulee pystyä asentamaan ohjelma ja käyttämään sitä ohjeen avulla
- Testausdokumentti 2p
- JavaDoc 2p
- Suoraviivaisia gettereitä, settereitä ja konstruktoreja ei tarvitse dokumentoida
- Repositorio ja README 1p
- Repositorion ja README:n oletetaan olevan aiempien viikkojen vaatimusten mukainen
- Repositoriossa on loppupalautus-niminen release, joka sisältää suoritettavissa olevan jar-tiedoston ja muut ohjelman mahdollisesti tarvitsemat tiedostot
Referenssisovellus toimii hyvänä esikuvana dokumentaation suhteen. JavaDoc tosin on sovelluksessa osittain puutteelinen.
HUOM älä copypastea referenssisovelluksen dokumentaation tekstiä omaan dokumentaatioosi, kirjoita teksti omin sanoin. Tekstin suora kopiointi johtaa hylkäämiseen.
-
Koneiden konfiguraatioissa on eroja, ja tällä kurssilla ei riitä että hajoitustyössä tekemäsi sovellus toimii vain omalla koneellasi
-
Harjoitustyösi pitää pystyä joka viikko suorittamaan, kääntämään ja testaamaan komentoriviltä käsin laitoksen Linux-koneilla (tai uusimmat päivitykset sisältävällä cubbli-linuxilla), muussa tapauksessa työtä ei tarkasteta ja menetät viikonpalautuksen pisteet.
-
Pääset testaamaan ohjelmaasi laitoksen koneella myös kotoa käsin käyttämällä etätyöpöytää https://helpdesk.it.helsinki.fi/ohjeet/tietokone-ja-tulostaminen/tyoasemapalvelu/etakaytettavat-tyopoydat-vdi-ja-vmware tai kirjautumalla ssh:lla palvelimelle melkki.cs.helsinki.fi