2017年 春期 応用情報技術者試験 問8

アジャイル型開発

U社は,コンビニエンスストアを全国展開する企業である。自社ブランド商品のファンを作るために,オリジナルのゲームなどが楽しめる専用のSNS(以下,本システムという)を開発することになった。

本システムでは,利用者を引き付け続けるために,コンテンツを頻繁にリリースしていく必要がある。そのため,ソフトウェア開発モデルとしてアジャイル型開発を採用する。

【採用するプラクティスの検討】

アジャイル型開発で用いられるチーム運営や開発プロセス,プログラミングなどの実践手法をプラクティスと呼ぶ。本システム開発における,システム要件や開発体制の特徴は次のとおりである。これに基づいて,採用するプラクティスを検討する。

・スコープの変動が激しい

テレビやコマーシャルなどの影響によって,要求の変更が頻繁に発生する。そのために,本システムの品質に責任をもち,優先順位や仕様を素早く決める役割をもつプロダクトオーナーを任命する。そして,本システムの要求全体と優先順位を管理するためにaを採用し,反復する一つの開発サイクル(以下,イテレーションという)において,開発対象となる要求を管理するためにbを採用する。

・求められる品質が高い

一般消費者向けSNSという性質上,その不具合は利用者離れを引き起こしかねない。一定レベル以上の品質を保つために,継続的インテグレーション(以下,CIという)を採用する。

・チームメンバの半数のスキルが未成熟

アサインされたプロジェクトメンバには,アジャイル型開発のベテラン社員と,スキルが未成熟な若手社員が含まれる。チームの中で業務知識やソースコードについての知識をお互いに共有して,品質や作業効率を向上させるために,cを採用する。

この検討結果のレビューを社内の有識者から受けたところ,チーム全体の状況を共有するために,その①作業状態を可視化した環境を作り,メンバ全員が集まって必要な情報を短い時間で共有する日次ミーティングも採用するように,との指摘を受けた。

【開発環境の検討】

本システムは,不特定多数の一般消費者に対して速いレスポンスを提供するために,コンパイル型言語を用いてWebシステムとして開発する。

想定される開発環境の構成要素を表1に示す。

表1 想定される開発環境の構成要素
要素名概要
開発用PCIDE(統合開発環境)を用いて,オープンソースライブラリを活用したコーディングを行う。また,PC内のWeb/AP/DBサーバを用いて画面ごとのテストを行う。
結合テスト用サーバ結合テストで用いるWeb/AP/DBサーバが稼働する。
チケット管理サーバプロジェクトを構成する作業などを細分化し,チケットとして管理する。チケットには,設計やプログラム作成,テストなどを計画から実行,結果まで記録するものや,バグのように発生時にその内容を記録するものなどがある。
ソースコード管理サーバ開発されたソースコードをバージョン管理する。
Webテストサーバ登録されたシナリオに沿って機械的にWebクライアントの操作を行う。
ビルドサーバプログラムをコンパイルし,モジュールを生成する。
CIサーバシステムのビルドやテスト,モジュールの配置を自動化し,その一連の処理を継続的に行う。
注記 AP:アプリケーション,DB:データベース

表1のレビューを社内の有識者から受けたところ,開発用DBサーバは,ライセンス及び②構成管理上のメリットを考慮して,各開発用PC内ではなく,共用の開発用DBサーバを用意し,その中にスキーマを一つ作成して共有した方がよい,との指摘を受けた。また,ベテラン社員から,③開発者が一つのスキーマを共有してテストを行う際に生じる問題を避けるためのルールを決めておくとよい,とのアドバイスを受け,開発方針の中に盛り込むことにした。

【CIサーバの実装】

高い品質と迅速なリリースの両立のために,自動化された回帰テスト及び継続的デリバリを実現する処理をCIサーバ上に実装する。その処理手順を次に示す。

(1) ソースコード管理サーバから最新のソースコードを取得する。

(2) インターネットから最新のオープンソースライブラリを取得する。

(3) dに,(1)と(2)で取得したファイルをコピーして処理させて,モジュールを生成する。

(4) (3)で生成されたモジュールに,結合テスト環境に合った設定ファイルを組み込み,結合テスト用サーバに配置する。

(5) Webテストサーバに登録されているテストシナリオを実行する。

(6) (5)の実行結果をeに登録し,その登録した実行結果へのリンクを電子メールでプロダクトオーナとプロジェクトメンバに報告する。

(7) プロダクトオーナが(6)の報告を確認して承認すると,(3)で生成したモジュールに,本番環境に合った設定ファイルを組み込み,本番用サーバに配置する。

【回帰テストで発生した問題】

イテレーションを複数サイクル行い,幾つかの機能がリリースされて順調に次のイテレーションを進めていたある日,CIサーバからテストの失敗が報告された。失敗の原因を調査したところ,インターネットから取得したオープンソースライブラリのインタフェースに問題があった。最新のメジャーバージョンへのバージョンアップに伴って,インタフェースが変更されていたことが原因であった。このオープンソースライブラリのバージョン管理ポリシーによると,マイナーバージョンの更新ではインタフェースは変更せず,セキュリティ及び機能上の不具合の修正だけを行う,とのことであった。

そこで,インターネットから取得するオープンソースライブラリのバージョンに④適切な条件を設定することで問題を回避することができた。

平成29年度 春期 応用情報技術者試験 午後 問8