Ohjelmistokehityksen sovellusprojekti (monimuoto ryhmät)

Oikopolut eri viikoille

Ohjaajien kommentteja ja vinkkejä

Projektista

Avainsanoja: UML/määrittelyt, Qt, API, MySQL, UI/UX

Oppimistavoitteet

Arviointi

Opiskelijan arviointi perustuu:

Lisätehtäviä parempaan arvosanaan:

Extratehtäviä (erityisesti monimuoto-opiskelijat, joilla on jo Linux-kurssi käytynä). Nämä eivät korota arvosanaa:

Qt/Express-materiaalit (Pekka Alaluukas)

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

Extraa: IaC, reverse proxy, ohjelmistiolisensseistä (Teemu Korpela)

Kaaviot dokumentointiin

Esimerkiksi näillä työkaluilla:

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

Softalisensseistä

Noin 15 min viikkopalavereiden yleinen agenda

Viikkopalaverit pidetään ryhmän alikanavalla MS Teamssilla, niin ei tarvitse tehdä erillisiä kutsuja vaan voi liittyä suoraan siellä.

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

Sovelluksen arviointi

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

Huom! Monimuotoryhmissä ei käytetä kortinlukijaa, vaan aloitusikkunasta avataan PIN-koodinkyselykäyttöliittymä painiketta painamalla, jossa annetaan PIN-koodin lisäksi kortin-id.

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

  1 2 3 4 5
Debit kortti x x x x x
Credit kortti     x x x
Kaksoiskortti         x
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
Rahan nosto (muu summa)     x x x
Tilitapahtumien näyttö x x x x x
PIN-koodille 10 s timer   x x x x
Kaikki CRUD-operaatiot   x 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 x
Lisäominaisuus         x

Arvosanaa alentavia seikkoja

Vaatimukset tietokannalle

Ilman credit-kortti ominaisuutta

Kun toteutetaan credit-kortti ominaisuus

Kun toteutetaan kaksoiskortti

Lisäominaisuuksia tietokannalle

Opiskelijan arviointi

Arvioinnin kohteet

Lisäominaisuusideoita

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

CI/CD

Verkkopankin toteuttaminen

Ylimääräinen Qt-sovellus

Viikko 1

Täysin extraa, ei vaikuta arviointiin: Huom! tvt24spl ja tvt24spo: ei tarvitse Kanbania

Viikko 2

Viikko 3

Viikko 4

Viikko 5

Viikko 6

Viikko 7

Viikko 8

Kirjat ja kurssit taustatiedoksi ja malliksi

Tee tunnus O'Reillyn verkkokirjastoon students.oamk.fi:n sähköpostilla: https://libguides.oulu.fi/oreilly ja valitse institution not listed. Tuo on kaupallinen palvelu, mihin Oamkin kirjasto on ostanut pääsyn. Kannattaa käydä selailemassa tuota online-kirjastoa muutenkin.

Aika tunnettuja ja arvostettuja ohjelmistotekniikan kirjoja. Enemmistö näistä kirjoista suoraan tästä tweetistä:

Qt-aiheiset (ei tiedoa laadusta):

Node.js (ei tieto laadusta):

Linux-aiheiset (ei tieto laadusta):

UML (ei tietoa laadusta):

API (ei tietoa laadusta):

MySQL (ei tietoa laadusta):


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 backend
cd backend
npx express-generator --no-view
npm install

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/*.user
.qtcreator/

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:

backend
bank-automat

Ja että seuraavat eivät ole GitHubissa:

backend/node_modules
frontend/build
frontend/xxx.user


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