アーキテクチャーとはバランスをとること

ソフトウェアアーキテクトの仕事と言うと、システムのモジュール化、インターフェイスの定義、責務の割り当て、パターンの適用、パフォーマンスの最適化といった技術的な仕事をまず思い浮かべがちです。アーキテクトは、その他にもセキュリティ、ユーザビリティ、サポート性、リリース管理、デプロイのオプションなどについて考える必要があります。しかし、ただそれだけではなく、これらの技術的、手続き的な問題と利害関係者のニーズ、感心事のバランスを上手くとらなければなりません。開発中のソフトウェアの要件仕様をより完全なものにするためには、「利害関係者とその感心事」を分析することが大切です。

企業がソフトウェアを開発するプロセスの中で、そして企業自体の中で、利害関係者とその関心ごとを分析すると、ソフトウェアアーキテクトに影響を与える本当の優先順位が明らかになります。ソフトウェアのアーキテクチャー設計とは、状況に合わせて短期的、長期的にこれらの優先順位のバランスをとることなのです。

たとえば、SaaS事業のエンジニアリング部門について考えてみましょう。この事業には、契約義務の履行、収益確保、顧客の好意的評価の確保、コストの抑制、価値の高い技術投資の創出といった優先項目があります。一方で、これらの優先項目の代わりに、ソフトウェアの機能、正確性、ソフトウェアの様々な品質要素(~性というもの)、開発チームの生産性の維持、開発事業の持続可能性と監査性、ソフトウェア製品の適合性と寿命などの部門の優先項目が全面に出てくる場合もあります。

アーキテクトの仕事は、ユーザーのために機能的で品質の向いソフトウェアを作ることだけではありません。CEOのコスト抑制に対する関心、オペレーションスタッフの管理しやすさに対する関心、将来のプログラミングスタッフの学びやすさやメンテナンスのしやすさに対する関心、そしてソフトウェアアーキテクトとして最良の実践を見せたいというあなたの関心を調整することも合まれるのです。

アーキテクトは、短期的にある優先項目を意図的に突出させる場合もありますが、本当によい仕事をするつもりなら、長期的ににバランスの取れた調整をすべきです。そして、バランスを考えるときには、ソフトウェアの予想される寿命、ビジネスにおけるソフトウェアの重要性、企業の技術的、財務的特性など、与えられた状況も考慮に入れなければなりません。

まとめれば、ソフトウェア・アーキテクトの仕事は、単に技術的な問題をクリアすることだけではなく、それら技術要件と、プロジェクトに関わる利害関係者のビジネス要件との間でバランスを取ることが求められるということです。