この記事の内容
この記事は、社内の勉強会でIPA風の問題を作って、実際に解いてもらった話を記載してます。なぜIPA風の問題を作ったのかというと、基本情報技術者試験や応用情報技術者試験といった試験問題は解いていくだけで学ぶことができるので勉強会でつかえるなと思ったからです。
どのように進めたか
問題はモチベーションも考えて、調べればすぐわかるような簡単な部分も設けるようにしました。問題と想定回答を作成して、勉強会のメンバーに問題だけを展開して解いてもらいました。解いてもらった後に、それぞれの回答を公開して、どのような違いがあったのか見ていきます。そして、想定回答を公開して、間違っている部分に関しては、深堀して解説していきます。また、間違っていた部分で問題文に記載が足らなかった場所に関しては、次に使うために問題文をブラッシュアップしていくといった流れですすめました。
やってみた感想
反応は良かったです。これは解けるだろと思ったところで間違えていたところもあり、メンバーのスキル把握にもなりました。
実際の問題
実際に使用した問題を記載します。
プロジェクト概要
侵入検知システムに関する以下の記述を読んで、設問に答えよ。
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
さいごに
この記事で記載している問題はブログでも公開しています。
https://remix-yh.net/1806/
また、このほかにも勉強会で使用した問題をブログで公開していますので、興味のある方はご参考ください。
【エンジニア育成トレーニング】CSVのデータセットをHTMLに変換する
https://remix-yh.net/1792/
【エンジニア育成トレーニング】ネットワーク技術に関する問題
https://remix-yh.net/1874/