平成16年度秋期 基本情報 問41−60 解答編





このページは

基本情報

(基本情報技術者試験)

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

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


問41 プログラムの制御構造に関する記述のうち、適切なものはどれか。
“後判定繰返し”は、繰返し処理の先頭で終了条件の判定を行う。
“双岐分岐”は、前の処理に戻るか、次の処理に進むかを選択する。
“多岐選択”は、二つ以上の処理を並列に行う。
“前判定繰返し”は、繰返し処理の本体を1回も実行しないことがある。
解答
解説 基本的な制御構文に関する問題です。
選択肢アは、do-whileに相当し、必ず一度は実行されるのが特徴で、終了は処理の後に行われます。
選択肢イは、if-elseに相当し、条件に合うときと合わないときで別の処理を行わせます。
選択肢ウは、switchに相当し、if-elseを組み合わせることでも実現できます。a=1,a=2・・・のようにある程度細かく処理の条件を分けることができます。
選択肢エは、whileに相当し、先頭で条件判定を行うため、1回目の条件に合わないときは、処理が1度も行われない場合もあります。

問42 再帰的プログラムの特徴として、最も適切なものはどれか。
一度実行した後、ロードし直さずに再び実行を繰り返しても、正しい結果が得られる。
実行中に自分自身を呼び出すことができる。
主記憶上のどこのアドレスに配置しても、実行することができる。
同時に複数のタスクが共有して実行しても、正しい結果が得られる。
解答
解説 プログラムの性質について以下にまとめます。

リエントラント(再入可能):同時、非同期的に呼び出されても互いに干渉せずに動作できる性質
リカーシブル(再帰):自分自身を呼び出すことができる性質
リユーザブル(再使用可能):終わったプログラムを再ロードすることなく、また、使うことができる性質
リロケータブル(再配置可能):メモリ上のどの番地に呼び出されても使用することができる性質

再帰の代表は階乗のプログラムで階乗を行うプログラムをkaijo(n)とすると、kaijo(n)=n×kaijo(n-1)ただし、n>1でそれ以外は1のように定義できます。

問43 言語プロセッサに関する記述のうち、適切なものはどれか。
アセンブラは、ある処理系用に書かれた原始プログラムを、ほかの処理系用の原始プログラムに変換する。
インタプリタは、ほかのコンピュータ用のプログラムを解読し、実行するマイクロプログラムである。
ジェネレータは、入力・処理・出力などの必要な条件をパラメタで指示することによって、処理目的に応じたプログラムを生成する。
トランスレータは、高水準言語で書かれたプログラムを、解釈しながら実行する。
解答
解説 プロセッサについてまとめます。

アセンブラ:低水準言語であるアセンブリ言語を機械語に翻訳するプロセッサ
インタプリタ:ソースコードを1行ずつ機械語に変換しながら実行するプロセッサ
コンパイラ:ソースコードを一括で機械語に変換(コンパイル)してから実行するプロセッサ
ジェネレータ:パラメタを入力すると、目的に応じたプログラムを出力するプロセッサ
トランスレータ:ソースプログラムを別の処理系のソースプログラムに変換するプロセッサ
クロスコンパイラ:ソースプログラムを別の処理系の機械語に翻訳するプロセッサ
エミュレータ:別のアーキテクチャのプログラムを実行するプロセッサ

問44 Javaなどのバイトコードプログラムをインタプリタで実行する方法と、コンパイルしてから実行する方法を、次の条件で比較するとき、およそ何行以上ののバイトコードであれば、コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。

[条件]
(1) 実行時間はプログラムの行数に比例する
(2) 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒かかり、コンパイルしてから実行すると0.003秒かかる。
(3) コンパイル時間は100行当たり0.1秒かかる。
(4) コンパイル方式の場合は、プログラムの行数に関係なくファイル入出力、コンパイラ起動などのために常に0.15秒のオーバヘッドがかかる。
(5) プログラムファイルのダウンロード時間など、そのほかの時間は無視して考える。
50
75
125
155
解答
解説 まず、コンパイラとインタプリタの違いをまとめます。

