平成24年度 春期 応用情報技術者試験 問41−60 解答編




このページは

応用情報

(応用情報技術者試験)

解答と解説のページです。

問題だけで勉強したい方は目次へ戻ってください




問41 サイト運営者に不特定の利用者が電子メールで機密データを送信するに当たって、機密性を確保できる仕組みのうち、適切なものはどれか。
サイト運営者はサイト内のSSLで保護されたWebページに共通鍵を公開し、利用者は電子メールで送信するデータをその共通鍵で暗号化する。
サイト運営者はサイト内のSSLで保護されたWebページにサイト運営者の公開鍵を公開し、利用者は電子メールで送信するデータをその公開鍵で暗号化する。
サイト運営者はサイト内のSSLで保護されたWebページに利用者の公開鍵を公開し、利用者は電子メールで送信するデータをその公開鍵に対応する秘密鍵で暗号化する。
サイト運営者はサイト内の認証局で利用者の公開鍵を公開し、利用者は電子メールで送信するデータをその公開鍵に対応する秘密鍵で暗号化する。
解答
解説 まず、機密性とは許可された人間にしかアクセスできないような性質で、暗号・認証技術により高めることができます。次に、暗号技術はいかのように、暗号鍵と復号鍵を利用します。この暗号鍵と復号鍵が同じものを利用する形式を共通鍵暗号方式、異なるものを利用する形式を公開鍵暗号方式といいます。

暗号を表示できません

共通鍵暗号方式は、暗号強度が弱く、鍵の管理が大変ですが、処理が高速という特徴があります。代表的なものにDES、AES(Rijndael)があります。
公開鍵暗号方式は、暗号強度が強く、鍵の管理が容易ですが、処理に時間がかかるという特徴があります。代表的なものに、RSA、ElGamal暗号があります。

不特定多数が1人と通信を行う場合には、共通鍵暗号方式よりも公開鍵暗号方式を利用します。

問42 JIS Q 27001では、情報セキュリティは三つの特性を維持するものとして特徴付けられている。それらのうちの二つは機密性と完全性である。残りの一つはどれか。
安全性
可用性
効率性
保守性
解答
解説 情報セキュリティの3要素に、機密性、完全性、可用性、その頭文字をとってCIAと呼ばれます。3つは以下のような特性です。

機密性(Confidentiality):正しいユーザしかアクセスができない性質
完全性(Integrity):データが間違っていたり、破壊されておらず正確である性質
可用性(Availability):ユーザがいつでも利用できる性質

問43 Webアプリケーションにおける脅威とそのセキュリティ対策の適切な組合せはどれか。
OSコマンドインジェクションを防ぐために、Webアプリケーションが発行するセッションIDを推測困難なものにする。
SQLインジェクションを防ぐために、Webアプリケーション内でデータベースへの問合せを作成する際にバインド機構を利用する。
クロスサイトスクリプティングを防ぐために、外部から渡す入力データをWebサーバ内のファイル名として直接指定しない。
セッションハイジャックを防ぐために、Webアプリケーションからシェルを起動できないようにする。
解答
解説 それぞれの攻撃法を以下にまとめます。

OSコマンドインジェクション:コマンド実行環境を悪用し、外部からの文字列をコマンド実行させる攻撃です。シェルの起動禁止などが対処策です。
SQLインジェクション:DBへSQLを利用する場合に、不正なSQL文として解釈させ、情報を盗んだり壊したりする攻撃です。バインド(SQL文に変数として外部文字列を入れる)の利用などが対処策です。
クロスサイトスクリプティング:入力処理などの不備を利用し、悪意のあるスクリプトを実行させる攻撃です。エスケープ処理などのサニタイジングを行うことが対処策です。
セッションハイジャック:認証が終了しているセッションを利用して、Cookie情報などを盗む攻撃です。セッションのIDを複雑なものにすることが対処策です。

問44 ステガノグラフィを説明したものはどれか。
データをコピーできないようにする技術のことをいう。
データを第三者に盗み見られても解読できないようにするために、決まった規則に従ってデータを変換することをいう。
文書の正当性を保証するために付けられる符号化された署名情報のことをいう。
メッセージを画像データや音声データなどに埋め込み、メッセージの存在を隠す技術のことをいう。
解答
解説 それぞれの用語を以下にまとめます。

