マナビング基本情報技術者

リファクタリングは何を変えて何を保つのか

基本情報技術者試験 平成29年度春期 午前 問50 / ソフトウェア開発管理技術 › 開発プロセス・手法

過去問にチャレンジ

平成29年度春期 午前 問50

ソフトウェア開発の活動のうち,アジャイル開発においても重視されているリファクタリングはどれか。

  1. ア

    ソフトウェアの品質を高めるために,2人のプログラマが協力して,一つのプログラムをコーディングする。

  2. イ

    ソフトウェアの保守性を高めるために,外部仕様を変更することなく,プログラムの内部構造を変更する。

  3. ウ

    動作するソフトウェアを迅速に開発するために,テストケースを先に設定してから,プログラムをコーディングする。

  4. エ

    利用者からのフィードバックを得るために,提供予定のソフトウェアの試作品を早期に作成する。

会話形式の解説

講師講師
リファクタリングを見分けるには、作業によって何を変え、何を保つかに注目します。
受験者受験者
品質を高めるために2人で書く方法も、プログラムを改善するので迷いました。
講師講師
それはペアプログラミングです。2人で協力するという進め方を表していて、内部構造を変える作業そのものではありません。
受験者受験者
では、リファクタリングでは何を変えるのですか。
講師講師
変えるのはプログラムの内部構造です。外部仕様、つまり利用者から見た動作は変えずに、保守しやすくします。これに当たるのが正解の選択肢です。
受験者受験者
テストケースを先に用意する方法も、品質を高める作業に見えます。違いは順序ですか。
講師講師
はい。それはテスト駆動開発で、テストを先に用意してから実装する順序が中心です。内部構造を改善するという説明ではありません。
受験者受験者
試作品を早く作る方法は、利用者の意見を得ることが目的ですね。
講師講師
そのとおりです。それはプロトタイピングで、リファクタリングとは作業の目的が異なります。
受験者受験者
手法名を思い出すだけでなく、外部仕様を保ったまま内部構造を変えるかを確認すればよいのですね。
講師講師
はい。共同で書く、テストを先に作る、試作品を作るという説明とは、変えるものや作業の目的で区別できます。

まとめ

リファクタリングは、外部仕様を変えずにプログラムの内部構造を改善する作業です。この問題では、保守性を高めるために内部構造を変更する選択肢が正解です。2人で書くのはペアプログラミング、テストを先に用意するのはテスト駆動開発、試作品を作って評価を得るのはプロトタイピングです。

解答・解説

正解はイです

この問題のテーマ

開発作業の説明から、リファクタリングを識別する問題です。

解き方の考え方

作業によって何を変え、何を維持するかに注目します。リファクタリングなら、利用者から見た動作を保ちながらプログラムの内部を改善します。各選択肢が示す作業の対象と目的を、この条件に照らします。

選択肢ごとの解説

  1. ×ア  ソフトウェアの品質を高めるために,2人のプログラマが協力して,一つのプログラムをコーディングする。
    2人のプログラマが協力して一つのプログラムを書くのは、ペアプログラミングです。これは作業する人数と進め方の説明であり、内部構造を改善する作業を指していません。
  2. ○イ  ソフトウェアの保守性を高めるために,外部仕様を変更することなく,プログラムの内部構造を変更する。
    外部仕様を変えずに内部構造を変更するので、利用者から見た動作を保ったまま保守しやすくできます。この作業がリファクタリングに当たります。
  3. ×ウ  動作するソフトウェアを迅速に開発するために,テストケースを先に設定してから,プログラムをコーディングする。
    テストケースを先に用意してから実装するのは、テスト駆動開発です。説明の中心はテストと実装の順序であり、既存のプログラムの内部を改善することではありません。
  4. ×エ  利用者からのフィードバックを得るために,提供予定のソフトウェアの試作品を早期に作成する。
    早期に試作品を作って利用者の評価を得るのは、プロトタイピングです。利用者から意見を得るための作業なので、リファクタリングには当たりません。

POINT

  • 手法の名前だけで判断せず、作業によって変わるものを確認します。
  • 外部から見た動作が維持されるかどうかが、リファクタリングを見分ける手掛かりです。
  • 共同で書く、テストを先に作る、試作品を作るという説明は、それぞれ別の開発手法を指します。

※出典:平成29年度春期 基本情報技術者試験 午前 問50