ソフトウェアのアーキテクチャについて
ソフトウェアにおけるアーキテクチャとはどういったものでしょうか。アーキテクチャの意味と、検証との関わりについてご紹介します。
1. アーキテクチャとは?
アーキテクチャの英語の意味は建築ですが、ソフトウェアは当然建築ではないです。では、ソフトウェアのアーキテクチャというのはどんなものでしょう?
アーキテクトと呼ばれるアーキテクチャを設計している技術者に聞いても皆が同じくこれがアーキテクチャであるという一つの定義は未だされていません。あくまで以降は筆者の私見ではあります。
私の考えでは、実際の建物が、建築されたのちにさまざまな用途に利用されるように、ソフトウェアシステムの骨格となってさまざまな目的のシステムを作るために利用される考え方の集合のようなものだと考えます。
ならば、ベストな一つのアーキテクチャを習得すれば万事OKかと言えば、そんなことはありません。
アーキテクチャは本質的には選択と制約であり、何を守り、何を捨てるのかという決定であるからです。
2. 選択とは?
アーキテクチャに必要とされる選択とはなんでしょうか?
システムの品質を測るための枠組みとしてSQuaREシリーズで定義されている指針があります。よく品質特性と呼ばれていたものです。
ここではさまざまな品質に関する特性が定められていますが、ある特定のシステムについて重要な品質特性は何かを選択するのがアーキテクチャに必要な選択です。
なぜ、選択をしなければならないのか?品質は良い方がいいに決まっているから全部よくすれば良いじゃないかとも思うでしょうが、品質特性の中には本質的に排他であるような項目があるため、全部を良くするということは実際にはできることではありません。
例えば、要求される事項を正確に実現するために必要なシステム上のデザインと、少ない資源で事項を実現できるようにするためのデザインでは、デザインとして相反する要素が含まれていることは想像できると思います。
このため、今回の、この目的のシステムについて、ステークホルダーがより重要と思う品質はなんであるかを考察し、選択して決定するのが良いアーキテクチャへの第一歩であります。
3. 制約とは?
選択された品質特性を守るために、ソフトウェアのデザインに対して、守るべきルールを定め、実際に守らせることを制約と呼んでいます。
より良い制約は、考えなくても守らなければデザインが成せないようなものになっています。
こういった制約は、ソフトウェアの開発者に対しては、自分の思ったようなデザインができなかったり、作ろうとしているロジックでは許されなかったり、作るのに手間がかかるため歓迎されないこともあります。
アーキテクチャは最終的な製品の品質のためにあるものであり、往々にして課される制約は開発者にとってみれば厳しいものであることがあります。
4. アーキテクチャと検証
検証サービス事業部にはアーキテクチャの設計を行うようなメンバーも所属しており、設計から検証までをお任せいただくことも可能です。
アーキテクチャの検証は、機能性だけでなく品質特性のさまざまな側面からの計測が重要になっており、それぞれのシステムで重要とされる品質特性をどのように計測するのか、また計測された値をどのように解釈するのか、このアーキテクチャは良いものであるのか、問題があるのかなど、通常のデザインの検証とは異なる観点から行う必要があります。
また、検証だけにとどまらず、お客様のアーキテクチャ設計時において、必要なサポートや設計自体をお任せいただく体制を組むこともできます。
是非、ご相談をお待ちしております。