平成18年度 春期 ソフトウェア開発技術者試験 問21−40 解答編




このページは

ソフ開

(ソフトウェア開発技術者試験)

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

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



問21 ベクトルコンピュータの演算性能指標として使われるものはどれか。
Dhrystone
FLOPS
MIPS
SPECint
解答
解説 それぞれの性能評価手法を以下にまとめます。

Dhrystone:古くからある整数演算の性能指標
FLOPS:1秒間に計算できる浮動小数点数の数
MIPS:1秒間に何百万命令の実行ができるかを表したもの
SPECint:代表的な整数演算の性能指標

ベクトルコンピュータは科学技術計算などに用いられ浮動小数点(実数)で計算されることがほとんどです。よって、FLOPSが一番性能表の指標として適切といえます。

問22 フォンノイマンボトルネック(プログラムの命令を順番にプロセッサに取り込んで実行する方式のコンピュータの性能向上を妨げる要因)はどれか。
主記憶容量
内部装置(プロセッサと主記憶)と入出力装置との間のデータ転送能力
プロセッサと主記憶との間のデータ転送能力
プロセッサの性能
解答
解説 ボトルネックとは、全体のシステムの中で他の部分と比べて性能が低いため、全体として性能向上の妨げとなっている部分をいいます。容量は処理能力と関係がありません。残る3つの中で最も低速なのは、プロセッサと主記憶とのデータ転送になので、ボトルネックといえます。

問23 ほとんどのプログラムの大きさがページサイズの半分以下のシステムにおいて、ページサイズを半分にしたときに予想されるものはどれか。ここで、システムは主記憶が不足しがちで、多重度やスループットなどはシステム性能の限界で運用しているものとする。
ページインの回数が増大するので、システム性能が低下する。
ページ数が増加するので、領域管理などのオーバヘッドが減少する。
ページ内に余裕がなくなるので、ページ置換えの効率が低下する。
ページ内の無駄な空き領域が減少するので、主記憶不足が緩和される。
解答
解説 ページとは、仮想記憶方式において、固定長のデータサイズであり、これを単位にデータ(ページ)の入れ替えを行います。 たとえば、ページサイズを4Kバイトとしている場合は、1Kバイトでも、4Kバイトでも同じく1ページ(4Kバイト)使用します。このとき、ページサイズを2Kバイトに変更すると、1Kバイトのときは、1ページ(2Kバイト)で十分ですし、4Kバイトのときは2ページ(4Kバイト)使用します。このように、ページサイズを小さくすると、小さい単位でデータをやりとりすることができるので、主記憶上の無駄な領域を減らすことができます。一方で管理するページ数が多くなり、オーバヘッドが増加する要因となります。

問24 一つのジョブについての、ターンアラウンドタイム、CPU時間、入出力時間及び処理待ち時間の四つの時間の関係を表す式はどれか。ここで、ほかのオーバヘッド時間は考慮しないものとする。
処理待ち時間 = CPU時間 + ターンアラウンドタイム + 入出力時間
処理待ち時間 = CPU時間 − ターンアラウンドタイム + 入出力時間
処理待ち時間 = ターンアラウンドタイム − CPU時間 − 入出力時間
処理待ち時間 = 入出力時間 − CPU時間 − ターンアラウンドタイム
解答
解説 ターンアラウンドタイムとは、ジョブがシステムに投入されてからその結果が完全に得られるまでの経過時間のことであり、入出力の速度やオーバヘッド時間などに影響されるものです。ターンアラウンドタイム=CPU時間+処理待ち時間+入出力時間なので、処理待ち時間=ターンアラウンドタイム−CPU時間−入出力時間となります。

問25 CPUスケジューリングにおけるラウンドロビンスケジューリング方式に関する記述のうち、適切なものはどれか。
自動制御システムなど、リアルタイムシステムのスケジューリングに適している。
タイマ機能のないシステムにおいても、簡単に実現することができる。
タイムシェアリングシステムのスケジューリングに適している。
タスクに優先順位をつけることによって、容易に実現することができる。
解答
解説 代表的なスケジューリング方式を下にまとめます。

ラウンドロビン方式:短い時間(タイムクォンタム)を順次待っているタスクに割り当てる方式。タスクの切り替えに多少のオーバヘッドがかかりますが、すべてのタスクに順番にCPUの使用権がわたります。
到着順方式:リアルタイム性は失われますが、投入したタスクはいつかは処理してもらえます。
処理時間順方式:残りの処理時間が短いものに優先的にスケジューリングする方式
優先順位方式:単純に優先度の高いものを実行する方式で、待ち続けるタスクが発生(スタベーション)する可能性があります。待った時間に応じて優先順位を上げる(エイジング)を行うことでこれを回避しています。