選択肢ア:コピープロテクト
選択肢イ:暗号化
選択肢ウ:ディジタル署名
選択肢エ:ステガノグラフィ

ステガノグラフィは、電子透かしなどに代表される技術で、情報そのものの存在を隠す点が暗号化などと異なっています。

問45 オブジェクト指向における抽象クラスで、できないことはどれか。
インスタンスを生成すること
サブクラスをもつこと
スーパクラスをもつこと
属性をもつこと
解答
解説 まず、オブジェクト指向の概念について下にまとめます。

クラス:データとメソッドを1つにまとめたもの
メソッド:オブジェクトがもっている手続のこと
メッセージ:オブジェクト間でやり取りされる情報のこと
カプセル化:データにメソッドを通じてのみアクセスできること。このため、内容を知らなくてもブラックボックス的に利用できます。
インスタンス:型であるクラスに実際の値を入れて、具現化すること
集約化:複数のオブジェクトを構成して、ひとつのオブジェクトにすること。(例:タイヤ、ハンドル、ドア・・・などから車を定義する)
抽象化(汎化):共通の性質をまとめて定義したもの、一般的にスーパークラスとして定義される。
継承:スーパークラスを取り込み、再利用すること。(例:人間クラスを継承して学生クラスを作る)
多相性(多態性):同じメッセージに対して別の振る舞いをすること(例『鳴く』というメッセージに対して、『ワンワン・ニャーニャー』など別の振る舞いをする)
オーバーライド:スーパークラスで定義されたメソッドをサブクラスで再定義すること

抽象クラスとは、オーバーライドされることを前提としたメソッド(抽象メソッド)をもつクラスのことです。抽象クラスは継承されることを前提としている(具体的なプログラムがない)ので、自身ではこのメソッドを実行する実体となるインスタンスを生成することができません。

問46 安全性や信頼性について、次の方針でプログラム設計を行う場合、その方針を表すべき用語はどれか。

 “不特定多数の人が使用するプログラムには、自分だけが使用するプログラムに比べて、より多くの機能を組み込む。プログラムが処理できるデータの前提条件を文書に書いておくだけでなく、その前提を満たしていないデータが実際に入力されたときは、エラーメッセージを表示して再入力を促すようにプログラムを作る。”
フールプルーフ
フェールセーフ
フェールソフト
フォールトトレラント
解答
解説 重要な高信頼システム設計法についてまとめておきます。

フォールトトレラント:障害時に全体が停止するということなく、動作し続けるようなシステムを設計すること。
フォールトアボイダンス:システムの構成要素の信頼性を高め, 元から故障が極力発生しないように設計すること。
フォールトマスキング:障害が発生したときに、その部分を他の機器から隠蔽したり、自律回復するように設計すること。
フェールセーフ:障害が発生した場合、常に安全側に制御・停止すること。
フェールソフト:障害が発生した場合、故障した個所を切り離すなどして、稼動を続けること。
フェールオーバ:障害が発生した場合、ユーザに切り替えを意識させないように、別のシステムに引き継がせること。
フェールバック:障害回復後、元のシステムが障害時に処理を引き継いでいたシステムから処理を引き継ぐこと。
フールプルーフ:ユーザが誤った操作をした場合、危険に晒されることがないように、事前に安全策を行うこと。

今回は、ユーザのミスを指摘するようなプログラムとするので、フールプルーフの機能を追加しているといえます。

問47 作業成果物の作成者以外の参加者がモデレータとして主導すること、及び公式な記録、分析を行うことが特徴のレビュー技法はどれか。
インスペクション
ウォークスルー
パスアラウンド
ペアプログラミング
解答
解説 出来上がった成果物を客観的に多人数で評価することをデザインレビューといいます。これには、実際にプログラムを動かして確かめる動的テストと、プログラムを動かすことなく、ソースコードのチェックなどを行う静的テストがあります。デザインレビューの代表的な例を説明します。

