Domanda

Sono l'unico sviluppatore di un consorzio accademico con sede in un'università nel nord-est. Tutto il mio lavoro di sviluppo coinvolge strumenti interni, principalmente in Java, quindi nulla che viene rilasciato al pubblico. In questo momento, sento che il mio flusso di lavoro di sviluppo è molto "hobbista" e non è niente di simile a quello che vedresti in un'azienda di sviluppo software con esperienza. Sarei propenso a dire che non ha molta importanza dato che sono l'unico sviluppatore, comunque, ma non può far male apportare alcune modifiche, se non altro per rendere il mio lavoro un po 'più semplice e ottenere alcuni più tecnologie sul mio curriculum. In questo momento il mio flusso di lavoro è qualcosa del genere:

  • Faccio la maggior parte del mio lavoro di sviluppo in Eclipse sul mio laptop. Tutto viene salvato localmente sul mio laptop e non uso un VCS, né eseguo davvero il backup del mio codice (tranne per il fatto che lo invio occasionalmente via email a me stesso in modo da poterlo vedere su un altro computer - sì, ti ho detto il mio ambiente di sviluppo ha bisogno di lavoro).

  • Quando ho finito con un progetto e voglio distribuirlo o se voglio solo provarlo, uso lo strumento Jar incorporato in Eclipse per creare un file eseguibile .jar del mio progetto. Se uso librerie .jar esterne, utilizzo il plug-in Fat-Jar per includere quei .jar nel mio eseguibile .jar.

  • Dopo aver creato il file .jar, lo carico manualmente sul server tramite SFTP e lo collaudo con qualcosa come java -jar MyProject.jar .

Oh sì, ho già detto che non collaudo l'unità?

Il problema più evidente che vorrei risolvere per primo è la mia mancanza di controllo del codice sorgente. Mi piace git a causa della sua natura distribuita, ma non sembra integrarsi bene con Eclipse e ho sentito che non funziona molto bene su Windows, che è il mio sistema operativo di sviluppo principale. Quindi, mi sto orientando verso SVN, con cui ho una certa esperienza. Ho il mio server personale e penso che lo userò per il mio controllo del codice sorgente, perché preferirei essere il mio amministratore piuttosto che avere a che fare con la burocrazia universitaria. Ho avuto qualche problema a configurare SVN una volta prima, ma ci proverò ancora. Forse installerò anche qualcosa come Trac o Redmine per il tracciamento dei bug, l'elenco delle cose da fare, ecc?

Che dire di costruzione e distribuzione? Deve esserci un modo migliore che usare Fat-Jar e caricare manualmente il mio jar sul server. Ho sentito parlare di strumenti come Ant e Maven: si applicano a ciò che voglio fare? Come posso iniziare a usarli?

Suppongo che alla fine mi piacerebbe integrare anche i test unitari con JUnit. Anche se probabilmente dovrebbe essere, questa non è la mia preoccupazione principale in questo momento, perché finora le mie applicazioni non sono tremendamente complesse. Mi piacerebbe davvero lavorare sulla semplificazione e razionalizzazione del mio flusso di lavoro in questo momento, e poi mi dedicherò facilmente ai test unitari.

Ci scusiamo per la lunga domanda. Immagino che la mia domanda si riduca a, per un solo sviluppatore, quali strumenti e metodologie posso / dovrei usare non solo per semplificare il mio lavoro, ma anche per espormi ad alcune tecnologie che sarebbero richieste conoscenze necessarie in uno sviluppo dedicato casa?


modifica: grazie per le ottime risposte finora. Non intendevo suggerire di voler rendere il mio flusso di lavoro "aziendale". solo per il gusto di farlo, ma per semplificare il mio lavoro e avere alcune tecnologie al mio attivo che sono tipicamente utilizzate negli ambienti di sviluppo aziendale. Questo è tutto ciò che intendevo con questo.

È stato utile?

Soluzione

Mi sembra che tu abbia una buona idea di cosa devi fare.

L'uso di Subversion (o di altri VCS) è un must. Anche se potrebbe essere saggio impostare un repository SVN separato per il codice relativo al lavoro piuttosto che utilizzarne uno personale.

Puoi integrare Subversion con Eclipse usando un plugin come Subclipse, che ho trovato funziona abbastanza bene.

Utilizzerei sicuramente Ant o Maven - la mia preferenza è Ant perché è più flessibile e penso che si adatterebbe anche al tuo stile di sviluppo più di Maven. Ma potresti anche voler esaminare Apache Ivy , che gestisce la gestione delle dipendenze.

Fondamentalmente si imposta un'attività ant che esegue i passaggi di compilazione, compilazione e distribuzione, in modo che quando si crea un pacchetto JAR finale si può essere sicuri che sia stato testato in unità poiché fa parte del proprio script ant. Il modo migliore per iniziare con la formica è guardare alcuni esempi e leggere il manuale .

