Thoughts on Software Factories
Thursday, August 12th, 2004The MSDN Software Factories page is up and running (and worth keeping an eye on).
The Software Factories web site defines a software factory as: A Software Factory is a software product line that configures extensible development tools like Visual Studio Team System with packaged content like DSLs, patterns, frameworks and guidance, based on recipes for building specific kinds of applications.
I’ve had the opportunity to participate in the creation of this type of system for an order management product (a couple of years ago) and to say the least, it was a very interesting experiment. As a result of the creation of the system, the business was able to realize substantial value when new customers were enlisted for the product suite. The software factory approach worked very well because the company was an application service provider based around B2B procurement solutions. Although this is a big space, the majority of companies are using similar workflows and have (roughly) similar objectives and pain points in their current solutions. We were able to take the time to implement an end-to-end solution (previously done in a one-off manner) from approximately 6-7 months to 2-3 months (for full life cycle). The development time was drastically reduced.
We were able to automate the majority of the construction of an implmentation for a new customer and get them up-an-running very quickly. The presentation, business logic, and workflow layers each were split into their own domain-specific languages and the data layer could be reused across all of the customer implementations. The data layer was able to stay common because we mapped all of the customer-specific document formats (think edi, flat-files, etc.) to an internal standard. The presentation, business, and workflow layers were usually able to be at least partially generated and then hand-modified for customization. All of our domain-specific languages were written in xml (similar to NAnt) and although we didn’t have any graphical tools, we were able to use XSD and XML Spy to provide autocomplete functionality and syntax highlighting.
Overall, I really liked the software factory approach. It was a good fit in this case because of the repetitive work that was done by the ASP to implement solutions for their customers. It’s nice to see some movement in this space, and I think we’ll likely see a lot more moving forward.

