How to Build Successful DSL s. Jos Warmer Leendert Versluijs



Similar documents
Building a Flexible Software Factory Using Partial Domain Specific Models

Difference Between Model-Driven and Traditional Iterative Software Development

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

Development Process Automation Experiences in Japan

Programmabilty. Programmability in Microsoft Dynamics AX Microsoft Dynamics AX White Paper

Amit Sheth & Ajith Ranabahu, Presented by Mohammad Hossein Danesh

WHITE PAPER. Peter Drucker. intentsoft.com 2014, Intentional Software Corporation

Domain Driven Design and Model Driven Software Development

Designing and Developing Web Applications by using the Microsoft.NET Framework

Testing Tools using Visual Studio. Randy Pagels Sr. Developer Technology Specialist Microsoft Corporation

SOFTWARE TESTING TRAINING COURSES CONTENTS

Effective Team Development Using Microsoft Visual Studio Team System

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

What is a life cycle model?

YouTrack MPS case study

Application Lifecycle Management Using Visual Studio 2013 (SCRUM)

The ADOxx Metamodelling Platform Workshop "Methods as Plug-Ins for Meta-Modelling" in conjunction with "Modellierung 2010", Klagenfurt

JOB DESCRIPTION APPLICATION LEAD

Mindshare Studios Introductory Guide to Content Management Systems

Jos Warmer, Independent

Programmers rejoice: QML makes business people understand. Qt Developer Days 2014 Hinrich Specht 2. September 2014 Folie 1

Developing a Website. Chito N. Angeles Web Technologies: Training for Development and Teaching Resources

GSA2013: The Great SharePoint Adventure 2013

The Oracle Fusion Development Platform

BI xpress Product Overview

MDA Overview OMG. Enterprise Architect UML 2 Case Tool by Sparx Systems by Sparx Systems

Service Applications. Bye-Bye SSP Hello Service Applications. Presented By: Elijah Van Eenwyk

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT

CATALOG OF CLASSES IT and Technical Courses

Architecture Rules Enforcement and Governance Using Aspects

Rapid Development of Smart and Self-Adaptive Cloud, Mobile & IoT Applications - Accelerating the Last Mile of Cloud Computing

Day 1 - Technology Introduction & Digital Asset Management

Outline. Lecture 18: Ruby on Rails MVC. Introduction to Rails

ClickSoftware Training Offering For Customers

ASP.NET MVC. in Action JEFFREY PALERMO JIMMY BOGARD BEN SCHEIRMAN MANNING. (74 w. long.) WITH MVCCONTRIB, N HIBERNATE, AND MORE.

The Rap on RUP : An Introduction to the Rational Unified Process

Framework as a master tool in modern web development

MDE Adoption in Industry: Challenges and Success Criteria

Developing Fleet and Asset Tracking Solutions with Web Maps

ArcGIS Viewer for Silverlight An Introduction

Getting Started with Telerik Data Access. Contents

Developing Mapping Applications with ArcGIS Runtime SDK for Windows Mobile. Jay Chen Justin Colville

SPT2013: Developing Solutions with. SharePoint DAYS AUDIENCE FORMAT COURSE DESCRIPTION STUDENT PREREQUISITES

Software Design Specification

Visio 2010 Tips and Techniques

ACE 2011 International

PROJECT MANAGEMENT SYSTEM

100% NO CODING NO DEVELOPING IMMEDIATE BUSINESS -25% -70% UNLIMITED SCALABILITY DEVELOPMENT TIME SOFTWARE STABILITY

ASP.NET Using C# (VS2012)

HTML5. Turn this page to see Quick Guide of CTTC

CLOUD COMPUTING & WINDOWS AZURE

Automated testing for Mobility New age applications require New age Mobility solutions

Visual Paradigm product adoption roadmap

Microsoft Dynamics AX Windows 8 App Starter Kit. App Development Guide Version 1.0

Web Services - Consultant s View. From IT Stategy to IT Architecture. Agenda. Introduction

SharePoint Checklist and Resources

Aspire Systems - Experience in Digital Marketing and Social Media

Principles of integrated software development environments. Learning Objectives. Context: Software Process (e.g. USDP or RUP)

