Lavoro sul lato software di un'azienda che fornisce hardware personalizzato con software in esecuzione su di esso. Spesso l'hardware non è progettato bene. In questi casi, spesso mi viene chiesto prima di risolvere il problema - ovviamente il sintomo è sempre "il tuo software si è bloccato" o qualcosa del genere.
Recentemente abbiamo avuto un altro di questi incidenti in cui l'alimentazione su una linea USB non è affidabile e causa il malfunzionamento di un dispositivo USB. Ciò causa un problema di usabilità in una delle nostre applicazioni. Il top management mi ha chiesto di gestirlo meglio - monitora continuamente il dispositivo USB, e se scompare, riavvia o prova a ripristinarlo. Non è garantito che nessuna di queste soluzioni risolva nulla.
In definitiva, la vera soluzione è correggere l'affidabilità del dispositivo dal lato hardware. Potrei migliorare le prestazioni, ma non al 100%, e ovviamente userò il mio già limitato tempo per ingannare il codice e aggiungere un altro thread di monitoraggio dei dispositivi.
Quindi, con tutto ciò che ho detto, come posso prendere una buona decisione su quando dire che questa deve essere una correzione hardware e solo una correzione hardware? Posso approcciare questo quantitativamente e proporre una sorta di test sì / no definitivo? Sono sicuro che non sia così facile.