インスペクション:プログラムを第三者が検証し、本人が気づかない誤りや問題点を検出すること。
ウォークスルー:開発に携わった者が集まり、誤りや問題点を発見する。
ラウンドロビン:責任者を順番に勤めながらレビューを行う。これにより、積極性が増し見落としを減す。
パスアラウンド:成果物をメールで配布し、意見をフィードバックしてもらう手法です。

なお、ペアプログラミングとは2人1組でソースを書く人とナビゲートする人に別れ(適度に入れ替える)、常に2人でコードレビューができ、ミスが少なくなるというものです。

問48 プログラムに“事実”と“規則”を記述し、プログラム言語の処理系がもつ導出原理によって結論を得るプログラムパラダイムであって、エキスパートシステムの開発に適しているものはどれか。
オブジェクト指向プログラミング
関数型プログラミング
手続型プログラミング
論理型プログラミング
解答
解説 それぞれの言語の種類を以下にまとめます。

オブジェクト指向プログラミング:クラス、メソッドといった概念を用いて、データをオブジェクトとして扱う。代表的な言語:Java 関数型プログラミング:関数の組合せで、プログラムを記述していく。代表的な言語:LISP 手続型プログラミング:制御構文を用いて、アルゴリズムを記述していく。代表的な言語:C言語 論理型プログラミング:推論規則を用いて、与えられた命題を評価する。代表的な言語:Prolog

問49 マッシュアップを利用してWebコンテンツを表示している例として、最も適切なものはどれか。
検索キーワードの候補を、サーバから取得した過去の検索履歴を使って表示する。
地図上のカーソル移動に伴い、ページを切り替えずにスクロール表示する。
電車経路の検索結果上に、各路線会社のWebページへのリンクを表示する。
店舗案内のページ上に、他のサイトが提供する地図情報を表示する。
解答
解説 マッシュアップとは、混ぜ合わせるという意味で、既存の技術を組み合わせて新しい技術を作り出すことをいいます。Web2.0の浸透とともに盛んになってきました。Amazon、Google、YouTube、ニコニコ動画などがサービスを無料で利用できるAPIを提供しているので、それと自分のコンテンツを複合して利用することがマッシュアップに相当するといえます。

問50 リバースエンジニアリングの説明はどれか。
既存のプログラムからそのプログラムの仕様を導き出すこと
既存のプログラムから導き出された仕様を変更してプログラムを開発すること
クラスライブラリ内の既存のクラスを利用してプログラムを開発すること
部品として開発されたプログラムを組み合わせてプログラムを開発すること
解答
解説 現在動いているプログラムから、その設計書などを作成する手法をリバースエンジニアリングといいます。市場の製品をリバースエンジニアリングをすることは、一般的には禁止されていることが多いです。リバースエンジニアリングの後、その設計書を元に製品を作成することをフォワードエンジニアリングといいます。


問51 図に示すとおりに作業を実施する予定であったが、作業Aで1日の遅れが生じた。各作業の費用増加率を表の値とするとき、当初の予定日数で終了するためにかかる増加費用を最も少なくするには、どの作業を短縮すべきか。ここで、費用増加率とは、作業を1日短縮するのに要する増加費用のことである。

画像(問51)を表示できません
解答
解説 まずは、クリティカルパスを求めます。クリティカルパスはA→B→E→Gになり、この中で1日を短縮すればよいことになります。クリティカルパス上の最も費用勾配の少ないものはEの2.5なので、選択肢エが正解となります。

問52 システム開発プロジェクトにおいて、EVMを活用したパフォーマンス管理をしている。開発途中のある時点でEV−PVの値が負であるとき、どのような状況を示しているか。
スケジュール効率が、計画より良い。
プロジェクトの完了が、計画より遅れている。
プロジェクトの進捗が、計画より遅れている。
プロジェクトの進捗が、計画より進んでいる。
解答
解説 EVM(Earned Value Management)は、以下のようなコストを用いて、プロジェクト全体のスケジュールの遅れやコスト超過を可視化する進捗管理手法です。

