Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-01-2012, 18:03   #1
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
[Generale - JAVA] Sviluppare software con Upgrade Facili

Che regole seguite quando sviluppate un software che prevede, nel tempo, degli aggiornamenti continui???
vi spiego il mio problema:

ho sviluppato un software e a meno di una settimana dal "rilascio", già mi hanno commissionato dei cambiamenti che mi vanno a cambiare tutti gli "oggetti" che salvavo su disco.

Voi come affrontate questo problema? Anche eventuali evoluzioni grafiche ovviamente!
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2012, 20:28   #2
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da franksisca Guarda i messaggi
Che regole seguite quando sviluppate un software che prevede, nel tempo, degli aggiornamenti continui???
vi spiego il mio problema:

ho sviluppato un software e a meno di una settimana dal "rilascio", già mi hanno commissionato dei cambiamenti che mi vanno a cambiare tutti gli "oggetti" che salvavo su disco.

Voi come affrontate questo problema? Anche eventuali evoluzioni grafiche ovviamente!
- Modulare: separa le varie funzioni, non avere paura a usare più metodi del minimo necessario.
- Generico: rendi minime le modifiche da apportare al resto del software quando cambi qualcosa => usa le interfacce.
- Routine di test: quando vai a modificare qualcosa, puoi scazzare qualcos'altro, con le routine di test (per esempio usando JUnit) individui i blocchi che non funzionano più a dovere
- Commentare: ma non troppo! Usa lo stile javadoc se ti piace, commenti fra righe di codice ci stanno per passaggi importanti ma non esagerare.
- Nomi: variabili e metodi dai nomi chiari e intuitivi, non troppo lunghi.

Queste sono linee guida che mi hanno propinato a Ingegneria del Software
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2012, 00:24   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Open closed principle e decorator patterns are my 2 cents
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2012, 11:16   #4
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da demos88 Guarda i messaggi
- Modulare: separa le varie funzioni, non avere paura a usare più metodi del minimo necessario.
ok, quello già lo faccio
Quote:
Originariamente inviato da demos88 Guarda i messaggi
- Generico: rendi minime le modifiche da apportare al resto del software quando cambi qualcosa => usa le interfacce.
mmm, questo di solito non lo faccio....quindi mi consigli di usare più interfaccie e classi astratte?
Quote:
Originariamente inviato da demos88 Guarda i messaggi
- Routine di test: quando vai a modificare qualcosa, puoi scazzare qualcos'altro, con le routine di test (per esempio usando JUnit) individui i blocchi che non funzionano più a dovere
mai usato junit...devo studiarmelo...lo consigli "vivamente"?
Quote:
Originariamente inviato da demos88 Guarda i messaggi
- Commentare: ma non troppo! Usa lo stile javadoc se ti piace, commenti fra righe di codice ci stanno per passaggi importanti ma non esagerare.
questo di solito lo faccio in fase di postproduzione del codice proprio per ricordarmi "a mes stesso" cosa fanno i vari metodi
Quote:
Originariamente inviato da demos88 Guarda i messaggi
- Nomi: variabili e metodi dai nomi chiari e intuitivi, non troppo lunghi.

Queste sono linee guida che mi hanno propinato a Ingegneria del Software
anche il mio prof di IS ha dato le stesse direttive quando lo feci, ma ho chiesto per avere un resoconto diretto da chi già sviluppa

