大規模になる一方の現在のソフトウェア開発では、全体構造の把握と部分詳細の分析を常に繰り返す事が非常に重要になります。 追加しようとしている機能はアーキテクチャに対してどのような影響があるのか? どういった手段を取れば効率的に、かつ矛盾なく実現できるのか? この一見複雑に見える箇所は必要な複雑さを持っているのだろうか?それとも単に単純な問題を複雑にしてしまっているのだろうか? など、設計や実装に携わる人が配慮しなければならない事柄が多岐に渡るからです。
ソフトウェア開発というのは面白いもので、全体構造だけを見て部分詳細を見なければ、アーキテクチャーは徐々に崩壊を招きます。 その逆も同様で、部分詳細だけを見て全体構造を見なければ、頓珍漢な実装を招いてこれも結果的にアーキテクチャーを破壊することになります。 大規模なソフトウェア開発というのは、全体構造と部分詳細の視点を変えながら、常にバランスよく全体を隅々まで観察する必要があり、これがよく言われる「木を見て森を見よ、森を見て木を見よ」の由縁なのです。
ひと昔前では考えられなかった規模ですが、今では数万行から数十万行、時には数百万行から数千万行にも及ぶソフトウェア開発は珍しいものではなくなりました。 全体設計も、実装分析も、クラス図をノートに手書きしていた牧歌的な時代は過ぎ、手で書けない規模になったわけです。
少し前、日曜日の昼下がりに開発ツールについて調べていたところ、Enterprise Architectなるソフトウェアを見つけました。 これはいわゆるモデリングツールに分類されるもので、ソフトウェア開発の世界で使用されるありとあらゆる概念をモデリングできるというもの。
(上記の画像をクリックするとEnterprise Architectの日本語版を提供しているスパークスシステムズ ジャパンさんのウェブサイトに飛びます)
特筆すべきは、コードからのクラス図生成機能で、試しに手元にあった3万行ほどのC++コードをコード読み込み機能に与えてみたところ、何の問題もなくクラス図に変換できました。 今まで、この手の機能を持つソフトウェアを試す度にその結果にがっかりしていたので、これには本当に感動しました。
出来上がったクラス図と自分の設計とを見比べて、確かに設計通りに実装されている事が、出力されたクラス図でみるみるうちにわかります。 「あぁ、確かに設計意図通りの構造だ。美しい。」と確信を持てるようになったのです。
この試行をきっかけに、「純粋にソフトウェア開発は知的で楽しいものなんだよな」と久しぶりに思い出しました。 しかも、このEnterprise Architectにはプラグイン機構が備えられており、独自に機能拡張ができるみたいです。 そこで、休日の一日を使ってEnterprise Architect向けのアドインを実現し、大規模ソフトウェア開発をもっと創造的な世界にする事を楽しもうと考えました。 素敵なツールを作ってくれた人達の世界に触発されたのかもしれません。