SlideShare a Scribd company logo
Eberhard Wolff, adesso AG


Zehn Hinweise für Architekten
About me
•    Eberhard Wolff
•    Architecture & Technology Manager at adesso
•    adesso is a leading IT consultancy in Germany
•    Speaker
•    Author (e.g. first German Spring book)
•    Blog: http://ewolff.com
•    Twitter: @ewolff
•    http://slideshare.com/ewolff
•    eberhard.wolff@adesso.de
Why?
•  Educating architects internally at adesso

•  What should they know?

•  What is the bare minimum?
Software Architect
Software architect is a general term
with many accepted definitions
which refers to a broad range of roles.
        Not really well defined…
Software Architecture
The software architecture of a system is the set of
                        structures
needed to reason about it, which comprise
                   software elements,
              relations among them, and
                   properties of both.
Why We Care
    Defines
Structures                    Performance
Software elements

non-functional
Relations
Properties
                              Availability


                              Productivity


requirements &
      Software
     Architecture
                             Maintainability



    quality                       Security


                              Operations
Software Architect:
              Responsibilities
•  Manager
•  Responsibility: non-functional
   requirements / quality
•  Tool: Define and enforce
   architecture

•  Functional requirements covered
   by requirements process
•  Functional requirements influence
   the architecture
YOU ARE NOT AN
ARCHITECT!
Agile Development i.e. Scrum
Where is    Scrum Master
          Removes obstacles
            Enforces rules


  the
Architect         Stories




   ?
   Product
    Owner
Creates stories
                                     Team
                                Self-organizing
                              Implements stories
You Are Not An Architect!
•    No manager
•    Need to convince not manage
•    Therefore: Not that different from a developer
•    More experienced
•    More knowledge
Is “Architect” a Good Metaphor?
•  Buildings are physical entities
   –  Hard to change

•  Construction industry is established
•  …and has a long history

•  Buildings can be fully specified
•  Software can’t (see Agility)

•  Clear separation: Architect vs.
   construction worker
•  Common for a Software Architect to
   be a former developer
•  …or even doing some coding
Different Way to Think About
  1999
           Roles
                     2001
Software Craftsmanship Manifesto
             (2009)
•  As aspiring Software Craftsmen we are raising the bar
   of professional software development by practicing it
   and helping others learn the craft. Through this work
   we have come to value:

•  Not only working software,
   –  but also well-crafted software
•  Not only responding to change,
   –  but also steadily adding value
•  Not only individuals and interactions,
   –  but also a community of professionals
•  Not only customer collaboration,
   –  but also productive partnerships
Architect as a Master Craftsman
•  More experienced
•  Knows the tools very
   well
•  Guides and helps others
•  Incorporates feedback
•  Improves the craft
•  Quality

•  Will work on code
•  But knows the bigger
   picture of the project

•  Education and work on
   the project at hand
YOUR OPINION MATTERS!
Your Opinion Matters!
•  You need to have your own opinion
•  …about technologies
•  …about architecture approaches

•  Listen to opinions of others
•  …but come up with your own
•  Your responsibility
•  http://lemmings.mytrash.tv/
Your Opinion Matters!
•  This applies to this conference
•  …and this talk
•  If it does not make sense to you
  –  say so


•  Your opinion – your responsibility
•  Even if someone is a speaker – he might still
   be wrong
•  Never be intimidated!
PEOPLE WANT TO IMPROVE!
People Want to Improve!
•  Technical people take pride in
   their skills
•  …often also quality

•  They want to improve and create
   great quality!

•  Guide the way
•  Define what quality is
What You Can Do…
•    Education
•    Review
•    Pairing
•    Talks
•    …
What If They Don’t Want to
              Improve?
•  You are screwed
•  No way to create high quality with
   those people

•  Ensure that they know what
   quality is and what is expected
ARCHITECTURE = TRADE OFF
Architecture = Trade Off
•  There are numerous ways to architect
   each system
•  There is no one single right
   architecture
