対策案を下記に示します。
簡単な開始手順書を作成しましょう。例えば、「作業開始前にpingコマンドで相手側に接続できる」「相手方と自分のIPアドレスは何番にする」などです。
サーバとクライアントを結合して確認する前に、自分の環境でサーバとクライアントの接続確認を行いましょう。これは、簡易的なプログラムで構いません。これによって、自分の担当分の動作を確認できます。
タイムアウトがうまく動作するかは、やってみないと分からないため、対策が難しいと思います。よって、テスト工程でタイムアウトになるテストを実施し、正しく動作できるか確認しておきましょう。
筆者の経験上、エンディアンを仕様書で書いていないケースが多いように思います。データの逆転現象に悩まされないためにも、仕様書にキチンと書いておきましょう。
豪華なデータを相手にする場合は、以下を設計段階で考察しましょう。
上記は、大量のデータ送信をする場合にあらかじめ検討しておきましょう。
手紙を書く際に、郵便番号や住所を記載するように、コンピュータ同士のやりとりにも決まったやり方があります。その中でも、今回は通信系プログラムのバグを紹介しました。単一機器で動作するプログラムと違い、複数機器の難しさを理解いただければ幸いです。
通信関連のプログラムは複数の機器を経由するため、さまざまな知識が必要です。今回示したバグ以外の事象が数多く発生すると思いますので、ベテランエンジニアの皆さんは、本コラム以外の経験を次世代の若者に伝えていただければと思います。
本シリーズ「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の新刊「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から発売されました。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しました。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。
前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。
両書とも興味のある方は、Amazon.comや書店でチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.