Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Lessons learned in building a model driven software factory


Published on

These are the slides of my talk at Code Generation 2010. I share my experiences during the development of a Model-Driven Software Factory. This factory is based on multiple Domain-Specific Languages (DSLs), together describing a Service-Oriented Business Application. All DSLs have a graphical concrete syntax and are aimed at involving domain experts in the software development process. The factory has been used for many projects in the last five years and its user base is growing fast.

Published in: Technology

Lessons learned in building a model driven software factory

  1. 1. Lessons learned in building a Model-Driven Software Factory Johan den Haan Head R&D Mendix @JohanDenHaan
  2. 2. IT costs a lot, but is not fast enough to meet Business Agility wishes
  3. 3. We are going to fix it today!
  4. 4. Join me on my journey
  5. 5. Viewpoints Context A basic Model-Driven Software Factory Releasing the product Growing a user base
  6. 6. What kind of business problems do we want to solve?
  7. 7. Application characteristics  Time-2-market  Flexible  Integration with commodity applications  Portal / Rich user interface  Domain knowledge
  8. 8. Who is our target user?
  9. 9. Lessons learned  Product dev. starts with a customer need  MDD asks for repetition  First step in building a MDSF is domain definition  Make a clear choice about your target user  Define the most important domain concepts  Think about a methodology early - it will influence your DSL design and tool
  10. 10. Browser Styling & user interaction CSS, HTML, JavaScript Client-side logic Server communication JVM Java Flows & actions API & connectors Access rules ORM Database SQL Data
  11. 11. Browser Styling & user interaction CSS Client-side logic Rich Forms DSL Server communication JVM Microflow DSL Flows & actions API & connectors Mapping DSL Access rules Security DSL ORM Domain model Database Data
  12. 12. How to support our target users?  Model should be easy to – Read – Browse – Search – Keep consistent  Deployment – Should be easy / non-technical – Model execution / interpretation – Cloud infrastructure
  13. 13. Lessons learned (1)  Interpretation is a viable alternative for code generation  Use model checks to prevent errors early  Make sure you can navigate and search  Make DSLs as declarative as possible  Prevent property explosion  Create flexibility for unforeseen uses
  14. 14. Lessons learned (2)  Do not only focus on development phase  Deployment can be slow – compliance with code style, architecture, server config, etc.  Cloud infrastructure can automate deployment  Grow your factory bottom-up  Always look at existing standards first
  15. 15. Applications build with our product will suffer from a double release cycle
  16. 16. We need an extension mechanism
  17. 17. How to ensure quality?
  18. 18. Lessons learned (1)  Put effort in documentation, training, and templates  Create flexibility to prevent double release cycle troubles  Release management is much easier with a plugin infrastructure  Be always backwards compatible
  19. 19. Lessons learned (2)  Deprecate model structures and provide alternatives for breaking changes  Create (semi-)automated tests using test models  Learn from reported bugs  Do not only test the technical implementation
  20. 20. Why should he use our product?
  21. 21. We should focus on partners, but do some lighthouse projects ourselves
  22. 22. Make it easy to start
  23. 23. How to create an active user base?
  24. 24. Lessons learned (1)  Make it compelling for partners to use your product – what’s in it for them?  Start doing lighthouse projects yourself  Sell business solutions to business people  Eat your own dog food  Integrate ‘community tools’ in modeling environment
  25. 25. Lessons learned (2)  Use a reputation system for your support forum  Give partners incentives to build reputation  Create a place to download an share templates, extensions, etc.  Make it compelling for partners to publish content
  26. 26. Viewpoints Context A basic Model-Driven Software Factory Releasing the product Growing a user base
  27. 27. Lessons learned in building a Model-Driven Software Factory Learn more: Read more: Connect: @JohanDenHaan