忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【アジャイル開発・ソフトウェア工学】開発サイクルを高速で回す!「XP(エクストリーム・プログラミング)の5つのアクティビティ」|情報処理問題1000本ノック

基本情報技術者試験、応用情報技術者試験、プロジェクトマネージャ試験の「アジャイル開発・XP(eXtreme Programming)」分野で頻出の重要テーマ。XPにおける5つのアクティビティ(開発工程の流れ)と、それぞれの段階で実践される代表的なプラクティスを整理して攻略しましょう。

■ XP(eXtreme Programming)の5つのアクティビティ

XPは「変化を受け入れる」ことを前提としたアジャイル開発手法の代表格です。短期間の反復(イテレーション)の中で、以下の5つのアクティビティを繰り返し実行しながらシステムを成長させます。

アクティビティ主な活動と内容試験対策の重要キーワード・補足
(1) 計画
(Planning)
・機能要求を示したユーザーストーリー(要件カード)を作成する。
・ユーザーストーリーに対する受け入れ基準(テスト条件)を定義する。
・ストーリーの優先順位と工数見積もりに基づき、反復計画(イテレーション計画)を作成する。
オンサイト顧客:開発チーム内に顧客(ユーザー)が常駐し、ストーリーの作成や優先順位決定を即座に行う。
(2) 設計
(Design)
CRCカード(Class, Responsibility, Collaboration)などを用いて、オブジェクト指向のクラス設計を行う。
・技術的な疑問やリスクを解消するため、スパイクソリューションと呼ばれる実験的なプロトタイプを作成して検証を行う。
シンプル設計(YAGNI原則):「今必要な機能だけを設計・実装し、将来の予測で余計な機能を組み込まない」という原則。
(3) コーディング
(Coding)
・プログラムのコーディングおよびユニットテスト(単体テスト)を行う。
・常に動作可能なコードを維持し、継続的にコード品質を高める。
ペアプログラミング:2名で1台のPCを操作して開発。
TDD(テスト駆動開発):コードを書く前にまずテストを作成。
リファクタリング:外部挙動を変えずにコードをキレイに整理。
(4) テスト
(Testing)
・計画フェーズで策定した受け入れ基準に基づき、受入テスト(システムテスト)を行う。
・顧客とともに要求通りの動作を満たしているかを検証する。
継続的インテグレーション(CI):作成したコードを頻繁に統合・自動テストし、欠陥を早期発見する。
(5) リリース
(Release)
・完成したソフトウェアを頻繁にリリース(本番展開または評価)する。
・プロジェクトのベロシティ(消化作業量)を測定し、過去実績として次の反復計画へ生かす。
スモールリリース:小さな単位で頻繁にリリースし、ユーザーからの早期フィードバックを得る。

試験対策の重要キーワード

  • スパイクソリューション(Spike Solution):「(2)設計」で登場する重要用語。アルゴリズムの実行速度やサードパーティ製ライブラリの採用など、技術的リスク・不明点を事前に評価・検証するために作成する『使い捨ての実験用プロトタイプ』のこと。
  • CRCカード(Class-Responsibility-Collaborator):クラス名、役割(責任)、関連する他のクラス(協調者)を紙のカードに書き出し、オブジェクト指向設計を視覚的かつシンプルに行う手法。
  • XPの4つの価値とプラクティス:XPは「コミュニケーション」「シンプル」「フィードバック」「勇気」(+尊重)の価値を重視し、ペアプログラミングやTDDなどの具体的プラクティスを用いて上記のアクティビティを回します。

※例えるなら、XPのアクティビティは「料理の新メニュー開発」です。大がかりなレシピを作る前に『試し作り(スパイクソリューション)』を行い、2人で味見しながら調理し(ペアプログラミング)、少量ずつ試食(スモールリリース)してもらいながらお客様の感想を次の試作(ベロシティ測定・反復)に活かしていくアプローチです。

PR