Last
week Beat
Schwegler and Ingo Rammer visited Israel with the Software
Factories Seminar (The link is to the same seminar presented in Finland - videos are in English)
Software
Factories is not a new idea - see for
example "Software reuse: From Library to Factory" by M. L. Griss
(published in 1993(!)) which talks about "Software Factories" and
"Domain Specific kits": components, frameworks, glue languages
etc. The current Microsoft incarnation of Software Factories takes a
similar approach focusing on Domain Specific Languages, Frameworks but also
adding important aspects like multiple viewpoints, patterns and designers. The idea is
that building on modern technologies, as
well as learning from the mistakes from sister approaches to code generation
(OMG's MDA, in case you are wondering) will enable us to build something that is
useable.
Microsoft
seems to be taking some steps in the right direction (GAT is probably the best example). Nevertheless
there is still a long way to go before we can realize the dream of
"factories" for vertical applications
This
is evident if you take a look at the
current crop of DSL examples. These are either some Horizontal languages and tools
(i.e. not aimed at a specific business domain) like UIP designer or the
GAT4WS beat talked about @ the event or even worse UML designers... ('nuff said).
The
other thing is, that developing real factories, and getting them right is a really
complicated task, which requires a lot of domain knowledge and effort. In the recent Microsoft
Architect's Journal there's an article by Jack Greenfield and
Mauro Regio regarding a software factory for the Health Level 7 ( a standard
for Health organization collaboration) - As far as I know this project has been
under way for more than a year now (first time I heard about it was Feb. 2005)
and yet the article ends with :
"Our
experience in developing a factory for HL7 collaboration ports
has
shown that we need to define better frameworks, tools, and processes
to
specify the factory schema, to manage factory configuration
in
a flexible and extensible way, and to better understand how
and
when domain-specific languages should be used."
My expericen with MDA shows similar results. Nevertheless,
they continue to say that:
"At
the same time, initial implementations of extension mechanisms like GAT and
DSL
have proven their value, filling significant gaps in software factory
infrastructure,
and pointing to future innovation in that area.
So,
maybe there's hope after all :)