応用情報技術者過去問題 平成30年秋期 午後問8

問8 情報システム開発

継続的インテグレーションに関する次の記述を読んで,設問1〜4に答えよ。

 C社は,会員間で物品の売買ができるサービス(以下,フリマサービスという)を提供する会社である。出品したい商品の写真をスマートフォンやタブレットで撮影して簡単に出品できることが人気を呼び,C社のフリマサービスには,約1,000万人の会員が登録している。
 C社には,サービス部と開発部がある。サービス部では,フリマサービスに関する会員からの問合せ・クレーム・改善要望の対応を行っている。開発部は,フリマサービスを利用するためのスマートフォン用アプリケーション(以下,Xという),タブレット用アプリケーション(以下,Yという),及びサーバ側アプリケーション(以下,ZAという)について,開発から運用までを担当している。
 競合のW社が新機能を次々にリリースして会員数を増加させていることを受け,C社でも新機能を早くリリースすることを目的に,開発プロセスの改善を行うことになった。開発プロセスの改善は,開発部のD君が担当することになった。

〔課題のヒアリング〕
 D君は,開発部とサービス部に現状の開発プロセスの課題をヒアリングした。
開発部:
リリースするたびに,追加・変更した機能とは直接関係しない既存機能で障害が発生しており,会員からクレームが多数出ている。機能追加・機能変更に伴い,設計工程では既存機能に対する影響調査を,テスト工程ではテストの強化を行っている。しかし,①既存機能に対する影響調査とテストを網羅的に行うことは,限られた工数では難しい。
サービス部:
会員からのクレームや改善要望は日々記録しているが,現在の開発サイクルでは改善要望の対応に最大6か月掛かる。改善要望をまとめて大規模に機能追加する開発方法から,短いサイクルで段階的に機能追加する開発方法に変更してほしい。

〔継続的インテグレーションの導入〕
 D君は,既存機能に対するテストを含めたテストの効率向上及び段階的な機能追加を実現するために,フリマサービスの開発プロジェクトに継続的インテグレーション(以下,CIという)を導入することにした。CIとは,開発者がソースコードの変更を頻繁にリポジトリに登録(以下,チェックインという)して,ビルドとテストを定期的に実行する手法であり,aに採用されている。CIの主な目的はbc及びリリースまでの時間の短縮である。
 D君は,開発用サーバにリポジトリとCIツールをインストールし,図1に記載のワークフローとアクティビティを設定した。D君が設定したワークフローでは,リポジトリからソースコードを取得し,コーディング規約への準拠チェックとステップ数のカウントの後に,各アプリケーションのビルドと追加・変更箇所に対する単体テストを行い,テストサーバへ配備して,全アプリケーションを対象とするリグレッションテストを実行する。
 またD君は,このワークフローを2時間ごとに実行するように設定し,各アクティビティの実行結果は正常・異常にかかわらずX,Y,Zの担当チームメンバ全員に電子メール(以下,メールという)で送信するように設定した。
 なお,ワークフロー内のアクティビティは,前のアクティビティが全て正常終了した場合だけ,次のアクティビティが実行できるようにした。
pm08_1.gif/image-size:540×170
〔テストプログラムの作成〕
 D君は,単体テストで利用するテストプログラムを作成した。テスト対象のプログラムとテストプログラムの例を図2に示す。テスト対象のプログラムである checkTime は,時と分を示す三つの整数値を引数 hour と mm で受け取り,hour が0以上24未満の値かつ mm が0以上60未満の値であったら true を返し,それ以外の値であったら false を返すプログラムである。一方,テストプログラムである test_checkTime は,境界値テストの考え方に基づき,6種類の境界値に対してそれぞれ checkTime を呼び出し,全ての呼出しで仕様どおりの値を返したら true を,それ以外なら false を返すプログラムである。
 また,D君はこれまで手作業で行っていたリグレッションテストについてもCIツールで自動実行できるように,テストプログラムを作成した。
 なお,新機能のリリース後には,新機能の単体テストで用いたテストプログラムは,リグレッションテストのテストプログラムとして再利用することにした。