インタプリタ:ソースコードを1行ずつ機械語に変換しながら実行するプロセッサ
コンパイラ:ソースコードを一括で機械語に変換(コンパイル)してから実行するプロセッサ

αを実行行数とすると、100行単位の時間を100で割って1行あたりに変換して計算します。
C=コンパイラ方式の処理時間=実行時間+コンパイル時間+オーバヘッド=0.003/100×α+0.1/100×α+0.15
I=インタプリタ方式の処理時間=実行時間=0.2/100×α

C<Iにより、
両辺を100倍して計算すると
0.003α+0.1α+15<0.2αとなります。これを移行すると

(0.003+0.1−0.2)α<−15両辺を整理すると
α>15/0.097≒154.64≒155となり、155行以上であればコンパイラ方式の方が早いことになります。

問45 Web環境での動的処理を実現するプログラムであって、Webサーバだけで動作するものはどれか。
JavaScript
Javaアプレット
Javaサーブレット
VBScript
解答
解説 Javaに関する問題は多く出題されているので、きちんと押さえておきましょう
JavaScript:web上で用いられるスクリプト言語
Javaアプリケーション:単独で動作する一般的なJavaで書かれたプログラム
Javaアプレット:サーバからクライアントにダウンロードして動作するJavaのプログラム
javaサーブレット:サーバ上で動作するものをJavaのプログラム

なお、VBScriptはVisual BasicのスクリプトでWebブラウザ上で行われます。

問46 表計算ソフトにおいて、次のCSV形式のデータを入力し、セルD1、D2、D3に計算式を入れた場合、セルD3に表示される数値はどれか。ここで、CSV形式のデータを入力したとき、データは第1行の左端のセルから順に格納され、改行コード(CR)で次の行の左端のセルに移る。また、あるセルに数値を入れると、直ちにほかのセルの再計算が行われるものとする。

画像(問46)を表示できません
解答
解説 CSVは左上から行ごとに代入が行われます。実際に代入を行うと以下のようになります。

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

あとは、D列を計算すれば、6を導くことができます。

問47 プログラミングツールに関する記述のうち、適切なものはどれか。
デバッグ時にデータ構造の内容を確認するためのツールをインスペクタという。
プログラム単位の機能説明や定義を容易に探索するためのツールをトレーサという。
プログラム内又はプログラム間の実行経路を確認するためのツールをシュミレータという。
プログラムのソースコードを編集するために、文字の挿入、削除、置換えなどの機能をもつツールをブラウザという。
解答
解説 プログラミングのユーティリティツールについて以下にまとめます。

インスペクタ:データの構造内容を確認するためのもの
トレーサ:ブレイクポイントなどを利用して、特定の行になったらそこでプログラムを一時停止させたり、変数の値を見張ったりするもの
エディタ:プログラムを編集するもの。メモ帳も一種のエディタである。そのプログラムの構文に応じて色を変えたりする機能を持ったものもある。
なお、ブラウザはWebページを閲覧するためのアプリケーションで、プログラミングツールではありません。

代表的なものにGDB(GUI環境を備えたDDD)などがあります。

問48 オープンソースに関する記述として、適切なものはどれか。
一定の条件の下で、ソースコードの変更を許している。
使用分野とユーザを制限して再配布できる。
著作権は、放棄されている。
無償で配布されなければならない。
解答
解説 一般的にオープンソースはOpen Source Initiativeが定義した以下の10個の条件を満たしたものをさします。
1. 自由な再頒布ができること
2. ソースコードを入手できること
3. 派生物が存在でき、派生物に同じライセンスを適用できること
4. 差分情報の配布を認める場合には、同一性の保持を要求してもかまわない
5. 個人やグループを差別しないこと
6. 適用領域に基づいた差別をしないこと
7. 再配布において追加ライセンスを必要としないこと
8. 特定製品に依存しないこと
9. 同じ媒体で配布される他のソフトウェアを制限しないこと
10. 技術的な中立を保っていること