Per quanto riguarda i test unitari, puoi gradualmente costruire con i test unitari. Consiglierei di utilizzare JUnit insieme a uno strumento di copertura del codice come Cobertura (che è facile da configurare) - ti aiuterà a capire quanto codice coprono i tuoi test ed è un indicatore dell'efficacia dei tuoi test.

Può anche valere la pena creare qualcosa come Trac: è importante essere in grado di tenere traccia dei bug e un wiki è sorprendentemente utile per la documentazione.

In altre parole, tutto ciò suona come se fossi sulla retta linea, devi solo iniziare ad usare alcuni di questi strumenti!

Altri suggerimenti

Se sei davvero impegnato nel controllo del codice sorgente distribuito, ti consiglio di consultare Bazaar . Il controllo del codice sorgente distribuito simile a GIT progettato per eseguire fusioni di altissima qualità. Funziona immediatamente su tutte le piattaforme, incluso Windows, e hanno un client TortoiseBZR .

In realtà, qualsiasi controllo del codice sorgente è migliore di nessuno. Se sei l'unico sviluppatore, non c'è bisogno di qualcosa di più complesso di SVN. Le grandi aziende e i progetti usano SVN continuamente con poco problema.

Per quanto riguarda i test delle unità, è necessario acquisire familiarità con JUnit . Il fatto che tu sia a conoscenza dei test unitari e sappia che dovresti farlo è ancora diversi passi avanti rispetto alla maggior parte degli sviluppatori ad hoc.

Usa controllo versione. Periodo. SVN ha una grande integrazione con Eclipse e Windows. Ottieni il client TourtisSVN per Windows e usa il plugin subclipse con Eclipse.

Consiglierei di ottenere un HD esterno o utilizzare uno dei server della tua azienda per mettere su il tuo repository ed eseguire backup spesso. Subversion funziona alla grande anche con la distribuzione e l'aggiornamento. Impara come farlo e non guarderai mai indietro :)

Per quanto riguarda i test unitari, alcune persone direbbero che è la strada da percorrere, ma non ho trovato prove sufficienti per iniziare la pratica da solo. Se qualcuno di noioso su questa domanda può convincermi altrimenti, per favore, fallo!

Inoltre, non guardare a " enterprise " il tuo flusso di lavoro: cerca di migliorarlo. Le pratiche che funzionano bene con enormi team e corperations potrebbero non funzionare bene per te. Sono praticamente un solo sviluppatore e conosco la situazione in cui ti trovi. Prova tutto e mantieni ciò che ti sembra naturale dopo un po '.

Ma assicurati di provare SVN! Se la tua azienda ha un server LINUX con apache, vedi se riesci a configurare il tuo server usando DAV-SVN.

:)

Penso che tu abbia risposto alla maggior parte delle tue domande.

  • Controllo del codice sorgente: scegli SVN - installazione semplice, ottima integrazione con Eclipse (sottoclipse).
  • Usa Ant per costruire il tuo progetto e distribuirlo (attività SCP / SFTP)
  • Conserva tutte le tue impostazioni (impostazioni del progetto Eclipse, build xmls, ecc.) in SVN.
  • Usa Bugzilla per tenere traccia dei tuoi bug / problemi / richieste / idee.

Sarebbe MOLTO utile iniziare a lavorare con il controllo della versione. Inizia ora, non ritardare! Git si sta muovendo DAVVERO velocemente e c'è già un TortoiseGit in fase di sviluppo. SVN è ancora un ottimo standard con cui lavorare. E non ho lavorato con Mercurial, ma questo è un altro VCS che vale la pena esaminare.

A parte questo, non vedo perché il tuo flusso di lavoro debba essere aziendale. Deve solo essere efficiente e comodo. Detto questo, penso che dovresti provare a lavorare con un semplice editor di testo e compilare dalla riga di comando. La maggior parte dei migliori programmatori del mondo lo usa ancora al posto di un IDE e ti aiuterà a capire i processi sottostanti al tuo IDE preferito.

Dai un'occhiata ai Pragmatic Starter Kit di Pragmatic programmatori .

