Modularizzazione C
Esiste un classico documento sulla modularizzazione chiamato " sui criteri da utilizzare in scomposizione Systems Into Modules. "In breve, i criteri sono quelli di rendere una scomposizione orientata ai dati, non orientata dal punto di vista funzionale del progetto, e di utilizzare le metriche per giudicare il successo dal modo in cui pochi moduli devono essere toccati per miglioramento.
C è un linguaggio di programmazione strutturato e alcuni concetti chiave includono la creazione di basso accoppiamento (evitando globals e utilizzando i parametri) e alta coesione (raggruppando insieme funzioni e dati strettamente correlati).
Per C, cosa descrivi per separare la .h ( dichiarazione ) da .c ( definizione, anche chiamata implementazione) è buona. Alcune considerazioni pratiche si presentano con i file .c / .h, ma generalmente i file .h dovrebbero includere pochissime variabili globali (ad esempio estensioni) e prototipi solo per quelle funzioni che verranno utilizzate al di fuori di .c.
Ci sono molti programmatori C che parlano non usano analisi strutturate o design. Le Best Practices una volta riguardavano la creazione di un diagramma Structure che rompesse il problema per cui un programma era stato progettato per risolversi in una scomposizione funzionale top-down, trasformata in un albero di moduli usando una tecnica chiamata transform analysis. Questo non è più considerato la migliore pratica, perché la decomposizione orientata ai dati e orientata agli oggetti si è dimostrata superiore. Tuttavia, i programmatori C spesso trovano ciò che fanno per adattarsi al design orientato agli oggetti, in quanto le caratteristiche del linguaggio non si allineano.
Team Best Practices
Questo è l'argomento di interi libri. Watts Humphrey ha scritto un rapporto tecnico chiamato " Il processo software del team " che è un classico e un download gratuito. Scorri solo le pagine 4-6 e 15 per avere una panoramica veloce di ciò che è importante per la squadra e la sua leadership. Altre parti del documento ti dicono molto sulle aspettative delle metodologie pianificate in termini di documentazione, inclusa la produttività e la misurazione della qualità.
Il tuo team può scegliere un modello di ciclo di vita pianificato (più tradizionale cascata, spirale o sviluppo orientato alle funzionalità) o Agile (iterativo / incrementale o forse snello). Entrambi avranno molti processi che si sovrappongono, anche se potrebbero non essere praticati esattamente nello stesso modo: documentazione, controllo del codice sorgente, tracciamento e pianificazione integrati con database ed editor di grafici, test e qualche tipo di revisione tra pari.
Se pensi
Stiamo scoprendo modi migliori per sviluppare
software eseguendolo e aiutando altri a farlo.
dovresti considerare cosa stanno dicendo i ragazzi di Agile perché il processo di squadra si concentra su Scrum o eXtreme Programming (XP) , è più tardi e reagisce a ciò che le persone pensavano non funzionasse prima.