2024年2月29日に、『「仕様書無し」「前任者不在」でドキュメントがないシステム開発現場の悩み リバースエンジニアリングを外注する前になすべきこと」』というセミナーを、バルテスグループでWeb/モバイル/XR開発を手掛けるバルテス・モバイルテクノロジー株式会社(VMT)の主催で開催しました。今回はその講演内容のポイントについてご紹介します。
本当にやるべきはリバースエンジニアリングなのか
本セミナーで取り上げたリバースエンジニアリングは、動くソフトウェアのコードや振る舞いから仕様書などのドキュメントを作ることを指しています。
「仕様書無し」「前任者不在」というシステム開発現場では動くソフトウェアしか頼れるものがなく「そこからドキュメントに落とし込めるならば」というご相談いただくことが多くなっています。
しかし、リバースエンジニアリングは上記のようなお悩みの現場で最適解と言えるのでしょうか。
多くの開発現場で直面する問題は、単にドキュメントの欠如だけではなく、その根底にあるシステムの設計や運用方法の課題に起因しています。例えば、システムの使い勝手が悪いからといってドキュメントを整備するだけでは、根本的な問題解決には至らない場合が往々にしてあります。
弊社では、ドキュメントを作成するためにリバースエンジニアリングを行うといった依頼を受けた際には、その背後にある本当の問題を明らかにし、解決策を模索して当たっています。
本講演では、リバースエンジニアリングによって業務が大幅に改善した例と、実はリバースエンジニアリング以外の方法が最適であった例を取り上げ、どのような場合に適しているのかを考察します。
さらに、弊社のリバースエンジニアリングの標準的な進め方もご紹介します。
解決の糸口は仕様書作成の他にある。ドキュメントでは解決しなかった事例
システム開発は、思い通りに進むとは限りません。たとえば、開発の途中で方向性が変わったり、思っていた以上に複雑なカスタマイズが必要になったりすることがあります。そんなとき、プロジェクトの進行を再検討しなければならないこともあります。今回ご紹介するのは、まさにそのような事例です。
ある企業様が開発中に悩みを抱えて、弊社にご相談を頂きました。
パッケージシステムのカスタマイズを行って作りかけているものの、現状で使い勝手が悪くどうにか改善したいというご相談です。
当初、ご担当者の念頭にあったのは、すでに半分作りかけているシステムがあるのだから、リバースエンジニアリングによって仕様の整理を行い、機能の整理や使い勝手の改善をしていこうというものでした。
このような状況でリバースエンジニアリングというご相談を受けたのですが、弊社はまず、お客様の要件を徹底的にヒアリングしました。その結果、リバースエンジニアリングでドキュメントを整備するよりも、新しい視点からシステムを見直すことが重要であることが分かりました。
具体的には、現行の使い勝手の悪いシステムに基づく設計書を起こして、そこからまた新しい設計を考えた場合、大変非効率であることが予想されたため、改めて必要な機能を持つシステムをゼロから設計するアプローチのほうが、コストやスケジュールを試算すると効率的であると考えられたのです。
結果、企業様は新しいシステムの設計と開発に着手し、以前よりも使い勝手の良いシステムを構築することができました。この事例は、ドキュメント整備だけに頼るのではなく、根本的な問題解決のためにシステム全体を見直すことの重要性を示しています。
このようなアプローチにより、弊社は企業様の本来の問題を解決し、最終的に満足のいく結果を提供することができました。システム開発においては、常に柔軟な対応と深い理解が求められることを改めて実感させられた事例です。
リバースエンジニアリングが適しているのはどんな時かを考える
次に、ドキュメント整備が必要だった事例を取り上げ、リバースエンジニアリングが適しているのはどんな時かを考えてみたいと思います。
リバースエンジニアリングは、特定の状況下で非常に効果的です。特に、ドキュメントが整備されていないシステムのメンテナンスや改修において、その真価を発揮します。例えば、ある企業の情報システム部門でシステムが長期間にわたって運用されている場合、属人化が進行しがちです。つまり、システムの知識が特定の担当者に依存し、その担当者が異動や退職した場合、システムの運用が困難になることがあります。
ある企業では、長年にわたり一人の担当者がシステムを管理していたため、新しいメンバーがその担当者の知識を引き継ぐのが難しくなっていました。担当者の異動に伴い、システムの全体像や各画面の連携が不明確となり、新しい担当者がシステムを迅速に理解するのが困難でした。このような場合にリバースエンジニアリングを実施し、システムの画面遷移図や機能一覧、画面設計図、テーブル設計書を作成することで、システムの全体像が明確になり、属人化の問題が解消されました。
また、システムの保守性向上にもリバースエンジニアリングは有効です。不具合が発生した場合、その影響範囲を迅速に特定するのは難しいことがあります。しかし、適切なドキュメントが整備されていれば、不具合の影響範囲を迅速に切り分けることができ、問題解決がスムーズになります。例えば、あるWebアプリケーションシステムでは、保守運用フェーズにおいてデータの不整合による障害が頻発していました。データの不整合は、システムの使用中に発生する予期しないエラーや不具合の一因となります。この問題に対処するために、リバースエンジニアリングを用いてテーブル設計書やER図、画面遷移図を作成し、データの状態やシステム全体の構造を明確にしました。その結果、不具合の原因を迅速に特定し、問題解決までの時間を大幅に短縮することができました。
このように、リバースエンジニアリングを活用することで、システムの運用におけるさまざまな問題を解決することができます。ただし、すべてのドキュメントを網羅的に作成することはコストや時間の面で現実的ではありません。そのため、必要なドキュメントを厳選し、最も効果的なものだけを作成することが重要です。例えば、ある企業ではドキュメント整備の一環として、画面遷移図、機能一覧、テーブル設計書などの基本的なドキュメントを作成しました。これにより、システムの全体像を把握しやすくなり、不具合発生時の影響範囲の特定が迅速に行えるようになりました。
実際にリバースエンジニアリングを導入した企業の事例では、ドキュメントの整備によりシステム運用が大幅に改善されました。例えば、特定のWebアプリケーションシステムでは、リバースエンジニアリングを通じて作成されたドキュメントにより、データ不整合問題の発生頻度が減少し、システムの安定性が向上しました。また、属人化の問題も解消され、新しい担当者が迅速にシステムを理解し、運用に参加できるようになりました。このように、リバースエンジニアリングを適切に活用することで、システムの運用効率が向上し、企業全体のIT戦略に貢献することができます。
一方で、リバースエンジニアリングには一定のコストが伴います。ドキュメント作成に必要なリソースや時間を考慮し、全てのドキュメントを網羅的に作成するのではなく、目的に応じて必要なものだけを作成することが重要です。例えば、ある企業では、データ不整合の問題を解決するためにテーブル設計書とER図を作成し、システムの全体像を把握しやすくしました。また、画面遷移図や状態遷移図を作成することで、各機能の関係性やシステムの動作状況を明確にしました。このように、必要なドキュメントを厳選し、最も効果的なものだけを作成することで、リバースエンジニアリングの効果を最大限に引き出すことができます。
リバースエンジニアリングが適しているのは、システムの属人化が進行している場合や、不具合発生時の影響範囲を迅速に特定する必要がある場合です。また、システムの保守性を向上させるためにも有効です。適切なドキュメントを整備することで、システムの運用効率が向上し、企業全体のIT戦略に貢献することができます。企業の情報システム部門においては、リバースエンジニアリングを活用することで、システムの属人化を防止し、保守性を向上させるための有効な手段として検討する価値があります。
以上のように、リバースエンジニアリングは特定の状況下で非常に効果的な手法です。ドキュメント整備を通じてシステムの全体像を明確にし、属人化の問題や保守性の向上を図ることで、システムの運用効率を大幅に向上させることができます。企業の情報システム部門においては、リバースエンジニアリングを積極的に活用し、システムの安定運用と効率的な保守を実現することが求められます。
リバースエンジニアリングの成功を導く8つの手順
最後に、弊社VMTが考えるリバースエンジニアリングを成功させるための8つの手順を 紹介します。詳細は下記画像をご覧ください。
リバースエンジニアリングのプロセスは、単なるドキュメント作成ではなく、システム全体の理解と効果的なリソース管理を伴う複雑な作業です。最初に戻って考えることは、ドキュメント作成が本当に必要かどうか、他の解決策がないかを検討することです。その上で必要なドキュメントを絞り込み、体制を整えて効率的に進めることが、成功の鍵となります。8つの手順は、リバースエンジニアリングを成功させるための重要なガイドラインです。
バルテスグループでは、リバースエンジニアリングを通じて、ソフトウェアの品質向上を図る様々な手法を提供しています。今回のセミナーで紹介した内容を参考にしていただき、具体的なご相談がある場合はお気軽にお問い合わせください。また、関連するセミナーのダイジェスト版も公開しておりますので、そちらもぜひご覧ください。リバースエンジニアリングを通じて、より良いシステムの構築に役立てていただければ幸いです。