この記事の概要
この記事は、エンジニアのスキルアップをはかるため、プロジェクトでよく発生する問題を、問いの形式で学んでいく記事となっています。、自分で考え、問題を解き、それから回答例を見るようにすると効果的です。
プロジェクト概要
侵入検知システムに関する以下の記述を読んで、設問に答えよ。
A社はソフトウェア開発メーカで、様々な企業からソフトウェア開発を請け負っている。A社ではこの度、人の侵入を検知して、検知したことをブザーにて知らせるソフトウェアの開発を受注した。人検知カメラおよび、ブザーに関しては、発注元の会社より貸し出される。システム構成を以下に示す。
侵入検知ソフトウェア処理概要
侵入検知ソフトウェアでは、人検知カメラに対して検知情報を定期的(100msec)に収集し、人を検知したと判断した場合、ブザーに対して警報音を発生するための指示をする。また、侵入を検知した時刻などをファイルに保持し、履歴情報を表示することや検索する機能、ソート機能などを有する。
プロジェクトのフェーズ
プロジェクトのフェーズは「事前検証」、「基本設計」、「詳細設計」、「製造」、「単体テスト」、「結合テスト」、「システムテスト」を行う。最も人数の多い工程は製造工程で、製造工程時は以下の体制で行う。
ハードウェアの仕様について
人検知カメラについては、Web API経由で検知情報をJSON形式で取得可能なハードウェアとなっている。JSONには、検知した人のカメラ座標、幅、高さおよび人である可能性をスコア可した情報を有する。スコアに関しては、誤検知を減らすために閾値を実際に配置する現場ごとに調整する。調整は初期に1度設定すればよい。
ブザーはTCP/IPにて制御を行うハードウェアとなっている。
単体テストについて
侵入検知ソフトウェアでは、システムの内部構造は考慮せず、仕様を満たしているかどうかのみを検証する[ あ ]テストと、システム内部の構造を理解した上で、それらが意図した通りに動作しているかを確認する[ い ]テストを組み合わせた、[ う ]テストを行う。[ い ]テストでは、それぞれの命令文が少なくとも1回は実行されるようにテストケースを設計した[ え ]カバレッジで実施する。
設問
[プロジェクトの体制と期間]に関して(1)~(3)に答えよ。
(1) 事前検証フェーズで確認しておくこととして、何が適切か。2点答えよ。
(2) 製造工程で開発が止まってしまう、または開発効率が落ちる事象が発生する可能性がある。どのような問題が発生する可能性があるのか述べよ。また、問題を軽減する方法について、アーキテクチャの観点で対策を述べよ。
[ハードウェアの仕様について]に関して(1)~(2)に答えよ。
(1) 人検知カメラのスコア閾値調整のため、侵入検知ソフトウェアに必要な機能について、コンパイルを前提とするソフトウェアであることを観点とした実装方法を答えよ。
(2) ブザーとの通信にあたり、接続情報として必要な情報を2つ答えよ。
[単体テストについて]に関して(あ)~(え)に入る文言を答えよ。
回答例
(1) 事前検証フェーズで確認しておくこととして、何が適切か。2点答えよ。
・人検知カメラおよびブザーのハードウェアからデータ送受信ができること
・人検知カメラに対して検知情報を定期的(100msec)に収集できること
(2) 製造工程で開発が止まってしまう、または開発効率が落ちる事象が発生する可能性がある。どのような問題が発生する可能性があるのか述べよ。また、問題を軽減する方法について、アーキテクチャの観点で対策を述べよ。
問題:人検知カメラおよびブザーのハードウェアが開発者数分存在せず、デバッグ効率が落ちる問題
対策:ハードウェアとの通信部分をスタブに切り替えられる構成とする
[ハードウェアの仕様について]に関して(1)〜(2)に答えよ。
(1) 人検知カメラのスコア閾値調整のため、侵入検知ソフトウェアに必要な機能について、コンパイルを前提とするソフトウェアであることを観点とした実装方法を答えよ。
・スコア閾値を設定ファイルにて変更できるようにする
(2) ブザーとの通信にあたり、接続情報として必要な情報を2つ答えよ。
・IPアドレス
・ポート番号
[単体テストについて]に関して(あ)〜(え)に入る文言を答えよ。
(あ) ブラックボックステスト
(い) ホワイトボックステスト
(う) グレーボックステスト
(え) C0
コメント