Bdd and dsl как способ построения коммуникации на проекте
-
date post
21-Oct-2014 -
Category
Technology
-
view
176 -
download
1
description
Transcript of Bdd and dsl как способ построения коммуникации на проекте
BDD \ DSLкак формализованный способ
построения эффективной коммуникации между всеми участниками Delivery and
Value Team
Anton SemenchenkoISSoft
BDDBehavior-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
DSLDomain 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 this\our 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 productivity1. 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 abstraction5. DSl can help learn how to use API – how to combine
“call’s” together.
DSL – Why?
• Communication with Domain experts1. Provides language for communication with Domain
expertsNotes: Only subset of DSL’s could be used for this purpose (for example regular expressions can’t)2. Write and READ DSL code3. Involve Domain experts on building a model4. Involve Domain experts on building a ubiquitous language5. 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 projectIncremental 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 LanguageMake 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 21. Ubiquitous language2. BDD3. 3 Models (State Machines)4. 3 DSL• Pros and Cons (almost for free)
Anton SemenchenkoSkype: csi.AntonSemenchenko
Cell: +375 44 74 00 385+375 33 33 46 120
Thanks