<Insert Picture Here> Building a Complex Web Application Using ADF and Siebel

João Diogo Almeida Premier Field Engineer Microsoft Corporation

WHITE PAPER DATA GOVERNANCE ENTERPRISE MODEL MANAGEMENT

A Software Development Platform for SOA

Cloud V/S On-Premise

EAI-Low Level Design Document

VAIL-Plant Asset Integrity Management System. Software Development Process

Real Time Embedded Software Development Using Agile Technology An Experience Report

Eclipse BPMN Modeler Introducing Intalio Designer

50 shades of Siebel mobile

Populating Your Domino Directory (Or ANY Domino Database) With Tivoli Directory Integrator. Marie Scott Thomas Duffbert Duff

CT30A8902 Service Oriented Architecture Exercises

Deltek Vision 7.0 LA. Technical Readiness Guide

Revel8or: Model Driven Capacity Planning Tool Suite

Requirements Management mit HP Quality Center / ALM

Category: Business Process and Integration Solution for Small Business and the Enterprise

... Introduction... 17

SHAREPOINT NEWBIES Claudia Frank, 17 January 2016

Welcome The webinar will begin shortly

Driven by a passion to develop our customers, SuperOffice has become one of Europes leading providers of CRM solutions.

zen Platform technical white paper

About ZPanel. About the framework. The purpose of this guide. Page 1. Author: Bobby Allen Version: 1.1

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Terms and Definitions for CMS Administrators, Architects, and Developers

Rapid Application Development with Bison Technology

Analysis of the Specifics for a Business Rules Engine Based Projects

Polyglot Multi-Paradigm. Modeling. MDA in the Real World. Stefan Tilkov

MENDIX FOR MOBILE APP DEVELOPMENT WHITE PAPER

Function Point Modeler Enterprise Edition A Software Lifecycle Management Tool

Transcription:

How to Build Successful DSL s Jos Warmer Leendert Versluijs

Jos Warmer Expert in Model Driven Development One of the authors of the UML standard Author of books Praktisch UML MDA Explained Object Constraint Language Partner at Ordina

Leendert Versluijs 20 years of specialization in latest Microsoft Technology Solution Architect at Ordina Software Factory

SMART-Microsoft

Agenda Introduction Process What Define Build Test Use Best Practices Summary

Introduction: Choose Your Environment Microsoft's answer to MDA and UML is their own flexible (meta-) modeling environment: Domain Specific Language Tools Solves the problems with UML Available as tools Create your own modeling languages Generation of visual editor within Visual Studio Part of the Microsoft Software Factory initiative

Introduction: DSL Workbench DSL Developer Domain Model Designer Templates DSL Setup Installation In IDE of application developers Manual code Application Models In DSL Generated code Application developers Working Application Domain Specific Framework

What: The Goal Modeling must be less work than coding Generate code that runs Being able to always re-generate Code always conform a reference architecture Only for reoccurring patterns Useable for junior developers

What: The Product Define type of similar applications Decide on the target architecture Write the code that needs to be generated by hand using a reference application Test and review the reference application

What: SMART-Microsoft Domain Medium to large scale administrative systems Based on Microsoft architecture Latest available Microsoft technology Service oriented Open standards Microsoft & open source components Clear, explicit choices

What: Application architecture Users Utilities Presentation layer User Interface components Communication Operational Management Security Ordina Core Framework Ordina DSL Specific Frameworks User Processes Business layer Service Interfaces Business Processes Business Workflows Business Classes Service Agents Data contract DTO View DTO Data Access Logic Components Data layer Data Service Agents Data sources Services

What: Framework selection Utilities Communication Operational Management Security Ordina Core Framework Log4Net Ordina DSL Specific Frameworks Users User Interface components User Processes Application Building Block Business Process (Validation) Microsoft (AJAX) UI Process (Translation for DTO s) Business Class Business Processes (Base classes) (Translation) Business Classes Controls (Business rules handling) Presentation layer Validation WCF (Custom (Behaviours) Business attributes) layer Service Interfaces Business Workflows Service Agents Data contract DTO View DTO NHibernate Data Access Logic Components Data layer Data Service Agents Data sources Services

