Brian - le mie simpatie, sembra che tu hai preso su uno dei miei vecchi clienti. Scusa per il casino che ti ho lasciato, ma ho provato a sistemare le cose prima che il cliente finisse i soldi.
Seriamente, ho avuto un client con più di 25 app in un simile pasticcio - dopo due anni, circa 1/2 di loro sono stati esaminati e i primi 5 ripuliti un po '.
Non parli delle dimensioni della squadra, ma superare la riluttanza a cambiare le cose può rendere impossibile fare qualsiasi cosa. Se è così, scappa - non c'è niente di più frustrante di riscrivere qualcosa solo per scoprire che i tuoi altri sviluppatori stanno sabotando i tuoi sforzi non essendo a bordo.
Supponendo di avere supporto, puoi cercare di risolverlo da una prospettiva dall'alto verso il basso o dal basso verso l'alto.
La prima cosa da fare è mettere una struttura al suo posto: portare tutto il casino in un sistema di versione, quindi almeno è possibile tenere traccia di ciò che si sta facendo e tornare indietro se necessario. Impostare un ambiente di test separato in modo da poter provare le cose senza influire sullo sviluppo continuo e sulla capacità di supportare il sistema.
Se ti stai avvicinando da una prospettiva top-down, ti consigliamo di iniziare ripulendo gli elementi dell'interfaccia utente: elimina tutto il CSS incorporato, ripulisci & razionalizzandolo. Inventa le pagine, le dipendenze, ecc. (Questo da solo potrebbe richiedere del tempo, specialmente con ASP classico).Identifica blocchi di codice ripetuti e considera di spostarli in controlli utente condivisi. Verifica se è possibile mappare i componenti dell'interfaccia utente in elementi del database.
Analizzare i registri di accesso per trovare ciò che viene utilizzato e, auspicabilmente, identificare il codice che non è più necessario. Probabilmente troverai anche una serie di errori - questi possono essere davvero molto utili per capire il sistema. Probabilmente scoprirai che un piccolo sottoinsieme dell'applicazione viene usato più spesso - questo è un buon posto per cercare una vittoria più facile e anticipata.
Creare un set di piccoli file CSS puliti e creare alcune pagine master che è possibile utilizzare per standardizzare il look & feel. Dovrai riscrivere le pagine asp, ma potresti essere in grado di aggiornare le pagine webform per usare più facilmente le nuove pagine master.
L'obiettivo di questo approccio non è quello di sistemare molto, ma di comprendere la struttura e imporre un'organizzazione su di esso. La tecnologia low-tech può aiutare: stampare ogni pagina delle applicazioni più comuni e fissarle su un muro. Vedere tutto in questo modo può essere di grande aiuto.
L'approccio bottom-up inizia dal db: inventario di tutte le tabelle & stored proc. Vedi se riesci a capire dove viene usato ogni &. Potresti pensare che qualcosa non sia usato, ma in realtà l'unico modo per sapere con certezza è rimuovere l'oggetto dal database (o rinominarlo) e fare test. (Sì, ho visto il codice che crea dinamicamente nomi di tabelle basati sull'input dell'utente - nessuno strumento di analisi può aiutarti.)
Una volta che hai un'idea migliore delle dipendenze tra le diverse parti, puoi iniziare pianificando come fare gradualmente le correzioni. Se è possibile isolare diversi sottosistemi, prendere in considerazione l'esecuzione di una migrazione a un nuovo schema/gruppo di tabelle e creare un livello di accesso ai dati appropriato. Puoi prendere in considerazione l'idea di incorporare i test di unità a questo punto, ma onestamente avrai abbastanza problemi a portata di mano, e questo potrebbe rivelarsi un rompicapo per chi non ha familiarità con esso - impara a camminare prima di provare a volare.
Se non è possibile separare completamente le parti, prendere in considerazione l'esecuzione della migrazione, ma vedere se è possibile inserire viste o nuovi frammenti come livello facciata fino a quando il codice può essere riscritto.
Esistono numerosi libri che trattano i sistemi legacy di reingegnerizzazione, non sono sicuro che qualcuno di loro si occuperà di questa situazione, ma non potrebbe fare male rivedere la letteratura per ulteriori suggerimenti.
Buona fortuna, e non dimenticare di mantenere il curriculum aggiornato!
Avete visto questi per un consiglio generale? - http://stackoverflow.com/questions/144734/when-is-it-good-if-ever-to-scrap-production-code-and-start-over - http://stackoverflow.com/questions/21857/quando-si-sa-è-time-to-rewrite-an-application Essi contengono collegamenti che sono anche utili - tra cui "Cose che non dovresti mai fare", che è un classico. (Lasciami pensare al tuo caso specifico mentre sfogli le risposte generali). Modifica: la risposta probabilmente piacerà al "One True System" sul lato. Inizia magro. – Tobiasopdenbrouw
"Non c'è nessun problema così grande o così complicato da non poter essere scappato" - "Linus" di Charles Schultz (credo) – msw
@msw - brillante – Orbit