Quali sono i principi di una buona ingegneria del software?

Ecco alcuni dei principi che credo e che ho trovato utili.

  1. Quando si attacca un nuovo problema, imparare come è stato risolto prima. Quasi ogni nuovo problema è un vecchio problema mascherato. Capirlo e rivedere l'arte precedente può velocizzare e migliorare la vostra soluzione. Non crederesti a quante volte ho visto un problema complesso risolto senza capire l'arte precedente, facendo tutti gli errori che la peggiore arte precedente ha fatto nel LORO primo tentativo. Spreco di tempo ed energia, con conseguente software di scarsa qualità.
  2. Se stai scrivendo i tuoi protocolli di sicurezza / crittografia, lo stai facendo male. Usate protocolli crittografici e di sicurezza esistenti e ben studiati. Nessuno riesce a farlo bene la prima volta, e ci sono ottime probabilità che qualcosa che fai da solo abbia delle vulnerabilità che non si mostreranno finché non sarà troppo tardi per risolverle.
  3. Non fare il furbo. Per lo sviluppo di software commerciale, la cosa più importante è che il codice sia facilmente compreso, debuggato e mantenuto. Questo rende meno probabile che sia sbagliato, e rende meno probabile che venga buttato via dalla prossima persona che deve lavorarci.
  4. Non ottimizzare eccessivamente o modulare in anticipo. Ottimizzare all'inizio complica il codice e può migliorare il tempo di esecuzione in modo irrilevante. Ottenere un algoritmo chiaro e pulito e ottimizzarlo in seguito. Allo stesso modo, lavorare duro per rendere il sistema modulare ed estensibile è qualcosa che dovrebbe essere fatto con moderazione. In quattro dei miei progetti pluriennali, più di un anno (ciascuno) è stato speso per creare un modello di plug-in che potesse essere facilmente esteso. L'unico plug-in effettivamente scritto in ogni caso è stato il singolo esempio con cui il mio team ha iniziato, ma abbiamo significativamente complicato lo sviluppo e il test prendendo questo approccio. Aspettate di avere un bisogno, o rischiate di fare le interfacce sbagliate e sprecare tempo ed energia. Infine, ho visto diversi esempi di persone che hanno esagerato con l'OOP e l'incapsulamento, complicando inutilmente il codice.
  5. Non potrete mai 'aggiustarlo dopo' quindi fatelo bene. Un altro errore che ho fatto molte volte è stato quello di mettere insieme qualcosa con l'intenzione di sistemarlo prima di spedirlo. Poi un incendio dopo l'altro salta fuori, e il codice viene spedito in una forma orribile. Scrivete nel modo giusto la prima volta.
  6. Aggiungi un log ragionevole. Assicuratevi di avere un modo per registrare/tracciare l'esecuzione del vostro codice. Assicuratevi che il meccanismo sia leggero, e che abbia livelli di log selezionabili (ad esempio, informativo, di avviso, di errore) per permettervi di controllare quanto viene registrato.

Ci sono molti altri, ma questi sono i più utili per me.