マナビングITパスポート

外から見た動作を変えずに内部構造を改善する活動とは

ITパスポート試験 令和3年度 問48 / ソフトウェア開発管理技術 › 開発プロセス・手法

過去問にチャレンジ

令和3年度 問48

既存のプログラムを,外側から見たソフトウェアの動きを変えずに内部構造を改善する活動として,最も適切なものはどれか。

  1. ア

    テスト駆動開発

  2. イ

    ペアプログラミング

  3. ウ

    リバースエンジニアリング

  4. エ

    リファクタリング

会話形式の解説

講師講師
今回は開発手法の用語を区別する問題です。問題文にある条件は二つで、「外から見た動きを変えない」ことと「内部構造を改善する」ことです。この二つを両方満たす用語を探します。
受験者受験者
カタカナの用語が並んでいて迷いました。「リ」で始まる用語が二つあって、どちらも既存のものを扱う感じがします。
講師講師
そこがこの問題のポイントです。まず、先に絞り込める二つから見ましょう。テスト駆動開発は、実装より先にテストを作り、そのテストに合うようにコードを書いていく開発の進め方です。
受験者受験者
開発の手順を決める手法なので、既存プログラムの中身を良くする活動の名前とは違う、ということですね。
講師講師
そのとおりです。ペアプログラミングは、二人が共同で一つのコードを作る作業形態です。誰がどう作業するかを表す言葉なので、これも条件に当たりません。
受験者受験者
残るのはリバースエンジニアリングとリファクタリングです。リバースエンジニアリングも既存のプログラムの中身に関わるので、改善に入りそうに思えます。
講師講師
リバースエンジニアリングは、既存の製品を解析して構造や仕様を明らかにする活動です。目的は中身を調べて理解することで、改善することではありません。
受験者受験者
では、リファクタリングが外部の動作を保ったまま内部構造を改善する活動ということですか。
講師講師
はい。重複した処理をまとめたり、長い処理を分割したりして、コードを読みやすく保守しやすくします。二つの条件をどちらも満たすので、正解はエのリファクタリングです。
受験者受験者
既存のものを対象にするのは同じでも、リファクタリングは改善、リバースエンジニアリングは解析と、目的で区別すればよいのですね。
講師講師
その整理で十分です。「リ」で始まる二つの用語で迷ったら、何のための活動かを確かめてください。

まとめ

この問題は、外から見た動作を変えずに既存プログラムの内部構造を改善する活動の名称を問うもので、正解はリファクタリングです。リファクタリングでは、重複した処理をまとめたり長い処理を分割したりして、コードの読みやすさや保守しやすさを高めます。テスト駆動開発は実装より先にテストを作る開発の進め方、ペアプログラミングは二人で共同してコードを作る作業形態です。リバースエンジニアリングも既存のものを対象にしますが、目的は改善ではなく解析なので、目的の違いで区別できます。

解答・解説

正解はエです

この問題のテーマ

既存のプログラムについて、外から見た動きを変えずに内部の構造だけを良くする活動を何と呼ぶかを問う問題です。開発手法に関する用語の区別が問われています。

解き方の考え方

手がかりは、問題文の「外側から見た動きを変えない」と「内部構造を改善する」という二つの条件です。各選択肢について、何を目的とした用語なのか(開発の進め方なのか、作業の形態なのか、解析なのか、改善なのか)を確かめます。二つの条件をどちらも満たすのはリファクタリングだけなので、エが正解になります。

選択肢ごとの解説

  1. ×ア  テスト駆動開発
    テスト駆動開発は、実装より先にテストを作り、そのテストに合うようにコードを書いていく開発の進め方です。開発手順を定めた手法であり、既存プログラムの内部構造を改善する活動そのものを指す言葉ではありません。
  2. ×イ  ペアプログラミング
    ペアプログラミングは、二人が共同で一つのコードを作る開発時の作業形態です。誰がどのように作業するかを表す言葉なので、外部の動作を保ったまま内部構造を改善するという活動の名称には当たりません。
  3. ×ウ  リバースエンジニアリング
    リバースエンジニアリングは、既存の製品を解析して構造や仕様を明らかにする活動です。目的は中身を調べて理解することで、内部構造を改善することではありません。
  4. ○エ  リファクタリング
    リファクタリングは、外部から見た動作を保ったまま、プログラムの内部構造を改善する活動です。重複した処理をまとめたり、長い処理を分割したりして、コードを読みやすく保守しやすくします。問題文の二つの条件をどちらも満たしています。

補足

リファクタリングとリバースエンジニアリングは、どちらも既存のものを対象にするので取り違えやすい用語です。リファクタリングは「改善」、リバースエンジニアリングは「解析」が目的だと押さえると区別できます。また、テスト駆動開発は「テストを先に作る進め方」、ペアプログラミングは「二人で作業する形」と、何を決めている言葉なのかを意識すると整理しやすくなります。

POINT

  • リファクタリングは、外部から見た動作を変えずに内部構造を改善する活動です。
  • 内部構造を改善すると、コードの可読性や保守性が高まります。
  • 重複した処理の統合や長い処理の分割は、リファクタリングの代表的な例です。
  • テスト駆動開発は実装より先にテストを作る開発手法で、ペアプログラミングは二人で共同してコードを作る作業形態です。
  • リバースエンジニアリングは、既存の製品を解析して構造や仕様を調べる活動です。

※出典:令和3年度 ITパスポート試験 問48