•  Each architecture has strength and
   weaknesses

•  Think about architecture in terms of
   Trade Offs
•  Do they match your requirements?
Example for Trade Off:
            Persistence
•  Option: SQL
  –  More control
  –  Less infrastructure
•  Option: O/R mapper
  –  Seemingly easier to use
  –  But a complex piece of technology
•  Option: NoSQL
  –  A lot of options with individual strength and
     weaknesses
IMPROVE YOUR
VOCABULARY
Vocabulary
•  Approaches to architecting a
   system
•  Defines what kind of architectures
   and systems you can express

•  The more you know the better you
   can do trade offs
•  Will offer new perspectives on what
   you doing
•  Also it is interesting to learn what
   others do
How to Improve Your Vocabulary
•  Patterns
  –  Fowler: Patterns of Enterprise
     Application Architecture
  –  Gamma et al: Design Patterns
  –  Buschmann et al: Patterns-
     Oriented Software Architecture
  –  Hohpe: Pattern of Enterprise
     Integration
•  Evans: Domain Driven Design
How to Improve Your Vocabulary
•  Technologies
  –  How many Persistence
     approaches do you know?
  –  Should at least have a high level
     overview
  –  There is life beyond standards
  –  Can save a lot of time and effort
•  Conferences
•  Web Sites
•  Reviews
Again: Persistence
•  “Patterns of Enterprise Application
   Architecture” lists persistence approaches

•  Ruby on Rails uses Active Record (i.e.
   objects can store themselves)
•  myBATIS for easy persistence using SQL
   (Java / .NET)
•  …
EAT YOUR OWN DOG FOOD!
Eat Your Own Dog Food!
•  Defining an architecture is easy
•  It is hard to create the right
   architecture

•  Need feedback

•  Eat your own dog food: Develop
   code yourself
•  Do pair programming
•  To become grounded
NO BROKEN WINDOWS
Broken Windows Theory
•  Once windows are not
   repaired…
•  …vandals will break more
•  …break into the building
•  …

•  Accepting compromises on
   quality is risky
•  …but if you strive for ultimate
   quality everywhere, you will fail

•  In particular with legacy
   software
Broken Windows in Architecture
•  Compromises on quality will
   become out of hand
•  Might speed up a project for
   a limited time
•  But: Will hurt productivity in
   the long run
•  …and ultimately slow it down
•  Higher quality can mean less
   cost and quicker delivery
•  Metaphor: Technical debt
•  Much like debt in real life
But…
•  There might still be broken windows
•  There might be more and less skilled
   developers

•  What do I do?
STRATEGIC DESIGN
Domain Driven Design
•  “Tackling Complexity
   in the Heart of
   Software”

•  E.g. Ubiquitous
   Language
   for Code, Developers
   and Customers
Strategic Domain Driven Design
•  Bounded Context:
   Model used only in a specific
   part of the system

•  Context Map:
   Translate models from
   different parts of the system

•  Anti-Corruption Layer:
   Make sure the core domain
   is not corrupted
Strategic Domain Driven Design
•  Can be used to manage
   quality
•  What are the core business
   domains?
•  Focus on quality of those
•  Isolate them from the rest of
   the system
•  Let the best developer work
   on the most important parts
Strategic Domain Driven Design
•  Acknowledges that not all developers are
   equals
•  …and not all parts of a system will have the
   same quality

•  Allows you to steer which parts will be better
CARE ABOUT ARCHITECTURE
AND CODE
Care About Architecture and Code
•  You can draw diagrams until the end of time
•  It’s the code and the architecture in the code
   that matters
•  Architectures is only used to influence code
MEASURE AND REDUCE
Measure and Reduce
•  No way to know all code by heart
•  Still: You and the team need to understand
   the state of the project
•  Need tools to measure and reduce
   information
Sonar
•    Server that integrates a lot of systems
•    Static code analysis (Findbugs, PMD etc)
•    Lines of Code, classes
•    Test code coverage
•    Complexity
•    Historized i.e. easy to spot trends
•    Easy to install
•    Visit http://nemo.sonarsource.org/ for
     examples
