7. Presentation Layer
Presentation Layer is the same as
User Interface and is responsible
for presenting data to user and
interpreting user’s commands. We
can split it conventionally to forms
and views.
8. Application Layer
Domain Layer or Model Layer or
Domain Model Layer is the main
part of your app, which stores all
domain-specific logic and
describes business-processes that
are automatized with the help it.
9. Domain Layer
It defines tasks that application
should do and coordinates them
between Domain Entities/
Aggregates and Services.
11. UI and Magick
How user sees your application
For user UI is the application.
12. D is for Dependency Inversion Principle
Split off your app on layers that
should not be dependent on
layers below.
13. Layers testing
With Up-Down development your
unit tests becomes acceptance,
functional or integration tests.
14. Layers testing
Write unit tests for screen or screens of a feature for your
presentation layer.
Write correct static presentation code which passes the tests.
Add more contexts and edge-cases to your tests.
Update UI for new tests.
Make UI dynamic through adding mocked Domain Model and
Application layers (refactor).
15. Layers testing
“Make UI dynamic” means your Unit-tests becomes functional,
integration or even acceptance.
16. Prehistory of DSL – First
“DSL-first” approach as evolution
of Up-Down Development
17. DSL – First approach
“The whole is greater than the sum of its
parts” – Aristotle
SLOC - System as a Logic Over Components.
DSL implementation is the system and code
written in DSL is the system rules and/or
state.
22. What we got
Great abstraction and single interface
for all SOAP/RESTful APIs
No vendor lock
Easy to read and maintain code
Smaller number of code defects
23. Example from Better Than Everybody Software
Abstract Query Interface
(AQI) – the way how we
get DB – agnosticism and
split off layers.