Come strutturare il progetto in cui una libreria e un'applicazione che utilizza la libreria vengono sviluppate contemporaneamente?

4

Sto pianificando di sviluppare una nuova applicazione che utilizzi pesantemente una libreria che sarà sviluppata ex novo appositamente per l'applicazione, ma che è stata abbastanza generale da poter essere utilizzata per altri programmi una volta terminata.

Quindi lo sviluppo di questa libreria sarà strongmente guidato dallo sviluppo dell'applicazione. Otterrà le funzionalità in base all'importanza di tale funzionalità per l'applicazione associata. Comunque, voglio che la libreria sia completamente disaccoppiata dall'applicazione. L'applicazione utilizza la libreria, ma la libreria non è a conoscenza dell'applicazione e, a un certo punto del tempo, vorrai assicurarmi che la libreria possa essere facilmente utilizzata in altre applicazioni.

Sto cercando consigli su come strutturare questo. In particolare, dove si dovrebbe trovare il codice per la libreria (repository stesso / diverso, qualche tipo di strumento di compilazione per tenerli separati, ecc.)

Poiché può dipendere dalla lingua (come risultato degli strumenti di compilazione e di altre differenze linguistiche), sto pensando di usare Python.

    
posta Kat 22.06.2015 - 18:23
fonte

3 risposte

1

Innanzitutto, se la tua biblioteca è generica, NON dovrebbe essere influenzata dall'applicazione. Dovrebbe fornire la funzionalità che è stata progettata per fornire. L'applicazione è basata sulla libreria, non il contrario.

Non importa se lo tieni nello stesso repository o in uno diverso, ma fai un progetto separato.

Vorrei prima fare un disegno tecnico e definire tutte le funzionalità richieste. Quindi separerei la funzionalità in livello di presentazione, livello aziendale e livello persistente dei dati. Quindi lo implementerei partendo dal basso (livello di persistenza).

    
risposta data 22.06.2015 - 22:23
fonte
1

Inizierò prima con la roba generica di lingua neutra e poi tratterò i bit specifici per Python.

Perché sei così sicuro che ci deve essere una biblioteca separata? È perché diversi sviluppatori lavorano sul codice? o ci sono piani per riutilizzare la libreria in applicazioni aggiuntive? o persino per distribuire la libreria da sola ai clienti.

In generale, se la tua biblioteca ha una sua vita indipendente, allora devi considerare come gestirai il diverso ciclo di vita del rilascio, e farne un repository separato ti aiuterebbe, a costo di aumentare la complessità per gli sviluppatori che lavorano su entrambi i progetti come parte dello stesso compito di sviluppo. Il modo in cui decidi in questo modo avrà un impatto a lungo termine sul tuo team e avrà conseguenze di vasta portata su come ottimizzare i modelli di lavoro e le pratiche di sviluppo dei team. entrambi i modi possono funzionare se implementati bene, ed entrambi possono fallire male se implementati e gestiti male.

Con Python, la miglior pratica è quella di rilasciare i tuoi componenti come pacchetti python. Mentre è possibile avere più pacchetti nello stesso repository, probabilmente spingerei strong per un repository diverso per pacchetto, e quindi per avere più ambienti virtuali python. L'ambiente di sviluppo avrebbe i pacchetti installati usando i file di origine sul posto, con l'ambiente di rilascio sarebbe stato creato installando i pacchetti come pacchetti finiti. Il passaggio da un ambiente all'altro consente di testare facilmente tutte le possibili combinazioni. Questo è il modo pietonico.

    
risposta data 22.06.2015 - 21:56
fonte
0

Non è una questione di linguaggio di programmazione.

Se vuoi scrivere la tua biblioteca con "questa è una biblioteca per tutti gli usi" in mente puoi avere successo. Ma se fossi in te, inizierei a sviluppare entrambi nello stesso luogo, nello stesso repository. Successivamente puoi estrarre questa libreria in un altro progetto.

    
risposta data 22.06.2015 - 19:38
fonte

Leggi altre domande sui tag