ユースケース:リファクタリング

リファクタリングとは、ソフトウェアの外部の振る舞いを保ちつつ、内部の構造を改善していく作業を指します。 リファクタリングを実施することで、コードの可読性が良くなるだけではなく、修正が簡単になり、バグを見つけやすくなり、開発工数の削減に繋がります。

ここでは、Understandで、クラス・関数の構造を可視化し、リファクタリングする方法についてご紹介します。

リファクタリングの関連資料はこちら>>

課題

  • リファクタリングにかける時間がない
  • リファクタリングすべき箇所が特定できない
  • 周囲にリファクタリングの効果を説明できない

原因

ソースコードの構造が把握できていない
例:コーディング担当者以外が構造を理解できていないため、どこをリファクタリングすべきか分からない

動作しているプログラムのデグレードが怖い
例:リファクタリングの必要性は理解しているが、いきなりシステムを変更することは抵抗がある

リファクタリングの効果を定量的に表現するのが難しい
例:ソースコードの修正はコストがかかるため、修正前にリファクタリングの効果を確認したい

解決策

リファクタリングすべき箇所が特定できない課題に対して、 コードの構造を可視化し、構造上の問題点を把握、リファクタリングを行います。

1.保守性の低い関数やクラスを確認する

ポイント
  • ソースコードメトリクスの値から、保守性の低い関数やクラスを確認する

Understandの機能

Low Maintainability Functions レポートLow Maintainability Classes レポートで、それぞれ関数の保守性、クラスの保守性に関与が大きい3つのメトリクス値を計測できます。あらかじめ閾値を設定しておくと、閾値を超えた値は赤で表示され、リファクタリング対象の選定に役立ちます。

2.コードクローンを検出する

ポイント
  • コードクローン(ソースコード中で類似・一致した部分)は、コピー&ペーストなどで作りこまれる
  • ソースコードの中から類似した関数を検出

Understandの機能

Cloned Functionsレポートで、類似した関数を検出できます。検出後、レポートの[View Comparison]から、比較機能を開き、類似している関数のコード差分を確認できます。

3.使用されていない関数を検出する

ポイント
  • コードの理解を妨げる、実行されると問題をおこす、などのリスクがあるためデッドコード(実行されないコード)は取り除くべき
  • 使用されていない関数や変数の粒度で、デッドコードを検出可能

Understandの機能

エンティティフィルターで、使用されていない関数(宣言されていても、他の関数から呼び出しがない関数)を見つける。

4.リファクタリングの計画を立てる

ポイント
  • リファクタリング対象の関数、クラスの構造を把握

Understandの機能

保守性の低い関数のリファクタリングでは、関数分割が有効です。 関数から分割可能な処理を見つけるために、Control Flowグラフを用いることで条件分岐単位で処理フローを確認することができます。
また、保守性の低いクラスのリファクタリングでは、クラス分割やカプセルかの再検討が有効です。 Call and Refs Class Internalグラフ を用いることで、クラス内のメソッド数や情報の分散度合い、他クラスとの結合度合いを視覚的に確認することができます。

5.リファクタリング後の保守性を確認する

ポイント
  • リファクタリング前後でのメトリクス値を比較
  • リファクタリングの効果を定量的に説明

Understandの機能

リファクタリングの効果については、メトリクスの値から定量的な評価が可能です。
差分エンティティグラフでは、2つのUnderstandプロジェクトを比較して追加/削除/変更されたエンティティの一覧、および、差分メトリクス(コード行数、Cyclomatic など)を表示します。

関連情報のご紹介

リファクタリングのユースケースについて、操作動画や関連セミナーをまとめております。
是非お役立てください。

関連資料のご案内

過去に開催したソフトウェア品質向上セミナーの講演資料をご案内します。資料は、セミナーにご登壇いただいた企業様の品質向上に関する取り組みをご紹介しています。
資料をご希望の方は、申込フォームよりお申し込みください。

パナソニック アドバンストテクノロジー株式会社様

パナソニック アドバンストテクノロジー株式会社が実践するUnderstandを用いた構造的リスクの効果的な抽出手法とは?

他社開発や受託開発における構造的リスクを抽出するため、Understandを用いた構造解析結果を元にしたメトリクス分析の自動化、リバースエンジニアリングツールの整備し、啓発活動などもおこないながら解析の効率化を図った取り組みについてご紹介いたします。

富士フイルムソフトウエア株式会社様

ソフトウェアの構造悪化を防止して、テスト工数・修正工数を削減する! 富士フイルムソフトウエアが実践する品質確保の取り組み

「保守性や再利用性に関する品質指標は、開発プロセスへの適用が難しい」という言葉や下記のような課題に対して、ソフトウェアの品質確保をテーマに、品質改善活動へのツール適用事例をご紹介いたします。

ソースコード解析ツール Understandに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
scitools-info@techmatrix.co.jp

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。