これがすでにカバーされている場合、または本当にwikiに属していると思われる場合はお詫び申し上げます.
私は、バイオサイエンス業界向けのマイクロアレイ印刷機を製造する会社のソフトウェア開発者です。私は主に、C++ での GUI 開発を介してさまざまなハードウェア (空気圧、油圧、ステッピング モーター、センサーなど) とのインターフェイスに関与し、サンプルを吸引してマイクロ アレイ スライドに印刷します。
会社に入社したとき、ハードウェア関連の問題が発生すると、セットアップ全体がフリーズすることに気付きました。ハードウェア/ソフトウェア/誤用など、具体的な問題が何であるかについて誰も賢明ではありませんでした.それ以来、私は改善しました.ソフトウェアのタイムアウトと例外処理を導入することで、PLC コマンドが正常に完了しなかった、不適切な FPGA 応答コマンド、その他のさまざまなデッドロック タイプの状態など、発生したハードウェア関連の問題をより適切に特定して対処できるようにすることで、状況をある程度改善します。さらに、ソフトウェアはログを記録するようになりました。特定の問題の要約を表示し、ユーザーに通知してスレッドを正常に終了します。このソフトウェアは組み込まれておらず、シリアル ポートを使用してインターフェイスするだけです。
達成されたことにもかかわらず、非ソフトウェア関係者は、これらの場合、彼らが私に報告している「ソフトウェア」の問題が実際にはソフトウェアの問題ではなく、むしろソフトウェアが問題を報告しているが原因ではないことをまだ十分に理解していません。それ。誤解しないでほしいのですが、大量のレンガのようにソフトウェアのバグを突き止めて、何らかの方法で堅牢性を向上させる方法を検討することほど楽しいことはありません。私はこれらのことについてほとんど第六感を持っているので、システムを十分に知っています.
これは何度説明しても、本当に通じません。彼らは依然として、基本的にハードウェアの問題 (最終的には修正される) をソフトウェアの問題として報告しています。
同様の指差しの経験に耐えた他の人から、そして彼らがそれらに対処するためにどのような方法を使用したかを聞きたい.
更新 ここには、同じ賛美歌のシートからほとんど歌っているいくつかの素晴らしい応答があります。より説明的になります。ハードウェアに障害が発生したときにコマンドを識別してきれいに爆破することが最初の段階だったと思いますが、それでも十分ではありませんでした。次の段階では、素人にとってかなり無意味な PLC コマンドを、より示唆に富むものにマッピングします。「PLC コマンド M71 タイムアウト」が「シリンジ システムの初期化に失敗しました。十分な真空に達していることを確認してください」など...