pm08_2.gif/image-size:488×209
〔CIの試行〕
 次にD君は,フリマサービスのアプリケーションの全てのソースコードをリポジトリに移行し,CIの試行を開始した。試行開始から1か月後,D君の設定したCIツールは問題なく動作していたが,開発部のメンバから次の3点を指摘された。
指摘1:
一つの要求を実現するために必要なソースコードの変更は多岐にわたるので,チェックインは1週間に1回程度行っている。ワークフローは2時間ごとに動作するように設定されているが,1週間に1度で十分である。
指摘2:
Yの単体テストでエラーが検出されていたが,CIツールから送信されるメールが非常に多く,Yを担当するチームはエラーに気付かず,1日放置されていた。②開発者がエラーに気付くように,CIツールから送信されるメールを限定してほしい。
指摘3:
Xのビルドでエラーが検出され,単体テストまでワークフローが流れないことが多い。このため,Zを担当するチームでは,開発者の開発PC上でCIツールと同じテストケースを実行しており,③CIの導入効果が出ていない
 D君は,この3点の指摘について必要な対策を実施するとともに,要件定義から設計までのプロセスの見直しも行い,フリマサービスの開発プロジェクトにCIを適用した。その結果,段階的な機能追加を実現させ,新機能のリリースサイクルを短縮した。

設問1

本文中のacに入れる適切な字句を解答群の中から選び,記号で答えよ。
a,b,c に関する解答群
  • ウォータフォールモデル
  • エクストリームプログラミング
  • 設計の曖昧性の排除
  • ソフトウェア品質の向上
  • バグの早期発見
  • プロトタイピングモデル
  • 網羅的なテストケースの作成
  • 要件定義と設計の期間短縮

-解答入力欄-

  • a:
  • b:
  • c:

-解答例・解答の要点-

  • a:
  • b:
  • c:

-解説-

この設問の解説はまだありません。

設問2

本文中の下線①について,(1),(2)に答えよ。
  • 既存機能に対するテストを行うために必要なCIツールのアクティビティを,図1中の字句を用いて答えよ。
  • 既存機能に対するテストについて,設定したテストケース数の妥当性を評価するために考慮すべき値を解答群の中から選び,記号で答えよ。
解答群
  • 各アプリケーションのステップ数
  • 設計書の変更ページ数
  • 対応する改善要望数
  • 追加機能のステップ数

-解答入力欄-

-解答例・解答の要点-

    • リグレッションテスト

-解説-

この設問の解説はまだありません。

設問3

図2中のdに入れる適切な字句を答えよ。

-解答入力欄-

  • d:

-解答例・解答の要点-

  • d:false

-解説-

この設問の解説はまだありません。

設問4

〔CIの試行〕について,(1)〜(3)に答えよ。
  • 本文中の指摘1について,指摘者に対するアドバイスとして,誤っているものを解答群の中から選び,記号で答えよ。
  • 本文中の下線②について,CIツールから送信されるメールを限定する方法を,正常時のメールの送信を停止する以外に35字以内で述べよ。
  • 本文中の下線③について,CIツールのワークフローをどのように修正するとよいか。40字以内で述べよ。
解答群
  • 改善要望に対応したソースコードから随時チェックインする。
  • 一つの要求を細かな要求に細分化して開発する。
  • プログラムを小さな機能単位に分割して開発する。
  • 変更中のソースコードでもよいので随時チェックインする。

-解答入力欄-



-解答例・解答の要点-

    • 各アプリケーションの担当チームだけにメールするようにする (28文字)
    • 各アプリケーションのビルド終了後,待ち合わせせず単体テストに移る (32文字)

-解説-

この設問の解説はまだありません。
問8成績
【30年秋期 午後問題】
 問1 問2 問3 問4 問5 問6 問7 問8 問9 問10 問11
© 2010-2019 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop