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





このページは

基本情報

(基本情報技術者試験)

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

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


問41 モジュールA〜E、共通ルーチンF,Gで構成されるプログラムを図のようなオーバレイ構造にしたとき、参照が許されるのはどれか。図は、たとえばモジュールDの実行時には、主記憶にA,B,Dがロードされることを表している。また、“X→Y”はモジュールXからY内の領域をアクセスすることを表す。

画像(問41)を表示できません
B→C
C→D
F→A
G→F
解答
解説 まず、図の見方について少し説明をします。

縦軸が主記憶の領域の番地を現しています。つまり、横軸に同じものがある場合は、どちらかしかロードできないということが分かります。

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

上記の例のように、BとCは同じ場所にロードされるので、どちらかしか存在がみとめられません。参照は片方からもう片方へ見るので、両方とも主記憶上にロードされている必要があります。よって、同一横軸には存在しない、FとAのような関係でしか参照ができません。

問42 複数のプロセスから同時に呼び出されたときに、互いに干渉することなく並行して処理することができるプログラムの性質を表すものはどれか。
リエントラント
リカーシブ
リユーザブル
リロケータブル
解答
解説 プログラムの性質について以下にまとめます。

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

問43 データ構造の一つである木構造に関する記述として、適切なものはどれか。
階層の上位から下位に節点をたどることによって、データを取り出すことができる構造である。
格納した順序でデータを取り出すことができる構造である。
格納した順序とは逆の順序でデータを取り出すことができる構造である。
データ部と一つのポインタで構成されるセルをたどることによって、データを取り出すことができる構造である。
解答
解説 データ構造における木構造とは、閉路をもたないグラフという風に定義されます。一般的にはディレクトリ構造などを表すのにもちいられるデータ構造です。

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

また、上記のように木には用語が幾つかあるので合わせて覚えておくとよいでしょう。
ノード(節点):それぞれの点のこと
エッジ(辺):それぞれのノードを結合している線のこと
ルート(根):頂点にあるノードのこと(必ず1つ)
リーフ(葉):末端にあるノードのこと
親:特定のノードと直接結合している上のノードのこと(必ず1つ)
子:特定のノードと直接結合している下のノードのこと
祖先:特定のノードの親を含めた上にあるノードのこと
子孫:特定のノードの子を含めた下にあるノードのこと
兄弟:特定のノードと同じ親を持つ子のノードのこと
部分木:特定のノードを根見た時の木のこと

木を利用すると、ヒープソートや2分検索などをすることができます。

なお、選択肢イはキュー、選択肢ウはスタック、選択肢エはリストのデータ構造です。

問44 次の文はある二つの言語処理系について記述したものである。Bと比べたAの利点を記述しているものはどれか。

A:高水準言語で作成されたプログラムを、中間言語、アセンブラ言語又は機械語で記述されたプログラムに翻訳する。
B:原始プログラム中の命令文を一文ずつ解釈し、実行する。
処理の最適化が図れる。
対話的な実行環境が構築できる。
デバッグ機能を組み込みやすい。
プログラム作成とテストを並行してできる。
解答
解説 Aはコンパイラ言語、Bはインタプリタ言語について記述しています。

コンパイラ言語は、一度に全部の原始プログラムをコンパイル(翻訳)するので、行にまたがった構文などを最適化することができます。また、1度コンパイルするのには時間がかかりますが、実行する場合にはインタプリタ言語よりも、翻訳する作業がなくなるので、高速であるという特性もあります。

問45 プログラムを構成するモジュールの結合を、プログラムの実行時に行う方式はどれか。
インタプリタ
オーバレイ
静的リンキング
動的リンキング
解答
解説 選択肢の用語を以下にまとめます。

インタプリタ:ソースコードを1行ずつ機械語に変換しながら実行するソフトウェア
オーバレイ:プログラムが大きくメインメモリ上に入らない場合に、機能(モジュール)ごとに交換しながらメインメモリに入れていく手法
静的リンキング:実行ファイルと必要なモジュールやライブラリをコンパイル時に結合すること
動的リンキング:実行ファイルと必要なモジュールやライブラリをプログラムの実行中に必要になったタイミングで結合すること

