SlideShare ist ein Scribd-Unternehmen logo
1 von 14
BDD  DSL
как формализованный способ
построения эффективной коммуникации
между всеми участниками Delivery and
Value Team
Anton Semenchenko
ISSoft
BDD
Behavior-Driven Development
• Behavioral specifications
• Backlog Items
• Acceptance test as a part of Definition of Done
• Specification as a ubiquitous language
• TDD Test-Driven Development
• Tooling principles
• DSL
• User stories
• Story versus specification
DSL
Domain Specific Language
A computer programming language of limited
expressiveness focused on a particular domain.
• Computer programming language
• Language nature – sense of fluency, structure
• Limited expressiveness - a bare minimum of
features to support its domain. It’s impossible
to build entire system in a DSL; you use a DSL
for one particular aspect of the system.
• Domain focus – clear focus on a small
domain.
DLS – 3 main categories
• External DSL- SQL, Regular Expressions,
AWK, XML (for configuration BI and
Mockup frameworks)
• Internal DSL – Lisp, Ruby … Flow DP
• A Language workbench
• Fragmentary (external – regular
expressions; internal – Mock frameworks)
• Stand-alone DSL’s
Boundaries of DSLs
•Language nature
•Domain focus
•Limited expressiveness
• The domain focus isn’t a good boundary condition – the
boundaries more commonly resolve around limited
expressiveness and language nature.
Architecture of DSL processing
•DSL script
•Parse
•Semantic model
•Generate
•Target code
“Low” level details
• In thisour point of view a DSL is a front-end to a
library providing a different style of manipulation
to the “std” command-query interface.
• In this context, the library is a Semantic Model of
the DSL.
• Without code generation- “interpretation
language”
• With code generation – “compilation language”
• Efforts to build DSL is usually much smaller than
for building the underling model.
DSL – Why?
•Improving development productivity
1. The easier it is to read a lump of code, the easier it is to
find mistakes, and the easier it is to modify the system.
2. The limited expressiveness of DSL’s makes it harder to
say wrong things and easier to see when you’ve made
an error.
3. Avoids duplication by gathering together common
code.
4. Provides an abstraction
5. DSl can help learn how to use API – how to combine
“call’s” together.
DSL – Why?
•Communication with Domain experts
1. Provides language for communication with Domain
experts
Notes: Only subset of DSL’s could be used for this
purpose (for example regular expressions can’t)
2. Write and READ DSL code
3. Involve Domain experts on building a model
4. Involve Domain experts on building a ubiquitous
language
5. Note: Trying to describe a domain using a DSL is useful
even if DSL is never implemented. It can be beneficial
just as a platform for communication
Problems with DSL’s
•There is no experience in DSL
usage
•There is no experience in DSL
development
•There is no resources for “time
consuming” DSL development
Problems with DSL’s
• A huge set of DSL’s inside one project
Incremental costs of learning the DSL is quite small compared to
the cost of understanding model.
• Cost of Building (another point of view)
A DSL may be a small incremental cost over its underling library,
but it’s still a cost.
The cost of DSL is the cost over the cost of building the model.
A DSL may help think about the model and reduce cost of
building it.
• Too specific Language
Make sure you have a clear sense of what narrow problem the
DSL is focused on.
Real life example
•2 independent phases
•2 independent contracts
•2 absolutely different solutions
Real life example
• General “business” context
• Current “business” context
• General “technical” context
• Phase 1
• Solution 1 – “classical”
• Pros and Cons
• Phase 2
• Solution 2
1. Ubiquitous language
2. BDD
3. 3 Models (State Machines)
4. 3 DSL
• Pros and Cons (almost for free)
Anton Semenchenko
Skype: csi.AntonSemenchenko
Cell: +375 44 74 00 385
+375 33 33 46 120
ISSoft
AntonSemenchenko@coherentsolutions.com
Thanks 

Weitere ähnliche Inhalte

Andere mochten auch

Images and Tables in HTML
Images and Tables in HTMLImages and Tables in HTML
Images and Tables in HTML
Aarti P
 
CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)
Zoe Gillenwater
 
решение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте baрешение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте ba
ISsoft
 
