Skip to content

Vertaisarviointi 1 #3

@jtompuri

Description

@jtompuri

Vertaisarviointi tehty 2.6.2025 klo 15.00.

Web-sovelluksen idea ja keskeiset toiminnot on kuvattu hyvin README:ssä. Sovellus toimii halutulla tavalla, mutta virhetilanteiden käsittelyssä, syötteiden tarkistuksessa ja visuaalisessa ilmeessä on vielä kehitettävää.

Välipalautus 2:n vaatimukset pääosin toteutuvat:

  1. Käyttäjä pystyy luomaan tunnuksen ja kirjautumaan sisään sovellukseen.
  2. Käyttäjä pystyy lisäämään, muokkaamaan ja poistamaan tietokohteita.
  3. Käyttäjä näkee sovellukseen lisätyt tietokohteet.
  4. Käyttäjä pystyy etsimään tietokohteita hakusanalla tai muulla perusteella.
  5. README.md-tiedoston tulee kuvata, mikä on sovelluksen nykyinen tilanne.

Ehdottaisin lisäämään README-tiedostoon ohjeet web-sovelluksen käyttöönottoon sekä toteutetut ja toteuttamattomat ominaisuudet.

Web-sovellus täyttää myös välipalautus 3:n vaatimukset:

  1. Sovelluksessa on käyttäjäsivut, jotka näyttävät tilastoja ja käyttäjän lisäämät tietokohteet.
  2. Käyttäjä pystyy valitsemaan tietokohteelle yhden tai useamman luokittelun. Mahdolliset luokat ovat tietokannassa.
  3. Käyttäjä pystyy lähettämään toisen käyttäjän tietokohteeseen liittyen jotain lisätietoa, joka tulee näkyviin sovelluksessa.

Arvostelusivun yksityiskohtaisia vaatimuksia on vielä toteuttamatta:

[Kommentit hakasulkeissa]

Sovelluksen perusvaatimukset (7 p)

  • Käyttäjä pystyy luomaan tunnuksen ja kirjautumaan sisään sovellukseen
  • Käyttäjä pystyy lisäämään, muokkaamaan ja poistamaan tietokohteita
  • Käyttäjä näkee sovellukseen lisätyt tietokohteet
  • Käyttäjä pystyy etsimään tietokohteita hakusanalla tai muulla perusteella
  • Käyttäjäsivu näyttää tilastoja ja käyttäjän lisäämät tietokohteet
  • Käyttäjä pystyy valitsemaan tietokohteelle yhden tai useamman luokittelun
  • Käyttäjä pystyy lisäämään tietokohteeseen toissijaisia tietokohteita

Tekniset perusvaatimukset (8 p)

  • Sovellus toteutettu kurssimateriaalin mukaisesti
  • Sovellus toteutettu Pythonilla käyttäen Flask-kirjastoa
  • Sovellus käyttää SQLite-tietokantaa
  • Kehitystyössä käytetty Gitiä ja GitHubia
  • Sovelluksen käyttöliittymä muodostuu HTML-sivuista
  • Sovelluksessa ei ole käytetty JavaScript-koodia
  • Tietokantaa käytetään suoraan SQL-komennoilla (ei ORMia)
  • Kirjaston flask lisäksi käytössä ei muita erikseen asennettavia kirjastoja
     

Toimivuus ja käytettävyys (15 p)

  • Käyttäjän yleiskokemus sovelluksen toimivuudesta
  • Käyttäjän yleiskokemus sovelluksen käytettävyydestä
  • Käyttäjän lähettämässä tekstissä rivinvaihdot näkyvät selaimessa
  • Kuvissa käytetty alt-attribuuttia (jos sovelluksessa kuvia)
  • Lomakkeissa käytetty label-elementtiä
  • CSS:n avulla toteutettu ulkoasu (itse tehty, ei CSS-kirjastoa)

Versionhallinta (10 p)

  • Kehitystyön aikana on tehty commiteja säännöllisesti
  • Commit-viestit on kirjoitettu englanniksi
  • Commitit ovat hyviä kokonaisuuksia ja niissä on hyvät viestit
  • Versionhallinnassa ei ole sinne kuulumattomia tiedostoja
  • Tiedosto README.md antaa hyvän kuvan sovelluksesta [README:tä voisi vielä täydentää]

Ohjelmointityyli (15 p)

  • Yleiskuva koodin laadusta (selkeys, luettavuus ja tyyli)
  • Sisennyksen leveys on neljä välilyöntiä [html-sivuissa sisennys on kaksi välilyöntiä]
  • Koodi on kirjoitettu englanniksi
  • Muuttujien ja funktioiden nimet muotoa total_count (ei totalCount)
  • Merkkijonoissa käytetty aina joko ' tai " [review.py-tiedostossa on käytetty '-merkkejä]
  • Välit oikein =-merkin ympärillä
  • Välit oikein ,-merkin ympärillä
  • Ei koodia tyyliin if success return True else return False
  • Jos funktio palauttaa arvon, tulee olla useita mahdollisia palautusarvoja
  • Ei sulkeita if- ja while-rakenteiden ehtojen ympärillä
  • Ei ehtoja tyyliin result == None ja result is None [app.py rivi 115: if review is None:]

Tietokanta-asiat (15 p)

  • Taulut ja sarakkeet on nimetty englanniksi
  • Taulut ja sarakkeet on nimetty hyvin
  • Käytetty REFERENCES-määrettä, kun viittaus toiseen tauluun
  • Käytetty UNIQUE-määrettä, kun tulee olla eri arvo joka rivillä
  • Ei kyselyjä muotoa SELECT *
  • Pitkät SQL-komennot jaettu usealle riville
  • Kaikki tiedot haetaan yhdellä SQL-kyselyllä, jos järkevästi mahdollista
  • Koodissa ei tehdä asioita, jotka voi mielekkäästi tehdä SQL:ssä
  • Käytetty try/except SQL-komennon ympärillä vain aiheellisesti

Sovelluksen turvallisuus (20 p)

  • Salasanat tallennetaan tietokantaan asianmukaisesti
  • Käyttäjän oikeus nähdä sivun sisältö tarkastetaan
  • Käyttäjän oikeus lähettää lomake tarkastetaan [create_review ja create_review ei tarkista, että kyseessä on oikea käyttäjä]
  • Käyttäjän syötteet tarkastetaan ennen tietokantaan lisäämistä [tarkistetaan vain syötteen pituus, vuosilukua ei, syötteitä ei puhdisteta HTML/JS-koodista, mikä mahdollistaa XSS-hyökkäyksen]
  • SQL-komennoissa käytetty parametreja
  • Sivut muodostetaan sivupohjien kautta
  • Lomakkeissa on estetty CSRF-aukko

Suuren tietomäärän käsittely (5 p)

  • Sovellusta testattu suurella tietomäärällä ja raportoitu tulokset
  • Sovelluksessa käytössä tietokohteiden sivutus
  • Tietokantaan lisätty indeksi, joka nopeuttaa suuren tietomäärän käsittelyä

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions