平成29年春期試験午後問題 問8
問8 情報システム開発
⇱問題PDF
アジャイル型開発に関する次の記述を読んで,設問1~4に答えよ。
アジャイル型開発に関する次の記述を読んで,設問1~4に答えよ。
広告
U社は,コンビニエンスストアを全国展開する企業である。自社ブランド商品のファンを作るために,オリジナルのゲームなどが楽しめる専用のSNS(以下,本システムという)を開発することになった。
本システムでは,利用者を引き付け続けるために,コンテンツを頻繁にリリースしていく必要がある。そのため,ソフトウェア開発モデルとしてアジャイル型開発を採用する。
〔採用するプラクティスの検討〕
アジャイル型開発で用いられるチーム運営や開発プロセス,プログラミングなどの実践手法をプラクティスと呼ぶ。本システム開発における,システム要件や開発体制の特徴は次のとおりである。これに基づいて,採用するプラクティスを検討する。
〔開発環境の検討〕
本システムは,不特定多数の一般消費者に対して速いレスポンスを提供するために,コンパイル型言語を用いてWebシステムとして開発する。
想定される開発環境の構成要素を表1に示す。 表1のレビューを社内の有識者から受けたところ,開発用DBサーバは,ライセンス及び②構成管理上のメリットを考慮して,各開発用PC内ではなく,共用の開発用DBサーバを用意し,その中にスキーマを一つ作成して共有した方がよい,との指摘を受けた。また,ベテラン社員から③開発者が一つのスキーマを共有してテストを行う際に生じる問題を避けるためのルールを決めておくとよい,とのアドバイスを受け,開発方針の中に盛り込むことにした。
〔CIサーバの実装〕
高い品質と迅速なリリースの両立のために,自動化された回帰テスト及び継続的デリバリを実現する処理をCIサーバ上に実装する。その処理手順を次に示す。
イテレーションを複数サイクル行い,幾つかの機能がリリースされて順調に次のイテレーションを進めていたある日,CIサーバからテストの失敗が報告された。失敗の原因を調査したところ,インターネットから取得したオープンソースライブラリのインタフェースに問題があった。最新のメジャーバージョンへのバージョンアップに伴って,インタフェースが変更されていたことが原因であった。このオープンソースライブラリのバージョン管理ポリシーによると,マイナーバージョンの更新ではインタフェースは変更せず,セキュリティ及び機能上の不具合の修正だけを行う,とのことであった。
そこで,インターネットから取得するオープンソースライブラリのバージョンに④適切な条件を設定することで問題を回避することができた。
本システムでは,利用者を引き付け続けるために,コンテンツを頻繁にリリースしていく必要がある。そのため,ソフトウェア開発モデルとしてアジャイル型開発を採用する。
〔採用するプラクティスの検討〕
アジャイル型開発で用いられるチーム運営や開発プロセス,プログラミングなどの実践手法をプラクティスと呼ぶ。本システム開発における,システム要件や開発体制の特徴は次のとおりである。これに基づいて,採用するプラクティスを検討する。
- スコープの変動が激しい
テレビやコマーシャルなどの影響によって,要求の変更が頻繁に発生する。そのために,本システムの品質に責任をもち,優先順位や仕様を素早く決める役割をもつプロダクトオーナを任命する。そして,本システムの要求全体と優先順位を管理するためにaを採用し,反復する一つの開発サイクル(以下,イテレーションという)において,開発対象となる要求を管理するためにbを採用する。 - 求められる品質が高い
一般消費者向けSNSという性質上,その不具合は利用者離れを引き起こしかねない。一定レベル以上の品質を保つために,継続的インテグレーション(以下,CIという)を採用する。 - チームメンバーの半数のスキルが未成熟
アサインされたプロジェクトメンバーには,アジャイル型開発のベテラン社員と,スキルが未成熟な若手社員が含まれる。チームの中で業務知識やソースコードについての知識をお互いに共有して,品質や作業効率を向上させるために,cを採用する。
〔開発環境の検討〕
本システムは,不特定多数の一般消費者に対して速いレスポンスを提供するために,コンパイル型言語を用いてWebシステムとして開発する。
想定される開発環境の構成要素を表1に示す。 表1のレビューを社内の有識者から受けたところ,開発用DBサーバは,ライセンス及び②構成管理上のメリットを考慮して,各開発用PC内ではなく,共用の開発用DBサーバを用意し,その中にスキーマを一つ作成して共有した方がよい,との指摘を受けた。また,ベテラン社員から③開発者が一つのスキーマを共有してテストを行う際に生じる問題を避けるためのルールを決めておくとよい,とのアドバイスを受け,開発方針の中に盛り込むことにした。
〔CIサーバの実装〕
高い品質と迅速なリリースの両立のために,自動化された回帰テスト及び継続的デリバリを実現する処理をCIサーバ上に実装する。その処理手順を次に示す。
- ソースコード管理サーバから最新のソースコードを取得する。
- インターネットから最新のオープンソースライブラリを取得する。
- dに,(1)と(2)で取得したファイルをコピーして処理させて,モジュールを生成する。
- (3)で生成されたモジュールに,結合テスト環境に合った設定ファイルを組み込み,結合テスト用サーバに配置する。
- Webテストサーバに登録されているテストシナリオを実行する。
- (5)の実行結果をeに登録し,その登録した実行結果へのリンクを電子メールでプロダクトオーナとプロジェクトメンバーに報告する。
- プロダクトオーナが(6)の報告を確認して承認すると,(3)で生成したモジュールに,本番環境に合った設定ファイルを組み込み,本番用サーバに配置する。
イテレーションを複数サイクル行い,幾つかの機能がリリースされて順調に次のイテレーションを進めていたある日,CIサーバからテストの失敗が報告された。失敗の原因を調査したところ,インターネットから取得したオープンソースライブラリのインタフェースに問題があった。最新のメジャーバージョンへのバージョンアップに伴って,インタフェースが変更されていたことが原因であった。このオープンソースライブラリのバージョン管理ポリシーによると,マイナーバージョンの更新ではインタフェースは変更せず,セキュリティ及び機能上の不具合の修正だけを行う,とのことであった。
そこで,インターネットから取得するオープンソースライブラリのバージョンに④適切な条件を設定することで問題を回避することができた。
広告
設問1
〔採用するプラクティスの検討〕について,(1),(2)に答えよ。
- 本文中のa~cに入れる適切な字句を解答群の中から選び,記号で答えよ。
- 本文中の下線①の環境を作るためのプラクティスを一つ答えよ。
a,b,c に関する解答群
- アジャイルコーチ
- インセプションデッキ
- スプリントバックログ
- プランニングポーカー
- プロダクトバックログ
- ペアプログラミング
- ユーザストーリー
- リファクタリング
解答例・解答の要点
- a:オ
b:ウ
c:カ
- タスクボード
解説
本問のテーマである「アジャイル型開発」は、2001年にまとめられたアジャイルソフトウェア開発宣言で初めて公式に定義された、比較的新しい開発手法です。最初に全体の設計や計画を決定し、計画に従って作業を進める従来手法と違い、軌道修正を繰り返しながら迅速かつ柔軟に開発を進めていく特徴があります。アジャイル開発には様々な手法(プラクティス)があり、適した手法を組み合わせながら開発を行います。開発対象のソフトウェアやシステムを小さな機能に切り分け、それぞれを1週間~4週間程度の短いスパンで開発・結合を繰り返して完成させていく「イテレーション」や、小規模な開発チームを作り、一体となって開発を進める「スクラム開発」などの手法がよく使用されています。
- 選択肢にあるキーワードの意味は以下の通りです。
- アジャイルコーチ
- チームにアジャイルの方法論を指導し、成果を産み出せるように支援する役割を指す
- インセプションデッキ
- プロジェクトの全体像を俯瞰し、わかりやすく伝えるためのドキュメント
- スプリントバックログ
- 現在実行中の開発サイクルで実現するべき機能仕様をまとめたもの。スクラム開発で利用される
- ブランニングポーカー
- 数字の書かれたカードを使い、チームで相談しながら作業工数の見積もりを求める手法
- プロダクトバックログ
- 開発対象のシステムやソフトウェアで最終的に実現されるべき要求機能や要素をまとめたもの。スクラム開発で利用される
- ペアプログラミング
- 二人一組でプログラミングを行う手法。一人がプログラムを書いている間に、もう一人がソースコードのチェック・仕様書の確認・構造検討など、開発がスムーズに進むようなナビゲートを担当する。エクストリームプログラミング(XP)という手法で使われる
- ユーザストーリー
- 顧客の意図や求めている機能・性能を小分けにして書き出した文章
- リファクタリング
- 同等の機能を実現しつつ、より洗練されたプログラムに書き直す作業のこと
「本システムの要求全体と優先順位を管理する」とありますから「プロダクトバックログ」が入ります。プロダクトバックログには、プロダクトとして何を作るべきかを管理し、その優先順位をプロダクトオーナに判断してもらうことで、何から開発してよいのかを明確にする目的があります。
∴a=オ:プロダクトバックログ
〔bについて〕
「反復する一つの開発サイクル(以下,イテレーションという)において,開発対象となる要求を管理する」とありますから「スプリントバックログ」が入ります。スプリントバックログは、プロダクトバックログで管理している項目を開発するために必要なタスクに分解することで作成します。
∴b=ウ:スプリントバックログ
〔cについて〕
「チームの中で業務知識やソースコードについての知識をお互いに共有して,品質や作業効率を向上させる」とありますから、若手社員をベテラン社員がサポートしながら開発する「ペアプログラミング」が入ります。
∴c=カ:ペアプログラミング - 「作業状態を可視化した環境」に下線が引かれています。これを実現するためには、チームのメンバーが見る壁やホワイトボードに「ToDo(未着手)」「Doing(実施中)」「Done(完了)」に分けてタスクを掲示する「タスクボード」というプラクティスが効果的です。日次ミーティングをタスクボードの前で実施することで、タスクの進捗状況をチームメンバー間で共有し、チーム全体で異常の検知、対策を実施を行います。
タスクボードを利用すると、以下のような状況からの改善が期待できます。- 誰も作業をせずに、いつまでも着手されないまま残っているタスクがある
- どのタスクが終わったのかわからない
- タスクを抱えすぎているメンバーの存在に気付かない
広告
設問2
解答例・解答の要点
- DBサーバの設定やテーブル定義などの構成を一元管理できる (28文字)
- 自身のテストデータと他の開発者のテストデータとの見分けがつかない (32文字)
解説
- 表1を見ると、開発用PCの概要欄に「PC内のWeb/AP/DBサーバを用いて画面ごとのテストを行う」とあります。また結合テスト用サーバの概要欄にも「結合テストで用いるWeb/AP/DBサーバが稼働する」と書かれています。
これだと、同じシステムの検証をするためのDBが複数個所に分散して存在することになり、環境の構築や設定(特にスキーマ変更の際)に多大な手間がかかることが予想されます。共用のDBサーバを用意してスキーマを共用すれば、「DBサーバの設定やテーブル定義などの構成を一元管理できる」という構成管理上のメリットが生まれます。
∴DBサーバの設定やテーブル定義などの構成を一元管理できる - 開発作業は複数人で進められますが、開発者がDBのスキーマを共用すると、自分がDBに書き込んだテストデータだけでなく他の人が登録や編集したテストデータも見えてしまい、「自身のテストデータと他の開発者のテストデータとの見分けがつかない」という問題が生じます。データの命名規則などを定めておくことで混乱を回避することが可能です。
∴自身のテストデータと他の開発者のテストデータとの見分けがつかない
広告
設問3
〔CIサーバの実装〕について,本文中のd,eに入れる適切な字句を表1の要素名で答えよ。
解答例・解答の要点
d:ビルドサーバ
e:チケット管理サーバ
e:チケット管理サーバ
解説
継続的インテグレーション(CI:Continuous Integration)は、システムのビルド、テストの実行を自動化し、短いサイクルで継続的に行うことで品質改善や納期短縮を図る手法です。次のような効果が期待できます。- 継続的に「出荷できる状態」にできる。
- 新しく追加されたコードが問題既存のバグを引き起こしていても、早期に検知できる。
- 問題に早期に対処することで継続的に出荷可能な状態を保つことができる。
- 動作環境も含め、継続的インテグレーションできるため、自動テストやアジャイル型開発の基盤の一つとなる。
問題文では[d]で「モジュールを生成する」と書かれています。モジュールを生成する働きをする要素を表1の概要欄から探すと、「ビルドサーバ」が該当します。
∴d=ビルドサーバ
〔eについて〕
[e]に登録するのは処理手順(5)の結果、すなわちWebテストサーバで実行したテストシナリオの実行結果です。表1を読むとチケット管理サーバの概要欄に「テストなどを計画から実行、結果まで記録するもの」という記述があるため、[e]は「チケット管理サーバ」であるとわかります。
∴e=チケット管理サーバ
広告
設問4
〔回帰テストで発生した問題〕中の下線④の条件とは,どのような条件か。40字以内で述べよ。
解答例・解答の要点
利用中のメジャーバージョンの中で最新のマイナーバージョンであること (33文字)
解説
問題文から、テスト失敗の原因は「インターネットから取得したオープンソースライブラリのインタフェースに問題があった」ためと分析されています。CIサーバは「インターネットから最新のオープンソースライブラリを取得する」ようになっていたので、メジャーバージョンアップの際に問題が発生したことになります。このオープンソースライブラリは、「マイナーバージョンの更新ではインタフェースは変更せず,セキュリティ及び機能上の不具合の修正だけを行う」ので、インタフェースの問題を起こさないためには、メジャーバージョンは現在利用中の(すなわち動作実績のある)ものから変更しないで、マイナーバージョンの更新だけ行えばよいと判断できます。
したがって、CIサーバには現在利用中のメジャーバージョンの中で最新のマイナーバージョンをダウンロードするように設定することになります。
∴利用中のメジャーバージョンの中で最新のマイナーバージョンであること
広告
広告