Distribuzione di un'applicazione molto semplice

0

Ho un'applicazione di console di lavoro molto semplice scritta in C ++ collegata a una libreria statica leggera. È solo a scopo di test. Ora che la parte di programmazione è terminata, mi piacerebbe conoscere il processo di distribuzione effettiva del programma. Ho scritto un CMakeLists.txt molto semplice che creava makefile o progetti VS per creare le fonti. Ho anche un programma che chiama la libreria statica per fare alcuni test di google.

Per me, la distribuzione di questa applicazione è la seguente:

  • to developers : the src directory with the CMakeLists.txt file (multi-platform distribution) with a README.txt and an INSTALL.txt
  • to users : the executable and a README.txt
  • git repo : everything mentioned above plus the sources for testing and the gtest external lib

A questo punto: considerando la complessità della mia applicazione, lo sto facendo bene?

C'è qualche riferimento che formalizzerebbe questo processo di distribuzione in modo da poter migliorare e andare oltre? Dire che vorrei aggiungere librerie dinamiche che possono essere aggiornate, librerie esterne come boost: come dovrei impacchettare questo per distribuirlo in modo professionale?

    
posta vanna 05.09.2012 - 00:10
fonte

2 risposte

2

Sembra che la questione non riguardi la distribuzione. La distribuzione consiste nell'ottenere l'applicazione ad altri e include cose come i siti su cui lo si ospita, come lo scaricano e ottengono gli aggiornamenti. Vedi Come vendere / distribuire il mio software? per ulteriori informazioni. Allo stesso modo, se vuoi commercializzare la tua app (farla conoscere a qualcuno), guarda link per alcuni punti di partenza. Sembra che tu stia chiedendo di più sul modulo che l'applicazione dovrebbe assumere quando dai ai clienti e agli altri sviluppatori.

A partire dai clienti, le cose da considerare includono la tecnica dei clienti e il sistema operativo su cui sono in esecuzione. Se i clienti sono persone tecniche in esecuzione su * nix, un readme e un eseguibile sono probabilmente adeguati. Se stai scrivendo un'app per iPhone, chiaramente no. La domanda ti porta a scegliere un ambiente * nix o Windows, quindi dovrei almeno prendere in considerazione un programma di installazione.

Come per separare parti in librerie dinamiche, questo aiuta se si vuole fare riferimento a una libreria esistente, rilasciare la libreria su una pianificazione diversa o riutilizzarla in altre applicazioni. È anche utile per i test unitari automatizzati. Sfortunatamente, i clienti non si preoccupano davvero di nessuno di questi, ad eccezione di potenziali conflitti di versione noti come "inferno DLL" su Windows.

Per quanto riguarda gli sviluppatori, segui le convenzioni del nostro sistema operativo e lingua di destinazione. Se stai mirando a * nix, un makefile è ottimo. Se hai come target Windows, è utile un progetto Visual Studio. Se stai facendo uno sviluppo multipiattaforma, un approccio con il minimo comune denominatore potrebbe essere il più gestibile.

Tuttavia, la cosa più importante che puoi fare è documentare il tuo codice. La maggior parte degli sviluppatori può farsi strada anche attraverso un processo di compilazione complicato, purché sappiano come. Un README o equivalente è un must con istruzioni dettagliate per la sua costruzione, problemi noti e i tuoi dettagli di contatto (come un indirizzo e-mail o un sito Web).

Per come dovresti dividere il codice in librerie esterne o no, anche gli sviluppatori non si preoccupano molto, fintanto che le librerie funzionano, sono ben tenute e non stai violando nessun accordo di licenza. Il tempo e lo sforzo degli sviluppatori risparmiati ne valgono la pena.

    
risposta data 05.09.2012 - 01:31
fonte
2

La complessità della tua applicazione non è il fattore principale: il tuo pubblico è ciò che fa la differenza. Quindi questo non è davvero un problema tecnico, più organizzativo. Se costruisci un'applicazione

  • solo per te stesso, ovviamente non hai alcuno sforzo da implementare

  • per un collega che vuole usarlo, lavorando nella stanza accanto a te: puoi installarlo una volta per lui

  • per altre persone della tua azienda: puoi scrivere un documento di installazione o scrivere alcuni script di installazione

  • per altri sviluppatori della tua azienda: inseriscili nel tuo repository di codice sorgente comune, puoi controllare da soli le fonti da lì (assicurati che possano facilmente ricostruire il programma)

  • per altri sviluppatori esterni alla tua azienda: potresti dover rendere il tuo programma multipiattaforma

  • per altri utenti in tutto il mondo: puoi fornire un programma di installazione completo per ogni sistema di destinazione che hai in mente.

Inoltre, la domanda su cosa fare con le "librerie dinamiche" può essere risolta solo a seconda del pubblico. Gli utenti della tua applicazione in genere non sono interessati alle librerie che hai usato, vogliono solo che la tua applicazione "funzioni", quindi assicurati che la versione della libreria che hai usato in fase di sviluppo sia fornita con la tua applicazione (o almeno possa essere facilmente installato). Al contrario, altri sviluppatori probabilmente vorranno sapere quale versione di lib installare / utilizzare per compilare la domanda.

Se vuoi leggere qualcosa, google per "il libro di distribuzione del software", troverai molta letteratura, per lo più dipendente dal sistema.

    
risposta data 05.09.2012 - 15:00
fonte

Leggi altre domande sui tag