Oltre all'ovvio, c'è una buona ragione per la versione dei componenti separati in una versione generale?

0

Lavoro in un'azienda che si occupa di software specificamente progettato per clienti di terze parti in uno schema Business-To-Business. Disponiamo di varianti di un software di grandi dimensioni, che per ogni cliente viene specializzato e alla fine ci ritroviamo con diverse edizioni dello stesso programma padre.

Poiché ci occupiamo attivamente di dispositivi fisici, ogni "edizione" è composta da componenti separati che, in un modo o nell'altro, parlano a ciascun dispositivo, in modo univoco. Nel modulo corrente, ogni volta che aggiungiamo una nuova funzione a un componente o correggi un bug in alcuni di essi, rilasciamo una versione più recente del intero programma (a causa di evidenti limiti tecnici nella separazione dei componenti e rilasciando singoli aggiornamenti con loro), che contiene la versione corrente più il nuovo componente.

Per semplificare le cose, dividiamo il programma:

  • Sezione UI, ovvero versione 2.0.0.1 .
  • Componente A, ovvero versione 1.0.2.7 .
  • Componente B, che è la versione 1.0.3.9 .
  • Componente C, che è la versione 1.0.0.1 .

Poiché le nostre modifiche riguardano principalmente la sezione dell'interfaccia utente, è più comune che l'intera applicazione utilizzi la versione del componente dell'interfaccia utente; quindi nel nostro esempio è la versione 2.0.0.1 . Se apporto una modifica al componente A, eseguo il bump della sua versione su 1.0.2.8 (diciamo che si tratta di una piccola correzione di bug), contrassegno l'intera soluzione e quindi la mia applicazione sarà la versione 2.0.0.2 .

Considera anche che non stiamo scambiando componenti separati con altri team che lavorano a "edizioni" diverse dell'applicazione madre e che il cliente alla fine un singolo eseguibile della sua versione personalizzata ( 2.0.0.2 ), indipendentemente dalle modifiche che ho inserito all'interno.

La mia domanda è questa: poiché l'applicazione è sempre considerata one and whole , c'è qualche ragione per tenere traccia dei diversi numeri di versione di ciascun componente? Sicuramente, questo aiuterà gli sviluppatori a sapere internamente come è vecchio o nuovo un componente (poiché tutto parte da 1.0.0.1 ), relativamente ad altre parti dell'applicazione, ma questo può anche essere conosciuto sfogliando il repository all'interno del codice sorgente di un componente. Ci sono altri argomenti per questa strategia?

Nota a margine

Perché forse non è diventato evidente dalla domanda precedente: i componenti sono not scambiabili. Non sono stati trovati in nessun'altra "edizione" dell'applicazione madre, tranne quella inizialmente progettata per. Quindi non ci sarà un cliente Z in futuro, ruggendo sul motivo per cui abbiamo messo alla sua versione del componente A versione 3.0.0.1 come la sua variante supporta fino alla versione 1.5.0.1 . Ovviamente c'è un insieme di componenti comuni, ma non sto parlando di loro. Questi sono mantenuti in un albero / progetto sorgente completamente diverso, da un gruppo completamente diverso. La mia domanda è rilevante solo per i blocchi di una "edizione" che costituiscono i suoi componenti unici.

Nota a margine 2

So che cambiare pochi KB di codice nel componente A e quindi preparare un intero nuovo rilascio che pesi alcune centinaia di MB perché non si utilizzano versioni delta, è per lo meno zoppo. Se i componenti fossero rilasciati separatamente, il controllo delle versioni sarebbe perfettamente logico. Ma la mia azienda non è l'unica che va con rilasci grassi e, anche se non apprezzo questa tecnica, riesco a capire le ragioni per cui alcuni anni fa li hanno scelti rispetto all'altro.

Quello che sto cercando di identificare è se c'è un altro motivo significativo ma altrimenti nascosto per continuare a etichettarli, con loro che sono indivisibili dall'app principale.

    
posta Lefteris008 02.10.2018 - 17:00
fonte

2 risposte

1

Se ogni componente è effettivamente separato, riutilizzabile e non strettamente connesso all'app che lo utilizza, la versione dei componenti dovrebbe essere aggiornata quando viene rilasciata una correzione di bug o una nuova funzionalità.

Immagina di avere 3 API chiamate dall'app. Non si conoscono i componenti interni di ciascuna API ma si conoscono solo le funzioni pubbliche fornite da ciascuna. Se lo sviluppatore di una API emette un aggiornamento, aggiorna la sua versione. Ora tu, l'utente non dovrebbe vedere nulla cambiare nel tuo codice (se questo è solo un bug o una nuova versione che non depreca le versioni precedenti). In questo scenario si può sostenere che non si dovrebbe nemmeno aggiornare la versione.

Se i componenti sono specifici per questa applicazione e non possono essere utilizzati da nessun'altra parte, potrebbe essere ragionevole eseguire il dump della versione solo per sapere che c'è un aggiornamento in tutto il pacchetto. Potrebbe essere irrilevante, ma ci sono sviluppatori che mantengono il numero che denota la versione minore del software, anche se la versione principale è già cambiata, solo per chiarire che in questa versione non esistono bug da una potenziale unione con un precedente versione. Per es.

Da 1.0.23 a 2.0.23

Come altri già hanno affermato, dipende dal modo in cui si usano i componenti.

    
risposta data 02.10.2018 - 19:46
fonte
0

Un paio di cose che ho visto in ambienti live.

  1. Distribuzione che copia su una vecchia versione e non sovrascrive correttamente alcuni dei file.

  2. Diverse versioni di DLL per diverse versioni del sistema operativo, anche se il prodotto è la stessa versione.

  3. Applicazione di un hotfix binario. Solo la dll interessata è stata modificata

risposta data 02.10.2018 - 17:44
fonte

Leggi altre domande sui tag