Quote:
Originariamente inviato da ndakota Guarda i messaggi
Open closed principle e decorator patterns are my 2 cents
il decorator in effetti può essermi molto utile, come il visitors in questo caso, visto che mi hanno chiesto di aggiungere 4 modelli di filtri differenti!!!
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2012, 15:46   #5
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Io attualmente collaboro allo sviluppo in ambito accademico un software abbastanza grosso.
JUnit è utile per progetti grandi anche se ha una sua filosofia di utilizzo che forse non ne rende così determinante l'uso nel tuo caso. Scrivendo delle classi di test, di permette di testare singoli metodi e sezioni di programma confrontando l'esito di ogni segmento di codice con un valore atteso.
Mentre per quanto riguarda le interfacce, sono un modo pratico per aiutarti a sviluppare codice nelle situazioni in cui per esempio vai a modificare il comportamento di alcune classi. L'uso di strutture definite su interfacce permette di usare quella struttura con qualsiasi oggetto che implementa quell'interfaccia, ovvero qualsiasi oggetto che garantisce la possibilità di essere trattato in un certo modo (definito dall'interfaccia appunto).
Può tornare utile in caso di strutture a diverso livello di astrazione o di oggetti che devono essere trattati in egual modo anche se appartenenti a classi diverse.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight

Ultima modifica di demos88 : 13-01-2012 alle 16:17.
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2012, 16:43   #6
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
il problema è che io ho attulamente un "cliente" con dei suoi parametri, e ora questo cliente deve essere modificato.

se vado a modificarlo, salvo creare routinei per la trasformazione dei vecchi clienti, perdo i clienti già salvati, in quanto giustamente vado a modificare la struttura.

ovviamente con le interfaccie risolverei questo problema, e non ci avevo pensato.

il tutto condito da una fase di progettazione pari allo zero, e siccome sono SICURO che tra 1 mese ci saranno altre modifiche, prima di ricominciare a leggere il calendario, o voluto chiedere a voi lumi. volevo creare una classe "cliente"esteso", che ereditasse semplicemente pla classe cliente. il concetto è simile alle interfaccie, ma credo che in questo modo incorrerei in rischi di incongruenza dati...che dite?
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2012, 20:41   #7
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
In genere il problema è dovuto a classi/funzioni che cercano di fare troppo. Scrivere test con junit e cercare di avere una copertura che si avvicini il più possibile al 100% è un buon modo di scrivere del buon codice facile da modificare. Se non vuoi impazzire a scrivere i test sei costretto a creare metodi semplici e classi con dei compiti ben precisi. Con il vantaggio che quando poi sarai costretto a fare la modifica puoi controllare che tutto funzioni ancora come prima.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2012, 09:08   #8
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
In che modo salvi gli oggetti su disco?
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2012, 10:43   #9
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da U-Boat Guarda i messaggi
In che modo salvi gli oggetti su disco?
con i classici metodi di scrittura degli oggetti. in attesa del database che dovrò sviluppare e che già mi sta facendo piangere al solo pensiero.
Codice:
ObjectOutputStream output = new ObjectOutputStream(file);
come faccio a spiegare che sviluppare un programma vuol dire avere tutti i campi sensibili in fase di partenza?
Pretendono che sviluppa una programma talmente flessibile che se un giorno dovrà aggiungere il codice fiscale lo potrà fare senza modifche.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2012, 19:52   #10
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
Il problema è qui, la serializzazione di default non è il massimo quando gli oggetti che vai a manipolare vengono modificati spesso.

Io mi sono trovato a dover salvare le impostazioni salvate dall'utente, con il limite di non poter usare librerie esterne perchè ero alle prese con un sistema embedded.
Questi dati hanno una struttura parecchio stabile, ma ho avuto bisogno almeno 2 volte di modificarla.

Soluzione 1: visto che le modifiche la prima volta hanno riguardato solo una classe con poche dipendenze, ho mantenuto la versione vecchia, creato quella nuova e fatta una piccola utility di conversione, però continuavo a non amare il formato binario non leggibile direttamente

Soluzione 2: ho realizzato a mano i metodi di serializzazione, non usando più quella fornita da Java; dovendo fare questo lavoro su un numero limitato di classi ci ho messo davvero poco tempo, ma ho avuto il vantaggio di ottenere un formato leggibile e di poter resistere bene alla maggior parte delle modifiche che mi troverò a fare.

In base alla complessità della tua applicazione puoi scegliere se usare librerie esistenti o formati di serializzazione standard (xml/json...). Nel mio caso la parte di salvataggio dei dati è una porzione molto piccola del software, trattandosi di un sistema di controllo di impianti, in sostanza mi serve solo per ricordare le impostazioni o preferenze.
Da quello che mi pare di capire invece la tua applicazione è più simile a quelle orientate ai dati che si appoggiano sui database "classici"; potresti valutare l'uso di un ORM, ma attenzione a valutare bene le controindicazioni. In ogni caso crea il classico layer di gestione della persistenza.
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2012, 01:49   #11
demetriol
Senior Member
 
L'Avatar di demetriol
 
Iscritto dal: Jun 2005
Città: Reggio Calabria
Messaggi: 875
Caro collega, perchè non provi ad usare l'ereditarietà? Hai la necessità di aggiungere campi, o anche modificarli/eliminarli? Certo che per quanto riguarda i dati salvati su disco un db è molto molto più flessibile rispetto alla serializzazione di oggetti java...
__________________
Firma
demetriol è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2012, 11:34   #12
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da U-Boat Guarda i messaggi
Il problema è qui, la serializzazione di default non è il massimo quando gli oggetti che vai a manipolare vengono modificati spesso.

Io mi sono trovato a dover salvare le impostazioni salvate dall'utente, con il limite di non poter usare librerie esterne perchè ero alle prese con un sistema embedded.
Questi dati hanno una struttura parecchio stabile, ma ho avuto bisogno almeno 2 volte di modificarla.

Soluzione 1: visto che le modifiche la prima volta hanno riguardato solo una classe con poche dipendenze, ho mantenuto la versione vecchia, creato quella nuova e fatta una piccola utility di conversione, però continuavo a non amare il formato binario non leggibile direttamente

Soluzione 2: ho realizzato a mano i metodi di serializzazione, non usando più quella fornita da Java; dovendo fare questo lavoro su un numero limitato di classi ci ho messo davvero poco tempo, ma ho avuto il vantaggio di ottenere un formato leggibile e di poter resistere bene alla maggior parte delle modifiche che mi troverò a fare.

In base alla complessità della tua applicazione puoi scegliere se usare librerie esistenti o formati di serializzazione standard (xml/json...). Nel mio caso la parte di salvataggio dei dati è una porzione molto piccola del software, trattandosi di un sistema di controllo di impianti, in sostanza mi serve solo per ricordare le impostazioni o preferenze.
Da quello che mi pare di capire invece la tua applicazione è più simile a quelle orientate ai dati che si appoggiano sui database "classici"; potresti valutare l'uso di un ORM, ma attenzione a valutare bene le controindicazioni. In ogni caso crea il classico layer di gestione della persistenza.
"spero" che la mia applicazione possa solo aggiungere campi.

Quote:
Originariamente inviato da demetriol Guarda i messaggi
Caro collega, perchè non provi ad usare l'ereditarietà? Hai la necessità di aggiungere campi, o anche modificarli/eliminarli? Certo che per quanto riguarda i dati salvati su disco un db è molto molto più flessibile rispetto alla serializzazione di oggetti java...
È proprio quello che è mia intenszione. solo che probabilmetne tra qualche settimana sposteremo tutto su un server con relativo database (probabilmente MySql oppure Derby) e quindi dovrò fare una nuova manipolazione dei dati da salvare. a questo punto mi butto direttametne su derby così posso lavorarci in locale senza installazioni e problemi di salvataggio....e vado di sql a manetta e nel caso creo tabelle con id di riferimento. visto che non posso permettermi una alta efficenza, almeno mi permetto una alta efficacia!!!
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Rocket Lab ha posticipato il lancio del ...
Dalla missione Artemis IV il razzo spazi...
Una delle sonde europee di ESA Proba-3 h...
Un modder fa girare Linux su PS5: GTA V ...
MacBook Neo: nessuna sorpresa nei primi ...
La serie POCO X8 Pro è pronta al ...
Smartphone: 2026 difficile per il mercat...
Star Wars: Knights of the Old Republic R...
Huang, NVIDIA: OpenClaw ha realizzato in...
Annunciano il recupero di 4,8 milioni di...
Oggi degli ottimi auricolari Sony con ca...
Muffa in casa? Questo deumidificatore da...
Sonos Era 100: il punto d'ingresso per u...
"Non stiamo sostituendo nessuno con...
Tutti i robot in offerta ora: prezzi bas...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:12.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v