Css part2
Css part2Css part2
Css part2
ISsoft
 
Верстка_Лекция1
Верстка_Лекция1Верстка_Лекция1
Верстка_Лекция1
itc73
 
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Yandex
 

Andere mochten auch (20)

Organisation and navigation
Organisation and navigationOrganisation and navigation
Organisation and navigation
 
Joomla Request To Response
Joomla Request To ResponseJoomla Request To Response
Joomla Request To Response
 
Box Model
Box ModelBox Model
Box Model
 
Images and Tables in HTML
Images and Tables in HTMLImages and Tables in HTML
Images and Tables in HTML
 
Введение в веб-проектирование
Введение в веб-проектированиеВведение в веб-проектирование
Введение в веб-проектирование
 
WordPress as Rapid Prototyping Tool
WordPress as Rapid Prototyping ToolWordPress as Rapid Prototyping Tool
WordPress as Rapid Prototyping Tool
 
FL Blog Con 2015: How To Find The Best WordPress Plugins For You
FL Blog Con 2015: How To Find The Best WordPress Plugins For YouFL Blog Con 2015: How To Find The Best WordPress Plugins For You
FL Blog Con 2015: How To Find The Best WordPress Plugins For You
 
Custom Post Type and Taxonomies in WordPress 3.x
Custom Post Type and Taxonomies in WordPress 3.xCustom Post Type and Taxonomies in WordPress 3.x
Custom Post Type and Taxonomies in WordPress 3.x
 
CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)
 
решение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте baрешение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте ba
 
How Joomla Works
How Joomla WorksHow Joomla Works
How Joomla Works
 
Show vs. Tell in UX Design (Front in Amsterdam)
Show vs. Tell in UX Design (Front in Amsterdam)Show vs. Tell in UX Design (Front in Amsterdam)
Show vs. Tell in UX Design (Front in Amsterdam)
 
Uwe usability evaluation
Uwe usability evaluationUwe usability evaluation
Uwe usability evaluation
 
Css part2
Css part2Css part2
Css part2
 
Getting Started With Php Frameworks @BCP5
Getting Started With Php Frameworks @BCP5Getting Started With Php Frameworks @BCP5
Getting Started With Php Frameworks @BCP5
 
Верстка_Лекция1
Верстка_Лекция1Верстка_Лекция1
Верстка_Лекция1
 
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
Сергей Бережной "Про шаблонизаторы вообще и BEMHTML в частности"
 
Using Flexbox Today (Generate Sydney 2016)
Using Flexbox Today (Generate Sydney 2016)Using Flexbox Today (Generate Sydney 2016)
Using Flexbox Today (Generate Sydney 2016)
 
Php Security
Php SecurityPhp Security
Php Security
 
Пингвины из калининграда
Пингвины из калининградаПингвины из калининграда
Пингвины из калининграда
 

Ähnlich wie Bdd and dsl как способ построения коммуникации на проекте

Agile DSL Development in Ruby
Agile DSL Development in RubyAgile DSL Development in Ruby
Agile DSL Development in Ruby
elliando dias
 
Domain Specific Languages
Domain Specific LanguagesDomain Specific Languages
Domain Specific Languages
elliando dias
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language Design
Markus Voelter
 
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docxA Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
bartholomeocoombs
 
Os Alrubaie Ruby
Os Alrubaie RubyOs Alrubaie Ruby
Os Alrubaie Ruby
oscon2007
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
Dmytro Mindra
 
Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
Sven Efftinge
 

Ähnlich wie Bdd and dsl как способ построения коммуникации на проекте (20)

Agile DSL Development in Ruby
Agile DSL Development in RubyAgile DSL Development in Ruby
Agile DSL Development in Ruby
 
Building DSLs: Marriage of High Essence and Groovy Metaprogramming
Building DSLs: Marriage of High Essence and Groovy MetaprogrammingBuilding DSLs: Marriage of High Essence and Groovy Metaprogramming
Building DSLs: Marriage of High Essence and Groovy Metaprogramming
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15
 
GroovyDSLs
GroovyDSLsGroovyDSLs
GroovyDSLs
 
