Sono sicuro che molti hanno familiarità con la frase DRY nel mondo del software - Do not Repeat Yourself. Questo è un principio fondamentale del buon sviluppo del software.
Ecco una domanda (prima lo sfondo).
Siamo un'istituzione educativa di alto livello (college) e stiamo mettendo insieme una nuova applicazione MVC. La versione attuale di questa applicazione è per docenti e personale che possono svolgere varie attività come la ricerca di studenti, la visualizzazione di voti e altre informazioni accademiche su quello studente. Ci sono funzionalità per aiutare i consulenti a inserire note sui loro studenti. Allo stesso modo, ci sono punti di vista per mostrare i dettagli del college e lo stato per le lezioni di laurea date. Tutto questo ha la sicurezza costruita nel mantenere la conformità FERPA .
La prossima cosa che faremo è implementare una versione "student" - qualcosa a cui gli studenti possono accedere per vedere molte delle stesse informazioni - solo su misura per lo studente. Non sarebbero in grado di vedere le informazioni altrui, ma solo le proprie. Ma, saranno in grado di vedere le stesse informazioni di dettaglio del livello universitario.
La mia proposta è di rendere questa unica applicazione e utilizzare le autorizzazioni per gestire le viste e i dati che vengono visualizzati all'utente. Altri membri del team pensano che dovrebbero essere due applicazioni completamente separate a causa della complessità della modifica delle visualizzazioni in base al livello di autorizzazione dell'utente.
Alcuni dei problemi che sto riscontrando nel rendere questa applicazione separata sono:
- MOLTE delle visualizzazioni sarebbero in realtà gli stessi dati visualizzati. Sia il codice HTML che il codice del modello dovrebbero essere copiati tra le soluzioni, per non parlare dei test unitari. Non voglio mantenere lo stesso codice in entrambi i posti che alla fine diventerà molto difficile da mantenere.
- Le skin per entrambi i siti sono uguali: qualsiasi modifica dovrebbe essere eseguita in entrambi i luoghi.
- Le parti di autenticazione e autorizzazione sono esattamente le stesse per entrambe le applicazioni. Stiamo effettuando l'autenticazione con AD e disponiamo di un database di autorizzazione comune.
La ragione principale per cui alcuni altri membri del team vogliono applicazioni separate è perché c'è più complessità nel dover decidere chi sta effettuando le chiamate e quindi assicurarsi che ottengano le viste e i dati che dovrebbero.
Ora per le domande - C'è qualcuno che pensa che io abbia torto nella mia posizione su questo? Se è così, per favore spiega perché così potrei capire meglio quel lato dell'equazione. Allo stesso modo, se sei d'accordo con me, hai un modo migliore di spiegare il razionale dato con migliori / più ragioni di quelle che ho affermato sopra?
Grazie per eventuali suggerimenti / pensieri!