問46 プログラム言語Javaに関する記述として、適切なものはどれか。
インターネットや分散システム環境で利用されている、オブジェクト指向のプログラム言語である。
テキスト(文字)で記述が可能な、自然言語に近いプログラム言語である。
テキストやファイルの処理に適しており、連想配列とパッケージを結び付けることが可能なプログラム言語である。
ハイパテキストを記述する言語であり、アンカーというタグを用いて別の文章とリンクが可能なプログラム言語である。
解答
解説 Javaは、代表的なオブジェクト指向言語です。選択肢イは、C言語に代表される高級言語の説明です。選択肢ウは、PerlやPHPなどの言語の説明です。選択肢エは、HTMLなどのマークアップ言語の説明です。

問47 XML文章を構成する最小単位である要素の定義方法に関する記述のうち、適切なものはどれか。
開始タグと終了タグが対になって構成され、どちらのタグも省略できない。
データを開始タグと終了タグで囲んで構成するが、データがないこともある。
一つのXML文書には、階層構造を表すために複数のルート要素を定義できる。
要素の種別を表すために注釈情報を付加して、これを要素名として識別する。
解答
解説 データがない場合には、<hr/>のように略記することも認められています。XMLはディレクトリ構造(木構造)により、ルートは1つです。注釈は、タグとしては識別されません。

問48 オブジェクト指向によるシステム開発で利用され、分析から設計、実装、テストまでを統一した表記法はどれか。
EAI
EJB
ERP
UML
解答
解説 4つの用語を以下にまとめます。

EAI(Enterprise Application Integration):複数のプロセスやデータを統合して効率を向上させることです。
EJB(Enterprise JavaBeans):Javaのプログラムを部品化したものを組み合わせて、プログラムを効率よく作成することです。
ERP(Enterprise Resource Planning):企業を横断的に資源の統括をして、効率性を高めるというものです。
UML(Unified Modeling Language):オブジェクト指向におけるプログラム設計図の表記法です。

問49 大規模なアプリケーションを開発するとき、独立性の高い部分ごとに、設計、プログラミング、テストの開発工程を反復しながら完成度を高めていく開発手法はどれか。
E−Rモデル
ウォータフォールモデル
スパイラルモデル
プロトタイプモデル
解答
解説 ウォータフォールモデルは、滝が上から下へ落ちるように、原則的に工程のさかのぼりを許さずに行う開発モデルです。スパイラルモデルは、各工程を繰り返しながら完成度を高めていく手法です。プロトタイプモデルは、試作品(プロトタイプ)を作成し、改良を繰り返すことで完成度を高める手法です。E−Rモデルは、関係モデルの一種でプログラムの開発モデルではありません。

問50 次の図で用いられている表記法はどれか。

画像(問50)を表示できません
DFD
状態遷移図
流れ図
ペトリネット
解答
解説 このような図をDFD(Data Flow Diagram)といい、データの流れに着目して、データフロー、プロセス、データストア(ファイル)、外部データに分けます。状態遷移図は、現在の状態と入力によって、次の状態に推移するなどを表すことのできる図です。流れ図は、フローチャートとも呼ばれ、プログラムの内容を記述したりするのに使われるものです。ペトリネットは、離散分散システムを数学的に表現する手法です。

問51 業務システムのコード設計に関する記述のうち、最も適切なものはどれか。
コードの実際の付番は、コードの処理方法に詳しいシステム設計担当者が行うべきである。
コードの属性とけた数は、コンピュータの内部処理効率に重点を置いて設計すべきである。
コードの入力ミスが業務に重大な影響を及ぼすと判断されるときは、検査文字(チェックディジットなど)を採用すべきである。
コードの保守方法(追加、廃止、変更など)については、運用テストの段階で決めるべきである。
解答
解説 コード設計は、処理や対象に番号をつけることで、処理やソートをしやすくするものです。また、チェックデッジットなどを付加するのも検討されます。コードは、処理効率よりも、ユーザへの分かりやすいさなどを優先することが多いです。

