Software Factory Elevator Story
To start the ball rolling, I thought I’d write down the Software Factory elevator story. People are always asking us “Can you please just quickly summarize what one is?” That’s right, boil down a 600 page book, and thousands of words in white papers and articles to just three points. So here’s what I think are the key ideas, resisting the urge to expand on them here (that’ll come later).
1. Models are first–class artifacts in software development
Model-driven development uses higher levels of abstraction than code oriented development to reduce the complexity of the development process, to enable faster response to changing technologies and requirements, to make developers more productive, and to make development projects more predictable. It is a continuation of the constant migration of platforms and tools to higher levels of abstraction that has characterized software development since its inception as a discipline. Models designed to be used as source artifacts can support analysis and validation, provide holistic views of otherwise scattered details, and streamline communication between different groups involved in designing, building and deploying complex modern applications. Such models do not get out of sync with the software because unlike models acting only as documentation, they define the software, and must be changed to change the software.
2. There is no single, fixed collection of DSLs that can be pre-specified for all kinds of applications
To be effective, models are instances of well-focused, inter-related DSLs arranged into a collection that provides layers of useful abstractions with which to specify, design, build and manage applications. Each collection should be customized so that the collection overall exactly meets the needs of specific families of applications – like e-commerce, financial arbitrage or home banking – that have a well-defined architecture, and well-defined dependencies on platform frameworks and components. Common features of applications in the same family, and how each may family member may differ, should be clearly identified. How each member of a family should be built depends on how variability highlighted in the family architecture is mapped to variability in the requirements the family is designed to meet. Software product line thinking emphasizes the importance of well-defined architecture, and sets the context for effective reuse.
3. It’s about more than just models
Also important are customized development processes – matched to the specific needs of the architecture and assets of the application family. Likewise for frameworks, components and patterns – these should be arranged for use by the developers and architects in a way that is custom-fit for the family of applications. Developers should not be forced to scan through catalogs and repositories in the hope that they can find something to reuse. Note that models are used not only for analysis and design. With Software Factories, models are used to support many varied types of computation across the entire software life cycle – even at run time – a fundamental principle of Microsoft’s DSI Strategy. Model-driven deployment, operations and management tools are equally important. Ensuring design metadata and runtime metadata is available wherever it can be utilized is a key principle of Software Factories.
Comments
Anonymous
March 08, 2005
Umm, your elevator story doesn't work because you're defining one compex, hard to understand, phrase ("Software Factory") in terms of another complex, hard to understand phrase ("Domain Specific Language"). Actually, it's worse because happen to know that DSL stands for Domain Specific Languge.
The point of an elevator story is to give someone who may be intellingent but isn't versed in the terminology (aka, most IT manager) an idea of what the project is for and why it's important.
Food for thought...Anonymous
March 08, 2005
Yep - good point. I thought this might happen. I should have at least pointed to many past postings here, at the blogs of colleagues, and other articles for an explantion of this term. Thanks for the comment.Anonymous
March 09, 2005
Good description.Anonymous
March 09, 2005
I did spend a year in Marketing at my last job and helped write a bunch of elevator speeches. Here's an attempt to distill this post into a 30-second elevator speech:
"Software Factories make software projects less complex and developers more productive via three key principles. First, models become an integral part of the code: they provide the focus for design and specification efforts, manage all the scattered details, and most importantly the code cannot be changed except via the model. Second, each model is a concrete instances of a "domain specific language" that provides a collection of common architectural elements for a specific family of applications, e.g. e-commerce, financial arbitrage, or home banking. Third, Software Factories allow developers to easily locate the models needed for a custom application and support the necessary computations at runtime. In short, Software Factories bring together design and runtime metadata across the entire development lifecycle, and support model-driven development, deployment,operations, and management."Anonymous
March 09, 2005
Mike, I like your short version - thanks. I think I can see a few ways to improve it though. I'll post later in the week.Anonymous
March 10, 2005
I like Mike's elevator story better, but it still presupposes an understanding of domain specific languages - do the common architectural elements essentially boil down to the equivalent system architecture patterns? Since I am just now exploring what is meant by DSL, I am a perfect representation of an IT manager that does not know anything
;-)Anonymous
March 13, 2005
Hi Keith.
Could you shed some light (or point to information to) on how Software Factories relate to MSF (if at all).
From what I can tell both seem to be software development methodologies proposed by Microsoft and I have seen separate information on each of them but I have not seen any information on how they relate.
Thanks
Fredrik SjodinAnonymous
March 16, 2005
The comment has been removedAnonymous
March 17, 2005
As part of my response to the previous feedback item, I meant to plant a reference to information on MSF. HEre it is:
http://lab.msdn.microsoft.com/teamsystem/workshop/msfagile/default.aspxAnonymous
May 26, 2009
PingBack from http://castironbakeware.info/story.php?title=keith-short-s-blog-software-factory-elevator-storyAnonymous
May 26, 2009
PingBack from http://backyardshed.info/story.php?title=keith-short-s-blog-software-factory-elevator-storyAnonymous
May 29, 2009
PingBack from http://paidsurveyshub.info/story.php?title=keith-short-s-blog-software-factory-elevator-storyAnonymous
June 08, 2009
PingBack from http://quickdietsite.info/story.php?id=3301Anonymous
June 09, 2009
PingBack from http://insomniacuresite.info/story.php?id=9160Anonymous
June 15, 2009
PingBack from http://mydebtconsolidator.info/story.php?id=2127