Lo scopo: fa parte di un grande sistema ERP che fornisce calcoli specifici. Si può pensare ad esso come un modulo di calcolo del salario in un CRM. Eppure questo è ben oltre sia nei punti di complessità che di integrazione. Quindi, ci sono molti debiti tecnologici, ma non immateriali. Esistono alcuni test di unità / integrazione scritti. è verificabile, ma non è stato fatto molto. È una parte vecchia di quel sistema ERP (3 anni), nel corso degli anni si era trasformato in quello che è ora, e c'è la volontà di provare a completarlo anche se costa qualche sforzo importante.
Il problema: l'ambito che fornisce molti calcoli diversi basati su un elenco specifico di oggetti e i risultati non sono corretti a volte.
Ci sono molte interessanti (non così comuni) funzionalità su questo ambito:
- Formule C # dinamiche (caricate nel contesto e quindi incluse nei calcoli)
- Un sacco di report che eseguono gli stessi calcoli ma sul database
- L'ambito è instabile e intenso nel tempo (nuove funzionalità e correzioni di bug vengono inviate ogni mese)
Questo ambito ha molti parametri di input su tutti gli oggetti dipendenti. Moltiplicando tutti i valori dei parametri possibili abbiamo 1,62 * 10 7 casi di possibili risultati. Non tutti i parametri si comportano tanto, ma molti di loro lo fanno. Quindi affettare la metà di quel numero è qualcosa che riguarda gli aspetti pratici possibili.
Questo ambito sta consumando molto tempo e denaro ed è tutt'altro che fatto nella sua forma attuale.
Mi piacerebbe sapere che cos'è il proiettile d'argento il modo più efficace per stabilizzare e portare a termine lo scope nello stato in cui si verificano solo bug minori e piacevole ad avere?
Prima di tutto stavo pensando che stabilire un DoD (definizione di fatto) sarebbe una cosa importante da fare. Poi sono arrivato al fatto che avere un numero enorme di output funzionanti è la metà di questo - tutto deve anche essere flessibile sull'ambito dell'interfaccia utente.
Sarà il caso di stabilire un piano di test, magari fare qualche test di bruteforcing? Dovrei considerare qualsiasi tipo di design pattern? Opzioni di convalida (come un solido servizio di validazione di terze parti, ecc.)? Sarà sufficiente o forse ho delle lacune nella mia modesta conoscenza che dovrei riempire?
Nota: l'applicazione non è quella che si chiamerebbe monolitica. Si basa su molti servizi diversi che possono essere facilmente estesi, ecc.