Domain Specific Languages
Domain Specific LanguagesDomain Specific Languages
Domain Specific Languages
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language Design
 
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docxA Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
 
Is SQL a Programming Language.pptx
Is SQL a Programming Language.pptxIs SQL a Programming Language.pptx
Is SQL a Programming Language.pptx
 
Os Alrubaie Ruby
Os Alrubaie RubyOs Alrubaie Ruby
Os Alrubaie Ruby
 
difference between c c++ c#
difference between c c++ c#difference between c c++ c#
difference between c c++ c#
 
Groovy DSL
Groovy DSLGroovy DSL
Groovy DSL
 
DSL Construction rith Ruby
DSL Construction rith RubyDSL Construction rith Ruby
DSL Construction rith Ruby
 
Domain specific modelling (DSM)
Domain specific modelling (DSM)Domain specific modelling (DSM)
Domain specific modelling (DSM)
 
DSL Construction with Ruby - ThoughtWorks Masterclass Series 2009
DSL Construction with Ruby - ThoughtWorks Masterclass Series 2009DSL Construction with Ruby - ThoughtWorks Masterclass Series 2009
DSL Construction with Ruby - ThoughtWorks Masterclass Series 2009
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 
Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
DSL development
DSL developmentDSL development
DSL development
 
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software DevelopmentDomain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software Development
 

Mehr von ISsoft

Sql инъекции в тестировании
Sql инъекции в тестированииSql инъекции в тестировании
Sql инъекции в тестировании
ISsoft
 
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
ISsoft
 
Testing, qa, qc. what the difference
Testing, qa, qc. what the differenceTesting, qa, qc. what the difference
Testing, qa, qc. what the difference
ISsoft
 
Ranorex presentation
Ranorex presentationRanorex presentation
Ranorex presentation
ISsoft
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
ISsoft
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
ISsoft
 
Sql practise for beginners
Sql practise for beginnersSql practise for beginners
Sql practise for beginners
ISsoft
 
Отдел юзабилити
Отдел юзабилитиОтдел юзабилити
Отдел юзабилити
ISsoft
 
ToDoList
ToDoListToDoList
ToDoList
ISsoft
 
Prototype presentation
Prototype presentationPrototype presentation
Prototype presentation
ISsoft
 
решение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистоврешение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистов
ISsoft
 
Development of automated tests for ext js based web sites
Development of automated tests for ext js based web sitesDevelopment of automated tests for ext js based web sites
Development of automated tests for ext js based web sites
ISsoft
 
Bdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проектеBdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проекте
ISsoft
 
инфотекс автоматизация тестирования
инфотекс   автоматизация тестированияинфотекс   автоматизация тестирования
инфотекс автоматизация тестирования
ISsoft
 
Sikuli script
Sikuli scriptSikuli script
Sikuli script
ISsoft
 
Планирование тестирования - релизные планы
Планирование тестирования - релизные планыПланирование тестирования - релизные планы
Планирование тестирования - релизные планы
ISsoft
 

Mehr von ISsoft (20)

Sql инъекции в тестировании
Sql инъекции в тестированииSql инъекции в тестировании
Sql инъекции в тестировании
 
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
 
Testing of mobile apps
Testing of mobile appsTesting of mobile apps
Testing of mobile apps
 
Testing, qa, qc. what the difference
Testing, qa, qc. what the differenceTesting, qa, qc. what the difference
Testing, qa, qc. what the difference
 
Ranorex presentation
Ranorex presentationRanorex presentation
Ranorex presentation
 
Bugs
BugsBugs
Bugs
 
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
 
Sql practise for beginners
Sql practise for beginnersSql practise for beginners
Sql practise for beginners
 
Отдел юзабилити
Отдел юзабилитиОтдел юзабилити
Отдел юзабилити
 
ToDoList
ToDoListToDoList
ToDoList
 
ISTQB
ISTQBISTQB
ISTQB
 
Prototype presentation
Prototype presentationPrototype presentation
Prototype presentation
 
решение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистоврешение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистов
 
Development of automated tests for ext js based web sites
Development of automated tests for ext js based web sitesDevelopment of automated tests for ext js based web sites
Development of automated tests for ext js based web sites
 
Bdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проектеBdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проекте
 