Draw Conclusions!
•  Do not try to enforce a certain value for a
   metric!
•  Metrics are used to reduce information and
   get warning signs
•  Use them to improve quality
•  If you enforce a value mindlessly problems
   will be avoided – not solved
•  …and measurements will become worthless
DEPENDENCIES MATTER!
Dependency Management
•  Essential for measuring architecture
•  i.e. what is the structure in the code?

•  Why are Dependencies so important?
What is Architecture?
•  Architecture is the decomposition of systems
   in parts

•  No large or complex parts
•  No cyclic dependencies
Normal Dependencies
•  A and B might be
   packages or classes
                             Component A

•  B depends on A, i.e. it
   uses classes, methods
   etc.
                             Component B
•  Changes in A impact B
•  Changes in B do not
   impact A
Cyclic Dependency
•  B depends on A and A on
   B
                              Component A
•  Changes in A impact B
•  Changes in B impact A
•  A and B can only be
   changed as one unit        Component B
•  …even though they should
   be two separate units
Bigger cyclic dependencies

 Component A


                Component B


 Component C
Measure Dependencies!
•  …otherwise they will get out of hand
•  Cyclic dependencies mean:
  –  It should be separated according to the
     architecture
  –  …but it is not


•  JDepend – rather outdated
•  Structure 101
•  Sonargraph
Care about
                You are Not an    Architecture is
 Code and                                           Quality
                  Architect         Trade Off
Architecture


  Measure and      Eat your own                     No Broken
                                      Vocabulary
    Reduce          Dog Food                        Windows



 Dependencies      People Want                       Strategic
    Matter          To Improve                        Design



 And Remember: Your Opinion Matters!
Wir suchen Sie als
Ø    Software-Architekt (m/w)
Ø    Projektleiter (m/w)
Ø    Senior Software Engineer (m/w)


Ø    Kommen Sie zum Stand und gewinnen Sie ein iPad 2!

  jobs@adesso.de
  www.AAAjobs.de

More Related Content

PPT
Best Practices - Software Engineering
PDF
OSCON 2007: Open Design, Not By Committee
PDF
Software Architecture is written with lowercase a
PDF
Software Engineering Best Practices @ Nylas
PDF
User Interface Prototyping - Low- and High-Fidelity Prototyping Today
PPT
Contemporary Software Engineering Practices Together With Enterprise
PPT
Designing and prototyping
PPTX
Prototyping
Best Practices - Software Engineering
OSCON 2007: Open Design, Not By Committee
Software Architecture is written with lowercase a
Software Engineering Best Practices @ Nylas
User Interface Prototyping - Low- and High-Fidelity Prototyping Today
Contemporary Software Engineering Practices Together With Enterprise
Designing and prototyping
Prototyping

What's hot (20)

PPT
02archintro
PDF
Agile Talk 30 Jul 1o2
PPTX
Basic Engineering Design (Part 5): Constructing a Prototype
PPTX
Agile and Agile methods: what is the most important to understand to succeed
PPT
Software requirements engineering
PPTX
Tdd 4 everyone full version
PPT
04 designing architectures
PPT
09 introduction to_modeling
PPTX
Ux prototyping
PDF
Xen Project Contributor Training Part 3 - Communication v1.0
PPTX
WANTED: Seeking Single Agile Knowledge Development Tool-set
PDF
Why Design Patterns Are Important In Software Engineering
PPTX
Basic Engineering Design (Part 4): Selecting the Best Solution
PPTX
To document or not to document? An exploratory study on developers' motivatio...
PPTX
[DevDay2019] How to achieve usability - By Dr. Martin Theis, General Director...
PDF
Effective prototyping (for Vermont Code Camp)
PPT
software lecture
PDF
Effective prototyping
PPT
Class (1)
PPTX
Agile Modeling using the Architecture Tools in VS 2010
02archintro
Agile Talk 30 Jul 1o2
Basic Engineering Design (Part 5): Constructing a Prototype
Agile and Agile methods: what is the most important to understand to succeed
Software requirements engineering
Tdd 4 everyone full version
04 designing architectures
09 introduction to_modeling
Ux prototyping
Xen Project Contributor Training Part 3 - Communication v1.0
WANTED: Seeking Single Agile Knowledge Development Tool-set
Why Design Patterns Are Important In Software Engineering
Basic Engineering Design (Part 4): Selecting the Best Solution
To document or not to document? An exploratory study on developers' motivatio...
[DevDay2019] How to achieve usability - By Dr. Martin Theis, General Director...
Effective prototyping (for Vermont Code Camp)
software lecture
Effective prototyping
Class (1)
Agile Modeling using the Architecture Tools in VS 2010
Ad

