平成9年度 春期 第二種 午後 問7

                        [更新日]1997.05.30
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃次の問7から問10までの4問については、この中から1問を選択し、答案用紙の┃ ┃選択欄の「選」をマークして解答してください。              ┃ ┃ なお、2問以上選択した場合には、はじめの1問について採点します。    ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 問7 次のCプログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 ソフトウェア開発のテスト工程におけるバグ収束状況を評価するための信頼度成長 曲線を印刷するプログラムである。信頼度成長曲線は,テスト項目の消化状況(累積 消化項目数)とバグの発生状況(累積摘出バグ数)との関係をグラフにしたものであ る。図1のように,累積消化項目数が増加するに従って,累積摘出バグ数が一定値に 収束してくれば,そのソフトウェアの品質が安定してきたと判断できる。
図1 信頼度成長曲線
(1)テスト担当者が日々記録しているテスト項目の消化項目数(その日に終了したテ ストの項目数)と摘出バグ数(終了したテスト項目において摘出したバグ数)の一 覧が,次のバグ記録表である。
表 バグ記録表
日付担当消化項目数摘出バグ数
l9960802 A 2 40
l9960803 B 1 20
l9960804 A 3 20
19960805 B 4 10
: :
l9960823 A 10 5
l9960823 C 5 0
l9960825 A 8 1
19960827 C 12 1
(2)バグ記録表は,図2のレコード様式でbugrec.txtというファイルに格納されて
    いる。

           8けた     1けた 1けた 1けた   2けた  1けた    2けた   1けた
      ┌───────┬─┬──┬─┬─────┬─┬─────┬──┐
      │     日付     │△│担当│△│消化項目数│△│摘出バグ数│ \n │
      └───────┴─┴──┴─┴─────┴─┴─────┴──┘
                    				   	 △:空白文字
			図2 バグ記録表のレコード様式

 1. 日付は,年月日を8けたの10進数字(YYYYMMDD)で表現しており,先頭の
   4けたYYYYが西暦年を,次の2けたMMが月を,最後の2けたDDが日を表し
   ている。
 2. 担当は,テスト担当者を1けたの英字にコード化したものである。
 3. 消化項目数及び摘出バグ数は,2けたの10進数字である。
 4. 各項目は,1個の空白文字で区切られており,レコードの終端は改行文字
  “\n”である。
 5. レコードはテスト担当者ごとに1日のテスト結果を記録したものであり,同一
   日付でテスト担当者が異なるレコードが2件以上存在することもある。
 6. レコードは日付の昇順に整列されている。
 7. ファイルbugrec.txtに記録されているテスト作業日の数は60以内である。

(3)このプログラムでは,ファイルbugrec.txtを入力し,1日当たりの消化項目数
    及び摘出バグ数を集計する。さらに,その日までの累積数を計算して,累積消化
    項目数と累積摘出バグ数の関係を求め,折れ線グラフ出力関数prtgraphを用いて
    信頼度成長曲線を印刷する。

(4)関数prtgraphの仕様は,次のとおりである。

〔機能〕第1引数で指定された個数の点(座標は第2引数の配列内に格納)を折れ
       線でつないで印刷する。
〔書式〕 typedef struct{int x; int y; }ZAHYO;
        void prtgraph(int dcnt,ZAHYO *tb1,char *title);
〔引数〕構造体ZAHYOのメンバx:印刷する点のX座標(このプログラムでは,
                              累積消化項目数に対応)
        構造体ZAHYOのメンバy:印刷する点のY座標(このプログラムでは,
                              累積摘出バグ数に対応)

	dcnt:  印刷する点の個数          
	tbl:   点の座標を格納した配列     
	tit1e: グラフの表題             

〔プログラム〕

#include <stdio.h>
#define   STBMAX 61 

typedef   struct { int x; int y; } ZAHYO;
void prtgraph( int ZAHYO*, char* ) ;

main ()
{
	ZAHYO s_tbl[STBMAX];
	FILE  *fp;
	long  yymmdd, t_yymmdd;
	int   t_bug, t_chk, i;
	[    a    ];
	char  tanto;

	fp = fopen("bugrec.txt" "r" );
	yymmdd = O;
	s_tbl[O].x = s_tbl[O].y = O;
	while( fscanf( fp "[     b    ] %c %2d %2d\n",
			&t_yymmdd, &tanto, &t_chk, &t_bug )
		!= EOF ){
	     if ( [    c    ] ){
		idx++;
		yynmdd = t_yymmdd;
		s_tbl[idx].x = s_tbl[idx].y = O;
  	     }
	     s_tbl[idx].x  [    d    ] t_chk;
	     s_tbl[idx].y  [    d    ] t_bug;
	}
	fclose( fp ) ;

	for ( i=0; i <idx; i++ ) {
		s_tbl[i+1].x += s_tbl[i].x;
		s_tbl[i+1].y += s_tbl[i].y;
	}
	prtgraph ( [    e    ],s_tbl, "信頼度成長曲線” );
}

設問 プログラム中の[       ]に入れる正しい答えを,解答群の中から選べ。

aに関する解答群                                     
 ア int idx        イ int idx=0       ウ int *idx   
 エ int idx=0      オ int idx=NULL
bに関する解答群                                     
 ア %4c%4c     イ %4d%4d     ウ %8c     エ %8ld     オ %8s
cに関する解答群                                     
 ア s_tbl[0].x!=t_chk     イ s_tbl[0].x==t_chk
 ウ s_tbl[0].y!=t_bug     エ s_tbl[0].y==t_bug
 オ yymmdd != t_yymmdd    カ yymmdd == t_yymmdd
dに関する解答群                                     
 ア |=	イ &=		ウ =
 エ −=	オ +=		
eに関する解答群                                     
 ア idx		イ idx-1	ウ idx-2
 エ idx+1	オ STBMAX


戻る  前頁:問3〜問6  次頁:問8