基本情報技術者 2010年 春期 午前(科目A) 問49
問題文
プログラムから UML のクラス図を生成することは何と呼ばれるか。
選択肢
ア:バックトラッキング
イ:フォワードエンジニアリング
ウ:リエンジニアリング
エ:リバースエンジニアリング(正解)
🔒 解説は解答すると表示されます
リバースエンジニアリング【午前解説】
正解の理由
「プログラムから UML のクラス図を生成する」という記述は、既存の実装(ソースコード)から上位の設計情報(モデル)を抽出する操作を示しています。これがまさにリバースエンジニアリング(reverse engineering)の意味です。
ツール例としては、IDE やモデリングツールがソースコードを解析してクラス図やシーケンス図を生成する機能を「リバースエンジニアリング機能」として提供しています。フォワードエンジニアリング(モデル→コード生成)と逆の方向である点が決定的な根拠です。
ツール例としては、IDE やモデリングツールがソースコードを解析してクラス図やシーケンス図を生成する機能を「リバースエンジニアリング機能」として提供しています。フォワードエンジニアリング(モデル→コード生成)と逆の方向である点が決定的な根拠です。
解法ステップ
- 問題文のキーワードを確認:「プログラムから」「生成する」「UML のクラス図」などを探す。
- 用語の方向性を認識:「プログラム→モデル」は逆向きの工程であることを即座に判断する。
- 各選択肢を方向性で当てはめる:フォワードはモデル→実装、リバースは実装→モデル、リエンジニアリングは改善プロセス、バックトラッキングはアルゴリズム。
- 最も適合する語を選ぶ:実装からモデルを生成する語はリバースエンジニアリング。
選択肢別の誤答解説
- ア: バックトラッキング — 探索や組合せ最適化で用いる手法名で、UML 生成とは無関係です。
- イ: フォワードエンジニアリング — モデル(UMLなど)からコードを生成する工程を指し、本問の逆方向です。
- ウ: リエンジニアリング — 既存システムの再設計や改善を指す広い概念で、解析(リバース)はその一部にあたりますが直接の呼称ではありません。
- エ: エ: リバースエンジニアリング — 正解。実装(ソースコード)から設計情報(UML クラス図)を抽出する行為を指します。
よくある誤解
- 「リエンジニアリング」と混同する:リエンジニアリングは再設計や改善を含むプロセスで、リバースはその一部となる解析工程です。
- 「フォワードエンジニアリング」と取り違える:フォワードは設計図からコードを生成するため、方向が逆で意味が全く異なります。
- 「バックトラッキング」を選ぶ誤り:バックトラッキングは探索アルゴリズムの手法で、モデル生成とは無関係です。
補足コラム
リバースエンジニアリングで作成されるクラス図は、元の設計意図やコメント、ドメイン知識を完全には反映しません。綺麗なクラス図を得るには自動生成後に人手での整理(ネーミングの修正、集約の補正、抽象化の追加など)が必要です。また「ラウンドトリップエンジニアリング(モデルとコードを往復させる)」という考え方もあり、フォワードとリバースを組み合わせる運用もあります。
FAQ
Q: リバースエンジニアリングとリエンジニアリングは同じですか?
A: 異なります。リバースは解析によるモデル抽出、リエンジニアリングは解析+設計改善や再構築を含む広いプロセスです。
A: 異なります。リバースは解析によるモデル抽出、リエンジニアリングは解析+設計改善や再構築を含む広いプロセスです。
Q: 自動生成したクラス図はそのまま使えますか?
A: 多くの場合そのままでは不十分です。設計意図の補完や冗長クラスの統合など手作業での補正が必要です。
A: 多くの場合そのままでは不十分です。設計意図の補完や冗長クラスの統合など手作業での補正が必要です。
Q: バックトラッキングはソフトウェア設計の用語ではないのですか?
A: 主に探索アルゴリズムや組合せ問題で使われる手法名で、UML 生成とは関係がありません。
A: 主に探索アルゴリズムや組合せ問題で使われる手法名で、UML 生成とは関係がありません。
関連キーワード: UML、クラス図、リバースエンジニアリング、リエンジニアリング、フォワードエンジニアリング、バックトラッキング、モデル抽出、逆生成、ラウンドトリップエンジニアリング

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

