User Tools

Site Tools


about:frequently_asked_questions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
about:frequently_asked_questions [2013-09-01 14:07] christianabout:frequently_asked_questions [2013-12-09 14:30] (current) christian
Line 8: Line 8:
  
 ^ Q: Why is [[principles:Low Coupling|LC]] contrary to [[principles:High Cohesion|HC]]? It rather seems complementary. ^ ^ Q: Why is [[principles:Low Coupling|LC]] contrary to [[principles:High Cohesion|HC]]? It rather seems complementary. ^
-|A: This depends on the design decision which should be taken. Suppose you have the task of modularizing a software into classes. There is a certain amount of [[glossary:essential complexity]] which needs to go somewhere. Either complexity is in the classes (leading to few, complex, less cohesive but loosely coupled modules). Or complexity is between the classes (leading to many, simple, cohesive modules with more complex couplings). The extreme cases would be to have one single module (extremely low cohesion and no coupling at all) or hundreds of tiny modules communicating with many others (very cohesive but strongly coupled). Here you can see the contrary nature of the relationship. Another contrary aspect is that the cohesion of classes directly corresponds with the internal coupling of its methods. Of course there are plenty of situations where LC and HC are rather complementary. But the goal of the relationship is not to represent a hard and fast relationship but simply to be useful. Contrary relationships point to possible downsides and when coupling is considered, you should keep an eye on cohesion so it doesn't create a disadvantage and vice versa. |+| A: This depends on the design decision which should be taken. Suppose you have the task of modularizing a software into classes. There is a certain amount of [[glossary:essential complexity]] which needs to go somewhere. Either complexity is in the classes (leading to few, complex, less cohesive but loosely coupled modules). Or complexity is between the classes (leading to many, simple, cohesive modules with more complex couplings). The extreme cases would be to have one single module (extremely low cohesion and no coupling at all) or hundreds of tiny modules communicating with many others (very cohesive but strongly coupled). Here you can see the contrary nature of the relationship. Another contrary aspect is that the cohesion of classes directly corresponds with the internal coupling of its methods. Of course there are plenty of situations where LC and HC are rather complementary. But the goal of the relationship is not to represent a hard and fast relationship but simply to be useful. Contrary relationships point to possible downsides and when coupling is considered, you should keep an eye on cohesion so it doesn't create a disadvantage and vice versa. | 
 + 
 +^ Q: Some relationships seem to be missing. ^ 
 +| A: In this case there are two possibilities. Either a relationship is missing indeed. Then you may just add it. This wiki is still work in progress and will ever be. On the other hand there are relationships which are deliberately not there. It is important to understand that the documented relationships are not mathematically clear, academic relationships. Rather it a relationship expresses the fact that in a situation where principle A is considered, B might be worth considering, too. That means, the relationships "is-contrary-to" and "is-complementary-to" are //not// symmetric, although they sound like they should be so. For example considering [[principles:Keep It Simple Stupid|KISS]] is very often a good idea and one would want to navigate to KISS from various other principles as it is contrary to very many of them. On the other hand one would not want to navigate to all the other principles KISS is contrary to, when considering KISS. So this relationship is not documented as it would be purely academic and not helpful at all. |
about/frequently_asked_questions.1378037262.txt.gz · Last modified: 2013-09-01 14:07 by christian