Come si mantiene una libreria comune utilizzata da client diversi?

6

Io faccio parte di un team di sviluppo del software. Inizialmente c'erano solo 2 di noi e due applicazioni. Per facilitare il nostro lavoro, creiamo un set di librerie, gestendo roba come GUI, accesso al database, calcolo, regole aziendali, ecc, in modo che possiamo riutilizzarle nelle nostre applicazioni senza implementarle due volte.

Ora il team è cresciuto, 6 persone e ~ 5 applicazioni (e in crescita). Le applicazioni usano la stessa libreria, che sono grandi perché non dobbiamo sviluppare e mantenere la stessa cosa più di una volta. Io e l'altro ragazzo iniziale abbiamo sviluppato e siamo principalmente responsabili della libreria, ma altre persone hanno accesso al codice e occasionalmente lo aggiornano per correggere bug e aggiungere miglioramenti.

Ma presto notiamo che più cresciamo e più persone possono modificare il codice, c'è il rischio che i "miglioramenti" / "correzioni di bug" che qualcuno fa possano violare involontariamente l'applicazione di qualcun altro che dipende dal vecchio comportamento. D'altra parte, assegnare un ragazzo per mantenere le librerie e assicurarsi che le modifiche non si rompano non è pratico perché ci sono molte applicazioni e forse molte richieste di miglioramento da fare, e non può essere sicuro di tutto.

In che modo le squadre gestiscono normalmente una situazione come questa? Forse implementando le regole sulle modifiche consentite? Definire comportamenti che non dovrebbero essere cambiati? Ci sono molte librerie in internet utilizzate da molte persone, ad esempio librerie open-source / libere da utilizzare come Apache, Castle, ecc. Come fanno a garantire che le modifiche non infrangeranno i codici client esistenti?

    
posta Louis Rhys 01.12.2011 - 22:55
fonte

3 risposte

10

Crei una API pubblica e la versione. I consumatori (gli altri progetti) possono seguire l'API e si arriva al test unitario a fondo.

Inoltre, è una buona pratica effettuare revisioni del codice. Dovrebbero essere eseguiti da te e dagli altri sviluppatori principali ogni volta che qualcosa sta per cambiare nel tuo codice di libreria comune.

Prima di includere eventuali modifiche, l'utente o l'altro sviluppatore principale deve firmare il codice. Allora e solo allora il cambiamento dovrebbe essere unito nel bagagliaio.

Fai attenzione ai cambiamenti che interrompono i test unitari sul lato pubblico dell'api, in tal caso dovresti cambiare la versione dell'api. Una buona idea è seguire versioning semantico come suggerito nei commenti.

Sii severo su questo.

    
risposta data 01.12.2011 - 23:01
fonte
3

Suggerisco di aggiungere test unitari per questa libreria condivisa. Questo ti aiuterà a decidere sul comportamento previsto e ti avviserà se questo comportamento cambierà a causa di una correzione di bug o di un miglioramento / refact del codice. Non mi preoccuperei troppo delle diverse applicazioni che usano la libreria in attesa di un comportamento diverso se si passa il tempo a definire chiaramente quale sia il comportamento.

    
risposta data 01.12.2011 - 23:16
fonte
1

Mi piace la risposta di Thanos. Inoltre, al mio lavoro, utilizziamo repository git per gestire le nostre librerie di codici. Mette il codice sotto il controllo della versione, in sostanza, in modo che se le modifiche sono dannose siano mai fatte e inviate a tutti gli altri, è facile eseguirne il rollback, trovare il problema, correggerlo e ridistribuire .

Ma, per fortuna, rileverà i conflitti, o le collisioni in file modificati, per te in modo che tu possa rivedere ogni cambiamento (chiamato "delta") mentre sale al repository.

Per saperne di più, ti piacerebbe Pro Git , che è libero di leggere online.

    
risposta data 01.12.2011 - 23:11
fonte

Leggi altre domande sui tag