問26 二つのタスクが共用する二つの資源を排他的に使用するとき、デッドロックが発生する可能性がある。このデッドロックの発生を防ぐ方法はどれか。
一方のタスクの優先度を高くする。
資源獲得の順序を両方のタスクで同じにする。
資源獲得の順序を両方のタスクで逆にする。
両方のタスクの優先度を同じにする。
解答
解説 デッドロックとは、下図のように、互いに資源をロックしたまま他の資源を要求することによって、互いに処理が進まなくなってしまう現象です。

デッドロックを表示できません

どちらかに優先度を高くしても、デッドロックを防ぐことはできません。(デッドロック後の回復に役立つことはあります)
デッドロックが起こらないようにするためには、同じ順番で資源を確保することです。どちらも、α→βのようにすれば、互いに待ちあうことはないのでデッドロックは生じません。

問27 メモリリークに関する記述として、適切なものはどれか。
アプリケーションの同時実行数を増やした場合に、主記憶容量が不足し、処理時間のほとんどがページングに費やされ、極端なスループットの低下を招くことである。
アプリケーションやOSのバグなどが原因で、動作中に確保した主記憶が解放されないことであり、これが発生すると主記憶中の利用できる部分が減少する。
実行時のプログラム領域の大きさに制限があるときに、必要になったモジュールを主記憶に取り込む手法である。
主記憶の内容と補助記憶の内容とを交換する処理のことである。
解答
解説 メモリリークとは、プログラマなどのミスにより、取得したメインメモリが開放されず、徐々に使用できるメモリ量が減っていく現象です。(ユーザサイドの対策としては、システムを再起動やツールを利用して、メモリを完全に開放することです。)

選択肢アは、スプーリングの説明です。
選択肢ウは、オーバーレイの説明です。
選択肢エは、スワッピングの説明です。

問28 ハッシュ法によるデータ編成法において、レコードのキー値が図のような分布に従って発生する場合、シノニムを最小とするハッシュアドレス(ハッシュした結果のアドレス値)の分布として、適切なものはどれか。

画像(問28)を表示できません
画像(問28ans)を表示できません
解答
解説 ハッシュ法とは、下図のようにキーとハッシュ関数から、ハッシュ表への格納場所を決めるものです。

ハッシュを表示できません

同じ値になってしまうと衝突が発生するので、できる限り発生する確率が同じになるべきです。

問29 クライアントサーバシステムの3層アーキテクチャを説明したものはどれか。
アプリケーションに必要なCGIとAPIをプレゼンテーション層とファンクション層に分離したアーキテクチャであり、データベースサーバを独立させている。
プレゼンテーション層、ファンクション層、データ層に分離したアーキテクチャであり、各層のOSは異なってもよい。
プレゼンテーション層とデータ層をミドルウェア層によって連係したアーキテクチャであり、各層をネットワークで接続されたコンピュータに分散する。
プレゼンテーション層とファンクション層を統合し、データ層を分離したアーキテクチャであり、データベースサーバを効率的に運用できる。
解答
解説 3層アーキテクチャはプレゼンテーション層、ファンクション層、データ層の3つで構成されます。以下にそれぞれの層の役割をまとめます。

プレゼンテーション層:ユーザとのインタフェースを担当する
ファンクション層:データの加工や処理を担当する。
データ層:データベースへのアクセスを担当する。

問30 ページング方式の仮想記憶において、あるプログラムを実行したとき、1回のページフォールトの平均処理時間は30ミリ秒であった。ページフォールト発生時の処理時間が次の条件であったとすると、ページアウトを伴わないページインだけの処理の割合は幾らか。

[ページフォールト発生時の処理時間]
(1) ページアウトを伴わない場合、ページインの処理で20ミリ秒かかる。
(2) ページアウトを伴う場合、置換えページの選択、ページアウト、ページインの処理で合計60ミリ秒かかる。
0.25
0.33
0.67
0.75
解答
解説 ページインだけの処理の割合をaとします。

20×a+60×(1−a)=30なので、これをaについてときます。
20a−60a=30−60
30=40a
a=3/4=0.75となります。

問31 自動支払機が1台ずつ設置してあった二つの支店を統合し、統合後の支店には自動支払機を1台設置する。統合後の自動支払機の平均待ち時間を求める式はどれか。ここで、待ち時間はM/M/1の待ち行列モデルに従い、平均待ち時間にはサービス時間を含まないものとする。