инфотекс автоматизация тестирования
инфотекс   автоматизация тестированияинфотекс   автоматизация тестирования
инфотекс автоматизация тестирования
 
Sikuli script
Sikuli scriptSikuli script
Sikuli script
 
Планирование тестирования - релизные планы
Планирование тестирования - релизные планыПланирование тестирования - релизные планы
Планирование тестирования - релизные планы
 

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Bdd and dsl как способ построения коммуникации на проекте

  • 1. BDD DSL как формализованный способ построения эффективной коммуникации между всеми участниками Delivery and Value Team Anton Semenchenko ISSoft
  • 2. BDD Behavior-Driven Development • Behavioral specifications • Backlog Items • Acceptance test as a part of Definition of Done • Specification as a ubiquitous language • TDD Test-Driven Development • Tooling principles • DSL • User stories • Story versus specification
  • 3. DSL Domain Specific Language A computer programming language of limited expressiveness focused on a particular domain. • Computer programming language • Language nature – sense of fluency, structure • Limited expressiveness - a bare minimum of features to support its domain. It’s impossible to build entire system in a DSL; you use a DSL for one particular aspect of the system. • Domain focus – clear focus on a small domain.
  • 4. DLS – 3 main categories • External DSL- SQL, Regular Expressions, AWK, XML (for configuration BI and Mockup frameworks) • Internal DSL – Lisp, Ruby … Flow DP • A Language workbench • Fragmentary (external – regular expressions; internal – Mock frameworks) • Stand-alone DSL’s
  • 5. Boundaries of DSLs •Language nature •Domain focus •Limited expressiveness • The domain focus isn’t a good boundary condition – the boundaries more commonly resolve around limited expressiveness and language nature.
  • 6. Architecture of DSL processing •DSL script •Parse •Semantic model •Generate •Target code
  • 7. “Low” level details • In thisour point of view a DSL is a front-end to a library providing a different style of manipulation to the “std” command-query interface. • In this context, the library is a Semantic Model of the DSL. • Without code generation- “interpretation language” • With code generation – “compilation language” • Efforts to build DSL is usually much smaller than for building the underling model.
  • 8. DSL – Why? •Improving development productivity 1. The easier it is to read a lump of code, the easier it is to find mistakes, and the easier it is to modify the system. 2. The limited expressiveness of DSL’s makes it harder to say wrong things and easier to see when you’ve made an error. 3. Avoids duplication by gathering together common code. 4. Provides an abstraction 5. DSl can help learn how to use API – how to combine “call’s” together.
  • 9. DSL – Why? •Communication with Domain experts 1. Provides language for communication with Domain experts Notes: Only subset of DSL’s could be used for this purpose (for example regular expressions can’t) 2. Write and READ DSL code 3. Involve Domain experts on building a model 4. Involve Domain experts on building a ubiquitous language 5. Note: Trying to describe a domain using a DSL is useful even if DSL is never implemented. It can be beneficial just as a platform for communication
  • 10. Problems with DSL’s •There is no experience in DSL usage •There is no experience in DSL development •There is no resources for “time consuming” DSL development
  • 11. Problems with DSL’s • A huge set of DSL’s inside one project Incremental costs of learning the DSL is quite small compared to the cost of understanding model. • Cost of Building (another point of view) A DSL may be a small incremental cost over its underling library, but it’s still a cost. The cost of DSL is the cost over the cost of building the model. A DSL may help think about the model and reduce cost of building it. • Too specific Language Make sure you have a clear sense of what narrow problem the DSL is focused on.
  • 12. Real life example •2 independent phases •2 independent contracts •2 absolutely different solutions
  • 13. Real life example • General “business” context • Current “business” context • General “technical” context • Phase 1 • Solution 1 – “classical” • Pros and Cons • Phase 2 • Solution 2 1. Ubiquitous language 2. BDD 3. 3 Models (State Machines) 4. 3 DSL • Pros and Cons (almost for free)
  • 14. Anton Semenchenko Skype: csi.AntonSemenchenko Cell: +375 44 74 00 385 +375 33 33 46 120 ISSoft AntonSemenchenko@coherentsolutions.com Thanks 