一方で、フリーソフトは、ソースコードの変更の不許可や再配布の禁止をしているのが一般的です。また、オープンソースは無償のものが多いですが、定義には無償の義務はありません。

問49 学校における教師、クラス、教室の三つのエンティティの関係を表すE−R図(a)、(b)について考える。この二つのE−R図の読み方のうち、適切なものはどれか。ここで、“1 1”は1対1の対応関係を表し、“1 *”は1対多の対応関係を表す。

画像(問49)を表示できません
(a)では、教師か教室を決めるとクラスが決まるが、(b)では、教師と教室を決めるとクラスが決まる。
(a)では、教師の担当できるクラスは一つだけあるが、(b)では、複数のクラスを担当することがある。
(a)では、一つのクラスには常に同じ教室が割り当てられるが、(b)では、一つのクラスに複数の教室が割り当てられることがある。
(a)では、一つのクラスは常に1人の教師が担当するが、(b)では、一つのクラスを複数をの教師で相当することがある。
解答
解説 2つの簡単な説明をすると
(a)は、一人の教師が一つのクラスに対応し、一つの教室が一つのクラスに対応するという意味で、イメージとすると担任制度のような感じです。
(b)は、一人の教師が複数のクラスに対応し、一つの教室が複数のクラスに対応するという意味で、イメージとすると教科担任と移動教室にような感じです。

選択肢アは:(b)では教師と教室が決まるとクラスが決まるというのが誤りです。
選択肢ウは:(b)では、一つの教室に複数のクラスが割り当てられるが正しい。
選択肢エは:(b)では、一人の教師が複数のクラスを担当することがあるが正しい。

このような図をE−R図といいます。

問50 システム開発において、UMLで用いられる図式はどれか。
DFD
E−R図
クラス図
流れ図
解答
解説 4つの図式を以下にまとめます。なお、UMLとは、統一モデリング言語と略され、オブジェクト指向のプログラム言語の仕様を記述するための言語です。

DFD:データフローダイアグラムの略で、データの流れに着目して、データフロー、プロセス、データストア(ファイル)、外部データに分けます。
E−R図:上記の問49のようなもので、エンティティ−リレーションシップをの略したもの。2つの実体間を1対多などの関係によって表す図式
クラス図:クラス間の静的な構造図を表すのに使われ、クラス名、変数、メソッドを記述します。
流れ図:フローチャートとも呼ばれ、プログラムの内容を記述したりするのに使われるものです

問51 モジュールの結合度が最も弱いモジュールはどれか。
単一のデータ項目を大域的データで受け渡すモジュール
単一のデータ項目を引数で引き渡すモジュール
データ構造を大域的データで受け渡すモジュール
データ構造を引数で受け渡すモジュール
解答
解説 モジュール評価の結合度を以下にまとめます。結合が弱い=独立性が高いということで、望ましい特性です。望ましい順にならべています。

データ結合:要素を引数で渡す(選択肢イ)
スタンプ結合:データ構造を引数として渡す。(選択肢エ)
制御結合:制御要素をパラメタとしてわたす。
外部結合:必要なデータを外部変数として共有する(選択肢ア)
共通結合:共通域のデータを参照して利用する(選択肢ウ)
内容結合:ほかのモジュールを直接参照する。


また、モジュールには、強度という概念もあり、強度が高い=独立性が高いということで望ましい特性です。望ましい順にならべています。

機能的強度:唯一の機能をもつ
情報的強度:同一のデータ構造を扱う複数の機能をもち、機能ごとに入り口をもつ
連絡的強度:関連のある複数の機能をもち、データの関連性がある。手順に従って実行する
手順的強度:関連のある複数の機能をもち、手順に従って実行する
時間的強度:関連のない複数の機能をもち、複数の機能を順次実行する
論理的強度:関連のない複数の機能をもち、引数で機能を指定する
暗号的強度:関連のない複数の機能をもち、特定の機能が定義されていない