問52 テスト手法の一つであるホワイトボックステストの説明として、適切なものはどれか。
下位のモジュールから上位のモジュールへと、順次結合してテストする。
上位のモジュールから下位のモジュールへと、順次結合してテストする。
モジュールの内部構造に注目して、テストする。
モジュールの内部構造を考慮することなく、仕様書どおりに機能するかどうかをテストする。
解答
解説 内部構造に着目して行うテストをホワイトボックステスト、入出力の機能に着目して行うテストをブラックボックステストがあります。ホワイトボックステストは、どれだけソースをカバーしたかの網羅率などが重要視され、ブラックボックステストは、同値分割などのクラスごとの代表値でテストされます。選択肢アはボトムアップテスト、選択肢イはトップダウンテスト、選択肢エはブラックボックステストの説明です。

問53 バグ管理図において、図のようにすべての線が横ばいになっている状況が発生した。この状況から想定できることとして、適切なものはどれか。

画像(問53)を表示できません
解決困難なバグに直面して、その後のテストが進捗していない。
バグが多く摘出され、テスト項目の消化実績が上がらなくなった。
バグの摘出が止まっており、テストは収束している。
バグの摘出数とテスト項目の消化数が一致し、未解決バグ数が滞っている。
解答
解説 すべての線が横ばい(=変化なし)ということは、テスト自体が変化していないことを意味しており、つまりテストが進んでいないことを表しています。選択肢イのように、バグが多発したのであれば、バグ検出数がもっと上がっていくはずです。選択肢ウのように、テストが収束しているのであれば、、未消化テスト項目数と未解決バグ数が0に近づくはずです。選択肢エのようにテストが終了したのであれば、未消化テスト項目数が0になるはずです。

問54 図は、あるプロジェクトの作業工程(A〜I)とその作業に数を表している。このプロジェクトが終了するまでに必要な最短の日数は幾らか。

画像(問54)を表示できません
27
28
29
31
解答
解説 もっとも時間のかかる作業(=クリティカルパス)はA → B → G → D → Iとなり、31日かかります。

問55 システム開発における工数の見積もりに関する記述のうち、適切なものはどれか。
COCOMOの使用には、自社における生産性のデータ収集が不可欠である。
開発要員の技量が異なるので、過去に開発したプログラムの規模は見積もりの参考になるが、工数は参考にならない。
工数の見積もりは、作業の進捗管理に有効であるが、ソフトウェアの品質管理には関係しない。
ファンクションポイント法による見積もりでは、プログラムステップ数を把握する必要がある。
解答
解説 COCOMO(constructive cost model)は、予想コード数や能力係数などを用いて、開発に必要な工数や要員を算出するものです。システム開発には過去の開発のフィードバックデータが重要であり、今回と完全に無関係ということは、あまりありません。工数の見積には作業の進捗情報はもちろん、ソフトウェアの品質にも影響します。ファンクションポイント法(FP法)は、プログラムステップ数ではなく、ファンクション(関数)を作成する難易度と個数などで算出します。

問56 ウォータフォール型のソフトウェア開発において、運用テストで発見された誤りの修復に要するコストに関する記述として、最も適切なものはどれか。
外部設計及び内部設計の誤りは、プログラムだけでなく、マニュアルなどにも影響を与えるので、コーディングの誤りに比べて修復コストは高い。
コーディングの誤りは、修復のための作業範囲がその後の全工程に及ぶので、要求定義の誤りに比べて修復コストは高い。
テストケースの誤りは、テストケースの修正とテストのやり直しだけでは済まないことが多いので、外部設計及び、内部設計の誤りに比べて修復コストは高い。
要求定義の誤りは、設計レビューによってほとんど除去できるので、もし発見されても、コーディングの誤りに比べて修復コストは低い。
解答
解説 ウォータフォールモデルは、上流から下流に向かって基本的に一方通行で行う開発モデルです。よって、見直しが上流であるほど影響が大きいといえます。

プログラムの開発工程は、要求定義 → 外部設計 → 内部設計 → プログラム設計 → コーディング(プログラミング) → テストと進んでいくので、

