Domain Driven Design
MVC
MVP (Model View Presenter)
Dependency Injection
Closed to changes open for extension (hook principle)
How to deal with dependencies (strong cohesion, weak coupling)
2. GERNOT SCHULMEISTER
Lives in Mönchengladbach
Developes websites with TYPO3 since Version 3.7
(2005)
Works for TeamWFP
Has a migration background and comes from
Southeast-Europe (Austria)
Likes operative CMS evaluations, Big Data,
Software Architecture, TYPO3 Events
facebook.com/gernot.schulmeister
twitter.com/mistakanista1
SEITE 2
3. SCHEDULE
Definition
Tasks of an architect
Process of development
Design principles
Architecture styles
Architecture patterns
4. The fundamental organization of a
software system embodied in its
components, their relationships to
each other and to the
environment and the principles
guiding its design and evolution
DEFINITION
5. TASKS: ARCHITECTS
Construct, design and implement
Evaluate, decide and consult
Grant the fulfillment of requirements
Document
Communicate and are diplomats and acrobats
Simplify
Make assumptions and preconditions explicit
Need courage
SEITE 5
7. STEPS
Gather information
Clarify requirements: core tasks, category of system,
quality targets, relevant stakeholders, business and
technical context
Investigate influences and side conditions
Develop solution strategies
Design and communicate
Accompany implementation
SEITE 7
8. ABSTRACTION LEVELS
Environment: project, product management &
requirements engineering, execution & operation, tools
& development
Architecture style and technical infrastructure
Domain & technical architecture layer
Program design & implementation layer
Execute the steps iterative, incremental by switching
through the abstraction levels
SEITE 8
11. HEURISTICS
Mix top-down, bottom-up & outside in strategies
hierarchical composition & decomposition
As simple as possible principle
Separation of concerns (encapsulation)
Information hiding & small interfaces
Regular refactoring & redesign
Separation of business & technical aspects
Expect changes & switch the perspective
SEITE 11
12. TECHNIQUES FOR
A GOOD DESIGN
Loose coupling (number of relations of a block)
High cohesion (put together what belongs together)
Open closed principle (closed to changes, open for
extensions)
Don´t repeat yourself
Inversion of control (dependency injection)
Expect errors and failures (failure first)
Liskov substitution principle (a subclass always
substitute the base class)
SEITE 12
15. DOMAIN DRIVEN DESIGN
Business domain as basis
Entities: core objects, thing in the system, keep the
identity, switch the state
Value objects: describe entities, never change
Services: operations of the domain without a state
Aggregates: encapsulates, crosslinked domain objects,
has one entity as root object
Factories: encapsulate construction of complex objects
Repositories: access to the persistence layer
SEITE 15
17. OTHERS
MDA Model driven architecture
QDSA Quality driven software architecture: aim,
plan build, check
SOA Service oriented architecture: Service directory,
provider & consumer is a business topic
Microservices Modularisation also concerning
hardware and live operation, orchestration decentral
without middleware
SEITE 17
19. MVC MODEL VIEW
CONTROLLER
Model holds the data
View presents the data
Controller processes user events,
executes business logic and
updates views
SEITE 19
20. MVP MODEL VIEW
PRESENTER
Based on MVC strict separation of
model & view
Model holds the data and the
business logic
View: no logic only receives the user input
Presenter: connects view with model and
controls the logical process
SEITE 20
21. MVVM – MODEL VIEW
VIEWMODEL
By angular, based on MVC
The view-model connects the model with the
view and adds presentation logic
Loads additional data, updates the GUI
SEITE 21
22. PRESENTATION
ABSTRACTION CONTROL
For complex user interfaces
Used in IDEs like PHP-storm with many windows
Response behavior of one controller not sufficient
Decomposition of hierarchically, cooperating agents
Agents consists of controller, abstraction and view
Controller interface to other agents
Abstraction adapts global model to local model
Enables parallel executions of parts of the global
model
SEITE 22
24. FROM CHAOS
TO STRUCTURE
Layer architecture
Pipes & filters: filters process data, pipes transport
intermediate results decoupling in many ways
Used in compiler, parser, image processing
Blackboard: specialized knowledge source send
possible solutions of a problem to the blackboard to
find an overall solution
Used in image and language recognition, system
surveillance
SEITE 24
25. SEITE 25
DISTRIBUTED SYSTEMS
Broker: imparts between client & server
Server sends service interface to broker
Broker finds service for the client and connects the request and
response
CQRS Command Query Responsibility Segregation
Separates commands (data changes) from Queries (reading access
to data)
Good for parallel executions without dependencies
Commands: ACID transactions
Queries idempotent
26. CONCLUSION
Every developer is also a little architects
Basic architecture knowledge is useful for every
developer
Architecture knowledge helps to understand TYPO3
better
SEITE 26