Ti insegna sulle basi fondamentali dello sviluppo del software che le università / ecc. sembra passare, come controllo di versione, unit test e automazione del progetto (in quell'ordine), e lo fa in un modo molto accessibile.

Ti darà una solida base per andare avanti da lì.

Dai un'occhiata a Appfuse di Matt Raible.

Incorpora Maven e Unit Testing.

http://raibledesigns.com/rd/tags/appfuse

Anche se lo metti come ultima cosa, penso che dovresti iniziare a usare jUnit senza indugio.

Il motivo è che probabilmente è la più semplice delle ambizioni che hai identificato e gli strumenti sono quasi sicuramente già integrati nella tua build Eclipse.

Crea una nuova cartella nel tuo progetto chiamata 'jUnit'.

Supponiamo che tu abbia una classe Employee, con i metodi setAnnualSalary () e getMonthlySalary ().

Fai clic destro sulla cartella jUunit, nuovo - > "caso di test jUnit". Questo renderà una nuova classe. Chiamalo TestEmployee. Eclipse genera le cose della piastra di cottura per te, come al solito.

Aggiungi un metodo vuoto con un nome che inizia con 'test':

public void testSalaryCalc() {
    Employee emp = new Employee("John Doe");
    emp.setAnnualSalary(12000);
    assertEquals(1000,emp.getMonthlySalary());
}

Fai clic con il pulsante destro del mouse, " esegui come " - > "test jUnit". (la prima volta che Eclipse potrebbe richiedere di eseguire alcune impostazioni per il progetto. Fai solo quello che dice.)

Se il Dipendente funziona correttamente, vedrai una barra verde. Sabota la classe Employee, esegui di nuovo il test e vedrai una barra rossa, oltre all'output che ti dice quale è stato l'errore.

Congratulazioni: stai testando le unità!

Fai clic con il pulsante destro del mouse sulla directory principale e scegli " Esegui come test jUnit " eseguirà ogni classe Testcase nella directory. Successivamente puoi incorporare jUnit nel tuo processo di compilazione, ma per ora non ti preoccupare.

Completamento automatico ti mostrerà tutte le varianti di assert () che puoi usare. Puoi leggerlo e mirare alle pratiche in cui scrivi i casi di test prima dell'implementazione che li supera. Ma semplicemente fare le cose semplici sopra ti dà grandi benefici.

Dopo aver impostato il controllo della versione e alcuni test unitari, prenderei in considerazione un server di integrazione continua (volevi essere intraprendente, vero?).

Anche se sei e rimani l'unico sviluppatore, questo potrebbe aiutarti a scoprire alcuni errori. Cose che hai dimenticato di fare il check-in o cose simili. Un server CI controlla regolarmente tutte le tue fonti, esegue una build pulita ed esegue tutti i test. Ti contatta anche in caso di errori.

Questo ti dà la garanzia che tu (o qualsiasi altra persona) sia in grado di controllare il tuo codice e costruire / eseguire i tuoi progetti.

Consiglierei di dare un'occhiata a Hudson

Come altri hanno già detto, sai già chiaramente cosa devi fare. Un VCS è un must, CI o il tracciamento dei bug possono essere eccessivi (per un singolo sviluppatore un foglio di calcolo potrebbe essere sufficiente per il tracciamento dei bug).

Una cosa che potrebbe essere di grande beneficio è mantenere un arretrato di prodotti organizzato. Nello sviluppo solista, trovo concentrarsi sulle funzionalità ad alta priorità ed evitare che il creep di funzionalità sia una delle mie maggiori sfide. Mantenere un arretrato aiuta immensamente. Non deve essere molto più di un elenco prioritario di funzionalità con alcune note sull'ambito di ciascuna. Nel mio posto di lavoro, conserviamo queste informazioni in Trac, ma anche in questo caso, un foglio di calcolo potrebbe essere tutto ciò di cui hai bisogno.

E voglio inserire una spina per test unitari, in particolare Test Driven Development (TDD). il libro di Kent Beck è un buon punto di partenza. Trovo che TDD mi aiuti a rimanere onesto e concentrato su ciò che devo veramente fare, in particolare su un progetto a sviluppatore singolo senza QA. A volte sembra che il codice si scriva da solo.

Hai ottenuto delle risposte davvero solide, quindi post breve aggiungendo un link a un articolo sullo Test Driven Development che è una pratica agile che avrà un bell'aspetto sul tuo CV. TDD

Se si esegue un server Windows in cui si desidera inserire il server SVN, utilizzare Visual SVN come server. È semplicissimo da configurare e utilizzare, supporta sia l'autenticazione di base che l'autenticazione di Windows. È anche gratuito da usare.

Eclipse ha diversi moduli da integrare con un server SVN, quindi usa uno di questi o il già suggerito Tortoise SVN.

Tutti i commenti precedenti hanno riguardato quasi tutto ciò di cui potresti mai aver bisogno :-)

Voglio aggiungere un altro approccio su come sviluppare (il flusso di lavoro di sviluppo).

Ti suggerisco di leggere il seguente articolo e sebbene sia un flusso di lavoro git puoi usare la stessa idea per qualsiasi altro strumento che potresti usare.

http://nvie.com/posts/a-successful-git -branching-model /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top