What: The proof is in the eating

Define: Analyze the Code Static code is put into framework Re-occuring patterns are generated from a DSL The rest: keep writing the code by hand Tradeoffs : the division between putting something in the framework or generating code is iteratively being adjusted.

Define: Rules of the Game Define the concepts that you need in your DSL to generate the required code Focus on concepts above programming language level Keep a DSL small and simple Keep models for a DSL small Assume that you will need multiple DSLs Storyboard the models

Define: The Models Users Utilities Communication Operational Management Security Ordina Core Framework Ordina DSL Specific Frameworks Service DSL Web-Scenario User Interface components User Processes Service Interfaces Business Processes Business Classes DSL DSL Presentation layer Business layer View DTO Business Workflows Service Agents Data layer Data contract Data Contract DSL Workflow Foundation Sequential workflows DTO Data Access Logic Components Data Service Agents Data sources Services

Define: Business Class Model

Define: Data Contract Model

Define: Service Interface Model

Define: Web Scenario Model

Build: Usability Domain model Presentation and tool model Need Intellisense Need ease of use Need smart code generation Etc. etc.

Build: Code Generation Code generation templates (T4) Never change generated code, extend it Design extension points in generated code Code generation patterns Abstract Base Class GENERATED Partial Concrete SubClass GENERATED HAND WRITTEN Partial SubClass Extension

Build: Model Integration & Validation <@Page /> <HTML> <BODY> Hello World </BODY> </HTML> Class MyClass { public string Hello() { return Hello world ; } } DSL Specifiek Framework Class MyClass { public string Hello() { return Hello world ; } } DSL Specifiek Framework Generiek Framework Class MyClass { public string Hello() { return Hello world ; } } <Mapping> <Class> <Table> </Mapping> DSL Specifiek Framework CREATE TABLE MyTable FIELD1 int FIELD2 varchar(50)

Build: NDIP Ordina NDIP Code generation support Cross model validation DSL Intellisense support Propagate model changes Ordina Web Scenario Designer Ordina DTO Designer Ordina Service Designer Ordina Business Class Designer Output Output Output Output

Build: Visual Studio.NET Instant action on save Validation Generation Popups for complex editing tasks Generation of multiple files Cross project generation Files under model

Build: Validation & Generation Validation Only existing model Relations within and from model Properties T4 templates Helperfunctions for T4 Provided as embedded resource, not in client project Xml merging Need partial XML files (a la partial C# classes) Configurable Controls Unique identifiers

Test Rebuild the reference application with the DSLs and test them Test coverage: ensure all DSL concepts are used If necessary change reference application Just big enough Do this iteratively for each DSL Gradually rewrite reference application

Test: Best Practices Lotus massage salon sample app Business class relation types All types of DTO s Services all method types Web scenario all types and events

Test: Demo?

Use: Create Fertile Environment Workshops developed Underlying architecture, framework & components The DSL s Development process with DSLs Project support Life Wiki for how-to's Q&A Release management Keep technology up to date Add new functionality Release new versions of DSL s regularly

Use: Development Process Web-Scenario model Business Class model Data Contract model Maintenance functions Service model Scenario s Business functions Data Contract model Scenario Web-Scenario model Service model

Use: Projects First 3 successful commercial projects High volume transaction system Public internet application for large customer Extranet application for government 11937 Generated code 32926 Manual code

Use: Project Experience Version control / Team work Keep models small Consistency between models Manual changes Web pages after first generation Business processes & business rules Side effects Guidance how to use new technology

DSL Developer Domain Model Designer Templates DSL Setup Installation In IDE of application developer Define DSLs Application developers Test: rewrite reference application using DSLs Application Models In DSL Reference application is divided it into Generated code Domain Specific Framework Manual code Working Application Define your domain: decide on the reference architecture Write a reference application

Take Away s Keep DSLs small A DSL doesn t live standalone, you need an NDIP Model is the unit of version control, multiuser access, etc. Everything in a model is used for code generation Models are leading: never touch the generated code Don t aim for 100% code generation The success lies in the usage of your DSL