プランド・バリュー(PV):当該期間末までに完了しているものとして計画された作業の予算
アーンド・バリュー(EV):当該期間末までに進捗した作業を、その作業の計画価値に対する比から評価した価値
実コスト(AC):当該期間末までに実際に投入した総コスト
完成時総予算 (BAC):プロジェクトの完了時点におけるPV

これらをもとに以下のような指標が計算できます。

コスト差異 (CV):EV−AC
スケジュール差異 (SV):EV−PV
コスト効率指数 (CPI):EV/AC
スケジュール効率指数(SPI):EV/PV
完成時総コスト見積り (EAC):AC+(BAC−EV)/CPI
残作業のコスト見積り (ETC):(BAC−EV)/CPI=EAC−AC

EV−PVが負ということは、EV<PVなので、計画のほうが実績よりも大きいので、進捗が遅れているといえます。

問53 システム開発の見積方法の一つであるファンクションポイント法の説明として、適切なものはどれか。
開発規模が分かっていることを前提として、工数と工期を見積もる方法である。ビジネス分野に限らず、全分野に適用可能である。
過去に経験した類似のシステムについてのデータを基にして、システムの相違点を調べ、同じ部分については過去のデータを使い、異なった部分は経験から規模と工数を見積もる方法である。
システムの機能を入出力データ数やファイル数などによって定量的に測定し、複雑さとアプリケーションの特性による調整を行って、システム規模を見積もる方法である。
単位作業量の基準値を決めておき、作業項目を単位作業項目まで分解し、その積算で全体の作業量を見積もる方法である。
解答
解説 ファンクションポイントはその名(ファンクション=関数、ポイント=点数)のとおり、ファイルの入出力数や関数の複雑さなどから重み付けと計算を行い、プログラム規模を見積もる手法です。具体的には、入出力数やインターフェースの数で計算します。つまり、プログラムの行数(≒ステップ数)などでは計算しません。

問54 システムの要求分析時に行うインタビュー実施上の留意点のうち、適切なものはどれか。
インタビュー対象者の回答が、事実であるか推測であるかを区別すべきである。
インタビューの対象者は、その業務を直接行っている担当者に限るべきである。
質問内容を記入した用紙を事前に渡すことは、避けるべきである。
質問は、“はい”か“いいえ”で答えられるものに限るべきである。
解答
解説 それぞれの選択肢を順にみていきます。

選択肢ア:回答は意見、事実、推測、可能性などの区分を適切に分けます。
選択肢イ:場合によっては、直接の作業者以外の関係者に行う場合もあります。
選択肢ウ:事前に資料を配布することで効率的になる場合もあります。
選択肢エ:質問内容によっては、意見を記述してもらうほうよい場合もあります。

問55 ITサービスマネジメントのイベント管理における、フィルタリングのレベルの設定方針のうち、適切なものはどれか。
既知のエラーに関するイベントだけを、検出するようにレベルを設定する。
ささいなイベントも漏らさず、全てを検知できるようにレベルを設定する。
事前に設計され、合意された設定レベルを変更せずに固定する。
有効性評価プロセスでの評価結果に基づき、設定レベルを継続的に見直す。
解答
解説 ITサービスマネジメントにおけるイベントとは影響度の小さい異常をいいます。(影響度の大きい異常はインシデントといいます。)イベントをすべて検知することは現実的ではなく、重要度や影響度を用いて、必要なレベルに設定されるべきです。また、既知のイベントだけでなく、未知のイベントに対しても可能であれば検出できるようにします。最後にイベントレベルは常に動的に見直し、設定を行います。

問56 レプリケーションが有効な対策となるものはどれか。
悪意によるデータの改ざんを防ぐ。
コンピュータウイルスによるデータの破壊を防ぐ。
災害時にシステムが長時間停止するのを防ぐ。
操作ミスによるデータの削除を防ぐ。
解答
解説 レプリケーションとは、主にデータベースやNAS等で利用される分散技術のことです。データの複製(レプリカ)を作成し、オリジナルのデータに変更が発生すると、レプリカに反映します。これにより、障害が発生した場合の復旧を迅速に行うことができます。

