This is an old revision of the document!
|Q: How to use the principles in order to design software?|
|A: Normally you don't. The purpose of principles and principle languages is to assess designs, not to generate them. It's an analytical approach rather than a generative one. Nevertheless the wiki gives small hints. For each principle there is a “strategies” section which describes refactorings, patterns, and hints which might be applied in order to improve a design wrt. certain principles. This is not a replacement for a complete generative design approach but helps improving existing designs.|
|Q: Have you ever checked if the OOD Principle Language is consistent?|
|A: The relationships between the principles are not of a kind where a consistency check can be applied. The relationships are designed for being helpful for designers. They do not reflect any mathematically clear relationship between the principles which could be objectively checked. For example there is the “is-contrary-to” relationship. One might think that a consistency check could verify that there are no circles in this relationship. But that's not the case. In fact there is even a principle which is contrary to itself (MIMC). This is is not a problem since is-contrary-to does not mean, there is a logical contradiction between the principles. The only meaningful consistency rule would be to check that there are no cycles in generalization relationships.|