Software Factories: Using Domain Specific Languages, Patterns, Frameworks and Tools to Assemble Applications
Languages specific to user interface design, database access, or telecoms processing (for example) free the developer to focus on the requirements at that level, while the complexities and best practice of implementation in those fields are captured in the executing frameworks. Developers on a large project or product line can increase the consistency and speed of their work - while reducing its repetetiveness - by evolving domain-specific languages in their most common areas.
The Software Factory pattern takes this idea a stage further, defining a graph of languages, patterns, frameworks and tools, and providing context-specific automation, support and guidance for the developer within each domain viewpoint. Appropriate tools and methods reduce the cost of adopting the pattern, making it cost effective for narrower and more specialized domains such as B2C application development, and business process automation.
In this tutorial, we explore the benefits, costs and risks of adopting the Software Factory approach - including both domain-specific languages and other forms of automation. We will demonstrate a variety of examples, and discuss the contexts in which they are adopted; we will go through some exercises in the design of software factories and DSLs.
Examples and demonstrations are used throughout to illustrate the concepts.