Ho una domanda abbastanza approfondita che probabilmente non ha una risposta esatta.
Come programmatore di software, di solito sono incaricato di lavorare su un programma o un progetto con una comprensione minima di come gli altri componenti o programmi del progetto interagiscono tra loro. Quando un programma fallisce in un mare di più componenti e processi, quali elementi dell'infrastruttura sono necessari per garantire che il problema possa essere tracciato con precisione all'applicazione in violazione?
Più in particolare, quali elementi dell'infrastruttura dovrebbero essere necessari per questo grande progetto e che sono facoltativi ma molto utili. Un esempio del genere a cui posso pensare è una forma di infrastruttura di logging comune che consente a uno sviluppatore o tester di sfogliare facilmente un log che contiene numerosi componenti per i messaggi che potrebbero alludere al programma colpevole insieme a una "traccia" di ciò che è accaduto prima che si verificasse il problema. Sto pensando a qualcosa di simile allo strumento alogatto di Androidi.
Questi elementi infrastrutturali necessari dovrebbero essere indipendenti dalla lingua.
Mentre questi elementi dovrebbero essere compresi da tutti gli ingegneri del team in questione, quali elementi dovrebbero essere compresi con grande dettaglio dagli ingegneri del sistema tecnico e cosa dovrebbero essere i singoli ingegneri del software ad aggiungere ai loro strumenti per consentire tali infrastrutture prendere piede?
Non esitate a chiedere chiarimenti se qualcosa non ha senso, perché ho capito che questa domanda è molto ampia e ha bisogno di un po 'di raffinatezza. Raffinerò se necessario dalle risposte e dai commenti che ricevo.
Grazie per l'aiuto!
Aggiornamento:
Sto entrando in una squadra che ha forse il 5% del codice con Test unitari e sta appena iniziando a Instrument and Monitor. Ogni programmatore di software (dico programmatore e non ingegnere perché non tutti i componenti del team sono ingegneri) non capisce le basi del fail immediato e del controllo di sanità mentale. Gran parte della nostra linea di base del software è il codice legacy e sta per essere trasferito. Sfortunatamente non abbiamo il potere dell'uomo di refactoring di molti dei componenti più vecchi. Questo è ciò che mi ha portato a cercare di capire se ci sono strumenti infrastrutturali necessari che possono essere utilizzati per rilevare e trovare i bachi all'origine in modo molto più rapido. Mentre non mi aspetto uno strumento per magicamente, penso che potrebbero esserci strumenti o configurazioni che consentono di trovare più facilmente bug in un mare di componenti.