Quando sceglieresti * non * per aggiornare una libreria di terze parti a una versione più recente?

5

L'utilizzo di librerie di terze parti per ottenere aumenti di produttività nello sviluppo di software è comune. Sfortunatamente, insieme alle funzionalità della libreria, importiamo anche i suoi bug. Alcuni di essi vengono corretti nelle versioni successive. Quindi, per aggiornare o non aggiornare, questa è la domanda.

Sono interessato ad apprendere dalle esperienze quando l'aggiornamento a una versione più recente della biblioteca era auspicabile, ma dopo un'analisi costi / benefici la conclusione era che l'aggiornamento non era una buona soluzione "nel grande schema delle cose". Sono interessato a scoprire quali forze influenzano la decisione verso l'aggiornamento non .

    
posta Mircea 23.01.2014 - 19:17
fonte

2 risposte

8

La risposta breve è che la nuova versione potrebbe introdurre nuovi bug, come ha detto Robert Harvey nei commenti.

Per essere onesti, penso che ti stai avvicinando a questo nel modo sbagliato. Nella mia esperienza, l'approccio migliore è quello di mantenere la versione che hai. Presumibilmente, il tuo team ha già testato la versione che utilizzi e come si integra con il tuo sistema. In caso contrario, allora i tuoi clienti hanno.

Certo, quando esce una nuova versione, il tuo team dovrebbe vedere se risponde a tutti i bug che hai riscontrato, fornisce funzionalità da cui puoi trarre vantaggio o migliora le prestazioni generali. Solo dopo averlo eseguito di nuovo con i test, dovresti iniziare a usarlo.

Il problema con l'approccio agli aggiornamenti come qualcosa che viene fatto di default e fermato solo se qualcuno trova un problema è che è troppo facile rimanere negligenti nel processo di controllo. Alla fine, questo ti morderà quando una nuova versione introduce nuovi problemi.

Se mantieni la versione che hai, sai che il comportamento generale del sistema non cambierà.

    
risposta data 23.01.2014 - 19:27
fonte
2

Per rispondere, per prima cosa rivolgi la domanda alla necessità di aggiornare.

Se non esegui l'upgrade, con il tempo rimani bloccato su una versione obsoleta e troverai bug nel tuo sistema derivanti da bug nella libreria che sono stati corretti nelle versioni successive.

Supponendo che tu stia continuando a sviluppare il tuo sistema, e che la libreria pertinente sia di qualsiasi complessità, prima o poi varrà la pena aggiornarla. Cioè il costo del nuovo test giustifica il vantaggio dei restanti nell'ultima versione.

Quindi, potrebbe non essere necessario eseguire l'upgrade se queste ipotesi non vanno a buon fine.

cioè:.

  1. Non sei attivamente la tua applicazione.
  2. La libreria ha modifiche minime, forse solo modifiche a problemi specifici che conosci non sono rilevanti per te.

È più complesso che questo, come (2) sia un bersaglio mobile. Con ogni versione della libreria che viene fuori, la variazione accumulata aumenta e quindi il probabile valore (così come i requisiti di rischio e di test).

Si noti che se si ritardano l'aggiornamento per molto tempo "perché finora nessuna delle correzioni è importante per me", quindi quando si esegue l'aggiornamento si può trovare molto più difficile a causa dell'impatto accumulato.

Inoltre, potresti avere più librerie di terze parti che potrebbero richiedere aggiornamenti e test di tanto in tanto. Un approccio consiste nel rivedere e considerare l'aggiornamento di tutte le librerie di terze parti una volta l'anno (o in qualsiasi periodo) ed eseguire l'aggiornamento all'interno di un singolo progetto, consentendo un singolo test di regressione completo del sistema. Ciò potrebbe includere l'aggiornamento al compilatore o anche il funzionamento.

Infine, qualsiasi rischio in un aggiornamento sarà inverso rispetto alla quantità di test automatizzati in atto. Se hai poco (pertinente alla biblioteca) e hai bisogno di fare molti test manuali hai bisogno di più benefici per giustificare il costo dell'upgrade.

Quindi, ad esempio, l'aggiornamento di una libreria dell'interfaccia utente che richiede un nuovo test dell'interfaccia grafica è diverso dall'aggiornamento di una lib XML che legge alcuni file suscettibili di un test automatico.

    
risposta data 24.01.2014 - 00:31
fonte