Conferenceで,モデルを使用したマイグレーションについて講演した。InfoQでは氏にインタビューして,レガシソフトウェアをメンテナンスする上での問題点,手作業によるリファクタリングでのエラーの問題,コードベースのリファクタおよびマイグレーションにおけるモデルの利用,レガシソフトウェアをメンテナンスする上でのモデル利用のメリットなどについて話を聞いた。私たちの場合,実際に大きな問題が2つありました。コードベースが肥大化したことと,その結果として,ソフトウェアに短期間で新機能を追加することが難しくなったことです。中心的な機能はこの15年間,それほど変化していません。ソフトウェアチームの顔ぶれは変わりました。新たに加わったメンバは,システムの中心機能を大きく変更するリスクを取りたくありませんでした。アダプティングやリファクタリングなどをしないで,コードベースの拡張を続けてきたのです。その結果,コードベースは8倍にまで膨れ上がりました。コードベースが拡張するにつれ,イノベーションも停滞しました。業界の標準値では,ひとりの技術者がメンテナンスできるのは,50,000LOCから100,000LOCのコードとなっています。ソフトウェアチームの大半は,新しい機能を開発するのではなく,既存のコードベースのメンテナンスを行っていたことになります。ヘルスケア分野のソフトウェア技術者の品質値は高いのですが,それでも私たちソフトウェア技術者は誤りを犯しがちです。文献によると,技術者が起こす初期不良の数は,一般的には100LOCあたりバグ2件と言われています。私たちのシステムは高い品質基準を必要としますので,このようなバグはテスト組織にとって負担ですし,不必要なリワークを発生させることにもなります。私たちが実際に導入したモデルベースのマイグレーションとは,古いコードベースをモデルベースの設計アプローチに移行させるためのリファクタリングです。古いコードベースやドキュメントを解析することで,古いライブラリやフレームワークに隠されているモデルを見つけ出すのです。TNO-ESIの仲間たちと一緒に,ソフトウェアマイニングとリバースエンジニアリングを行って,ソフトウェアの挙動を変動を説明するためのモデルを抽出しました。それに対比するものとして,あるべきアーキテクチャを表現する別のモデルを作成しました。した上で,モデル対モデルの変換を使って,“旧”モデルのインスタンスを新しいモデルのインスタンスへと転換したのです。して作成した新モデルのインスタンスからコード生成を行って,新しいアーキテクチャの反映と,新しい技術の導入を同時に行いました。ひとつだけだった単純なコントロールレイヤを複数のアーキテクチャコントロールレイヤに,Philips独自のUIフレームワークをドキュメントやサポートリソースの充実した業界標準であるQtフレームワークに,それぞれ置き換えました。することで全体をシンプルに,メンテナンスの容易なものにしたのです。Healthcareのユースケースは,非常に特殊なものでした。システムをサービスするフィールドサービス作業が,複数のフレームワーク上に開発されていたのです。これがアーキテクチャ上のオーバーヘッドを発生させ,テスト作業を増やす原因になっていました。経費的な理由から,手作業によるリファクタリングは選択肢とはなりませんでした。私たちはTNO-ESIの協力を得て,このモデルベースのマイグレーションアプローチが実現可能か,開発計画に影響することのないプロジェクトとして実施可能かを検討しました。アプローチのプロトタイプを実施して,技術と計画の両面で,十分に満足のいく結果が得られたので,アーキテクトや管理部門に報告して意見を求めました。その結果,彼らもこのアプローチと,それに期待できるメリットを認めてくれたのです。このメリットを一刻も早く現実のものとするため,プロジェクトとして実施することが決まりました。Wezep:結果として,フィールドサービス作業の面では十分な成果がありました。フレームワークとフィールドサービス作業のインスタンスをすべて合わせると,コードベースは膨大なものになっていましたが,モデル転換とコード生成を行った結果,レガシコードベースのわずか70%にコードベースを削減することができました。標準的な生産性基準である毎時6LOCに対して,36LOCにまで生産性を向上させることもできました。手作業によるマイグレーションもプロジェクトとして計画されていたのですが,それを前倒しで実施できただけでなく,80%という素晴らしいコスト削減も実現したのです。モデルのみをメンテナンスすれば,ボタンを押すだけでコードを生成できるので,コードの更新も容易になりました。システムに関する知識も取り戻しました。今回作成したモデルはフィールドサービス作業とシステム操作のエッセンスを表しています。これも大きなプラスです。実際のところ,リファクタリングや再設計にモデルベースアプローチを使用するという,このような特定の方法を扱ったリソースはあまり多くはありません。このアプローチをもっと学びたいと思うのでしたら,私たちに連絡して頂くのがよいでしょう。2015の講演のように,私たちの経験を共有できることを,とても嬉しく思っています。