リファクタリングとは?基本情報処理午前対策
基本情報処理技術者試験から不定期に1題出題、解説いたします。
試験を受けない人にとっても役に立つ解説を心掛けていきます。
問題
- ソフトウェアの品質を高めるために,2人のプログラマが協力して,一つのプログラムをコーディングする。
- ソフトウェアの保守性を高めるために,外部仕様を変更することなく,プログラムの内部構造を変更する。
- 動作するソフトウェアを迅速に開発するために,テストケースを先に設定してから,プログラムをコーディングする。
- 利用者からのフィードバックを得るために,提供予定のソフトウェアの試作品を早期に作成する。
基本情報技術者 平成29年春期試験から抜粋
正解は
イが正解
リファクタリングについて解説
リファクタリングとは
プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。また、いくつかのリファクタリング手法の総称としても使われる。
引用:Wikipediaより
かつてシステム業界では
「一度リリースしたプログラムは、仕様変更や問題が起きない限り、どんな小さな改修もしてはならない」
という暗黙のルールが存在していました。
その結果
似たような機能や処理が、複製されて
明らかに汚いソースなのに改修が出来ず、保守が困難になった
ソースから仕様の意図を読み取る事が困難になった
リファクタリングの目的
リファクタリングの目的は保守性を高める事です。
使っているユーザーは意識出来ないシステムの内側のメンテナンス
リファクタリングのデメリット
リファクタリングは大変時間が掛かる事です。
複雑なソースから、正しい仕様を読み解いたり、その他処理への影響度を調査し
入出力結果に影響を与えず、内部の複雑なコードや可読性の改善をする必要があります。
リファクタリングは将来に備えて行うものであるため、作業が実を結ぶ可能性は少ないです。
納期に追われたシステムである程、リファクタリングをする余裕が無くなります。
その他の選択肢について
ペアプログラミング
二人以上のメンバーで1つのプログラミングを行う事ですね。
一人が設計し、その横でもうひとりが指示された通りのプログラミングをしたり
一人がプログラミングしながら、もうひとりがテスト用のコードやデータを作成したり
テスト駆動開発
最初にテストを作成し、そのテストが満たせる実装を後から実装していく手法です。
テストを元に実装を組み上げていく為。、バグが少なくなりますが、詳細な仕様・パターン網羅がしっかりとできている事が前提です。
プロトタイピング
プロトタイプ(試作品)を作りながら、テストと変更を繰り返し最終席な成果物に近づけていく手法です。
エンドユーザーに目に見えるプログラムを提供してフィードバッグが得られる為、要件定義や設計の戻りが少なくなります。
しかし、プロジェクトマネジメントが困難になるデメリットもあります。
今回の問題のキーポイント
リファクタリングというキーワードが出たら、
「保守性」「動作を変えない」「内部構造の変更」
というキーワードに注目しましょう。
まとめ
今日の問題はいかがでしょうか。
今回は、リファクタリングの問題について解説させていただきました。
ポイントとなるキーワードを見つけ、ピンポイントで正答を判断しましょう。
ヴァックスラボではSE・プログラマを募集中です
私たちと一緒に価値を提供していく新しい仲間を募集します。
[spheader position="center"]
[/spheader]