Ohjelmistokehityksen sovellusprojekti (SPL ja SPO)

Kahden ensimmäisen viikon ohjelma

Kaikki luennot pidetään tietoliikennelabrassa, mutta niihin voi osallistua myös etäyhteydellä kunkin ohjaajan ilmoittaman linkin kautta.

AikaSisältö
Ma 9.3 klo 9–15klo 9–11 Aloitusinfo
klo 12–15 Pekka (Git ja repon alustus)
Ti 10.3 klo 9–15klo 9–11 Pekka (Tietokannan suunnittelu + Backend)
klo 12:30–15:30 Kari (Qt)
Ke 11.3 klo 9–15klo 9-12 Pekka (Qt HTTP)
Ryhmätyötä
To 12.3 klo 10–15Teemu (Ohjelmistokehitys) + ohjausta
Pe 13.3 klo 9–15Ryhmätyötä (ER-kaavio palautetaan)


AikaSisältö
Ma 16.3 klo 9–16klo 9-11 Ryhmätyötä
klo 13-16 Kari (Qt)
Ti 17.3 klo 10–14Teemu (Ohjelmistokehitys) + ohjausta
Ke 18.3 klo 9–15Ryhmätyötä (ER-kaavio valmis)
To 19.3 klo 9–15Ryhmätyötä (1. palaverit: tarkistetaan GitHub)
Pe 20.3 klo 9–15Ryhmätyötä (1. palaverit: tarkistetaan GitHub)

Kolmannesta viikosta alkaen ryhmät työskentelevät joka päivä klo 9-15.

Oikopolut eri viikoille

Projektityön kuvaus

Työn aihe on pankkiautomaatti

Ohjelmiston rakenne on seuraava

Projektikuva

Työ sisältää

Huom! Edellä mainitut kuuluvat kurssin sisältöön ja arviointi perustuu niiden osaamiseen, joten millään muilla tekniikoilla noita ei saa korvata.

Sovelluksen toiminta

Oppimistavoitteet

Opiskelijan arviointi

Kukin opiskelija arvioidaan yksilöllisesti ja arvioinnissa huomioidaan seuraavat asiat:

Vertaisarvioinnin kohteet

Sovelluksen arviointi

Arviointi perustuu tähän dokumenttiin. Mikäli ristiriitaista tietoa esiintyy, niin tämä dokumentti on se, jota noudatetaan.

Vähimmäisvaatimukset sovellukselle (arvosana 1)

Vähimmäisvaatimukset (arvosana 2)

Hyvän arvosanan vaatimukset (arvosana 3)

Hyvän arvosanan vaatimukset (arvosana 4)

Kiitettävän arvosanan vaatimukset (arvosana 5)

(Huom! Kaksoiskortti on kytketty kahteen eri tiliin, joista toinen on debit-tili ja toinen credit-tili)

Tiivistelmä arvosanoille

Nämä ovat ohjelmistokokonaisuutta projektihallinnallisesta näkökulmasta koskevat minimit (arviointi):

  1 2 3 4 5
Versionhallinnan käyttö x x x x x
Viikkopalaverit x x x x x
Tekninen määrittelydokum. x x x x x
Projektisuunnitelma x x x x x
ER-kaavio x x x x x
Readme.md x x x x x

Nämä ovat itse ohjelmistokokonaisuutta koskevat minimit (arviointi):

  1 2 3 4 5
Kortinlukija toimii x x x x x
Kirjautuminen PIN-koodilla x x x x x
Saldon näyttö x x x x x
Rahan nosto (20,40,50,100) x x x x x
Tilitapahtumien näyttö x x x x x
Debit kortti x x x x x
PIN-koodille 10 s timer   x x x x
Kaikki CRUD-operaatiot   x x x x
Credit kortti     x x x
Rahan nosto (muu summa)     x x x
PIN-lukitus istunnolle     x x x
PIN-lukitus tietokantaan       x x
30 s timerit       x x
Tilitapahtumien selaus       x x
Tilakaavio         x
Kaksoiskortti         x
Lisäominaisuus         x

Arvosanaa alentavia seikkoja

Tiivistelmä arvioinnissa huomioitavista asioista:

Oppimateriaalit

Qt/Express-materiaalit (Pekka Alaluukas)

Ohjelmistokehityksen perusteet ja UML-mallinnus videot Yujassa (Teemu Leppänen)

Esimerkkisovelluksen UML-kaaviot

Kaaviot dokumentointiin

Esimerkiksi näillä työkaluilla:

Katso näistä Teams-kanavan dokumenteista mallia teknisen määrittelydokumentin kaavioihin:

Vaatimukset tietokannalle

Ilman credit-kortti ominaisuutta

Kun toteutetaan credit-kortti ominaisuus

Kun toteutetaan kaksoiskortti

Lisäominaisuuksia tietokannalle

