05/08/09 :: [MOP] MOP and Modularity [permalink]
Sanjiva pointed to a moderately interesting post on OSGI. In this post, Patrick Paulin argues that modularity and visibility represent major Software Engineering advances. He illustrates his argument with a quote from Steve McConnell:
Software development has advanced in large part by increasing the granularity of the aggregations that we have to work with.
As you know I despise monadic programming models (MPMs). They are the root of all pains and aches in Software Engineering. They are the very reason why you need to painfully define artificial boundaries and coercion (not cohesion). What's interesting is that as the granularity increases, you enter unwittingly the MOP space.
The key problem that Software Hobbyist are simply not getting is that ANY monadic programming model is bound to fail, be it based on Classes, Modules, Services, Resources, Processes, Functions or whatever you think is an appropriate abstraction. Some domains might give you the illusion that such programming models work because they indeed map well to a single concept but the reality is that as you expand your solution's foot print, monadic programming models will increasingly have difficulty to solve the problem. How many rules and programming guidelines can you define for coupling or cohesion before you realize you are on the wrong path? How many four-square diagram do you have to draw to understand that (physical) solutions are diverse. How many engineered systems are built with one concept (i.e. Legos) ?
MOP has three key principles:
- Cogent DSLs define a polyadic programming model (PPM)
- Every implementation element in the PPM is constrained by the elements of the metamodel it is allowed to manipulate, unlike MPMs which let you manipulate anything anywhere.
- The rules of the implementation element programming models are defined in a M3 layer and therefore can be reused across different metamodel elements, but more importantly can differ from one metamodel element to the next
When will the Software Hobbyists understand that both anemic DSLs and monadic programming models are dead? They don't exist, only they see them and create billions of worthless LOCs and googabytes of dirty data.