So che domande come questa sono già state fatte prima. Ma nessuno di loro mi ha risposto veramente.
Come mantenere un prodotto software grande e complesso mantenibile negli anni?
Come organizzi un software altamente personalizzato?
...
Stiamo lavorando su un software che ha un sacco di regole e condizioni. Inoltre, tali regole cambiano frequentemente.
Finora abbiamo utilizzato molti design e tecniche per far fronte ai requisiti e implementarli. Per essere più specifici, concentriamoci sui seguenti esempi:
-
Utilizzo di opzioni configurabili, in modo che i valori possano essere modificati facilmente dagli uomini d'affari, come l'ammontare del debito che un cliente può subire.
Problema : Presto ci saranno centinaia di configurabili opzioni, e persino nominarli diventa un incubo, figuriamoci gestirli, cambiarli, rintracciarli nel codice, ecc. -
Utilizzo di piccoli file di progetto satellite come additivi del motore principale (qualcosa come flusso di lavoro estendibile), in modo che le nuove regole possano essere aggiunte a caldo e anche le regole indesiderate possono essere rimosse dalle pipeline del processo.
Problema : presto il numero di file di progetto diventa così grande che la gestione dei file system dei progetti diventa un rompicapo. Che cosa succede se per un breve periodo di tempo il team di business ha bisogno di una personalizzazione speciale che dura solo per due mesi, e quindi dovrebbe essere rimosso dal sistema. Qualcosa come la registrazione prepagata per tracciare il comportamento degli utenti per prendere le decisioni reali. O una regola semplice come bandire i clienti con attività sospette che dovrebbero essere lanciati molto presto.
Sembra che il nostro team stia andando per il verso sbagliato. In che modo un team può gestire la creazione di software altamente complesso e altamente mutevole quando incontra i problemi specifici menzionati? Quali punti dovrebbe considerare quella squadra? Esistono architetture o progetti specifici che ci aiuteranno a creare questo software?