[条件]
(1) 平均サービス時間:Ts
(2) 統合前のシステムの利用率:両支店ともρ
(3) 統合後の利用者数は、統合前の支店の利用者数の合計値
画像(問31ans)を表示できません
解答
解説 まず、待ち行列(M/M/1)モデルのイメージ図を以下に示します。

MM1を表示できません

次に、主要な値をまとめます。

λ:平均到着率(単位時間にどれくらい人がくるか)
μ:平均サービス率(単位時間にどれくらいサービスを行えるか)
とすると
Ta=1/λ:平均到着間隔時間
Ts=1/μ:平均サービス時間
ρ=λ/μ:窓口利用率

このとき、行列に並んでいる人はρ/(1−ρ)となります。
まっている時間は、これにTsをかけて{ρ/(1−ρ)×Ts}となります。
最後に、平均応答時間は、待ち時間+自分がサービスを受ける時間なので、{ρ/(1−ρ)×Ts}+Tsとなります。

問題文から、利用者は2つの合計となるので、利用率はρから2ρに変化します。一方で自動支払機のサービス時間は変わらないのでTsはそのままです。
つまり、{ρ/(1−ρ)×Ts}にρ=2ρ,Ts=Tsを代入すると、選択肢エの式となります。

問32 ベクトル演算速度だけが現在利用しているコンピュータの6倍のコンピュータを導入する。処理の60%がベクトル演算で残りが非ベクトル演算とし、その他の条件は何も変わらないものとすると、処理速度は約何倍になるか。
1.5
2.0
3.0
4.0
解答
解説 全体の処理時間をaとすると、ベクトル演算部分が0.6a、非ベクトル演算部分が0.4aとなります。ベクトル部分を6倍の性能のものに変えるので、0.6a/6=0.1aと改善され、全体では0.1a+0.4a=0.5aになります。よって、処理時間が半分になるため、処理速度は2倍になるといえます。

問33 3個の構成要素のうち2個以上が正常ならば正しい結果が得られるようなシステムにおいて、個々の構成要素の信頼性が時間の経過とともに破線のグラフで示すために低下する場合、システム全体の信頼性の変化の傾向を表す実線のグラフとして適切なものはどれか。
画像(問33ans)を表示できません
解答
解説 3個のうち2個以上が正常であれば動作するということは、すべてが動いている場合+3×1個が壊れていて2個が動いている場合によって、計算できます。つまり、a3+3×a2(1−a)

次に、0.8と0.2を代入して稼働率を計算します。
0.8:0.83+3×0.82×(1−0.8)=0.512+3×0.64×0.2=0.512+0.384=0.896
0.2:0.23+3×0.22×(1−0.2)=0.008+3×0.04×0.8=0.008+0.096=0.104

0.8では、個々の稼働率を上回り、0.2では、個々の稼働率を下回るグラフは選択肢ウしかないので、これが正解となります。

問34 あるシステムでは、平均すると100時間に2回の故障が発生し、その都度復旧に2時間を要していた。機器を交換することによって、故障の発生が100時間で1回になり、復旧に要する時間も1時間に短縮した。機器を交換することによって、このシステムの稼働率は幾ら向上したか。
0.01
0.02
0.03
0.04
解答
解説 交換前は、100時間に合計4時間故障していたので、稼働率は0.96でしたが、交換後は、100時間に1時間に減少したため稼働率は0.99です。よって、0.03の稼働率の向上が見られたといえます。

問35 フェールソフトの説明として、適切なものはどれか。
システムの一部に障害が発生したとき、それ以外の部分の機能でシステムの運転を継続する。
システムの一部に障害が発生したとき、致命的影響を与えないよう、システムをあらかじめ定めた安全な状態に移行する。
信頼度の高い部品を使用したり、バグの少ないソフトウェアを開発したりして、信頼性の高いシステムを構築する。
特定の時点でデータベースのバックアップを取り、障害が発生した場合には、バックアップを取った時点の状態まで戻して運転を継続する。
解答
解説 重要なシステム設計法についてまとめておきます。

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

選択肢イは、フェールセーフの説明です。
選択肢ウは、フォールトアボイダンスの説明です。
選択肢エは、ロールバックの説明です。

問36 次のXML文章に関する説明のうち、適切なものはどれか。

