システムにおけるmaintainabilityとflexibilityのバランス感覚

maintainabilityとflexibility。

これらのキーワードは、Flickrの本を読んでいる & システム開発をしている今、とても気になる言葉です。

両者は対立する概念で、どちらかを優先すると、もう一方が失われます。つまり、maintainabilityを得ようとすると、flexibilityが損なわれ、逆に、flexibilityを得ようとすると、maintainabilityが損なわれます。

システムにおいて、これら2つのキーワードは重要です。

maintainabilityはシステムの寿命に影響します。maintainabilityが確保されていれば、システムのメンテナンスにかかるコストを低くすることができます。一方、flexibilityは、やりたいことを柔軟にチャレンジできるかどうかに影響します。flexibilityが確保されていれば、チャレンジしたいアイデアを手軽に実装できます。

システム開発者としては、システムに対してmaintainabilityとflexibilityの両方を確保したくなります。しかし、maintainabilityとflexibilityは対立する概念なので、どちらも得ようとするのは難しい問題です。

両方を最大限に得るのは難しいですが、maintainabilityとflexibilityの配分は、開発者の意思によって、自由に選択できます。

以下は、Webアプリケーションのフレームワークについて、最近感じていることです。

  • 作ろうとしているアプリケーションの複雑性をきちんと理解してから、フレームワークを選択しないと痛い目にあう
  • 時間の経過と戦略に応じて、maintainabilityとflexibilityの配分をどちらかにシフトできるようなフレームワーク(そんなものは存在するのでしょうか?)を採用するのも重要ではないか?

maintainabilityとflexibilityの配分問題は、今後も悩ましい問題です。。

Building Scalable Web Sites: Building, Scaling, and Optimizing the Next Generation of Web Applications

Building Scalable Web Sites: Building, Scaling, and Optimizing the Next Generation of Web Applications