PRINCIPLES OF
SOFTWARE
ARCHITECTURE
IN RELATION TO TYPO3
TYPO3
CAMP
VENLO
22.4.2016
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
SCHEDULE
 Definition
 Tasks of an architect
 Process of development
 Design principles
 Architecture styles
 Architecture patterns
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
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
PROCESS OF
ARCHITECTURE
DEVELOPMENT
SEITE 6
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
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
ARCHITECTURE
DEVELOPMENT
SEITE 9
DESIGN PRINCIPLES
SEITE 10
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
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
SEITE 13
RESOLVE CYCLIC
DEPENDENCIES
ARCHITECTURE STYLES
SEITE 14
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
DOMAIN DRIVEN DESIGN
SEITE 16
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
ARCHITECTURE PATTERNS
INTERACTIVE SYSTEMS
SEITE 18
MVC MODEL VIEW
CONTROLLER
 Model holds the data
 View presents the data
 Controller processes user events,
executes business logic and
updates views
SEITE 19
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
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
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
PRESENTATION
ABSTRACTION CONTROL
SEITE 23
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
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
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

Architecture principles in relation to TYPO3

  • 1.
    PRINCIPLES OF SOFTWARE ARCHITECTURE IN RELATIONTO TYPO3 TYPO3 CAMP VENLO 22.4.2016
  • 2.
    GERNOT SCHULMEISTER Lives inMö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  Tasksof an architect  Process of development  Design principles  Architecture styles  Architecture patterns
  • 4.
    The fundamental organizationof 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
  • 6.
  • 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
  • 9.
  • 10.
  • 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 GOODDESIGN  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
  • 13.
  • 14.
  • 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
  • 16.
  • 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
  • 18.
  • 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 – MODELVIEW 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  Forcomplex 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
  • 23.
  • 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 developeris also a little architects  Basic architecture knowledge is useful for every developer  Architecture knowledge helps to understand TYPO3 better SEITE 26