1. HOME
  2. ソリューション
  3. 問題の発見:レガシーシステムを「見える化」

問題の発見:レガシーシステムを「見える化」

組込みシステム開発では、短納期・低コスト要求により派生開発が主流ですが、レガシーシステムの理解不足により副作用や対応漏れが発生し、結果的に工数が増加してしまいます。

派生開発を成功させるには、開発者の主観に頼らず、静的解析(ツリーマップなど)を用いてレガシーシステムを工学的に可視化し、客観的に問題を把握することが重要です。複数の解析手法を組み合わせることで、より効果的な問題発見が可能になります。

定量分析

定量分析とは、分析対象を複数の観点から数値化し、それを元に分析する方法です。ソフト品質に着目した「ソフトウェア・メトリクス」を使うことが主流です。これは、例えて言うなら、健康診断で血液の成分を定量分析した結果を使って、健康状態をざっくり把握するのと同じです。

しかし、これだけでは「問題があるかもしれない」ことしかわかりません。更に、状況を把握するためには、より具体的でかつ分かりやすい方法を導入する必要があります。

ツリーマップ(専有面積の大きさが要素の大きさを、色が要素の複雑さ示す。大きく複雑な関数は、改善の対象となり得る。)

上図は、要素の規模と複雑度を「ツリーマップ」という可視化手法で表現したものです。「ツリーマップ」は、二次元平面上の領域を入れ子状に分割することによって、木(ツリー)構造のデータを効率的に可視化する手法です。規模が大きく複雑な要素が、どこに、どのくらいあるのかが視覚的・直観的にわかり、リファクタリング対象を選ぶのに役立ちます。

構造解析

構造解析とは、対象ソフトウェアのプログラム構造やモジュール構造を明らかにして分析する方法です。これは、血液の成分検査と同様に例えて言うなら、レントゲン検査のようなものでしょうか。

レントゲン検査では、X線が透過しやすいものと、透過しにくいものがあるという性質を利用して、透過しにくいもの(骨や肺)の状態を可視化します。

分析対象の「解析すべき点」のみを抽出して可視化する方法です。

パッケージ依存関係(パッケージ(ディレクトリ)間の依存の度合いと方向性を把握できる。これは、まだ良い方の図。もっと複雑なものになると、クモの巣状になり、一つ一つの線が見えないほどになる。)

上図は、構造解析によって得られた「パッケージ依存関係」を図式化したものです。

パッケージ(ディレクトリ)間にどんな依存関係があるのか、依存関係の多さと複雑さはどうか、循環依存が生じていないか、などを解析することができます。

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

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

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

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

コンサルタントが教える成功の秘訣

シニアスペシャリスト 玉木淳治

品質が低下したレガシーコードの保守に頭を悩ませる開発現場のエンジニアは、みなさまざまな問題認識を持っています。問題を改善していくためには、現場での困りごとを発生させる要因となっているソフトウェア設計上の問題を、客観的事実による裏付けとともに明らかにしなければ、大きな改善効果は望めないのではないでしょうか。

「レガシーシステム」の可視化と改善のサービスでは、ソースコードの調査と現場エンジニアへのヒアリングを通し、設計の問題点を把握することからスタートし、ソフトウェア構造のあるべき姿を設計する支援や、「リファクタリング」を進めるためのプロセス設計・運用の支援まで、ソースコードの改善をトータルに支援いたします。

レガシーコードの品質にお困りの方は、ぜひ私たちにご相談ください。

玉木淳治

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

適用支援

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

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

適用支援

要求仕様書作成サービス

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

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

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

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

最新コラム