問52 モジュールテストで使用されるドライバ又はスタブの機能に関する記述のうち、適切なものはどれか。
スタブは、テスト対象モジュールからの戻り値を表示・印刷する。
スタブは、テスト対象モジュールを呼び出すモジュールである。
ドライバは、テスト対象モジュールから呼び出されるモジュールである。
ドライバは、テスト対象モジュールに引数を渡して呼び出す。
解答
解説 テストと仮モジュールについてまとめます。

トップダウンテスト:上位のモジュールから順に開発していく、テストには仮の下位モジュール『スタブ』が利用される。
ボトムアップテスト:下位のモジュールから順に開発していく、テストには仮の上位モジュール『ドライバ』が利用される。

呼び出す上位のモジュールがドライバ、呼び出される下位のモジュールがスタブです。よって、選択肢ア、イ、エがドライバ。選択肢ウがスタブの説明です。

問53 モジュール単体テストに関する記述として、最も適切なものはどれか。
通常はコーディングを行ったプログラムではなく、専任のテスト要因がテストケースを作成し、実行する。
モジュール間インタフェースは、モジュール単体ではテストできないので、単体テストは対象外となる。
モジュール設計書は、正しいことが検証済みであるので、テスト結果に問題があるときは、テストケース又はモジュールに誤りがある。
モジュール設計書を見ながら、原則としてすべてのロジックパスを一度は通るようなテストケースによって、検証を行う。
解答
解説 単体テストは、プログラミング(コーディング)が終わった後に行う最初のテストで、単体テスト終了後に結合テスト、システムテストと規模が大きくなっていきます。

単体テストは、基本的にホワイトボックステストが利用され、テストはプログラマが責任を持って行います。また、インタフェースも仮モジュールなどを利用してチェックします。テスト結果に問題があるときは、モジュール設計書、実装したモジュール、行ったテストケースの3つのいずれかに問題があると思われます。

問54 次のアローダイアグラムで表される業務について各作業内容を見直したところ、作業Dだけが短縮可能であり、作業日数を6日間にできることが分かった。業務全体の所要日数は何日間短縮できるか。ここで、点線の矢印は疑似(ダミー)作業である。

画像(問54)を表示できません
解答
解説 クリティカルパスと日数はは短縮前では、1 → 2 → 3 → 4 → 5 → 6 → 7で31日。短縮後では1 → 2 → 3 → 6 → 7の28日。となります。短縮するとクリティカルパスが変更されることに注意しましょう。また、ダミーの作業とは作業日数0日間の実線と考えると分かりやすいです。

問55 あるアプリケーションプログラムの、ファンクションポイント法によるユーザファンクションタイプごとの個数及び重み付け係数は、表のとおりである。このアプリケーションプログラムのファンクションポイント数は幾らか。ここで、複雑さの修正係数は0.75とする。

画像(問55)を表示できません
18
24
30
32
解答
解説 ファンクションポイント(FP)法は、プログラムステップ数などではなく、プログラムの関数(ファンクション)の個数と開発難易度から、開発規模を見積もる手法です。

ここでは、単純に個数と修正係数を積和にすれば算出できます。

(1×4+2×5+1×10+0×7+0×4)0.75×=(4+10+10)0.75=24×0.75=18となります。

問56 ある開発プロジェクトの全体の開発工数の見積りは88人月である。作業を開始した1月から5月までは各月10名を投入したが、5月末時点で40人月分の作業しか完了していない。8月末までにこのプロジェクトを完了するためには、6月以降あと何名の追加要員が必要か。ここで、6月以降のすべての要因の作業効率は、5月までの要因と同じであるものとする。
10
16
20
解答
解説 まず、現在の作業効率ですが、5×10で50人月を投入したにもかかわらず、40人月分の作業しか進んでいないということで、4/5となります。次に、残りの日数は88人月−40人月で48人月となります。これに、現在の作業効率で割った実質人月数を算出すると、48人月/(4/5)=60人月必要になります。プロジェクトは、6、7、8の3ヶ月残っているので、60/3で1月に20人が必要となります。問題では追加要員を聞かれているので、全部の人数=今の人数+追加要員により、20−10=10人が追加で必要です。

