Che cosa fai quando c'è una richiesta dell'ultimo minuto per escludere una funzionalità da una release?

8

C'è una funzionalità che ha già superato i test di accettazione, sia internamente che dal cliente. È una funzionalità pienamente funzionante. Tuttavia, ora c'è una richiesta per escludere questa funzione da una prossima versione. Secondo il cliente, questa funzione dovrebbe essere rimossa perché gli utenti non sono stati addestrati su come usarlo.

Qual è la migliore linea di condotta per gestire questa situazione? Dovremmo progettare software in previsione che una funzione possa essere esclusa all'ultimo minuto usando le impostazioni di configurazione? Esistono soluzioni dipendenti dal contesto che potrebbero essere più corrette in alcune situazioni rispetto ad altre?

    
posta CarneyCode 11.04.2011 - 22:10
fonte

10 risposte

9
  1. Rimuovi la documentazione per la funzione;
  2. Disattiva l'interfaccia per la funzione (nascondi le voci di menu o rimuovi un'opzione da un comando della console).

Tutto il resto è troppo pericoloso.

    
risposta data 11.04.2011 - 23:29
fonte
6

Il mio precedente datore di lavoro vende alcuni software che abilitano funzionalità diverse in base alla particolare licenza in questione. Quindi la capacità di abilitare / disabilitare le funzionalità in fase di runtime era una funzionalità progettata. Generalmente, la gente chiama questo "sviluppo guidato dalle funzionalità" ( articolo di Wikipedia , libro decente sull'argomento ). Richiede molti test per trovare bug che possono essere causati attivando e disattivando le funzionalità. Poiché la maggior parte della gente in ufficio genera una chiave di licenza per tutte le funzionalità, le funzionalità limitate tendono ad essere scarsamente esercitate (e in più di un'occasione, non testate affatto fino a quando un cliente non ha chiamato l'help desk).

Per la "correzione" dell'ultimo minuto, la soluzione più rapida sarà nascondere i comandi di menu / hotkey / pulsanti che attivano questa funzione. Questo introdurrà altri bug . Sii in primo piano con i tuoi clienti e i project manager.

    
risposta data 11.04.2011 - 23:27
fonte
4

Non scriverei mai un codice tale che le funzioni siano attivabili o disattivabili, a meno che tale requisito non sia stato risolto.

La rimozione o disattivazione di una funzionalità è una modifica delle specifiche e, proprio come qualsiasi altra modifica alle specifiche, richiede tempo per l'implementazione e la verifica. Devi chiedere perché la funzione verrà esclusa: è ancora troppo buggy per essere rilasciato? Il cliente non vuole assolutamente quella caratteristica? C'è qualche ragione di business per ritardare la funzionalità?

In particolare, nel caso in cui la funzione venga percepita come "troppo buggata" per essere rilasciata, è necessario essere cauti sul fatto che sia quella funzione che sia "bacata" o se sia effettivamente la versione nel suo complesso non è ancora pronto per il rilascio e quella particolare caratteristica è proprio quella in cui i problemi si presentano di più - nel qual caso, disabilitare questa funzione non ti aiuterà molto ...

    
risposta data 11.04.2011 - 22:22
fonte
3

Rispondiamo alle richieste dell'ultimo minuto discutendo sull'importanza del cambiamento per il cliente. Apportare modifiche importanti appena prima del roll-out invalida l'intera fase di test e accettazione, quindi spostiamo la richiesta di modifica in una release successiva o spostiamo la data di roll-out in modo che la modifica dell'ultimo minuto possa essere testata correttamente (clienti spesso scelgono di spostare la modifica alla prossima versione quando apprendono che l'alternativa è spostare la data di roll-out: -))

La funzionalità opzionale è la migliore (imho) attivata / disattivata tramite la configurazione. Come dici tu, questo deve essere progettato sin dall'inizio.

    
risposta data 11.04.2011 - 22:24
fonte
2

Ho dovuto farlo in passato, a volte con funzionalità che sono diventate produttive e si è rivelato un disastro. Ho fatto tutto il seguito.

1) Config modifica per disabilitare la funzione. Funziona dove è configurabile 2) Disabilita / rimuove tutte le entità UI che attivano la funzione. 3) Disabilita il codice nella funzione in modo che non faccia nulla (ma sembra funzionare) Doveva fare ciò in cui non avevamo accesso al codice della shell gui.

Per quanto riguarda la possibilità di progettare l'abilità di attivare o disattivare le funzionalità, guarderei l'immagine più grande e osserverò come si aggiungono le funzionalità al momento. Non è un grande passo per rendere le funzionalità in moduli che sono, al peggio, scoperti in modo dinamico. Mi piace modulare, quindi tendo ad andare in questo modo.

    
risposta data 11.04.2011 - 23:08
fonte
1

