Monday, April 10, 2006

MS NS-DSL

Just listened to the ArCAST 7 podcast with Steven, Martin Danner and Jack Greenfield. It sure is worth taking the first 12 minutes or so to listen to, before a bit of a sour Jack Greenfield comes in to start spoiling all the fun with awkward comparisons between monocycles and Ferrari's, axes and scalpels, wine and vinegar (that last one is kind of a meta one, describing the actual podcast). Possibly, the repetative slips in the DSL tool release schedule made Jack a bit edgy...

I do think I get his point though and again it comes down to the focus area of MS, which - all things considered - really is not so domain-specific: Enterprise applications (presumably based purely on dotNet). No wonder Jack does not believe in fully generating applications from models, something that - by the way - is being done already for over 12 years! Key to achieve it is to make the modeling language very domain-specific: I am talking company-specific-product-line-specific-kind-of-specific here: You need to be able to specify products completely and accurately with it. When you realize that some info is repetitive you can either encapsulate that in the generator or the framework code. Now then, if all the needed info is the models, then why Jack, would you not be able to generate the full application from them??

Jack further disagrees with Martin's claim that UML is an OO-specific modeling language (read: DSM focused on OO software development) and coins the term "General Purpose Language" that he suggests in "The Book" (He NEVER misses an opportunity to mention "The Book", you have got to give him that...). Come on Jack, can't you see that the example Martin provides is a rather excellent way for people to get the idea of "Domain-Specific"? Besides, may I suggest that the term you coin in "The Book" is not completely correct? Since we are busy anyway of making sure we do things entirely correct, a better description would be "General Purpose Modeling Language".

Then again, would you call a DSL to describe "web services" - an example I have seen in one of your slides at OOP - a DSL? I'd say it also qualifies as a rather general purpose modeling language or a Not-So-Domain-Specific-Language, a NS-DSL.

My take on the thing is that Jack seems to be missing the point and has recently started to focus on details in comparisons that no one really cares about. Before long people will get tired of hearing exactly how, where, when, why, what for, where not, and from what viewpoint SF differs from MDA and exactly how DSM differs from both SF and MDA, whether we should call DSM languages DSLs or Not-So-DSL or Not So General Purpose or whether we should call MDD MDA or SF or MDSD or DSM....yawn...as Markus Völter said on the recent OOP "Dass ist doch Alles Quatsch" and I fully agree with him.

Point is that we wish to use modeling to raise abstraction, make software development less complex, make it faster, make it more convenient more accurate and more reliable. MDA seems to miss a number of these goals, SF is still shrouded in mystery to many and DSM is clear on this: It achieves them all.

Thursday, April 06, 2006

Factory Factory Factory Factory

I noted in GarethJ's weblog that Microsoft uses its own DSL tool for making its own DSL tool. This is an interesting approach as no doubt will it allow them to renew or vary its DSL tool REALLY REALLY fast.

At MetaCase with MetaEdit+, as Steve noted in his interview with Codegeneration.net: "DSM is useful when you are building a range of similar products. We have just the one, so it makes no sense for us in general." I wonder therefore why Microsoft has taken the Factory Factory Factory Factory approach in making its own Factory.

You can only make a Factory Factory if you know enough about the types of Factory the Factory will be ehr...factoring. This makes me think of the direction Redmond is going with their Software Factory: Enterprise Applications, an area I personally do not see all that well suitable for a domain-specific modeling language-based approach (whether you call it Software Factories or DSM), since the variation space is so wide. Hence it is no wonder that Microsoft does not expect their tool will generate 100% of the code. In order to make it work you need to narrow down the domain in some way and this is tricky when it comes to enterprise apps. You could think of a platform like hmmmmmmm .NET or a subdomain of it, but it means at the same time you restrict yourself to just that.

Would the rumor I heard about the Microsoft DSL tool license agreement be true?