Strumenti per la gestione di una complessa installazione del progetto con molti framework e nessuna documentazione

4

Dobbiamo estendere un enorme progetto java che utilizza framework come modelli di maven, spring, struts, freemarker e closure.

Abbiamo accesso al codice sorgente ma quasi nessuna documentazione, e dobbiamo estendere questo sistema. La nostra unica soluzione è trovare il posto nel codice esistente, dove qualcosa di simile è già stato fatto. Per trovare questo posto, proviamo a partire dall'azione che viene chiamata e quindi con l'aiuto del debugger proviamo a scoprire quali classi e bean Spring sono coinvolti.

Le tracce dello stack dal debugger sono piuttosto difficili da capire, dal momento che viene utilizzata molta riflessione.

Qualcuno ha avuto una configurazione simile e potrebbe fornire alcuni suggerimenti su come gestire una configurazione così complicata?

    
posta José Manuel Rodríguez 13.10.2011 - 16:36
fonte

3 risposte

5

Devi cercare di capire il software da una prospettiva architettonica. Sarà difficile studiare le tracce dello stack.

Vorrei iniziare disponendo le classi in un diagramma UML. Struts è un framework MVC, quindi il progetto è probabilmente MVC. Scopri quali sono tutti i framework e analizza il layout della tua classe per determinare il ruolo che ogni pezzo soddisfa.

Una volta che lo fai per un po ', sarai in una posizione molto migliore per estendere il progetto abilmente e sensibilmente.

    
risposta data 13.10.2011 - 17:06
fonte
2

how to manage such a complicated setup?

Hai bisogno di due cose che sono estremamente importanti:

1. Buoni sviluppatori

Stiamo parlando di reverse engineering qui.

Ci sono molti programmatori che possono seguire un tutorial o un codice copia-incolla che capiscono a malapena, o seguire il programma di formazione dell'azienda e distribuire il codice di lavoro, ma per questo tipo di situazione è necessario che le persone facciano il contrario. Invece di costruire qualcosa, devi tare qualcosa a parte e vedere come funziona in modo da poterlo poi costruire su di esso, mantenerlo, evolverlo ecc.

Le competenze sono necessarie per questo, quindi hai bisogno di sviluppatori esperti . Juniors non lo farà! Anche se sono bravi sviluppatori e persone che lavorano sodo, "non hanno ancora visto gli orrori della guerra" ... se capisci cosa intendo.

2. Supporto dalla direzione

Questo è ancora più importante del numero uno. Se disponi di molti framework, è un progetto enorme, non è documentato, forse il dominio aziendale è nuovo per te ecc., Quindi per essere aggiornato e poter migliorare il sistema hai bisogno di tempo . Non puoi semplicemente rimboccarti le maniche e iniziare a codificare le nuove funzionalità. Devi imparare, analizzare, analizzare un po 'il cambiamento, testare un po' ecc.

La direzione lo comprende? Sono perfettamente consapevoli dei rischi che tale incertezza genera? Ti stanno supportando (devono essere loro a comprarti questa volta, i progetti non hanno il lusso di andare avanti per sempre) o stanno facendo pressioni perché "tutto ciò che serve a lungo"?

Non è mai facile gestire una situazione come questa, ma le persone sono le persone su cui puntare, non strumenti o diagrammi UML.

Buona fortuna!

    
risposta data 15.10.2011 - 14:24
fonte
0

Abbiamo avuto lo stesso problema nella nostra azienda. Un codice enorme e nessuna documentazione. Non siamo mai stati in grado di estenderlo e il progetto è stato rifatto.

Ciò che è stato divertente nella storia è che qualche anno dopo abbiamo scoperto che il team non aveva quasi fatto alcun codice tranne le regole aziendali. Hanno creato un piccolo modello e hanno generato un enorme codice da esso. Questo è il motivo per cui il codice era disordinato e impossibile da capire dai nuovi sviluppatori. Non hanno lasciato il modello originale, quindi un'esperienza davvero negativa e esattamente quello che non dovrebbe essere fatto !!

A volte odio Model Driven Development :-) ma come UML quindi un reverse engineering del codice java in un diagramma di classe potrebbe aiutare ma non se il codice è già stato generato da un modello. Voglio dire che un reverse engineering è utile se un codice scritto a mano.

    
risposta data 14.10.2011 - 10:19
fonte

Leggi altre domande sui tag