問57 データベースの障害に備えて作成するバックアップファイルの管理として、適切なものはどれか。
定期的にデータベース全体のバックアップファイルを新しい媒体に作成し、毎日、変更のあったデータだけの差分バックアップファイルを別の媒体に作成している。
データベースには重要なデータが格納されているので、そのバックアップファイルが悪用されないように、媒体にはラベルを付けないで保管している。
バックアップファイルの作成は、データベースを更新した人に、その都度行ってもらっている。
バックアップファイルを作成するときは、直前のバックアップファイルを格納した媒体に上書きするようにしている。
解答
解説 一般的なバックアップは選択肢アのように、定期的にフルバックアップを行い、毎日差分バックアップを取るのが一般的です。バックアップの内容の保護はラベルを貼らないという対策よりも、物理的に鍵をかけるなどの対策をするべきです。また、データベースを更新した人にその都度やってもらうのは負荷が多くなる上に、多人数が同時に行った場合エラーの元になりかねません。バックアップは、ある程度の期間はどれでも利用できるように別のものとして保存する必要があります。

問58 運用中のデータベースに対し、定期的に再編成処理を行う目的はどれか。
一度登録したキーのレコードは、削除してしまうと再登録できず、不便である。キーの整理を行って、一度削除したキーを再利用できるようにするために行う。
データベース内のレコードを更新するたびに新しいレコードが作られ、データベース容量が増大し、処理速度が低下する。複数になった更新レコードを一つにまとめて、処理速度を回復させるために行う。
データベースに対し、追加、更新、削除を繰り返すと、再利用されない領域が発生し、データベース容量の増大と処理速度の低下を招く。不連続な空き領域を整理して、性能劣化を回避するために行う。
データベースの利用を進めていく過程で、データ項目の追加などデータベースの定義の一部を変更しなければならない事態が発生する。データベースの定義を変更し、データベースを再利用できるようにするために行う。
解答
解説 再編成は、デフラグメンテーションに相当し、データベースの追加・削除が繰り返されると空き領域が発生するので、これを連続した領域に戻す作業をいいます。

問59 システムの一斉移行方式の特徴に関する記述として、適切なものはどれか。
運用方法はシステム稼働後に段階的に周知されるので、利用者の混乱が避けられる。
システム規模が小さい場合に行われ、移行に失敗した場合の影響範囲を限定することができる。
新旧システムを並行して運用することによる作業の二重負担を避けることができ、経済的結果が大きい。
新システムの処理結果と従来システムの処理結果を比較しながら運用することができ、問題がなければ比較作業を一斉にやめて新システムに移行できる。
解答
解説 システムの変更は主に、一斉移行方式と段階移行方式があります。一斉移行は一度に旧システムから新システムに切り替えます。経済的な負担が少ない分、リスクが高いといえます。逆に段階移行方式は、新・旧のシステムが一時的に両方動作しているので、利用者の混乱も少なく、障害などが発生した場合の負担も小さくできます。しかし、システムを両方動かすため経済的な負担は大きくなります。

問60 クライアント管理ツールに備わっている機能のうち、業務に無関係なソフトウェアがインストールされていないことを確認するのに最も有効なものはどれか。
インベントリ収集
遠隔操作
ソフトウェア配信
ライフサイクル管理
解答
解説 インベントリとはLAN上のクライアントがもっているソフトウェア等の情報のことで、これを集めることで、不要なソフトウェアを検出することができます。遠隔操作は、ネットワークを介して遠くのシステムを動かすことをいいます。ソフトウェア配信は、複数のクライアントにソフトウェアやバッチを配信すること、ライフサイクル管理は、ハードウェアやソフトウェアの導入から廃棄までの流れのことです。