近年のソフトウエア開発で問題になっているのが、レガシーコードの存在である。既存システムの改造・追加による派生開発が主流となっているからだ。また、短納期・低コスト、高品質の市場要望から、新規開発のシステム案件はほとんどない。 レガシーコードとは「何年も前に誰かが作り、内容が複雑で解析が困難でかつ、まともな仕様書もないソースコード」と定義されている。また「テストのないコードは、すべてレガシーコードである」という人もいる。このようなソースコードをベースに機能追加や改修を繰り返すと、コードが肥大化して思わぬ箇所でシステムの障害やトラブルが発生することがある。また、システム改修前の調査にも膨大な費用が掛かる。開発当時の関係者が退職していて改修を担当する会社も異なるため、よりどころも相談相手もいない。こうした開発状況が多々見受けられる。 組込みシステム技術協会(JASA)の「状態遷移設計研究会」では、