Metodologie / strumenti per lo sviluppo da soli [chiuso]


10

Supponiamo che tu debba sviluppare un software di medie dimensioni, completamente da solo. Come se fosse un progetto personale che vuoi realizzare.

Quali metodologie / strumenti useresti per definire ciò che deve essere sviluppato, appreso e avere un'idea globale di ciò che il sistema è anche nei suoi dettagli?

Fondamentalmente per tenersi in pista e non perdersi lungo la strada.


3
Matita, carta e il mio cervello. Avere una lavagna aiuta. Seriamente, gran parte del mio lavoro di progettazione avviene proprio nell'IDE. Hai una domanda specifica, basata su un problema che stai attualmente affrontando? Ci aiuterebbe a rispondere alla domanda se sapessimo specificamente quale problema stai cercando di risolvere.
Robert Harvey,

@RobertHarvey haha ​​È molto vero. Beh, in un certo senso. Sto sviluppando un'idea che avevo, progetto personale. È solo che il software sembra essere più grande di quanto immaginassi e ci sono cose che dovrò ancora imparare come funziona e solo allora capire come svilupparlo.
Cassio,

1
@RobertHarvey I problemi principali sono probabilmente la mancanza di brainstorming sui dettagli, che tiene traccia di ciò che deve essere fatto e una visione del sistema nel suo insieme.
Cassio,

2
Sono sicuro al 99,9% di averlo coperto in un'altra o due domande, ma al momento non li trovo.
Adam Lear

4
Cerco sempre di perdersi lungo la strada. È un percorso rapido per l'apprendimento.
Joel Etherton,

Risposte:


5

Di solito uso solo Mercurial, se voglio una funzione la aggiungo e se non la voglio più la rimuovo. Inoltre, provo a scrivere bene i miei commenti di commit, così non mi perdo.


Yup - Mercurial è uno di quegli strumenti che sembrano fatti da Apple :) Semplice ma potente, bello ma utile ...
Torre

4

Può facilmente crescere oltre la portata della tua attenzione. Non l'arco , l' ampiezza .

È difficile considerare troppi elementi contemporaneamente .

E poi ... diventa una montagna russa di regressione .
Tutto ciò che fai rompe le cose precedenti e tornare indietro non aiuta.

Per evitare che si dovrebbe testare aggressivamente la regressione .
Automaticamente. (Non puoi farlo diversamente e rimanere sano di mente)

I test aumenteranno la tensione delle tue energie.

Se il progetto riguarda interamente l'interfaccia utente ... probabilmente stai brindando:

  • Il test dell'interfaccia utente è difficile .
  • Il test automatico dell'interfaccia utente è ... ancora difficile .

Idea dell'ultimo minuto non testata per progetti incentrati
sull'interfaccia utente Iscrivi un parente con tempo libero e la passione di fare clic con il mouse come tester dell'interfaccia utente.
Sto pensando "adolescente" qui.

Altri problemi:

  • Ci vorrà per sempre .
  • Affronterai il blocco dello scrittore .
    (In realtà non esiste come condizione, è un popolare errore di etichetta che le persone attribuiscono alla loro mancanza di disciplina )

Se sei abituato e ami una sorta di controllo della versione , usalo.
Iniziare a impararne uno ora ti distrarrà .

Rappresentare graficamente le tue idee, come già sottolineato, può essere d'aiuto.

Ho usato Freemind , CMaps , XMind , yEd , graphviz e ... qualcos'altro.

XMind è il meno inutile:

  • molto veloce per inserire i dati
  • layout automatici
  • cercando rigorosamente di farti rimanere in tema
  • ottimo per prendere appunti durante una lezione (vorrei tanto averlo al college )
  • ancora difficile da usare mentre fare la vostra mente su qualcosa che non avete chiaro che vi.

Una matita e un taccuino ottengono ancora buoni risultati nella mia top ten:

  • I scansione molti dei miei appunti
  • Faccio molti piccoli disegni esplicativi.

    • (Se pensi con le immagini potresti non trovare mai uno strumento di brainstorming soddisfacente)

Come ultima risorsa, puoi sempre preparare powerpoint per il tuo consumo :)


+1. Tuttavia, hai qualche suggerimento sulla cosa "prendere una decisione su qualcosa che non hai chiarito lì"?
Cassio,

@Cassio Passo avanti e indietro tra xmind e pencil + sketchbook, creo elenchi puntati in libreoffice, scrivo degli esempi e collaudo qualche implementazione approssimativa. È un processo piuttosto dispendioso in termini di tempo, ma devi scartare qualche linea di pensiero improduttiva per arrivare a qualcosa che sembra giusto. (PS: accartocciare la carta prima di
lanciarla

1
@ZJR Infatti. A volte avevo solo paura di scrivere cose di cui non avevo bisogno e di perdere tempo, ma ora vedo che funziona così. Inizialmente scriviamo alcune cose inutili ma miglioriamo con il tempo. :) Grazie!
Cassio,

3

Programmazione alfabetica.

Il professionista della programmazione letterata può essere considerato un saggista, la cui preoccupazione principale è l'esposizione e l'eccellenza dello stile. Un tale autore, con il thesaurus in mano, sceglie attentamente i nomi delle variabili e spiega il significato di ciascuna variabile. Lui o lei cerca un programma che sia comprensibile perché i suoi concetti sono stati introdotti in un ordine che è meglio per la comprensione umana, usando una combinazione di metodi formali e informali che si rafforzano a vicenda.

Se stai scrivendo un documento (o un libro o un rapporto o un documento) sul tuo progetto, allora tendi a rimanere in attività.

