リファクタリング支援

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

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

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

01

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

02

仕様書や設計書を作成し、誰でも理解しやすいコードになるため、メンテナンスが容易になります。

03

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

サービスのポイント

既存の追加開発/派生開発への影響を最小限に抑えて実施します リファクタリングは、ソースコードの振る舞いを変えない小さな変更を積み重ねることで実現します。その小さな変更の一つ一つが完全にテストされ、変更前の動作を保ちながら実現されます。従って、稼働中のソースコードにリファクタリングを行っても、その影響はほとんどありませんので、機能追加と並行して実施することが可能です。
方法論・人材・ツールの三方面からの堅実なアプローチをします 弊社の提供するリファクタリング支援は、開発経験が豊富で各種言語やプラットフォームに精通したエンジニアが開発現場に常駐し、お客様の担当者様と直接コミュニケーションを取りながら実施するため、コミュニケーションギャップを最小限に保っております。
担当者は多くの開発現場で培ったノウハウを活かし、現場に即した方法論でリファクタリングを実施します。また、リファクタリングの戦略立案から技術者の教育まで、幅広いサービスを提供します。
ツールは内製/外製、有償/無償を問わず、幅広い選択肢から、お客様の現場に最適なものを導入し、活用します。具体的には、自動テスト支援ツール、静的解析ツール、リファクタリングブラウザなどを駆使し、作業の精度向上と省力化を実現します。
方法論 人材 ツール 図2

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

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


一般的なリファクタリングサービスの多くは修正コードや報告書のみが主な成果物となります。しかし弊社ではリファクタリングと並行して、「ドキュメント構築」、「自動テストコード作成」も行なうことも可能です。
ドキュメント構築 全くドキュメントがないソフトウェアであってもコード修正と並行して、ソフトウェア仕様書や設計書、テスト要項書等のドキュメントを構築しながらリファクタリングを進めます。これにより今まで実装者しか理解できなかったコード内のノウハウを掘り起こし、お客様のソフトウェア資産の価値を高めることができます。
自動テストコード作成 ソフトウェアテストの自動化により、テスト工数の削減はもちろん、今後お客様による安全な機能追加や容易なメンテナンスが可能となります。
エイムネクストの主な成果物
修正コード
報告書
自動テストコード
ソフトウェア仕様書
ソフトウェア設計書
テスト要項書等
一般的な成果物
修正コード
報告書

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

大手製造メーカー

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

大手精密機器メーカー

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

サービス実施の流れ

リファクタリング戦略の立案 弊社のリファクタリング支援では、まず最終的な目標となる「あるべき姿」を定義した上で作業を実施していきます。そのため、現状のソースコードやドキュメント類のチェック、管理層や開発担当者へのヒヤリングを実施し、「あるべき姿」とそこに至るための作業手順の方針を提案させていただきます。
リファクタリング計画策定 リファクタリング計画と開発スケジュールを突き合わせ、ローリスクな実現方法を検討し、数回に分けた詳細な単位での計画に落とし込みます。
リファクタリング実施 まず、正規のソースコード管理から分岐させたリファクタリング用プロジェクトを作成し、そのソースコードに対して状況に応じた変更を行います。この変更は、自動テストを導入しながら迅速かつ慎重に作業を進めていきます。
正規ソースへのマージ 1単位の作業が終了した時点で、正規のソースコードにリファクタリング後のソースコードをマージします。マージは弊社独自のマージメソッドによって慎重/確実に行います。
評価・課題検討 動作確認終了後、これまでの作業で浮上した課題を整理し、次の計画を再検討します。計画当初では見えなかった問題を踏まえて次の単位を実施します。また、正規の開発計画に変更があった場合でも計画に大きなインパクトを与えることなく次の計画へと進むことができます。これは小さな単位でのリファクタリングを実践する大きなメリットです。

FAQ

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