リファクタリング
ソフトウェア開発におけるリファクタリングの説明として,適切なものはどれか。
- ア既存のソフトウェアの実行コードやソースコードを解析し,仕様や設計情報を抽出する。
- イプログラムを変更した後に,変更していない部分に影響が及んでいないかを確認するために,既存のテストを再実行する。
- ウ2 人の開発者が 1 台のコンピュータを共有し,一方がコードを書き,他方がそれをレビューしながら開発を進める。
- エプログラムの外部から見た振る舞いを変えずに,内部の構造を理解しやすく変更しやすいものに改善する。
正解と解説を見る
正解 エ
この問題の基礎知識
- XP(エクストリームプログラミング)の主なプラクティスには,テスト駆動開発,ペアプログラミング,リファクタリング,継続的インテグレーションなどがある。
- 回帰テスト(リグレッションテスト)は,プログラムの変更によって変更していない部分に悪影響(デグレード)が生じていないかを,既存のテストを再実行して確かめるテストである。
- リバースエンジニアリングは,既存のソフトウェアを解析して仕様や設計情報を抽出することである。
- 内部構造の改善は,重複の除去や命名の改善などを小さな単位で行い,その都度テストを実行して振る舞いが変わっていないことを確かめながら進める。
ア既存のソフトウェアの実行コードやソースコードを解析し,仕様や設計情報を抽出する。
既存のソフトウェアのコードを解析して,仕様や設計情報を明らかにするのはリバースエンジニアリングである。内部構造の改善を目的とする活動ではない。
イプログラムを変更した後に,変更していない部分に影響が及んでいないかを確認するために,既存のテストを再実行する。
変更による意図しない影響(デグレード)を確認するのは回帰テスト(リグレッションテスト)である。リファクタリングの際にも併用されるが,リファクタリングそのものではない。
ウ2 人の開発者が 1 台のコンピュータを共有し,一方がコードを書き,他方がそれをレビューしながら開発を進める。
2 人一組でコーディングとレビューを同時に行うのはペアプログラミングであり,XP のプラクティスの一つである。
エプログラムの外部から見た振る舞いを変えずに,内部の構造を理解しやすく変更しやすいものに改善する。正解
リファクタリングは,機能や外部仕様を変えずに重複の除去や命名の改善などで内部構造を整理する活動である。振る舞いが変わっていないことはテストで確認する。
検証用の出典出典照合済み
M. Fowler, Refactoring: Improving the Design of Existing Code照合の根拠(4 件)
- エ(正解): リファクタリングは外的な動作を変えずに内部構造を作り変えることである
リファクタリング(一旦開発された機能について、保守性や拡張性を高めるため、外的な動作は変えないまま内部構造を作り変えること)
IPA・経済産業省 情報システム・モデル取引・契約書<アジャイル開発版>(2025 年 4 月 R1) · 第 2 条(アジャイル開発方式)の解説(第 3 項)(新しいタブで開きます) - ア(誤り): 既存ソフトウェアを解析して仕様等の情報を得るのはリバースエンジニアリングである
既存のソフトウェアを解析して,仕様や構成部品などの情報を得るリバースエンジニアリングがあること
IPA 応用情報技術者試験シラバス Ver.7.2 · リバースエンジニアリング(新しいタブで開きます) - イ(誤り): 既存機能が正しく動作しているかを既存のテスト群の再実行で確かめるのは回帰テストである
新しく機能を追加する際には、必ず既存の機能が正しく動作しているかを確認するために、それまでに実施してきたテスト群を回帰的に実施する必要がある。
IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編(2013) · 3.2.2 自動化された回帰テスト(状況)(新しいタブで開きます) - ウ(誤り): 2 人が一つの画面に向き合い,一方が作業し他方が注意を払いながら進めるのはペアプログラミングである
ペア作業はドライバー(キーボードの前に座り主導権を握る役割)と、ナビゲーター(ドライバーの作業に注意を払い、かつ先の仕事の戦略を考える役割)に別れて、一つの画面に2人で向きあって実施する。
IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編(2013) · 3.2.1 ペアプログラミング(解決策)(新しいタブで開きます)
Fowler の書籍の代わりに,IPA のアジャイル開発版モデル契約とプラクティス活用ガイド編,AP シラバスで正解と各誤答肢を裏付けた