Per questa domanda, fornirò un modulo di esempio per facilitare la discussione, diciamo che il modulo è un motore di calcolo, Attualmente il suo scopo è il server per il suo pubblico attuale. Il requisito è quello di clonare lo stesso motore ma con alcuni tweaking per un pubblico completamente nuovo. Dato che, questi sono considerazioni / fattori che influenzeranno la soluzione di progettazione:
- L'utente si aspetta che il motore corrente rimanga invariato , perché non fa parte del requisito (si noti che il nuovo motore è destinato a un nuovo pubblico e non influisce sugli utenti del motore corrente).
- Oltre al numero 1, l'aspettativa è nessun test di regressione per il codice base del motore corrente poiché non vengono introdotte modifiche.
- Solo per guidare il punto, refactoring del motore attuale per renderlo flessibile per affrontare sia i motori attuali e nuovi, non sarà un'opzione dato che non soddisferà i 2 punti sopra.
- Possiamo aspettarci in futuro che ci saranno modifiche esclusive per ciascun motore, ad es. il cambiamento è applicabile solo al nuovo motore quindi non dovrebbe influire sulla corrente.
- Limita la scadenza.
Tuttavia, sono ancora in conflitto, poiché:
- Sarà di per sé una soluzione di copia-incolla.
- Codice duplicato.
- Problema di manutenzione per le modifiche al codice che dovrebbero essere comuni a entrambi.
- Non risolve il problema di estensione, es. un terzo motore e così via potrebbero essere tutti possibili.
Il compromesso è accettabile in questa situazione, date le aspettative degli utenti sopra evidenziate? E la domanda successiva, c'è qualcosa che posso aggiungere alla soluzione che risolverà i problemi in conflitto, ma allo stesso tempo soddisferà i requisiti degli utenti?