Sfondo
Sono entrato in un'azienda come architetto di soluzioni meno di un anno fa, con il compito principale di consolidare e modernizzare il codice legacy derivante da oltre 90 acquisizioni di aziende negli ultimi 20 anni.
Una di queste applicazioni legacy, è un'applicazione desktop scritta in VB 6.0 che accede a un database di SQL Server e ha logiche di business incorporate nel lato client. Questa era la buona notizia!
La cattiva notizia è che la versione di produzione di questo client che risiede sui computer degli utenti finali è di due rilasci dopo l'ultimo controllo del codice nel nostro sistema di controllo del codice sorgente (che è un intervallo di 5 anni).
Cosa ho fatto fino ad ora
Ho installato Enterprise VB 6.0 IDE e ho tentato di caricare il codice sorgente più recente e ho provato a trasferire l'applicazione nei moduli principali, basandomi su voci di menu definite nel modulo principale.
Ho usato una sorta di mappa mentale come un diagramma per elencare quelle voci di menu e identificato la funzione principale di ciascuno di questi elementi, in termini di accesso e elaborazione dei dati.
Fortunatamente, 8 voci di menu su 162 elementi sono decorazioni inutili, ma il resto indica la reale logica aziendale e l'accesso ai dati.
Che cosa intendevo fare dopo
- Identifica le tabelle del database accessibili da ciascuna voce di menu
- Identifica le relazioni tra quelle tabelle in termini di trigger, chiavi referenziali e procedure memorizzate possibili
- Costruisci un'applicazione web .NET scheletro
- Tentativo di dedurre alcuni diagrammi del flusso di lavoro per uno dei moduli principali di questa applicazione
- Estrai la logica del modulo identificato e implementala nell'applicazione .NET con gli hook al database originale
- Convinca gli utenti a utilizzare le nuove schermate fornite.
- Iterare sui passaggi precedenti fino a quando tutte le funzioni coperte dall'applicazione legacy vengono migrate nella moderna applicazione Web.
- Dopo aver migrato tutte le schermate e la logica di business, dovrei iniziare a refactoring gli oggetti del database.
La mia domanda
IL piano sopra è realistico? è sub-ottimale? Qualche consiglio su un modo più pratico di affrontare questa bestia?
Grazie e scusa per la lunga domanda