画像(問36)を表示できません
整形式文章であり、妥当な文章である。
整形式文章であるが、妥当な文章ではない。
整形式文章ではないが、妥当な文章である。
整形式文章ではなく、妥当な文章でもない。
解答
解説 XMLとは、ユーザ自身が独自にタグを作ることができるマークアップ言語の一種で以下のような分類があります。

整形式のXML文書:文法に従ったXMLのことで、タグが対になっているなどを満たした文書のこと。
妥当なXML文書:整形式のXMLであり、DTD(Document Type Definition)にも適合したXML文書のこと。

今回は文法に沿ったXMLですが、DTD(文書定義)はないので、整形式文書であるといえます。

問37 Javaサーブレットの説明はどれか。
HTML文章に記述されたスクリプトを実行するWebコンポーネントである。
JavaでCGIを開発するための機能である。
一度ロードされるとサーバに常駐し、スレッドとして実行されるWebコンポーネントである。
分散オブジェクト技術を用いたソフトウェア部品を開発できるプラットフォームである。
解答
解説 Javaに関する重要な用語をいくつか下にまとめておきます。

JavaScript:web上で用いられるスクリプト言語(プログラム言語のJavaとは互換性がなく、基本的に別物)
Javaアプリケーション:単独で動作する一般的なJavaで書かれたプログラム
Javaアプレット:サーバからクライアントにダウンロードして動作するJavaのプログラム
Javaサーブレット:サーバ上で動作するものをJavaのプログラム
JavaBeans:アプリケーションを部品化し、再利用することで開発効率を向上させる規約

問38 最初にシステム全体の要求定義を行い、要求された機能を幾つかに分割して段階的にリリースするので、すべての機能がそろっていなくても、最初のリリースからシステムの動作を確認することができるプロセスモデルはどれか。
インクメンタルモデル
ウォータフォールモデル
エボリューショナルモデル
スパイラルモデル
解答
解説 選択肢の開発モデルを以下にまとめます。

インクリメンタルモデル:システムを幾つかのサブシステムに分割して、それぞれの開発を並行して進める。
ウォータフォールモデル:定義された要求を順序付けられた幾つかの開発部分に分割して、段階的に開発を行う。
エボリューショナルモデル:仕様要求が変更されるたびに、ウォータフォールを繰り返して完成品の精度を上げていく。
スパイラルモデル:要求定義から実装までを繰り返しながら開発を進める。

問39 CMMIを説明したものはどれか。
ソフトウェア開発組織及びプロジェクトのプロセスの成熟度を評価するためのモデルである。
ソフトウエア開発のプロセスモデルの一種である。
ソフトウェアを中心としたシステム開発及び取引のための共通フレームのことである。
プロジェクトの成熟度に応じてソフトウェア開発の手順を定義したモデルである。
解答
解説 CMMIは能力成熟度モデル統合と略され、組織がプロセスを適切に管理できるように、守るべき指針を体系化したもので、以下のような段階に分かれています。

LV1:初期段階:何もルールがない
LV2:管理段階:システム開発の計画・コスト見積りの経験則ができている。
LV3:定義段階:システム開発の経験が組織として共有され、標準プロセスが確立している。
LV4:管理段階:プロセスからの定量的なフィードバックによって、継続的に改善されている。
LV5:最適化段階:プロセスの測定基準が定められ、組織的に分析が進められている。

問40 図は、階層化されたDFDにおける、あるレベルのDFDの一部である。プロセス1を子プロセスに分割して詳細化したDFDのうち、適切なものはどれか。ここで、プロセス1の子プロセスは、プロセス1−1、1−2及び1−3と表す。

画像(問40)を表示できません
画像(問40ans)を表示できません
解答
解説 まず、DFD(Data Flow Diagram)とは、データの源泉・吸収・処理・蓄積などの関係を、以下のような図を用いて、データフロー、プロセス、ファイル、外部の4つの記号によって表現します。

画像(問DFD)を表示できません

今回は、DFDの細分化に関する問題です。
細分化ということは、プロセス1の部分をどれで置き換えることができるかということです。

プロセス1には入力が2つと出力が2つあるので、選択肢イと選択肢エのどちらかになります。
選択肢エのプロセス1−2には入力がないので、不適切となり、選択肢イが正解となります。

DFDには以下のようなルールがあります。
・プロセスには最低1つずつ、入力と出力のデータフローと結ばれている必要がある。
・プロセスは、データに何らかの変更を加え出力しなければならない。
・データストアには最低1つのデータフローと結ばれている必要がある。
・外部実体は、最低1つのデータフローと結ばれている必要がある。
・データフローは最低1つのプロセスと結ばれている必要がある。