Come posso applicare Readme Driven Development a un progetto in corso?

1

Sono assegnato a un progetto in cui l'obiettivo è aggiornare un software esistente. Questo software è stato sviluppato in modo totalmente ad hoc , il che significa che qualsiasi documentazione generata è obsoleta, confusa e semplicemente inutile. Non voglio riprodurre retroattivamente tutti gli artefatti mancanti, poiché sarebbe solo una perdita di tempo. La base di codice è brutta e ha davvero bisogno di un serio refactoring, ma questa è un'altra storia.

Quello che voglio è applicare Sviluppo guidato da Readme per guidare questo progetto. Quindi, in sostanza, voglio scrivere un Readme, che documenterà ogni cambiamento significativo a livello dell'utente. Il problema è che non ho idea di come strutturare questo documento. Per me, è abbastanza chiaro che dovrebbe avere un layout diverso rispetto al Readme tradizionale. Voglio davvero documentare i cambiamenti, e non lo stato attuale delle cose.

Qualche idea?

    
posta Metalcoder 22.07.2013 - 20:28
fonte

3 risposte

5

L'autore del post sul blog stava cercando di capire come l'Agile Manifesto enfatizza il "software di lavoro su una documentazione completa" e che quando lo fai rischi di perdere le informazioni su come il software è supposto per funzionare.

Ciò che è necessario, che si tratti di Waterfall, Rational Rose, Agile o altri SDLCM, è una "dichiarazione di intenti". È una descrizione testuale di ciò che deve essere fatto, e perché, a un livello di dettaglio sufficientemente preciso nelle aree giuste, uno sviluppatore può prendere questa descrizione nella stanza del team come "requisiti" e produrre software che funzioni correttamente come un risultato dei suoi sforzi di sviluppo, guidato da qualsiasi metodologia che lui o il suo team o manager ritengano opportuno seguire.

In Waterfall, questo è il documento dei requisiti. È tutto definito, in dettaglio, in primo piano, prima che inizi lo sviluppo, e se cambia mentre il progetto è fuori per lo sviluppo, lo sviluppo si interrompe e il team ritorna alla fase di "progettazione".

In UML / Rational Rose, questa è una "descrizione del caso d'uso". Descrive ciò che l'"attore" (una persona in un ruolo aziendale specifico, o un automa esterno come un altro programma) farà ciò che dovrebbe attivare un'azione, e cosa accadrà all'interno del sistema come risultato di questa azione.

In Agile, questa è una "user story", la cui forma esatta può differire in base al sapore esatto di Agile, ma i due che ho visto sono simili a un "caso narrativo di utilizzo" di UML e un po 'diverso approccio: "Come ... voglio ... così che ...". Simile a un caso d'uso in cui sono menzionati l'attore e l'azione di base, ma l'aggiunta è un'integrazione delle esigenze aziendali nel contesto della storia, quindi quando si progetta la soluzione, il team di sviluppo può tenere a mente il business.

Nessuno di questi è un "readme", e sinceramente non vorrei leggere un readme scritto nel modo suggerito dal blogger; sarà lungo, sarà ordinato solo in base all'ordine in cui lo sviluppatore ha aggiunto le funzionalità richieste, e sarà scritto da uno sviluppatore, che avrà la sua prospettiva su ciò che sta aggiungendo o modificando e perché potrebbe non coincidere con la prospettiva che avrebbe un utente.

    
risposta data 22.07.2013 - 22:46
fonte
2

Anche se sono d'accordo con l'affermazione dell'autore che dovresti scrivere una descrizione generale di ciò che il tuo programma dovrebbe compiere prima di scrivere la prima riga di codice o il primo test di unità, è solo buonsenso. Capire cosa vuoi fare prima di farlo in realtà è una componente essenziale di ogni sforzo umano.

I readme non sono strutturati affatto; sono solo file di testo, senza standard per crearli. Inoltre, gli autori usano il loro file readme per cose diverse; come documento di descrizione della versione, errata, cose che devi sapere prima di iniziare, ecc.

In breve, Readme-Driven Development non è una metodologia di progettazione del software; è semplicemente un ingegnoso dispositivo mnemonico che l'autore ha inventato per fare un punto. Se stai cercando una metodologia attuale, TDD abbinata a un elenco di funzionalità e alcuni prototipi di design faranno il lavoro meglio.

    
risposta data 22.07.2013 - 21:00
fonte
0

Il mio consiglio è di evitare l'approccio del readme.

Stai ricreando e aggravando il problema per il futuro.

La volontà di readme, nel tempo, verrà mantenuta da diversi sviluppatori con stili diversi. Alla fine ci saranno delle differenze tra il readme e l'implementazione e questo sarà davvero noioso.

Posso solo dare questo consiglio - che so probabilmente sembrerà (e potrebbe essere) molto poco pratico per tutto il cambiamento che sembra implicare, ma la cosa è che penso che sia la cosa giusta da fare e alla fine è meglio.

Quindi quello che vorrei fare è:

1) concentrarsi sull'ottenere per primi i test scritti o aggiornati. Le tue suite di test di regressione sono la chiave per ulteriori cambiamenti. Sono il nucleo della documentazione cerchi.

2) Rifatta il codice assicurandosi che i test superino e coprano il caso necessario.

    
risposta data 23.10.2013 - 07:16
fonte

Leggi altre domande sui tag