Viewers also liked (20)

PPT
¿Qué buscan las empresas en un Community Manager?
PPTX
Bienvenido a un mundo divertido
PDF
Ayudas misiones comerciales - Aragón 2013
PDF
Presentación VIII Master Universitario en Tecnologías, Sistemas y Redes de Co...
PDF
eHealth2015
PPT
power alumnes 3r
PPT
Opal Flame Presentation
PDF
Mike Mongo | SEDS SpaceVision 2013 | Build A Starship—How Students Will Bring...
PDF
GT Spring 2016_final_BLUETOAD
PDF
Successful Forestry Project Experiences in the Mato Grosso Do Sul Silvopastor...
PPTX
Avoiding Errors: Troubleshoot Wordpress like a Pro!
PPTX
La materia y sus propiedades
PDF
Alice mukaru, trafikverket och gs1 epcis standard för spårbundna transporter
DOC
A skip back in time
PPT
Ap 2 chapter 26 ppt notes MARTIN APUSH
PDF
BI for Cargo Terminal Port
PDF
Aprendizaje Vertical - AddVenture - Pablo Tovar
PDF
PR_Ikea_Pitch_Launch_geneva_by_Pana
PPT
Principios gobernantes
PDF
Revista17
¿Qué buscan las empresas en un Community Manager?
Bienvenido a un mundo divertido
Ayudas misiones comerciales - Aragón 2013
Presentación VIII Master Universitario en Tecnologías, Sistemas y Redes de Co...
eHealth2015
power alumnes 3r
Opal Flame Presentation
Mike Mongo | SEDS SpaceVision 2013 | Build A Starship—How Students Will Bring...
GT Spring 2016_final_BLUETOAD
Successful Forestry Project Experiences in the Mato Grosso Do Sul Silvopastor...
Avoiding Errors: Troubleshoot Wordpress like a Pro!
La materia y sus propiedades
Alice mukaru, trafikverket och gs1 epcis standard för spårbundna transporter
A skip back in time
Ap 2 chapter 26 ppt notes MARTIN APUSH
BI for Cargo Terminal Port
Aprendizaje Vertical - AddVenture - Pablo Tovar
PR_Ikea_Pitch_Launch_geneva_by_Pana
Principios gobernantes
Revista17
Ad

Similar to 10 Hinweise für Architekten (20)

KEY
Agile Architecture (MAE slides)
PDF
XP-Manchester 2013 Software Architecture for Agile Developers Intro
ODP
Software Patterns
PPTX
NISI Agile Software Architecture Slide Deck
PDF
Applying Agile Values to Enterprise Architecture Software Architectural Trend...
DOCX
Software architecture Unit 1 notes
PDF
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
PPS
Architecture
PDF
SAF - architecture framework
PPT
02 architectures in_context
PDF
ASAS 2014 - Simon Brown
PDF
Software archiecture lecture03
PDF
Evolving Software Patterns
PDF
The Modern Software Architect
PDF
01 Introduction to SDA 2.pdf software architecture
PDF
L16 Documenting Software
PPTX
The Role of the Architect
PDF
Software architecture for developers
PPT
Importance of Software architecture
PPTX
Architecture Design
Agile Architecture (MAE slides)
XP-Manchester 2013 Software Architecture for Agile Developers Intro
Software Patterns
NISI Agile Software Architecture Slide Deck
Applying Agile Values to Enterprise Architecture Software Architectural Trend...
Software architecture Unit 1 notes
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
Architecture
SAF - architecture framework
02 architectures in_context
ASAS 2014 - Simon Brown
Software archiecture lecture03
Evolving Software Patterns
The Modern Software Architect
01 Introduction to SDA 2.pdf software architecture
L16 Documenting Software
The Role of the Architect
Software architecture for developers
Importance of Software architecture
Architecture Design

