Customers — designers conflicts

The customers (and potential reusers) would like the system to be as fine grained when it comes to representing the variability to minimize specialization effort, whereas the designers wants to have a coarse grained representation which is easier to develop and maintain. This can be exemplified with a class hierarchy, the customers wanting a fine grained and deep hierarchy, whereas the developers will strive for a coarse grained and shallow. But even for the reusers there will be an advantage of a more coarse representation as it will be easier to understand. This conflict is continued between the reusers and maintainers of the components.

There is also a second source of conflict concerning variability which relates to combination of different functionality, i.e. someone wants to combine two pieces of functionality which were not designed together. This problem is similar to feature interaction in telecom systems and multiple inheritance problems in object-oriented programming. Thus for every pair of differing requirement we should perform an analysis to see if they can be needed together, and if that is possible in our design.