検索
連載

ソフトウェア技術者のためのバグ百科事典(19)複雑怪奇な通信系プログラムのバグ山浦恒央の“くみこみ”な話(140)(4/4 ページ)

ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第19回は、複雑怪奇になりがちな通信系プログラムのバグを紹介します。

Share
Tweet
LINE
Hatena
前のページへ |       
※本記事はアフィリエイトプログラムによる収益を得ています

7.バグへの対策

 対策案を下記に示します。

7.1 接続確認はその日の最初に実施する

 簡単な開始手順書を作成しましょう。例えば、「作業開始前にpingコマンドで相手側に接続できる」「相手方と自分のIPアドレスは何番にする」などです。

7.2 送受信用の自分の環境で実施しておく

 サーバとクライアントを結合して確認する前に、自分の環境でサーバとクライアントの接続確認を行いましょう。これは、簡易的なプログラムで構いません。これによって、自分の担当分の動作を確認できます。

7.3 タイムアウトはテストで検出する

 タイムアウトがうまく動作するかは、やってみないと分からないため、対策が難しいと思います。よって、テスト工程でタイムアウトになるテストを実施し、正しく動作できるか確認しておきましょう。

7.4 エンディアンは仕様書に記述しておくこと

 筆者の経験上、エンディアンを仕様書で書いていないケースが多いように思います。データの逆転現象に悩まされないためにも、仕様書にキチンと書いておきましょう。

7.5 豪華なデータを工夫する

 豪華なデータを相手にする場合は、以下を設計段階で考察しましょう。

  • バイトをビットに分解するなどして小さくする
  • データが複数回受信することを踏まえたプログラムに変更する。例えば、「期待する受信バイト数まで受信を繰り返す」「ヘッダを付けて識別する」などを考える

 上記は、大量のデータ送信をする場合にあらかじめ検討しておきましょう。

8.終わりに

 手紙を書く際に、郵便番号や住所を記載するように、コンピュータ同士のやりとりにも決まったやり方があります。その中でも、今回は通信系プログラムのバグを紹介しました。単一機器で動作するプログラムと違い、複数機器の難しさを理解いただければ幸いです。

 通信関連のプログラムは複数の機器を経由するため、さまざまな知識が必要です。今回示したバグ以外の事象が数多く発生すると思いますので、ベテランエンジニアの皆さんは、本コラム以外の経験を次世代の若者に伝えていただければと思います。

山浦先生の新刊「ソフトウェア技術者のためのバグ検出テキスト」が発売!

 本シリーズ「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の新刊「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から発売されました。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しました。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。

 前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。

 両書とも興味のある方は、Amazon.comや書店でチェックしてください!

【 筆者紹介 】
山浦 恒央(やまうら つねお)

東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る