修復コストは要求定義誤り > 外部設計及び内部設計の誤り > コーディングの誤り > テストケースの誤りとなります。

問57 データのバックアップ方法に関する記述のうち、最も適切なものはどれか。
業務処理がバックアップ処理と重なると正常にバックアップされない可能性があるので、両方の処理が重ならないようにスケジュールを立てた方がよい。
バックアップ作業時間を短くするためには、同一記憶媒体内に別のファイル名にしたバックアップデータを置いた方がよい。
バックアップデータからの復旧時間を短くするためには、差分バックアップを採用した方がよい。
バックアップ用媒体は、ランダムアクセスが可能な媒体にした方がよい。
解答
解説 バックアップは、定期的に(1週間に1度など)フルバックアップをとり、毎日差分バックアップをとるのが一般的で、保管は、災害などで、稼働中のものと一緒に被害を受けないように、遠隔地に保存しておくのが利用的です。バックアップ媒体は容量とアクセス速度、そしてコストを考慮して行われますが、大量のデータの場合は、磁気テープのようなランダムアクセスができないものでもかまわないです。

問58 与えられたデータから、一定の規則に従って数値を算出する。この数字を基に検査文字を含め、データの最終桁に付加することによって、入力データの検査を行う方法がある。次の法則を用いた場合に、4けたの数値データ“2131”に付加する検査文字として、正しいものはどれか。

[規則]
(1) 与えられたデータの各けたに、先頭から係数4,3,2,1を割り当てる。
(2) 各けたの数値と割り当てた係数との積の和を求める。
(3) (2)で求めた値を11で割って余りを求める。
(4) (3)で求めた余りの数字を検査文字とする。余りが10のときは、Xを検査文字とする。
解答
解説 チェックデッジットの問題です。丁寧に計算していけば解けると思います。

2×4+1×3+3×2+1×1 = 8+3+6+1=18
18%11=7となります。

問59 パソコンの主記憶の効率的な使用に関する記述として、適切なものはどれか。
各週アプリケーションの処理中に異常終了が何回か発生した場合は、デフラグメンテーションを実行する
主記憶領域の使用率を下げるために、デスクトップ上の使用頻度の少ないアイコンを削除したり、不要なウィンドウを閉じたりする。
主記憶領域を確保するために、アーカイブ機能で書庫を整理する。
データの記録と消去を頻繁に行った結果、処理速度が遅くなった場合は、スキャンディスクを実行する。
解答
解説 デフラグメンテーションとは、HDDにデータを書き込んだり消去したりすることを繰り返すことで、断片化(フラグメンテーション)が発生するため、それを解消することをさします。スキャンディスクは、ディスクの不良セクタなどを調べ、正常な状態に直す作業をいいます。アーカイブ機能とは、複数のファイルをまとめることで、領域の確保ではありません。主記憶のために、プロセス(動いているプログラム)を終了したり、関係するものを消すことで主記憶の使用領域を開放し、使用率を低下させる(=別のプログラムを動かせる)ことができます。

問60 コンピュータシステムの運用時におけるデータのイングリティを保証するための対策として、適切なものはどれか。
データのイングリティ保証を強化するための対策は、セキュリティ対策とは区別して、システムの運用段階において検討するのがよい。
データのイングリティを保証するためには、プログラムによる機械的なチェックだけでなく、必要に応じて人手によるチェックも重要となる。
データのチェックはプログラムで機械的に実行されるので、システムの運用マニュアルに従ってチェックする必要はない。
ネットワークを使ってデータを受け渡す場合は、データのイングリティを保証するために、データを暗号化する必要がある。
解答
解説 イングリティ(保全性)とは、RASISのIに相当し、不当に改ざんされたりせずに完全な状態である性質を指します。イングリティはセキュリティと密接な関係があります。また、イングリティの確保は、比較的早い設計段階やそれ以前に検討するべきといえます。チェックデッジットなどは機械的にチェックできますが、機械的にチェックできない項目も多々あるので、人的なチェックも重要な項目であるといえます。データの暗号化は、イングリティではなく、RASISのSであるセキュリティに関するものであるといえます。