リファクタリング支援

ローリスクかつ堅実な方法で
既存ソフトウェアのソースコード品質を向上いたします

リファクタリングとは、ソフトウェアの外部的な振る舞いを変えずに内部構造を変更することです。ソースコードの可読性・変更性・試験性を高めることにより、不具合修正や機能追加にかかる工数がカットされ、結果としてトータルコストを大幅に削減できます。長年機能追加が続けられながらも、設計/実装の品質改善を施されないままの「レガシーコード」に対しては特に大きな効果を得ることができます。弊社の実績では、総開発工数を30%削減させた事例もございます。(実際の成果は案件によって変動します。)
事例Aのリファクタリング効果

リファクタリングによる
メリット

01

重複コードの無いシンプルなコードになるため、不具合解析が容易になります。

02

誰でも理解しやすいコードになるため、メンテナンスが容易になります。

03

テスト、分析工数の短縮で、開発コストが大幅に削減できます。

サービスのポイント

既存の追加開発/派生開発への影響を最小限に抑えて実施します

リファクタリングは、ソースコードの振る舞いを変えない小さな変更を積み重ねることで実現します。その小さな変更の一つ一つが完全にテストされ、変更前の動作を保ちながら実現されます。従って、稼働中のソースコードにリファクタリングを行っても、その影響はほとんどありませんので、機能追加と並行して実施することが可能です。

経験豊富なエンジニアがリファクタリングを支援します

各種言語やプラットフォームに精通した開発経験豊富なエンジニアが現場に常駐し、リファクタリングを実施します。お客様と直接コミュニケーションを取りながら実施し、コミュニケーションギャップを最小限に保ちます。

方法論・人材・ツールの三方面からの堅実なアプローチをします

弊社担当者は多くの開発現場で培ったノウハウを活かし、現場に即した方法論でリファクタリングを実施します。また、リファクタリングの戦略立案から技術者の教育まで、幅広いサービスを提供します。
ツールは内製/外製、有償/無償を問わず、幅広い選択肢から、お客様の現場に最適なものを導入し、活用します。具体的には、自動テスト支援ツール、静的解析ツール、リファクタリングブラウザなどを駆使し、作業の精度向上と省力化を実現します。
方法論 人材 ツール 方法論・人材・ツールの三位一体によるリファクタリング支援

弊社リファクタリングサービスの特徴

リファクタリングと並行して、ドキュメント構築、
自動テストコード作成も
行います

一般的なリファクタリングサービスの多くは修正コードや報告書のみが主な成果物となります。しかし弊社ではリファクタリングと並行して、「ドキュメント構築」、「自動テストコード作成」を行うことも可能です。

ドキュメント構築

全くドキュメントがないソフトウェアであってもコード修正と並行して、ソフトウェア仕様書や設計書、テスト仕様書等のドキュメントを構築しながらリファクタリングを進めます。これにより今まで開発者しか理解できなかったコード内のノウハウを掘り起こし、お客様のソフトウェア資産の価値を高めることができます。

自動テストコード作成

ソフトウェアテストの自動化により、テスト工数の削減はもちろん、今後お客様による安全な機能追加や容易なメンテナンスが可能となります。
エイムネクストの主な成果物
修正コード
報告書
自動テストコード
ソフトウェア仕様書
ソフトウェア設計書
テスト仕様書等
一般的な成果物
修正コード
報告書

弊社リファクタリングサービスの実績

大手製造メーカー

新しいアーキテクチャーへの移行プロジェクトで、半年に1回のリリースを行いながら段階的にリファクタリングを実施。
3年後には完全に新しいアーキテクチャーへ移行、クローンコードの大幅な削減に成功

大手精密機器メーカー

200個を超えるデータメンバーを持ち、100個近い関数と20個を超えるグローバル変数と直接関連している構造体のリファクタリングを実施。
EntryからExitまで11階層をトレースする必要のあったコードを2階層ですむようになる等、
複雑度を1/10程度に軽減

サービス実施の流れ

リファクタリング戦略の立案 発生している問題や改善ニーズを多角的に把握し「優先課題の整理」「目的の明確化」を実施します。
  • ・開発者・営業・マネージャなど関係者全体へのヒアリング
  • ・ソースコードの現状分析(技術的な負債、複雑度、設計上の歪みなど)
  • ・不具合やトラブルの発生傾向・再発パターン
  • ・gitなど修正のログの定量的な解析
リファクタリング計画策定 リファクタリングの影響範囲・依存関係の洗い出し
  • ・テスト順序、レビュータイミング、マージ計画などを含む具体スケジュール設計
  • ・啓蒙・教育活動も含めたコスト構造の明確化
  • ・自動化対象(テスト、フォーマッタ、CI/CD)の定義
  • ・ドキュメント(仕様書・設計書・テスト仕様)の再構築計画
リファクタリング実施 計画に基いてリファクタリングを実施しサイクルをまわします
  • ・リファクタリングに向けた単体テストの追加
  • ・コードの修正
  • ・テスト
  • ・マージ
リファクタリング成果を維持するための作業 リファクタリングの成果を一過性のものとしないため、意識改革のための支援を行ないます。
  • ・組織全体での教育・啓蒙活動の展開支援
  • ・運用ルール改訂の支援
評価・課題検討 リファクタリング後の効果を数値で把握し、次の改善へつなげます。
  • ・不具合件数の推移(対象範囲別に抽出)
  • ・gitなど修正ログの定量的な変化
  • ・レビュー時間やリリース頻度の変化
  • 上記に基づいた定量的な評価報告書の提出
  • ・今後の改善方針の提示(技術的負債の残存箇所や改善難易度)

FAQ

リファクタリングに投資対効果があるのだろうか? リファクタリング後はソフトウェア設計の改善により、不具合解析及びテスト工数の短縮、容易な機能追加が実現できるので、長期的な投資効果が大きくなります。
リファクタリングは2次不具合を埋め込むリスクが高いからやめたほうがいいのでは? 小さな修正、自動テストの繰り返しによって、コードの変更によるリスクを最小限にします。
リファクタリングなどせずに機能追加したほうが早く作れるのではないだろうか? 実際にその様なケースはあります。
弊社ではお客様へのヒヤリングを実施し、リファクタリングをすべきかどうかを事前に診断します。

関連リンク