1. HOME
  2. ソリューション
  3. 解決策の立案

解決策の立案

「何が問題」で「なぜ問題」なのかを明確にし、
症状に応じた解決策を立案する

解決策を立案するためには、まず「何が問題」で「なぜ問題」なのかを明確にする必要があります。それを怠ると、見当違いな結果となってしまい、達成したい効果を得ることができません。問題を確実に掴んだうえで、症状に応じた解決策を立案します。

ここでは、ツリーマップから得られる「サイズが大きくて複雑な関数」の解決策を立案します。

下図は、「派生開発」で複数機種に対応したことで、問題が生じた関数の例です。

「派生開発」で機種が増えるにつれ、関数内部の機種による色分けは、徐々に複雑にまだらになっていく。このような関数は、複雑機種を共通化したのではなく、単に一本化・統合化しているだけといえる

問題は「肥大化・複雑化」、なぜ問題かは「バグの温床になる」から

上図のように、対応する機種が増えることによって作りこまれた「肥大化」と「複雑化」は、保守性を低下させます。例えばA機種のみに対する変更があった場合、このような「肥大化」した関数は、変更箇所を見つけることが難しく、また、変更箇所も分散しています。そして「複雑化」したことで、深いネストと入り組んだ制御構造を持つ関数は、誤った対応を誘発します。

解決先は「判断と実行の分離」

このようなケースでは、関数を分割することで、品質を改善することが可能です。まずは、機種ごとに処理を実行する部分を特定し、それを関数として切り出します。そして、それらを呼び出す関数を作ります。すなわち、機種の「判断」と、機種ごとの「実行」を分離します。こうすることで、特定機種への変更を局所化し、変更しやすいコードに改善することができます。

「派生開発」でA機種のみに変更が発生した場合、改善前では関数全体にわたって、A機種部分を探さなくてはならない。それに比べ、改善後では変更部分を探すのが簡単で、なおかつ変更が局所化される

頑張ってるけど、ちっとも楽にならない…何で?

すぐに成果を出すために頑張ってるけど、自前ではもう限界

効果的だろうけど高額なコンサルには手がでない…

あなたに合う一番最適な解決方法を
エクスモーションがご提案いたします。

レガシーリファクタリングの関連サービス

適用支援

レガシーリファクタリング実施支援サービス

ソースコード診断による問題の把握から、あるべき姿への改善まで、設計技術支援とプロセス設計によって、レガシーコードの改善を総合的に支援します。

適用支援

要求仕様書作成サービス

「要求仕様書」を作成したいのに作成する工数が取れないといったお客様に向けて、エクスモーションが制御仕様書や機能仕様書などの既存資料の調査や開発者へのヒアリングを行って「要求仕様書」を作成します。

「リファクタリング」による品質改善についての理論を学び、問題発見・コードの変更・CIフレームワークを使ってのテストまでを実践する本格的トレーニングです。テスト自動化ツール「Google Test」とCIフレームワーク「Jenkins」を使用します。

レガシーリファクタリングに関する記事を見る

他のソリューションを見る

最新コラム