近年のソフトウエア開発で問題になっているのが、レガシーコードの存在である。既存システムの改造・追加による派生開発が主流となっているからだ。また、短納期・低コスト、高品質の市場要望から、新規開発のシステム案件はほとんどない。

 レガシーコードとは「何年も前に誰かが作り、内容が複雑で解析が困難でかつ、まともな仕様書もないソースコード」と定義されている。また「テストのないコードは、すべてレガシーコードである」という人もいる。このようなソースコードをベースに機能追加や改修を繰り返すと、コードが肥大化して思わぬ箇所でシステムの障害やトラブルが発生することがある。また、システム改修前の調査にも膨大な費用が掛かる。開発当時の関係者が退職していて改修を担当する会社も異なるため、よりどころも相談相手もいない。こうした開発状況が多々見受けられる。

 組込みシステム技術協会(JASA)の「状態遷移設計研究会」では、レガシーコードを“蘇生”させる手法の研究に取り組んでいる。状態遷移の漏れ・抜けに気づきやすいという特性を持つ「状態遷移表」を活用する。既存のレガシーコードをリバースモデリングにより構造解析し、潜在している状態遷移を抽出して状態遷移表を作成するプロセスの研究だ。本稿では研究会の活動テーマである、この「レガシーコードの蘇生術」を紹介する。