Inizia con uno schema di ciò che stai facendo: usa la panoramica del caso, versione 1, versione 2, versione n. Annota un riepilogo dei casi d'uso. Dai la priorità a loro. Inseriscili negli sprint e nelle versioni.

Ogni versione ha una vista caso d'uso, vista logica, vista elaborazione, vista componente, vista distribuzione. Per lo sprint, dettagliare i casi d'uso. Pubblica il documento HTML per mostrare cosa hai intenzione di fare. Dopo aver dettagliato i casi d'uso per lo sprint, scrivere il modello logico. Scrivi il codice per supportare questo. Scrivi la documentazione di elaborazione. Scrivi il codice per supportarlo. Crea moduli. Scrivi la documentazione della vista componenti. Scrivi i test e la documentazione di supporto. Pubblica i risultati dello sprint come documento HTML.

Ripeti per ogni sprint. Rivedi e modifica il tuo documento di volta in volta.

Ci sono molti strumenti di programmazione alfabetici. Possono aiutarti a produrre una fonte che crea la documentazione e il codice da un unico testo.

Uso sphinx e PyLit ma è perché sono un programmatore Python.


Buono a sgranocchiare un documento universitario e poi a dimenticarsene, male se si prevede di rilasciare o mantenere il prodotto in seguito. Tutti ovunque dovrebbero usare doxygen , anche su Python. Ma è solo perché sono un fan :)
ZJR

2

Se vuoi scrivere le tue idee, puoi usare uno strumento di mappatura mentale come XMind o FreeMind . Entrambi gli strumenti sono gratuiti (per gli individui di XMind) e sono ottimi per il brainstorming e l'organizzazione delle idee. Il vantaggio di questi strumenti è solo che hai meno possibilità di dimenticare qualcosa.

Ho usato personalmente Freemind prima di iniziare il mio ultimo progetto personale. Non avevo una metodologia particolare di per sé . Ho appena esposto le mie idee durante sessioni di un'ora una volta ogni due giorni. Penso che spaziare tra le sessioni di brainstorming mi abbia aiutato a vedere meglio cosa non andava, cosa non era essenziale ma poteva essere utile nelle versioni successive, ecc.

Durante il mio primo commit del codice ho anche salvato il file di brainstorming nel repository del codice sorgente (ho usato bitbucket ) e l'ho tenuto aggiornato con le mie idee più recenti.


Molto bene. Sto già testando tutti questi. Grazie!
Cassio,

2

Trattalo come un vero progetto software (perché è uno). Ci sono solo alcune cose che cambiano perché il numero di sviluppatori è uno. Hai ancora bisogno del controllo del codice sorgente. Hai ancora bisogno di un modo per organizzare le funzionalità per aggiungere un bug da correggere. Hai ancora bisogno di test automatici per verificare che non crei regressioni nel codice. Dovresti anche avere un modo automatico per compilare il codice (se necessario), eseguire i test e visualizzare i report.

Sto lavorando a un progetto personale proprio come hai descritto. Sto usando Git, Redmine, JUnit e Jenkins per soddisfare tutte le categorie che ho descritto. Il mio flusso di lavoro è:

  • Scegli un biglietto su cui lavorare
  • Dirama la base di codice
  • Sviluppa codice e test per l'attività (esegui il commit delle modifiche al ramo in buoni punti di salvataggio)
  • Unisci il ramo al tronco
  • Verifica che la compilazione abbia avuto esito positivo, i test siano stati superati e non vi siano stati altri problemi
  • Ripetere

Mantenere tutto gestito e organizzato è importante quanto quando ci sono molti sviluppatori. Con molti sviluppatori, è necessario organizzarsi in modo che le informazioni siano diffuse a tutti. Quando sei solo tu, hai già tutte le informazioni, ma ricordare ogni parte del sistema è difficile. Un sistema gestito ti semplifica e puoi concentrarti sull'attività da svolgere.


2

Utensili:

  • Control Version System (anche se sei l'unico sviluppatore nel tuo garage o PC personale di casa): GIT, Mercurial, Tourtoise

  • Editor con evidenziazione del codice sorgente, anche se si dispone di un IDE (Scintilla, Vim, Notepad)

  • Lavagna, lavagna, mondo reale, alcune cose non si adattano alla tua applicazione Strumenti di progettazione.

  • Strumento di progettazione: Rational Rose, Umbrello, (UML, ER,) Visio o "Poor Developer's Designer Tools" come Power Point, Corel Draw, Open Office Draw

  • Testo / Codice sorgente Strumento di confronto del testo, ad esempio WinMerge


Molto utile! Sto mettendo tutti questi in pratica. Grazie.
Cassio,

1

Dipende da come puoi distinguere e gestire diverse attività, perché dovrai dare un'occhiata a ogni singola fase del processo di sviluppo.

Penso che gli strumenti siano utili solo se sai già come usarli e uno dei peggiori errori è imparare come funziona uno strumento piuttosto che imparare cosa farne.

Innanzitutto, a mio avviso, devi scrivere cosa ti aspetti che faccia il software e soprattutto cosa non farà. Questo è un punto cruciale. Il passo successivo è dividere il sistema finale in sottosistemi inferiori, rendendo più semplice il processo di costruzione. E, ultimo ma non meno importante, dovrai scegliere i tuoi strumenti. Fondamentalmente un buon IDE, un VCS e un modellatore di dati. Puoi aggiungere molti altri strumenti per aiutarti, ma fai attenzione a non iniziare sulla strada sbagliata.

Bene, l'inizio non sembra così attraente, ma il processo diventerà divertente nel tempo.


Si! Ricorda che il codice è -se il progetto è ben progettato- una piccola parte del tutto.
Lucas Maus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.