<<< Previous speaker Next speaker >>>

Alan Cameron Wills, Microsoft Corporation

 Alan Cameron Wills

Alan Cameron Wills is a software architect in the Enterprise Frameworks and Tools group in Microsoft. He was previously a consultant in analysis and development methods with Trireme International Ltd, mentoring groups in a wide variety of fields. He co-developed the Catalysis approach to component based development.

Alan is a frequent presenter at conferences, and is a member of the SoSYM editorial board. His PhD was in the application of formal methods to object-oriented programming, and he is a Chartered Engineer with the British Computer Society.

Tutorial: "Software Factories"

Track:   Tutorials

Time: Thursday 09:00 - 12:00, 13:00 - 16:00

Location: SAS Nortvegia

Abstract:

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.