More from adesso AG (20)

PDF
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
PDF
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
PDF
Mythos High Performance Teams
PPTX
A Business-Critical SharePoint Solution From adesso AG
PDF
Was Sie über NoSQL Datenbanken wissen sollten!
PDF
Continuous Delivery praktisch
PDF
Agilität, Snapshots und Continuous Delivery
PDF
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
PDF
Getriebene Anwendungslandschaften
PDF
Google App Engine JAX PaaS Parade 2013
PDF
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
PDF
OOP 2013 NoSQL Suche
PDF
NoSQL in der Cloud - Why?
PPTX
Lean web architecture mit jsf 2.0, cdi & co.
PDF
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
PDF
Zehn Hinweise für Architekten
PDF
Agile Praktiken
PDF
Java und Cloud - nicht nur mit PaaS
PDF
Neue EBusiness Perspektiven durch HTML5
PDF
CloudConf2011 Introduction to Google App Engine
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
Mythos High Performance Teams
A Business-Critical SharePoint Solution From adesso AG
Was Sie über NoSQL Datenbanken wissen sollten!
Continuous Delivery praktisch
Agilität, Snapshots und Continuous Delivery
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Getriebene Anwendungslandschaften
Google App Engine JAX PaaS Parade 2013
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
OOP 2013 NoSQL Suche
NoSQL in der Cloud - Why?
Lean web architecture mit jsf 2.0, cdi & co.
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Zehn Hinweise für Architekten
Agile Praktiken
Java und Cloud - nicht nur mit PaaS
Neue EBusiness Perspektiven durch HTML5
CloudConf2011 Introduction to Google App Engine

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Approach and Philosophy of On baking technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Modernizing your data center with Dell and AMD
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
Machine learning based COVID-19 study performance prediction
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Approach and Philosophy of On baking technology
NewMind AI Weekly Chronicles - August'25 Week I
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The Rise and Fall of 3GPP – Time for a Sabbatical?
Network Security Unit 5.pdf for BCA BBA.
Big Data Technologies - Introduction.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
NewMind AI Monthly Chronicles - July 2025
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Review of recent advances in non-invasive hemoglobin estimation
Modernizing your data center with Dell and AMD
Mobile App Security Testing_ A Comprehensive Guide.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Understanding_Digital_Forensics_Presentation.pptx