Tileistä ja korteista

Lisäominaisuusideoita

(arvosanan 5 tarvitaan vähintään yksi tällainen lisäominaisuus)

Kuvan lataus ja näyttäminen

Idean esittelyvideo: https://www.youtube.com/watch?v=DlKRlZTNYl8

Toimintaperiaate:

REST APIssa voi käyttää Multer-moduulia.

Swagger dokumentointi

Idean esittelyvideo: https://www.youtube.com/watch?v=M6Fj5Y2K24w
https://www.npmjs.com/package/swagger-ui-express

Logitus

WebSocket

Toteutetaan WebSocketeilla jokin toiminto sovellukseen (vaikutus arvosanaan 1).

Idean esittely: https://youtu.be/QGnv7s0JIIo

Docker

Sovelluksen ajaminen Dockerissa (vaikutus arvosanaan 1).

Testien lisääminen backendiin

Esimerkiksi jest ja supertest (vaikutus arvosanaan 1)

Esittelyvideo: https://youtu.be/HEZufcp2umI

Tai Newman

Esittelyvideo: https://youtu.be/Wvv8GWQdvKU

CI/CD

Verkkopankin toteuttaminen

Ylimääräinen Qt-sovellus

Generatiiviset tekoälyt (AI-koodaus) ja vastaavat apuvälineet. Ohjaajien (ja yleisestikin IT-opettajien) ajatuksia aiheesta:

Viikkopalavereiden yleinen agenda

Viikko 1

1. Päivän / TEHTÄVÄT

  1. Luodaan neljän hengen ryhmät Excel-dokumentissa

  2. Jokainen opiskelija luo tunnuksen itselleen sivustolla https://peatutor.com/project_app/register/tvt25spl TAI https://peatutor.com/project_app/register/tvt25spo
    • Voit keksiä minkä hyvänsä tunnuksen
    • Rekisteröityä voi vain oamk.fi ja oulu.fi sähköposteilla
    • Luotuasi tunnuksen, saat sähköpostin, jossa on tunnuksesi ja salasanasi. Pidä ne tallessa.
  3. Jokaisesta ryhmästä yksi luo kurssin Teams-kanavan ALAISUUTEEN (ei siis kokonaan uutta Teams-kanavaa) uuden JULKISEN alikanavan, jolla on sama nimi kuin ryhmällä Excelissä eli SPL-01, SPL-02,…SPO-01, SPO-02, ….

Loppuviikon / TEHTÄVÄT

Vinkkejä tietokannan suunnitteluun

Viikko 2

Viikko 3

Viikko 4

Viikko 5

Viikko 6

Viikko 7

Viikko 8

Projektin alustaminen

📺 Voit katsoa ohjevideon osoitteesta:
https://www.youtube.com/watch?v=_lfn6vsrOJY


1. Repositoryn alustaminen

Yksi ryhmän opiskelijoista alustaa GitHub-repositoryn seuraavasti:

# Kloonaa repon omalle koneelleen
git clone <repository-url> 

cd groupx  # jossa groupx on kloonattu kansio ja x oman ryhmän numero
git checkout -b initialize

2. Backendin alustaminen

Anna groupx kansiossa seuraavat komennot

mkdir documents
mkdir backend
cd backend
npx express-generator --no-view
npm install

Huom! Tuo express-generator asentaa hieman vanhat npm-paketit, joten voitte halutessanne korvata tuon npx komennon seraavilla komennoilla (jotka ajetaan backend kansiossa):

npm init
npm install express mysql2 bcryptjs jsonwebtoken dotenv
npm install
mkdir routes
mkdir models

Ja sitten app.js rakennetaan kuten luennoilla on opastettu.


3. Qt-sovelluksen alustaminen

  1. Käynnistä Qt Creator
  2. Luo Qt Widget -tyyppinen sovellus, jonka nimeksi bank-automat
  3. Tallenna sovellus kansioon groupx
  4. Käännä sovellus
  5. Tarkista, että bank-automat-kansion alle ilmestyi build-kansio
  6. Jos build-kansiota ei ilmesty:

4. .gitignore-tiedoston luominen

Luo tiedosto projektikansion groupx juureen ja kirjoita siihen seuraavat rivit:

backend/node_modules/
bank-automat/build/
bank-automat/.qtcreator/
bank-automat/*.user 

5. Muutosten lisääminen ja pushaaminen

Suorita komennot kansion groupx juuressa:

git add .
git commit -m "projekti alustettu"
git push origin initialize

6. Tarkistukset GitHubissa

Varmista, että GitHubissa näkyy seuraavat kansiot:

Ja että seuraavat eivät ole GitHubissa:


7. Pull Request


8. Branchin yhdistämisen jälkeen

Henkilö, joka teki alustusvaiheet

git checkout main
git pull origin main

Muut ryhmän jäsenet