最初、SOA原則があり,次に アンチ原則が出てきた。 SOAのアーキテクトと開発者は、これらの本当の意味は何なのか、そしてそれらをどのように適用するのかを直も議論しているが、 Steve Jones氏が彼の 新しい投稿 で3つ目の概念、非原則を提示している。氏によれば、SOAを作成する(あるいは、この件に対するどんな他のソフトウェアの実装の)際に、あなたが、一般的に、扱わなければならないのは:
- 原則-良く見えて、それに対して測定できる
- アンチ原則-悪く見えて、それに対して測定できる
- 非原則-あなたはそれに対して本当に何も与えることができないもの ...
投稿の中で氏が,説明するように:
... 非原則...妙な概念のように聞こえるかもしれないが...何年もの間、本当に私に支払われてきた配当です。原則は、何をすべきかをいい、アンチ原則は、すべきでないことを言いますが、非原則は、あなたがささげられないものです。あなたが決定を下す時に、それは重要でない、とか考慮にいれない、とはっきり宣言します。何かを原則に対していいかどうか評価できますし、あるいは、非原則に対して、それが悪いかどうか評価できますが、非原則の目的は、それに対して物事を評価すべきでない、とはっきりさせることです。
このことを普通の言葉に翻訳すると-非原則とは、ある実装の非ゴールとして、明示的に定義されている何かである。非原則の導入により、時間と予算を守って出荷する能力が生まれる、この時、ある実装の表明されたゴールの一部ではない、品質要求のいくつかを無視するのである:
... 非原則は、非常にコンテキスト固有で、プログラマの見地から悪いとわかった知恵を本当に文書化する、ことについてなのです。非原則は、短い議論もやめさせ、無意味な打ち合わせをなくすので、あなたの時間を無駄にしません。非原則は、はっきりと何を無視するのかを言います。いいのか悪いのかを言いません。それに照らして測るべきではないからです...
彼の主張を証明するために、氏は、非原則の使用がプロジェクトの成功に役立った例を彼の参加したプロジェクトから示している。
SOAの実装で原則とアンチ原則の重要さについて議論するのは、難しいけれども、非原則の導入は、少々わざとらしく思える。ここでの問題は、実際は、非原則は存在しないが、むしろ、実装のゴールと結果として生じるアーキテクチャ上のトレードオフが存在することである。もし Jones氏の最初の例「パフォーマンスは問題でない」を取り上げると、これは、パフォーマンスは重要でない,という意味ではない。これの意味するところは、パフォーマンスが実装の最も重要なアーキテクチャ上のゴールではない,ということであるが、大抵は、ある実装に対して満たすべき(実際の数は、相対的に高くなり得るが)パフォーマンス制約は、依然として存在する。彼の次の例「データ品質は重要でない」は、またしても、新しいシステムは、不正確なデータを含んでいてもいい,という意味ではない。本当の意味は、データ品質の改善は、プロジェクトの直接のゴールとして表明されていない,ということである。
実装の総合的なゴールは何なのかを理解し、適切なトレードオフをすることが、極めて重要である、しかし非原則を完全に新しいカテゴリと見なすわけにはいかないようだ。むしろ、我々は、あるプロジェクトにとって本当に重要なものは何であるかを認識し、それに焦点を当てる必要があるようである。