10 Hinweise für Architekten

  • 1. Eberhard Wolff, adesso AG Zehn Hinweise für Architekten
  • 2. About me •  Eberhard Wolff •  Architecture & Technology Manager at adesso •  adesso is a leading IT consultancy in Germany •  Speaker •  Author (e.g. first German Spring book) •  Blog: http://ewolff.com •  Twitter: @ewolff •  http://slideshare.com/ewolff •  eberhard.wolff@adesso.de
  • 3. Why? •  Educating architects internally at adesso •  What should they know? •  What is the bare minimum?
  • 4. Software Architect Software architect is a general term with many accepted definitions which refers to a broad range of roles. Not really well defined…
  • 5. Software Architecture The software architecture of a system is the set of structures needed to reason about it, which comprise software elements, relations among them, and properties of both.
  • 6. Why We Care Defines Structures Performance Software elements non-functional Relations Properties Availability Productivity requirements & Software Architecture Maintainability quality Security Operations
  • 7. Software Architect: Responsibilities •  Manager •  Responsibility: non-functional requirements / quality •  Tool: Define and enforce architecture •  Functional requirements covered by requirements process •  Functional requirements influence the architecture
  • 8. YOU ARE NOT AN ARCHITECT!
  • 9. Agile Development i.e. Scrum Where is Scrum Master Removes obstacles Enforces rules the Architect Stories ? Product Owner Creates stories Team Self-organizing Implements stories
  • 10. You Are Not An Architect! •  No manager •  Need to convince not manage •  Therefore: Not that different from a developer •  More experienced •  More knowledge
  • 11. Is “Architect” a Good Metaphor? •  Buildings are physical entities –  Hard to change •  Construction industry is established •  …and has a long history •  Buildings can be fully specified •  Software can’t (see Agility) •  Clear separation: Architect vs. construction worker •  Common for a Software Architect to be a former developer •  …or even doing some coding
  • 12. Different Way to Think About 1999 Roles 2001
  • 13. Software Craftsmanship Manifesto (2009) •  As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value: •  Not only working software, –  but also well-crafted software •  Not only responding to change, –  but also steadily adding value •  Not only individuals and interactions, –  but also a community of professionals •  Not only customer collaboration, –  but also productive partnerships
  • 14. Architect as a Master Craftsman •  More experienced •  Knows the tools very well •  Guides and helps others •  Incorporates feedback •  Improves the craft •  Quality •  Will work on code •  But knows the bigger picture of the project •  Education and work on the project at hand
  • 16. Your Opinion Matters! •  You need to have your own opinion •  …about technologies •  …about architecture approaches •  Listen to opinions of others •  …but come up with your own •  Your responsibility
  • 18. Your Opinion Matters! •  This applies to this conference •  …and this talk •  If it does not make sense to you –  say so •  Your opinion – your responsibility •  Even if someone is a speaker – he might still be wrong •  Never be intimidated!
  • 19. PEOPLE WANT TO IMPROVE!
  • 20. People Want to Improve! •  Technical people take pride in their skills •  …often also quality •  They want to improve and create great quality! •  Guide the way •  Define what quality is
  • 21. What You Can Do… •  Education •  Review •  Pairing •  Talks •  …
  • 22. What If They Don’t Want to Improve? •  You are screwed •  No way to create high quality with those people •  Ensure that they know what quality is and what is expected
  • 24. Architecture = Trade Off •  There are numerous ways to architect each system •  There is no one single right architecture •  Each architecture has strength and weaknesses •  Think about architecture in terms of Trade Offs •  Do they match your requirements?
  • 25. Example for Trade Off: Persistence •  Option: SQL –  More control –  Less infrastructure •  Option: O/R mapper –  Seemingly easier to use –  But a complex piece of technology •  Option: NoSQL –  A lot of options with individual strength and weaknesses
  • 27. Vocabulary •  Approaches to architecting a system •  Defines what kind of architectures and systems you can express •  The more you know the better you can do trade offs •  Will offer new perspectives on what you doing •  Also it is interesting to learn what others do
  • 28. How to Improve Your Vocabulary •  Patterns –  Fowler: Patterns of Enterprise Application Architecture –  Gamma et al: Design Patterns –  Buschmann et al: Patterns- Oriented Software Architecture –  Hohpe: Pattern of Enterprise Integration •  Evans: Domain Driven Design
  • 29. How to Improve Your Vocabulary •  Technologies –  How many Persistence approaches do you know? –  Should at least have a high level overview –  There is life beyond standards –  Can save a lot of time and effort •  Conferences •  Web Sites •  Reviews
  • 30. Again: Persistence •  “Patterns of Enterprise Application Architecture” lists persistence approaches •  Ruby on Rails uses Active Record (i.e. objects can store themselves) •  myBATIS for easy persistence using SQL (Java / .NET) •  …
  • 31. EAT YOUR OWN DOG FOOD!
  • 32. Eat Your Own Dog Food! •  Defining an architecture is easy •  It is hard to create the right architecture •  Need feedback •  Eat your own dog food: Develop code yourself •  Do pair programming •  To become grounded
  • 34. Broken Windows Theory •  Once windows are not repaired… •  …vandals will break more •  …break into the building •  … •  Accepting compromises on quality is risky •  …but if you strive for ultimate quality everywhere, you will fail •  In particular with legacy software
  • 35. Broken Windows in Architecture •  Compromises on quality will become out of hand •  Might speed up a project for a limited time •  But: Will hurt productivity in the long run •  …and ultimately slow it down •  Higher quality can mean less cost and quicker delivery •  Metaphor: Technical debt •  Much like debt in real life
  • 36. But… •  There might still be broken windows •  There might be more and less skilled developers •  What do I do?
  • 38. Domain Driven Design •  “Tackling Complexity in the Heart of Software” •  E.g. Ubiquitous Language for Code, Developers and Customers
  • 39. Strategic Domain Driven Design •  Bounded Context: Model used only in a specific part of the system •  Context Map: Translate models from different parts of the system •  Anti-Corruption Layer: Make sure the core domain is not corrupted
  • 40. Strategic Domain Driven Design •  Can be used to manage quality •  What are the core business domains? •  Focus on quality of those •  Isolate them from the rest of the system •  Let the best developer work on the most important parts
  • 41. Strategic Domain Driven Design •  Acknowledges that not all developers are equals •  …and not all parts of a system will have the same quality •  Allows you to steer which parts will be better
  • 43. Care About Architecture and Code •  You can draw diagrams until the end of time •  It’s the code and the architecture in the code that matters •  Architectures is only used to influence code
  • 45. Measure and Reduce •  No way to know all code by heart •  Still: You and the team need to understand the state of the project •  Need tools to measure and reduce information
  • 46. Sonar •  Server that integrates a lot of systems •  Static code analysis (Findbugs, PMD etc) •  Lines of Code, classes •  Test code coverage •  Complexity •  Historized i.e. easy to spot trends •  Easy to install •  Visit http://nemo.sonarsource.org/ for examples
  • 47. Draw Conclusions! •  Do not try to enforce a certain value for a metric! •  Metrics are used to reduce information and get warning signs •  Use them to improve quality •  If you enforce a value mindlessly problems will be avoided – not solved •  …and measurements will become worthless
  • 49. Dependency Management •  Essential for measuring architecture •  i.e. what is the structure in the code? •  Why are Dependencies so important?
  • 50. What is Architecture? •  Architecture is the decomposition of systems in parts •  No large or complex parts •  No cyclic dependencies
  • 51. Normal Dependencies •  A and B might be packages or classes Component A •  B depends on A, i.e. it uses classes, methods etc. Component B •  Changes in A impact B •  Changes in B do not impact A
  • 52. Cyclic Dependency •  B depends on A and A on B Component A •  Changes in A impact B •  Changes in B impact A •  A and B can only be changed as one unit Component B •  …even though they should be two separate units
  • 53. Bigger cyclic dependencies Component A Component B Component C
  • 54. Measure Dependencies! •  …otherwise they will get out of hand •  Cyclic dependencies mean: –  It should be separated according to the architecture –  …but it is not •  JDepend – rather outdated •  Structure 101 •  Sonargraph
  • 55. Care about You are Not an Architecture is Code and Quality Architect Trade Off Architecture Measure and Eat your own No Broken Vocabulary Reduce Dog Food Windows Dependencies People Want Strategic Matter To Improve Design And Remember: Your Opinion Matters!
  • 56. Wir suchen Sie als Ø  Software-Architekt (m/w) Ø  Projektleiter (m/w) Ø  Senior Software Engineer (m/w) Ø  Kommen Sie zum Stand und gewinnen Sie ein iPad 2! jobs@adesso.de www.AAAjobs.de