Come modifico la mia soluzione / progetto quando cambia la specifica

1

Ho una domanda sulle migliori pratiche in questa situazione.

A un certo punto, la mia piccola applicazione consentiva al client di caricare un file su un server e di scaricare un file dal server (anche comprimendo / decomprimeva).

Questo è stato creato in 1 soluzione che consisteva in 4 progetti:

  1. FTP
  2. CompressDecompress
  3. UI
  4. Test

Ora la specifica è cambiata e ci saranno 2 utenti finali, uno che vuole solo caricare, l'altro che vuole solo scaricare e che non dovrebbe mai avere accesso ad altro (ad esempio il download di persone non può caricare e viceversa).

Quindi, ho alcune scelte qui. Potrei o

  1. Mantieni come 1 soluzione e chiedi agli utenti di accedere, in base alle credenziali verrà visualizzata un'interfaccia utente diversa

  2. Modifica l'interfaccia utente in modo che mostri solo gli strumenti da scaricare, crea una nuova soluzione costituita da un solo progetto dell'interfaccia utente e faccia riferimento al mio file .dll di conseguenza.

  3. Elimina la mia interfaccia utente, crea 2 nuove soluzioni, ogni soluzione creata per il download o il caricamento (e ogni soluzione probabilmente consiste solo di 1 progetto, l'interfaccia utente) e di nuovo, facendo riferimento alla .dll

Qualcuno ha qualche suggerimento? Alcune linee guida mi avrebbero permesso di non entrare in questa situazione in primo luogo (o almeno di rendermi più consapevole dei potenziali disastri)?

    
posta Dave 19.02.2013 - 10:58
fonte

1 risposta

3

Sono leggermente sorpreso dal requisito che l'utente che carica può caricare solo. Riesco a vedere un caso d'uso per l'accesso in sola lettura (solo download), ma molto meno per l'accesso in sola scrittura (solo caricamento), a meno che tale ruolo non venga compilato da un sistema automatizzato.

Tenendo questo a mente, peserei le mie opzioni come segue

  • Se si prevede che entrambi gli utenti siano umani, estendi l'interfaccia utente con la funzionalità di accesso e fornisci la funzionalità di caricamento o download, a seconda delle credenziali dell'utente. Ciò mantiene il progetto a prova di futuro per il fatto che ci sarà un'altra modifica dei requisiti per supportare sia l'up- che il download di nuovo per un utente.
  • Se si prevede che uno degli utenti sia una macchina, aggiungere un altro progetto alla soluzione, fornendo un'API su misura per le comunicazioni macchina-macchina, parallela alla funzionalità attualmente presente nell'interfaccia utente. La funzionalità non necessaria dovrebbe essere rimossa dall'interfaccia utente.

Di solito non è possibile prevedere grandi cambiamenti di portata come questo durante lo sviluppo iniziale di un progetto, quindi non ci sono linee guida per preparare il codice base per loro.
Ciò che puoi preparare sono requisiti che sembrano stranamente limitanti (come l'utente di sola scrittura che hai ora), e scrivi il tuo codice in modo tale che il requisito possa cambiare senza forzare una completa riscrittura di un progetto.

    
risposta data 19.02.2013 - 11:55
fonte

Leggi altre domande sui tag