A volte è possibile rendere una funzionalità inaccessibile come soluzione temporanea a breve termine, più facilmente rimuovendola. Verifica se è accettabile avere artefatti visibili (ad esempio pulsanti visibili e disattivati e opzioni di menu).

Dovresti rendere una funzione facilmente scambiabile solo se è necessario che utenti / amministratori siano in grado di attivare / disattivare la funzione.

Se è abbastanza facile che non ti dispiaccia farlo in anticipo, è probabilmente altrettanto facile farlo quando sai che è necessario, e leggermente più semplice da rimuovere.

Se non puoi disabilitare la funzione senza il rischio significativo di introdurre nuovi bug, dillo alla gente. Altrimenti, sei sostanzialmente volontario per diventare il capro espiatorio quando si verificano gli inevitabili problemi, anche se il vero problema è qualunque cosa abbia comportato il cambiamento di questi ultimi minuti.

    
risposta data 11.04.2011 - 22:27
fonte
1

In base alle tue modifiche, suppongo che questa sia stata una funzionalità piuttosto integrale. La sua rimozione potrebbe avere un impatto su altre parti del sistema. In realtà, il cliente non dovrebbe aspettarsi di poter richiedere modifiche fondamentali al sistema senza incorrere in alcun costo. I costi in questo caso sono per te in qualche modo disabilitarlo (magari semplicemente commentando enormi porzioni di codice) e poi ripetere il test per assicurarti che tutto sia rotto.

Il modo più semplice per "disabilitare" una funzione come questa sarebbe rimuovere / commentare i punti di ingresso al più alto livello. Ad esempio: se l'unico punto di accesso alla funzione è un pulsante sull'interfaccia utente, basta commentare la riga che crea il pulsante. Se ci sono più punti di accesso, potrebbe essere necessario scavare più in profondità per disabilitarlo.

    
risposta data 11.04.2011 - 22:44
fonte
0

Dipende molto se è pericolosamente bacato / rotto / indesiderato

Se non riesce a fare qualcosa di non sicuro e lo stanno solo escludendo per motivi di facilità d'uso, mancanza di documenti di formazione o perché è rotto, in genere rimuoviamo il punto di accesso a quell'interfaccia dall'interfaccia utente e lasciamo tutto il resto a posto.

Se è pericolosamente bacato, lo facciamo e aggiungiamo eccezioni esplicite nella logica del core business in modo che non possa essere eseguito.

Il peggio è dove la funzione non è desiderata (le modifiche normative rendono il concetto illegale, ad esempio) e tutti i riferimenti alla funzione devono essere rimossi completamente.

Mentre si sposta l'elenco, il potenziale di errore aumenta. a seconda della situazione, la prima o le prime due opzioni possono essere qualcosa che può essere veloce, la terza quasi mai lo è.

Per quanto riguarda la progettazione negli switch di funzionalità, a meno che il cliente non voglia che io non vada di solito in quella direzione finché il cliente non ha dimostrato una storia di fare quel tipo di scelta troppo tarda.

    
risposta data 11.04.2011 - 22:35
fonte
0

La mia ipotesi è che il management abbia venduto questa funzione come componente aggiuntivo a pagamento e che all'ultimo minuto il cliente abbia affermato di non voler pagare l'add-on (probabilmente rendendosi conto che non vale la pena).

In considerazione di ciò, la gestione ha incasinato.

    
risposta data 11.04.2011 - 23:31
fonte
0

Ho lavorato con un numero di sistemi in cui l'accesso alle funzioni è stato guidato dalle impostazioni di sicurezza. Questo rende questo tipo di funzionalità disabilitante relativamente banale. Non abilitare la funzione per alcun gruppo di sicurezza. A meno che la funzione non sia stata abilitata per tutti, il test con esso disabilitato sarà stato eseguito.

Altre caratteristiche che possono essere facilmente disabilitate sono legate ai valori del codice. Questi generalmente gestiscono un caso particolare di qualcosa come un prodotto, un cliente o qualsiasi altra cosa. La disattivazione di queste funzionalità può essere eseguita non abilitando il relativo valore (i) del codice.

Come altri hanno notato, alcune funzionalità hanno specifici punti di accesso all'interfaccia utente che possono essere rimossi. (I casi sopra riportati possono essere casi speciali di questo.). La rimozione dei punti di ingresso dovrebbe consentire di spedire la funzione senza abilitare l'accesso. Questo è di solito il modo meno rischioso per gestire questo caso.

Se le funzionalità sono sviluppate sui rami delle funzionalità, dovresti riuscire a rimuovere la fusione del ramo della funzione e ripetere il test. Questo dovrebbe essere più semplice di altri metodi di disabilitazione del codice. La creazione di una patch di rimozione delle funzionalità semplificherà la riattivazione della funzionalità in un secondo momento. Questo ti dà un equivalente approssimativo di un ramo di funzionalità.

    
risposta data 12.04.2011 - 04:09
fonte

Leggi altre domande sui tag