DOMANDA Idee per un progetto per l'esame universitario di ingegneria del software

FliMoMi

Utente Attivo
238
35
Salve a tutti, sto al terzo anno (fuori corso :/ ) alla facoltà di informatica, e nel corso di ingegneria del software viene chiesto agli studenti di formare dei piccoli team di 3-4 persone e di realizzare un progetto per sviluppare un prodotto software (non solo codice ed eseguibili ma anche relativa documentazione). Ora il prof ha dato questo vincolo:
Il sistema software dovrà avere una architettura three-tier con un client che implementa il livello
di presentazione, un server che implementa la logica applicativa e un DBMS per la gestione dei
dati. I tre livelli dovranno essere potenzialmente installabili su tre macchine diverse.
A tal riguardo avevo pensato a delle idee tipo:
  1. Generatore procedurale di mappe 2D per giochi di ruolo (non rispetta l'architettura, anche se forzatamente "il client mostra il risultato del calcolo procedurale del server che preleva i
    dati della generazione di base da un db"?)
  2. Porting di un gioco da tavolo (scacchi, gioco dell'oca, impiccato) multiplayer(in rete locale, aspetti relativi alla sicurezza?)
  3. Piattaforma online per prenotare le stampe di documenti in cartolibreria, che consente ad un utente di inviare un file (.pdf, .docx e etc) che vuole stampare (decidendo se fare una stampa a colori o meno)
    alla cartolibreria X che comunicherà in base ad una stima delle pagine da stampare l'orario entro quale le stampa sarà pronta al ritiro e il prezzo totale
  4. Piattaforma online per organizzare match sportivi come partite di calcetto, tennis, basket. che consente di creare gli eventi, invitare i partecipanti e poter cercare il contatto di una struttura adeguata per svolgere la partita.

Ora, nonostante io reputi tutte le idee "mediamente facili" da implementare, alcune hanno più probabilità di essere scartate dal prof, tipo le prime due. Nel dubbio diciamo le possibili candidate sono la 3 e la 4 ma per me ognuna di ste due ha un problema.

Con l'idea numero 3, si presenta il problema del pagamento, che per forza di cose, deve essere implementato online altrimenti può succedere che tizio X manda un file per la stampa, la cartoleria lo stampa ma il tizio non si presenta. Per cui andrebbe gestito un'ipotetica transazione online (via paypal e simili) che sarebbe un'enorme problema, sia dal punto di vista implementativo che a livello di documentazione (specialmente in quest'ultimo tra use cases e simili ci si perde all'infinito).

Per quanto riguarda l'idea numero 4 invece, la vorrei gestire seplicemente con utente X che si registra, cerca le varie strutture presenti nella citta/provincia adatte al suo evento, e nel caso ci comunica valutando prezzi orari e ecc. Ad accordi conclusi si crea il vero e proprio evento. Un problema riguarda la comuncazione tra la stuttura e l'utente (quindi 2 entità separate) sia a livello d'implementazione (quindi una chat) che documentativo. Un'altro è la gestione degli inviti, che non saprei come gestire, dato che una generazione del codice qr per entrare poi nella struttura dipenderebbe dalla struttura in se e sarebbe troppo complicato creare una specie di standard per tutte le strutture sportive...

Le idee che abbiamo avuto ad ora son queste ma come vedete i dubbi son "troppi". Per caso potete suggerirmi qualche idea? O si può rivedere qualcuna delle precedenti? Idee come e-commerce per ora le escludo perchè vorrei evitare sistemi di pagamento da implementare e da documentare.

Grazie in anticipo e scusatemi il muro di testo!
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,401
11,483
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
Guarda io all'università feci qualcosa cosi per quel progetto, una lavagna (paint online) con:
- client scaricabile (ogni utente si registrava al servizio e poi si poteva loggare)
- server Java (RMI) con db su server che gestiva le richieste degli utenti fornite lato client e salvava tutto.
La lavagna era in tempo reale ogni utente vedeva quello che facevano tutti gli altri utenti.

Chiusa la connection la lavagna veniva cancellata, con tutto tracciato nel db.
 

FliMoMi

Utente Attivo
238
35
Guarda io all'università feci qualcosa cosi per quel progetto, una lavagna (paint online) con:
- client scaricabile (ogni utente si registrava al servizio e poi si poteva loggare)
- server Java (RMI) con db su server che gestiva le richieste degli utenti fornite lato client e salvava tutto.
La lavagna era in tempo reale ogni utente vedeva quello che facevano tutti gli altri utenti.

Chiusa la connection la lavagna veniva cancellata, con tutto tracciato nel db.
Senz'ombra di dubbio un progetto affascinante, ma per me sarebbe inarrivabile lol
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,401
11,483
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
infatti si fa di team, uno fa il db con relativi schemi relazionali.
uno si occupa del client e la sua interfaccia
uno sviluppa il backend + connessioni db
 

alemian95

Utente Attivo
1,173
370
CPU
13600K
Dissipatore
Thermalright Peerless Assassin 120 SE
Scheda Madre
MSI PRO Z790-P WIFI ATX
HDD
WD Black 1TB SN850X
RAM
Kingston Fury Renegade DDR5 Silver 32GB 6400MT/s CL32
GPU
Gigabyte RTX 4070 Ti GAMING OC 12G
Monitor
BenQ MOBIUZ EX3415R
PSU
Thermaltake Toughpower GF3 750W
Case
NZXT H5 Flow
Periferiche
Mouse: Logitech G403 - Tastiera: Durgod Taurus K320
Net
FTTC 100 mega
OS
Windows 11 Home 64 bit
sarebbe troppo complicato creare una specie di standard per tutte le strutture sportive
Io cercherei di gestire più che le strutture, le tipologie di eventi. Mi spiego, dovresti avere più categorie di eventi (calcio a 5, calcio a 7, basket, tennis, ...), per ognuna di queste avere una serie di strutture in grado di ospitare l'evento, quindi ogni struttura avrà una serie di caratteristiche.
Il sistema potrebbe funzionare in questo modo:
- io utente decido di creare un evento X: partita di basket nella struttura Y il giorno Z alle ore T (e prenoto il campo)
- se l'evento è pubblico gli utenti registrati che abitano vicino alla struttura Y ricevono un invito e possono decidere se accettare o meno di partecipare, ovviamente sarà possibile accettare fino all'esaurimento dei posti per l'evento, per esempio se si tratta di una partita di basket si avranno 9 posti disponibili (il primo è per chi crea l'evento)
- se l'evento è privato allora puoi fare in modo che chi crea l'evento possa inserire una lista di utenti che riceveranno l'invito e parteciperanno quelli che accetteranno per prima.

È ovvio che per ogni entità va sviluppata una struttura adeguata per poterla rappresentare in maniera corretta.

Secondo me non è una brutta idea, e ti risparmierebbe anche il doverti studiare la documentazione per gestire i pagamenti online.
 
  • Mi piace
Reazioni: FliMoMi

Ibernato

Utente Èlite
4,328
2,047
OS
Windows 10 Pro / Ubuntu 22.04
Salve a tutti, sto al terzo anno (fuori corso :/ ) alla facoltà di informatica, e nel corso di ingegneria del software viene chiesto agli studenti di formare dei piccoli team di 3-4 persone e di realizzare un progetto per sviluppare un prodotto software (non solo codice ed eseguibili ma anche relativa documentazione). Ora il prof ha dato questo vincolo:

A tal riguardo avevo pensato a delle idee tipo:
  1. Generatore procedurale di mappe 2D per giochi di ruolo (non rispetta l'architettura, anche se forzatamente "il client mostra il risultato del calcolo procedurale del server che preleva i
    dati della generazione di base da un db"?)
  2. Porting di un gioco da tavolo (scacchi, gioco dell'oca, impiccato) multiplayer(in rete locale, aspetti relativi alla sicurezza?)
  3. Piattaforma online per prenotare le stampe di documenti in cartolibreria, che consente ad un utente di inviare un file (.pdf, .docx e etc) che vuole stampare (decidendo se fare una stampa a colori o meno)
    alla cartolibreria X che comunicherà in base ad una stima delle pagine da stampare l'orario entro quale le stampa sarà pronta al ritiro e il prezzo totale
  4. Piattaforma online per organizzare match sportivi come partite di calcetto, tennis, basket. che consente di creare gli eventi, invitare i partecipanti e poter cercare il contatto di una struttura adeguata per svolgere la partita.

Ora, nonostante io reputi tutte le idee "mediamente facili" da implementare, alcune hanno più probabilità di essere scartate dal prof, tipo le prime due. Nel dubbio diciamo le possibili candidate sono la 3 e la 4 ma per me ognuna di ste due ha un problema.

Con l'idea numero 3, si presenta il problema del pagamento, che per forza di cose, deve essere implementato online altrimenti può succedere che tizio X manda un file per la stampa, la cartoleria lo stampa ma il tizio non si presenta. Per cui andrebbe gestito un'ipotetica transazione online (via paypal e simili) che sarebbe un'enorme problema, sia dal punto di vista implementativo che a livello di documentazione (specialmente in quest'ultimo tra use cases e simili ci si perde all'infinito).

Per quanto riguarda l'idea numero 4 invece, la vorrei gestire seplicemente con utente X che si registra, cerca le varie strutture presenti nella citta/provincia adatte al suo evento, e nel caso ci comunica valutando prezzi orari e ecc. Ad accordi conclusi si crea il vero e proprio evento. Un problema riguarda la comuncazione tra la stuttura e l'utente (quindi 2 entità separate) sia a livello d'implementazione (quindi una chat) che documentativo. Un'altro è la gestione degli inviti, che non saprei come gestire, dato che una generazione del codice qr per entrare poi nella struttura dipenderebbe dalla struttura in se e sarebbe troppo complicato creare una specie di standard per tutte le strutture sportive...

Le idee che abbiamo avuto ad ora son queste ma come vedete i dubbi son "troppi". Per caso potete suggerirmi qualche idea? O si può rivedere qualcuna delle precedenti? Idee come e-commerce per ora le escludo perchè vorrei evitare sistemi di pagamento da implementare e da documentare.

Grazie in anticipo e scusatemi il muro di testo!
Io farei una cosa molto semplice:
- Gestione prenotazione ristorante

Client: accede ed effettua la prenotazione (potresti fare anche una dashboard dove vedi le prenotazioni, accessibile solo dall'admin del ristorante)
Server: riceve i dati e li invia al DB
DB: salvataggio dati

Classica accoppiata semplice ed accessibile in modo free su altervista: PHP + mySQL per server e DB
Altra soluzione per il server: Python (gestione delle API con flusk) + MongoDB. Questo ovviamente lo fai in locale. Se hai un raspberry esce qualcosa di carino :)
Client decidete voi la tecnologia. Io userei Flutter per farlo sia mobile che desktop oppure angular + ionic (sempre mobile e desktop)
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!