P&P Summit Day Four: Architectural Guidance w/ Software Factories
If yesterday was mostly about Agile, then today is definitely going to be about Software Factories from the P&P group. The keynote speaker for today is Jack Greenfield an Architect at Microsoft. His talk was over the theory of the software factories, what they are, and why we should care.
Software Factories deal with the challenge of using the general purpose platform (.NET and the tools like VS.Net, etc.) to reach your unique solution requirements. Between these two is a gap that includes knowing the business, software requirements, architecture, implementation, and patterns and guidance. The choices made about the items within this gap are very important and have a high impact on the project. Software factories help you make these decisions by following best practices, using appropriate technologies and avoiding anti-patterns. The software factories are a way of providing guidance for answering the questions in this gap and make that information use repeatable and reusable, while also increasing productivity.
The software factories are a collection of tools, libraries, code snippets, documentation, and architectures that can be used to make questions in that gap easy to answer. Remember that while you have unique solution requirements, they may not be as unique as you think. There are standard sets of requirements that meet the core of what you need and then some truly custom requirements. The software factories are meant to answer that standard set of core requirements while providing a means for extensions to make things to meet your unique solutions.
In practice what all this means is that if you want to build a smart client you could use the Smart Client Software Factory to understand the things you need to think about, best practices in designing it, test architectures to think about, and even code snippets that are prepared for immediate use. This is an installed piece of software that you can use to produce your smart client, or your web service, etc.
Software factories are based on four pillars:
-
Architectural Guidance
- Automation is the key - infuse this information into the tools the people are using.
- Have templates and declarative automation (recipes)
- Documentation, checklists, etc.
- They do this with the GAT Guidance Automation Toolkit
-
Model Driven Development
- Being able to make enough assumptions about how guidelines, patterns, and templates will be used within the context of a specific model.
- Using tools to make intention of a piece of code evident to anyone. For example, defining the model and then generating the code from that model. This makes the intention of the code an actual artifact of the process rather than being stuck in a document somewhere.
- Using Domain Specific Language to help aid development within a domain. Check out the Domain Specific Language Toolkit from MSDN.
-
Architecture Frameworks
- Identifying the stakeholders for the architecture and their viewpoints.
- Be able to describe the different types of architectures. Software factories do this with a schema (not an XML schema), or a set of viewpoints and relationships of those viewpoints.
-
Software Product Lines
- Thinking about more than one project at a time and planning across them.
- Build new solutions by assembling, configuring, applying pre-defined assets.
- Build solutions by putting together pieces you already have to do what you need, customizing only what you need to.
Bringing these pillars together generates a software factory that can be used to produce a focused solution that can be customized where necessary.
What’s in a software factory?
- A factory template - guidelines, patterns, code samples, etc. used to create a type of solution.
- A factory schema - a model that describes the software factory based on viewpoint. Checklists and assets of what needs to be done to produce the solution.
A good high level overview of what software factories are for. Not the most entertaining talk, but definitely informative about the vision and goal of these factories they are producing.