Magnus Christerson Henk Kolk Domain Expert DSLs

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites & 1 Event

    Magnus Christerson Henk Kolk Domain Expert DSLs - Presentation Transcript

    1. E A ™ INT NTION L S O F T W A R E Domain Expert DSLs Magnus Christerson Intentional Software Corporation Henk Kolk CTO Financial Services, Capgemini
    2. The Challenge Business to accelerate Business Domain Expert Collaboration Innovation Programmer Software main tool © 2008 Intentional Software Corporation
    3. The Key Players Domain Expert Programmer © 2008 Intentional Software Corporation
    4. A brief history of software • A struggle to distinguish and treat separately problem and program 1954: © 2008 Intentional Software Corporation
    5. Software progress? public CodeTable() { rgcod = new ArrayList(); } public ArrayList rgcod; 2008 1963 public void Pass4(XCOD xcod, int i, NTE nte) { Console.WriteLine(\"P4: \" + xcod.ToString()); this.rgcod.Add(new MICOP(xcod, i, nte)); } public MICOP MicopLast() { return (MICOP)this.rgcod[this.rgcod.Count - 1]; } public void DeleteLastMicop() { this.rgcod.RemoveAt(this.rgcod.Count - 1); } public void Px() { Console.WriteLine(\"Produced code\"); int i = 0; foreach (MICOP micop in this.rgcod) { Console.WriteLine(\"{0,4}\\t{1,-14}\\t{2}\\t{3}\", i++, micop.xcod.ToString(), micop.i, micop.nte == null ? \" \" : micop.nte.ToString()); } } © 2008 Intentional Software Corporation
    6. A brief history continued • When we fail to treat separately the problem and the program – The problem and the program get mixed up creating the complexity we hear about – Complexity becomes (problem x program), not (problem + program) – We get stuck with improving the resulting complex mess © 2008 Intentional Software Corporation
    7. Complexity of scrambled eggs • Scrambled • Before preparation • Neatly arranged on plate – after CASE slide? © 2007 Intentional Software Corporation
    8. Input + Process • Scrambled • Before preparation • Neatly arranged on plate – after CASE slide? © 2007 Intentional Software Corporation
    9. After refactoring ;-) © 2007 Intentional Software Corporation
    10. Software Development Today public CodeTable() { Domain Knowledge } rgcod = new ArrayList(); public ArrayList rgcod; public void Pass4(XCOD xcod, int i, NTE nte) { Console.WriteLine(\"P4: \" + xcod.ToString()); this.rgcod.Add(new MICOP(xcod, i, nte)); } public MICOP MicopLast() { return (MICOP)this.rgcod[this.rgcod.Count - 1]; } Edits public void DeleteLastMicop() { this.rgcod.RemoveAt(this.rgcod.Coun t - 1); } public void Px() { Console.WriteLine(\"Produced code\"); int i = 0; foreach (MICOP micop in this.rgcod) { Explains Edits Console.WriteLine(\"{0,4}\\t{1,- 14}\\t{2}\\t{3}\", i++, micop.xcod.ToSt ring(), micop.i, micop.nte == Domain Expert Programmer null ? \" \" : micop.nte.ToString()); } } © 2008 Intentional Software Corporation
    11. Intentional: Input + Process public CodeTable() { Domain Code Generator } rgcod = new ArrayList(); public ArrayList rgcod; public void Pass4(XCOD xcod, int i, NTE nte) { input output Console.WriteLine(\"P4: \" + xcod.ToString()); this.rgcod.Add(new MICOP(xcod, i, nte)); } public MICOP MicopLast() { return (MICOP)this.rgcod[this.rgcod.Count - 1]; } Creates Edits public void DeleteLastMicop() { this.rgcod.RemoveAt(this.rgcod.Coun t - 1); } public void Px() { Console.WriteLine(\"Produced code\"); int i = 0; foreach (MICOP micop in this.rgcod) { Console.WriteLine(\"{0,4}\\t{1,- 14}\\t{2}\\t{3}\", i++, micop.xcod.ToSt ring(), micop.i, micop.nte == Domain Expert Programmer null ? \" \" : micop.nte.ToString()); } } © 2008 Intentional Software Corporation
    12. Analogy: Blog Software As viewed As edited (input) As generated © 2008 Intentional Software Corporation (output)
    13. More ”Input + Process” Analogies • DNA – Growing an organ, e.g. Optic nerve – Brevity of DNA makes evolution possible • Kolmogorov complexity © 2008 Intentional Software Corporation
    14. Separating and Weaving Domains Business Domain PowerPoint Orientation Domain Word Excel Workbench Business Experts Ruby Programmers Java/C# C/C++ Computing Power Non-executable Executable © 2008 Intentional Software Corporation
    15. Key Benefits • Domain Expert participation feasible – domain knowledge isolated from technology • Separation of concerns – complexity is reduced • Programmers create a more valuable artifact: Generator –weaves domain input with Software Engineering knowledge © 2008 Intentional Software Corporation
    16. Domain Orientation Trends: • Domain Specific Languages (DSL) • Code Generation/Generative Programming (GP) • Domain Specific Modeling (DSM) • Domain Driven Design (DDD) • Model Driven Development (MDD) • Meta Programming • ... © 2008 Intentional Software Corporation
    17. What prevents DSL mainstream use? • Integrate Domain Experts fully – Matching existing notations – Mixing graphical/textual notations • Multi-domain – Compose independent domains – References between domains • Domain evolution, domains must be able to evolve without limitations (structure and notation) • Groupware for domain experts © 2008 Intentional Software Corporation
    18. Programming Languages as Base? • Programming languages as the model leaves major issues: – Text-only not satisfactory – Parsing requirement constrains language design – Multi-domain is unaddressed – Domain evolution is unaddressed – Current groupware (CM) not feasible for domain experts © 2008 Intentional Software Corporation
    19. Intentional Domain Workbench • Bring domain orientation to a new level by changing software creation to truly integrate Domain Experts © 2008 Intentional Software Corporation
    20. Def Domain Workbench (Martin Fowler) 1. Users can freely define new domains, including languages, that are fully integrated with each other. 2. The primary source of information is a persistent abstract representation. 3. Domain designers define domains in three main parts: schemas, editors, and generators. 4. Domain users manipulate a domain through a projectional editor. 5. A domain workbench can work with incomplete and contradictory information. CONFIDENTIAL © 2007 Intentional Software Corporation
    21. Inside the Domain Workbench public CodeTable() { rgcod = new ArrayList(); } public ArrayList rgcod; public void Pass4(XCOD xcod, int i, NTE nte) { Console.WriteLine(\"P4: \" + xcod.ToString()); this.rgcod.Add(new MICOP(xcod, i, nte)); } public MICOP MicopLast() { return (MICOP)this.rgcod[this.rgcod.Count - 1]; } Projector Generator public void DeleteLastMicop() { } this.rgcod.RemoveAt(this.rgcod.Count - 1); public void Px() { Console.WriteLine(\"Produced code\"); int i = 0; foreach (MICOP micop in this.rgcod) { Console.WriteLine(\"{0,4}\\t{1,-14}\\t{2}\\t{3}\", i++, micop.xcod.T oString(), micop.i, micop.nte == null ? \" \" : micop.nte.ToString()); } Projectional editor Intentional Tree } (Schema) © 2008 Intentional Software Corporation
    22. Intentional Tree • Extendible, uniform representation • Strong identities throughout • No fixed meta-levels • Versioned Domain Code Domain Schema storage Return Def Assign... • Separated Assign Def Div... concerns a Div b Plus c 1 © 2008 Intentional Software Corporation
    23. Projectional editing • Separates underlying representation from notation (syntax) • Works in two directions: output and editing • Special selections that take tree structure into account • Large number of notations for: – matching existing notations – multi-domain – ambiguity resolving – domain evolution • Can also edit Programs, Schema, Generators
    24. Some Notational Examples or or or © 2008 Intentional Software Corporation
    25. Integrate Domain Experts •• Projectional editor supplies appropriate notation Matching existing notations • Mixing notation graphics / text • Projectional editor decouples domain code from notation – Multi-view, embedding, extension… • Graphics / text are treated uniformly • Notation can change on domain or other selected boundaries © 2008 Intentional Software Corporation
    26. Multi domain • Compose independent domains • References between domains • Tree structure accommodates composition • Inter-domain references connecting domains © 2008 Intentional Software Corporation
    27. Domain evolution • Tree storage is independent of schema – will not “break” if schema changes • Notation can keep up with evolution • Further parameterization is always possible • Independent concerns can be added without interfering with others © 2008 Intentional Software Corporation
    28. Groupware • Tree storage requires rethinking groupware – Change logs for fully general solution – Edit “conflicts” are a “mini domain” – integrated with notations – Versioning and audit trails • Familiar metaphors: versions, branches, open, update, commit, merge © 2008 Intentional Software Corporation
    29. Intentional Domain Workbench Status • Technology is fully capable of handling the Domain Workbench requirements. • Nearing operational use in selected domains • Working with selected customers only, for example with Capgemini. © 2008 Intentional Software Corporation
    30. Henk Kolk CTO Financial Services Capgemini
    31. Problems for Pension Companies • Need for pension product innovation • Governmental interest – New Pension Laws • Mergers • Transparency • Problems • Time to market • Abstract product models • Ensuring quality © 2008 Intentional Software Corporation
    32. Old way: disconnected domains Pension Plan Current issues: Analysis • Expensive handovers • Traceability Functional design Technical design Program Validation Execute Handover © 2008 Intentional Software Corporation
    33. New way: connected domains Pension Plan No apparent handover Analysis Traceability comes for free Functional design Technical design Program Validation & Execute Handover © 2008 Intentional Software Corporation
    34. Old way: Excel & Word
    35. New way: Pension Workbench • Matching existing notations – Pension experts record pension world in their notations Old spreadsheet Pension Workbench
    36. Multiple Views with Graphics Pension Plan versions Rule dependencies © 2008 Intentional Software Corporation
    37. Compose Business Domain • Domain Schema • Projectional Editors © 2008 Intentional Software Corporation
    38. Integrate Rule Test Domain • Unit Tests for pension rules • Real time evaluation © 2008 Intentional Software Corporation
    39. Integrate System Test Domain • Test cascading rules and their interrelations • Real time evaluation © 2008 Intentional Software Corporation
    40. Build Code Generators • Multiple implementation target languages © 2008 Intentional Software Corporation
    41. Domain Language Evolution Jan March May July Oct Capgemini Capgemini Pension Language Capgemini Unified Pension Language Capgemini Capgemini Pension expert discussion Client 1 Client Pension Language 1 Client 2 Client Pension Language 2 Client 1: “Please Client 1 raise abstraction © 2008 Intentional Software Corporation level of my language”
    42. Testing – Lack of “groupware” • Rules domain • Rules • Test cases (VBA) A Automated support M Manual Handover • XML Export domain Input Excel • Multiple users TD M M Version Control Pseudo code MS Access Output M A A FD’s Rules Test cases Text M Entry Test results XML MS Word Programming (pseudo code) Calculation Export (VBA) • Issues M M • Version control Rules Issue Test Case • Consistency of 800+ Changes M Debugging separate files Mgmt (VBA) • Debugging VBA code © 2008 Intentional Software Corporation
    43. New Groupware A Automated support M Manual Handover Input Pension Workbench TD A A Groupware Pseudo code MS Access Version control Output A A A FD’s Rules Test cases Text M Entry Test results XML MS Word Entry (pseudo code) Calculation Export (automated) M Changes M Rules Issue Mgmt © 2008 Intentional Software Corporation
    44. Integrating Pension Experts Herman Gerbscheid, Pension Architect: • “This is the stuff I had to do mentally and keep consistent in my head all the time. It’s great to finally have tools for it.” Suzanne Pront, Pension Expert: • “Normally I know what I want, but don’t know how to tell engineers. Now I can do this myself. This is a revolution!” Sybren den Hartog, Java Architect: • “Now we can generate business rules and domain structure, which we could not do in UML based MDA.” © 2008 Intentional Software Corporation
    45. Summary • Intentional Software is helping us to accelerate Pension Product innovation for our clients • We were able to demonstrate a radical change in time to market and quality • We used Pensions as a pilot, but we see many opportunities in other domains © 2008 Intentional Software Corporation

    + deimosdeimos, 2 years ago

    custom

    984 views, 2 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 984
      • 984 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 19
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events