A principle is a generalized, accepted industry practice. In other words, it’s something others are doing or promoting in association with a common objective. You can compare a principle with a best practice, in that both propose a means of accomplishing something based on past experience or industry-wide acceptance.
When it comes to building solutions, a design principle represents a highly recommended guideline for shaping solution logic in a certain way and with certain goals in mind. These goals are usually associated with establishing one or more specific design characteristics (as a result of applying the principle).
Figure 1 – The repeated application of design principles increases the amount of common design characteristics. In this case, the coupling between solution logic units A and B has been loosened (as indicated by a reduction of connection points).
For example, we can have a principle as fundamental as one that states that solution logic should be distributable. Applying this principle results in the solution logic being partitioned into individually distributable units. This then establishes the distinct design characteristic of the solution logic becoming componentized. This is not only an example of a very broad design principle, it is also the starting point for service-orientation.
The eight design principles documented in SOA: Principles of Service Design provide rules and guidelines that help determine exactly how solution logic should be decomposed and shaped into distributable units. A study of these principles further reveals what design characteristics these units should have to be classified as “quality” services capable of fulfilling the vision and goals associated with SOA and service-oriented computing.