XPとは何か?個々のプラクティスとの違いを整理
ITパスポート試験 令和4年度 問38 / ソフトウェア開発管理技術 › 開発プロセス・手法
過去問にチャレンジ
XP(エクストリームプログラミング)の説明として,最も適切なものはどれか。
- ア
テストプログラムを先に作成し,そのテストに合格するようにコードを記述する開発手法のことである。
- イ
一つのプログラムを2人のプログラマが,1台のコンピュータに向かって共同で開発する方法のことである。
- ウ
プログラムの振る舞いを変えずに,プログラムの内部構造を改善することである。
- エ
要求の変化に対応した高品質のソフトウェアを短いサイクルでリリースする,アジャイル開発のアプローチの一つである。
会話形式の解説
講師今回はXP、エクストリームプログラミングという開発手法の説明を選ぶ問題です。選択肢にはどれもXPと関係のある内容が並んでいます。その中で「手法全体の説明」になっているのはどれか、という見方をすると解きやすくなります。
受験者どの選択肢も開発の進め方の話に見えて、私には全部XPのことのように思えました。違いはどこにあるのでしょうか。
講師そこが判断のポイントです。XPには「プラクティス」と呼ばれる具体的な実践がいくつか含まれています。選択肢の多くは、そのプラクティスの一つを説明したものです。まず、テストを先に作って、そのテストに合格するようにコードを書くという選択肢は何の説明だと思いますか。
受験者テストを先に書くので、テスト駆動開発、略してTDDだと思います。
講師そのとおりです。TDDはXPのプラクティスの一つとされていますが、XPそのものの定義ではありません。では、2人のプログラマが1台のコンピュータで共同開発するという選択肢はどうでしょう。
受験者それはペアプログラミングですね。ただ、2人で1台を使うと効率が落ちそうな気がします。
講師一方がコードを書き、もう一方が確認や補佐をして、役割を交代しながら進める方法です。これもXPのプラクティスの一つで、XP全体の説明ではありません。
受験者振る舞いを変えずに内部構造を改善するという選択肢は、リファクタリングでしょうか。外から見た動きは同じまま、中身を整理するという意味だと理解しています。
講師正確です。リファクタリングもXPで重視される実践ですが、やはり手法全体の説明ではありません。残るのは、要求の変化に対応した高品質のソフトウェアを短いサイクルでリリースする、アジャイル開発のアプローチの一つ、という選択肢です。
受験者アジャイル開発は、短い期間で開発とリリースを繰り返して、変化に柔軟に対応する考え方でしたね。XPがその一つだと説明しているので、これが手法全体を述べた正解だと分かりました。
講師そのとおりです。XPはアジャイル開発の代表的な手法の一つで、短いサイクルでのリリースと要求の変化への柔軟な対応を重視します。TDD、ペアプログラミング、リファクタリングは、その中で使われる部品のような位置付けだと考えると整理しやすいです。
受験者手法全体と、その中の個々の実践を分けて考えるのが大事なのですね。
講師はい。XPのプラクティスには継続的インテグレーションなども含まれます。個々のプラクティスは、名前と説明を対応させて覚えておくと区別しやすくなります。
まとめ
XP(エクストリームプログラミング)は、アジャイル開発の手法の一つです。要求の変化に対応しながら、高品質なソフトウェアを短いサイクルでリリースすることを目指します。テストを先に書くテスト駆動開発(TDD)、2人が1台のコンピュータで共同作業するペアプログラミング、振る舞いを変えずに内部構造を改善するリファクタリングは、どれもXPのプラクティスです。ただし、XPそのものの定義ではありません。手法全体の説明と個々の実践の説明を分けて考えると、正しい選択肢を選べます。
解答・解説
正解はエです
この問題のテーマ
ソフトウェアの開発手法XP(エクストリームプログラミング)について、正しい説明を選ぶ問題です。XPの一部である個々の実践の説明と、XP全体の説明を見分けられるかが問われます。
解き方の考え方
まず、XPがアジャイル開発(要求の変化に素早く対応する開発の考え方)の手法の一つであることを確認します。次に、各選択肢が何の説明かを考えます。アはテスト駆動開発、イはペアプログラミング、ウはリファクタリングで、いずれもXPの実践の一つにすぎません。そのため、手法全体を説明している選択肢を選びます。
選択肢ごとの解説
- ×ア テストプログラムを先に作成し,そのテストに合格するようにコードを記述する開発手法のことである。この肢は、テストを先に作り、そのテストに合格するようコードを書く方法を述べています。これはテスト駆動開発(TDD)の説明です。TDDはXPの実践の一つですが、XP全体の定義ではありません。したがって誤りです。
- ×イ 一つのプログラムを2人のプログラマが,1台のコンピュータに向かって共同で開発する方法のことである。この肢は、2人のプログラマが1台のコンピュータで共同開発する方法を述べています。これはペアプログラミングの説明で、一方がコードを書き、もう一方が確認や補佐をして、役割を交代しながら進めます。XPの実践の一つであり、XP全体の説明ではないため、誤りです。
- ×ウ プログラムの振る舞いを変えずに,プログラムの内部構造を改善することである。この肢は、外から見た振る舞いを変えずに内部構造を改善することを述べています。これはリファクタリングの説明です。XPで重視される実践ですが、手法全体の説明ではないため、誤りです。
- ○エ 要求の変化に対応した高品質のソフトウェアを短いサイクルでリリースする,アジャイル開発のアプローチの一つである。この肢は、要求の変化に対応し、高品質なソフトウェアを短いサイクルでリリースする、アジャイル開発の一つと述べています。これはXPの特徴と合っています。XP全体を述べた唯一の選択肢なので、正しいです。
補足
XPのプラクティスには、TDD、ペアプログラミング、リファクタリングのほか、継続的インテグレーションなども含まれます。個々のプラクティスは、名前と説明を対応させて覚えておくと、別の問題でも役立ちます。
POINT
- XPはアジャイル開発の代表的な手法の一つで、短いサイクルでのリリースと要求の変化への柔軟な対応を重視します。
- テストを先に書いてからコードを書く手法はテスト駆動開発(TDD)です。
- 2人が1台のコンピュータで共同作業する手法はペアプログラミングです。
- 振る舞いを変えずに内部構造を改善することはリファクタリングです。
- TDD、ペアプログラミング、リファクタリングはXPのプラクティスであり、XPそのものの定義ではありません。