問57 新システムの開発を計画している。提案された4案の中で、TCOが最小のものはどれか。ここで、システムは開発後、3年間使用されるものとする。

画像(問57)を表示できません
A案
B案
C案
D案
解答
解説 TCO(Total Cost of Ownership)とは導入から保守・運用・初期メンテナンスまでを含めた導入時のトータルコストのことを指します。よって、表中の費用はすべてTCOに含まれます。これを踏まえて、A〜Dまでの案の合計を計算していきます。1年あたりの費用は3年間分計算します。

A案:30+30+5+20×3+6×3+6×3=30+30+5+60+18+18=161
B案:30+50+5+20×3+5×3+4×3=30+50+5+60+15+12=172
C案:40+30+5+15×3+5×3+6×3=40+30+5+45+15+18=153
D案:40+40+5+15×3+5×3+3×3=40+40+5+45+15+9=157

よって、TCOが最小になるのはC案であるといえます。

問58 “システム管理基準”において、システムテストの監査におけるチェックポイントのうち、適切なものはどれか。
テスト計画は事前に利用者側の責任だけで承認されていること
テストは独立性を考慮して、利用者側の担当だけで行われていること
テストは本番環境で実施されていること
例外ケースや異常ケースを想定したテストが行われていること
解答
解説 システム管理基準とは、「組織体が主体的に経営戦略に沿って効果的な情報システム戦略を立案し、その戦略に基づき情報システムの企画・開発・運用・保守というライフサイクルの中で、効果的な情報システム投資のための、またリスクを低減するためのコントロールを適切に整備・運用するための実践規範」とされています。
このなかで、システムテスト・ユーザ受け入れテストには以下のようなことが記述されています。

(1)システムテスト計画は、開発及びテストの責任者が承認すること。
(2)ユーザ受入れテスト計画は、ユーザ及び開発の責任者が承認すること。
(3)システムテストに当たっては、システム要求事項を網羅してテストケースを設定して行うこと。
(4)テストデータの作成及びシステムテストは、テスト計画に基づいて行うこと。
(5)システムテストは、本番環境と隔離された環境で行うこと。
(6)システムテストは、開発当事者以外の者が参画すること。
(7) システムテストは、適切なテスト手法及び標準を使用すること。
(8)ユーザ受入れテストは、本番同様の環境を設定すること。
(9)ユーザ受入れテストは、ユーザマニュアルに従い、本番運用を想定したテストケースを設定して実施すること。
(10)ユーザ受入れテストは、ユーザ及び運用の担当者もテストに参画して確認すること。
(11)システムテスト及びユーザ受入れテストの結果は、ユーザ、開発、運用及び保守の責任者が承認すること。
(12)システムテスト及びユーザ受入れテストの経過及び結果を記録及び保管すること。
(13)パッケージソフトウェアを調達する場合、開発元が品質テストを実施したことを確認すること。

問59 監査において発見した問題に対するシステム監査人の責任として、適切なものはどれか。
発見した問題を監査依頼者に報告する。
発見した問題をシステムの利用部門に通報する。
発見した問題を被監査部門に是正するよう命じる。
発見した問題を自ら是正する。
解答
解説 監査人(監査部門)は監査報告書の内容には責任を負いますが、改善自体は被監査部門が責任を負います。(改善指導を行うことはあります。)監査人は監査の結果を依頼者に報告し、依頼者が必要に応じて被監査部門に指示を出すというのが一般的です。

問60 情報システムに識別コード及びパスワードによるアクセスコントロール機能を組み込むことによって、コントロール可能なリスクはどれか。
通信上のデータの盗聴
データの入力エラー
ハードウェアの物理的な破壊
ファイル、データ内容の改ざん
解答
解説 情報システムにパスワードや認証機能を付加することで、情報の機密性を向上させデータの改ざんや不正なユーザからのアクセスを防止することができます。そのほかの攻撃には以下のような対策が有用です。

通信上のデータの盗聴:データの暗号化
データの入力エラー:チェックディジットの付加
ハードウェアの物理的な破壊:物理的に別のHDDへのバックアップ