Per il mio prossimo progetto, sono stato incaricato di "revisionare" una grande applicazione Web legacy con molte parti. È un'applicazione JSP scritta nel 2004 ed è usata pesantemente dalla mia azienda.
Questa applicazione è stata progettata male in quanto non vi è alcuna separazione delle preoccupazioni; nessun livello di servizio, nessun livello DAO, nessuna struttura MVC. Solo un mucchio di file JSP caricati con scriptlet contenenti query logiche e database mescolate con HTML. È un casino.
Il mio capo ha definito "revisione" come fondamentalmente la riscrittura dell'intera cosa utilizzando le tecnologie che usiamo per le nostre applicazioni più recenti, che sono:
- Maven
- Spring
- JPA (w / Hibernate)
- JSF
E aggiungi un sacco di nuove funzionalità.
La mia domanda è: come faccio a fare questo? Quale dovrebbe essere la mia strategia per rifare completamente una grande applicazione attualmente in uso E aggiungere un sacco di funzionalità?
Dovrei prima riscrivere l'applicazione esistente e farla funzionare con le tecnologie aggiornate e quindi preoccuparti di aggiungere nuove funzionalità in seguito? O dovrei farlo come se stessi creando un'intera nuova applicazione e implementando le nuove funzionalità CON le vecchie funzionalità?
Qualcuno l'ha fatto con successo? Se sì, quali strategie sono state fondamentali per il tuo successo?
Modifica: ulteriori informazioni dai commenti:
Quanto deve essere pessimo il design per giustificare una riscrittura? Questo design è piuttosto brutto. C'è un sacco di logica aziendale nascosto nell'applicazione. Nessuna specifica, nessun registro delle modifiche dei requisiti, nessun elenco di correzioni di bug, nessun elenco di bug aperti, nessuna suite di test, nessuna documentazione. E il tizio che inizialmente lo ha scritto è ora in gestione superiore.