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

14
BDD \ DSL как формализованный способ построения эффективной коммуникации между всеми участниками Delivery and Value Team Anton Semenchenko ISSoft
  • date post

    21-Oct-2014
  • Category

    Technology

  • view

    176
  • download

    1

description

 

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

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

BDD \ DSLкак формализованный способ

построения эффективной коммуникации между всеми участниками Delivery and

Value Team

Anton SemenchenkoISSoft

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

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

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

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.

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

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

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

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.

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

Architecture of DSL processing

•DSL script•Parse•Semantic model

•Generate•Target code

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

“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.

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

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.

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

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

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

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

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

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.

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

Real life example

•2 independent phases•2 independent contracts•2 absolutely different solutions

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

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)

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

Anton SemenchenkoSkype: csi.AntonSemenchenko

Cell: +375 44 74 00 385+375 33 33 46 120

[email protected]

Thanks