SSブログ

ビルドやテストも考慮したアーキテクチャ設計 [ライブラリ、フレームワーク、アーキテクチャ設計]

大規模なソフトウェア開発では、ビルドやテストも考慮したアーキテクチャ設計(あるいはシステム設計)が必要です。どのモジュールから順番にビルドして、テストできるかは、プロジェクト全体の開発効率に非常に大きな影響を与えます。

レイヤ構成のアーキテクチャであれば、当然、下位レイヤからビルド/テストを行い、それが上手く行けばその上のレイヤをビルド/テストするという順番で行うことが可能となります。

一方で、上手く出来上がった時には、確かに全体として機能するはずであるけれど、ビルドやテストが非常に面倒なシステム設計も可能です。このような設計では、ビッグバンインテグレーションが行われることがあったりします。そして、ちょっとした仕様変更でも多くの工数を必要としたりします。

アーキテクチャの検討において、ビルドやテストも考慮した議論が行われずに、単純に「機能が実現できるかできないか」という視点に陥る場合があります。ソフトウェアはどのような作り方をしても、工数さえ問わなければ、機能を何とか実現できます。しかし、実際の開発では、様々な要因が開発工数と品質に影響を与えます。下手すると、機能追加が非常に面倒なシステムが出来上がるかもしれません。

ソフトウェア開発では、ビルドやテストが困難なアーキテクチャ設計(システム設計)は、何かが間違っているのではないかとか、同じ機能を提供するもっと良い設計はないのかと考えてみる必要があります。