SlideShare a Scribd company logo
Was tut ein guter Software Architekt?
     Eberhard Wolff

     Architecture and Technology Manager
     adesso AG




29.03.12
About Me
►    Eberhard Wolff
►    Architecture & Technology Manager at adesso
►    adesso is a leading IT consultancy in the German speaking region
►    Speaker
►    Author


►    Responsible for the Architect Training Program at adesso AG


►    Blog: http://ewolff.com
►    Twitter: @ewolff
►    http://www.slideshare.net/ewolff
►    eberhard.wolff@adesso.de




29.03.12       Was tut ein guter Software Architekt?
Software Architect


           Software architect is a general term
           with many accepted definitions
           which refers to a broad range of roles.
                   Not really well defined…




29.03.12      Was tut ein guter Software Architekt?
Software Architecture: Definition 1

           The software architecture are those

                                               decisions

                                                   that are

                                       hard to change
                                                              Martin Fowler



29.03.12   Was tut ein guter Software Architekt?
Decisions: A Close Look
►    Architect makes decision that are hard to change


►    Architect is responsible
►    Architect takes responsibility


►    Is responsible for the commercial success
     >  Wrong decisions hard to revise
     >  i.e. effort and costs must be considered


►    Do you know the Business Value of your project?
►    Do you know the stakeholders and their agenda?
►    How do your decisions match that?




29.03.12        Was tut ein guter Software Architekt?
Decide based on business value
           Know the business value!




29.03.12              Was tut ein guter Software Architekt?
Technology Decision
►    Which technologies and approaches will you use?
►    Important part of architecture


►    Need to know technologies and when to use what
►    I.e. broad knowledge – don’t get lost in details
►    But you should know some basic technologies by heart
►    It helps to have an interest in technologies


►    Must not like technologies as an ends in itself
►    …but as a tool
►    Does it help to solve the problem?
►    Does it actually make my life easier?




29.03.12        Was tut ein guter Software Architekt?
Guideline: Mechanical Sympathy

                    Most amazing achievement of
                    software industry:
                    Continuing cancellation of the steady
                    and staggering gains in hardware



                                                   Best F1 drivers:
                                                   Enough understanding how
                                                   a machine works so they
                                                   can work in harmony
29.03.12   Was tut ein guter Software Architekt?
Technology Decision: Multi Dimensional
►    Quality of the technology itself
     >  Performance
     >  Productivity
►    But the technology perspective might not be enough
     >  Skills
     >  Open Source License
     >  License costs and other costs
     >  Strategic decisions
     >  Operations


►    Need to take all into account
►    But: Decision can be challenged more often than you think
►    Prepare your case!
►    Often people are happy to get some advice


29.03.12        Was tut ein guter Software Architekt?
Decisions = Trade Off
►    Each option has advantages and drawbacks
►    …in each dimension


►    So any decision will be a trade off


►    You won’t find the perfect match


►    So if it’s not perfect – relax
►    It’s just too many dimensions


►    Half done software might be good enough
►    …and even have a better time-to-market




29.03.12        Was tut ein guter Software Architekt?
Technologies are just a tool and a trade-off.
           Know the technology options and the dimensions
           of technology decisions!




29.03.12               Was tut ein guter Software Architekt?
Software Architecture: Definition 2

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.




29.03.12   Was tut ein guter Software Architekt?
Software Architecture: Definition 2

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.
What does that
actually mean?
29.03.12   Was tut ein guter Software Architekt?
Architecture
►    Elements
     >  Method, classes, packages, JARs / WARs / EARs
     >  Diagrams and PowerPoint are just helpers
     >  …and might be disconnected from reality
►    Relations
     >  Dependencies i.e. usage
     >  Well ordered
     >  No excessive dependencies


►    No excessively big elements
►    No cyclic dependencies
     – they effectively make two elements one
►    Do you manage your dependencies?
►    What do you do about big elements?



29.03.12       Was tut ein guter Software Architekt?
An Example
►    This is actual code from a
     large and well known
     Open Source project


►    Dependency matrix


►    Everything in red is part
     of a cycle
Dependency Graph
►    Overview
►    One large cycle
Dependency	
  
Graph	
  


 ►    Just a small part
 ►    Red line show circular
      references
Architectural Debt
►    Hard to solve if it has reached this state


►    Consider managing it from the start


►    …or you are looking at a significant
     restructuring


►    Much more than Refactoring!




29.03.12        Was tut ein guter Software Architekt?
Consider a tool
►    Overall view on dependencies not obvious in IDE
►    Without a tool structure is quite likely a mess


►    Some tools:
     >  JDepend


     >  Structure 101
     >  Restructure 101


     >  Sonargraph


►    Sonar is not enough




29.03.12        Was tut ein guter Software Architekt?
Manage dependencies and size of elements –
           ideally from the start – because that is the
           architecture!
           You will need a tool!




29.03.12               Was tut ein guter Software Architekt?
Software Architecture: Why We Care

                                                        Performance


                                                         Availability


                                                         Productivity
            Software
           Architecture
                                                        Maintainability
   Structures
   Software elements
                                                           Security
   Relations
   Properties
                                                         Operations
29.03.12        Was tut ein guter Software Architekt?
Software Architecture: Why We Care



   Influences
                                                        Performance


                                                         Availability


 non-functional
            Software
           Architecture
                                                         Productivity




requirements &
                                                        Maintainability
   Structures
   Software elements
                                                           Security
   Relations


     quality
   Properties

29.03.12        Was tut ein guter Software Architekt?
                                                         Operations
Software Architect: Traditional Role
►    Manager
►    Responsibility: non-functional requirements / quality
►    Tool: Define and enforce architecture


►    Functional requirements covered by
     requirements process
►    Functional requirements influence
     the architecture




29.03.12       Was tut ein guter Software Architekt?
Traditional View on Architect’s Responsebilities
►    Define the architecture
►    Enforce the architecture
►    i.e. create frameworks
►    Not necessarily any coding
►    Code reviews (maybe)


►    Assumptions
     >  Separation of labor
     >  Developers must be “controlled”


►    Does that still work in today’s
     world?




29.03.12        Was tut ein guter Software Architekt?
Issues in the Real World
►    Ivory tower architecture


►    Architecture does not fit the domain


►    Architecture is not in the code
►    The documented architecture is different
     from the real architecture


►    Developers don’t feel their feedback is
     listened to


►    Either architecture is ignored
►    …or project results in a failure




29.03.12        Was tut ein guter Software Architekt?
Agile Development i.e. Scrum



Where is
                    Scrum Master
                  Removes obstacles
                    Enforces rules




   the
Architect                          Stories




    ?
      Product                                               Team
      Owner                                            Self-organizing
   Creates stories                                   Implements stories

29.03.12     Was tut ein guter Software Architekt?
Team
►    Is self organizing
►    An architect might / will emerge
►    …but is not planned for


►    Benefit:
     >  Responsibility is shared
     >  i.e. not just the architect cares


►    If the architecture / architect is not helpful, it / he will be ignored
►    Less damage in the end


►    Architect will see his ideas directly in action
►    Better feedback
►    Needs trust and collaboration

29.03.12        Was tut ein guter Software Architekt?
Architect as a Manager
►    Limited tools to influence team
►    Actually that is very common for managers
►    A team cannot be lead against its will


►    Need to listen to other team members
►    … and stake holders




29.03.12       Was tut ein guter Software Architekt?
New Challenges for Architects


           Role                                                Creating an Architecture
           ►    Needs to collaborate with other team           ►    Stories defined during the project
                members
                                                               ►    Not all requirements known at the start
           ►    …and make himself useful                       ►    No Big Design Upfront possible


           ►    Supports and trusts other team members         ►    Architecture needs to emerge
                                                               ►    Architecture must be constantly redefined
           ►    Leads by experience
           ►    …not by title                                  ►    More focus on code
                                                               ►    Code is the reliable source for the current
                                                                    architecture and state of the project




29.03.12               Was tut ein guter Software Architekt?
Architect is a team member – need to collaborate
           and listen!




29.03.12               Was tut ein guter Software Architekt?
Quality
►    Not all parts of a system will have the
     same quality
►    Not all team members are equally skilled


►    The compromise on the quality can
     happen “by chance”
►    …or you can steer it


►    Identify core domains
     >  The ones that add the most value
     >  i.e. have a good business reason


►    Might want to isolate those
►    …and focus on them


29.03.12        Was tut ein guter Software Architekt?
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




29.03.12        Was tut ein guter Software Architekt?
Domain Driven Design
►    “Tackling Complexity in the
     Heart of Software”


►    E.g. Ubiquitous Language
     for Code, Developers and
     Customers




29.03.12       Was tut ein guter Software Architekt?
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




29.03.12        Was tut ein guter Software Architekt?
More Responsibilities for Architects
►    Define the Core Domain


►    Ensure that the Core Domain will be implemented properly
►    …and won’t be compromised


►    I.e. manage the overall quality


►    Needs detailed domain knowledge
►    Need to understand business case




29.03.12       Was tut ein guter Software Architekt?
Quality will differ in the individual parts –
           Your choice is only to manage it or let it happen!




29.03.12                Was tut ein guter Software Architekt?
►    http://lemmings.mytrash.tv/
You Must Not Be a Lemming!
►    No matter what others say
►    Take it as an advice
►    Come to your own conclusion
►    …and work on them.


►    It is you project
►    It is your decision
►    It is your responsibility


►    If you can’t come to your own conclusion you are probably not a good architect




29.03.12        Was tut ein guter Software Architekt?
►    Decide based on business value!
►    Know the business value!


►    Technologies: just a tool and trade-off
►    Know technology options and the dimensions of
     technology decisions!


►    Architect is a team member – need to collaborate
     and listen!


►    Manage architecture = dependencies and size of
     elements


►    Quality will differ in the individual parts –
     Your choice is only to manage it or let it happen!
Wir suchen Sie als
Ø    Software-Architekt (m/w)
Ø    Projektleiter (m/w)
Ø    Senior Software Engineer (m/w)




  jobs@adesso.de
  www.AAAjobs.de

More Related Content

What's hot (20)

PPTX
The Role of the Software Architect
Hayim Makabee
 
PPTX
Basics of Software Architecture for .NET Developers
Dan Douglas
 
PDF
Software Architecture: Design Decisions
Henry Muccini
 
PPTX
The Role of the Software Architect (short version)
Hayim Makabee
 
PPTX
Modern software architect post the agile wave
Niels Bech Nielsen
 
PDF
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Mozaic Works
 
PDF
The Modern Software Architect
Niels Bech Nielsen
 
PPTX
A summary of software architecture guide
Triet Ho
 
PPT
02 architectures in_context
Majong DevJfu
 
PDF
ASAS 2014 - Simon Brown
Avisi B.V.
 
PDF
Software design
Savyasachi14
 
PPT
Agile Open 2009 Tdd And Architecture Influences
Gustavo Andres Brey
 
PDF
Software engineering principles (marcello thiry)
Marcello Thiry
 
PDF
Resource Adaptive Systems
Tom Mueck
 
PDF
Software Architecture and Design Introduction
Usman Khan
 
PPTX
No silver bullet
Ghufran Hasan
 
PPTX
No silver-bullllet-1
Maria Riaz
 
PPTX
No silver bullet summary (paper)
shakeel khan
 
PPTX
No silver bullet essence and accidents of software engineering
Arun Banotra
 
PPTX
Adaptable Designs for Agile Software Development
Hayim Makabee
 
The Role of the Software Architect
Hayim Makabee
 
Basics of Software Architecture for .NET Developers
Dan Douglas
 
Software Architecture: Design Decisions
Henry Muccini
 
The Role of the Software Architect (short version)
Hayim Makabee
 
Modern software architect post the agile wave
Niels Bech Nielsen
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Mozaic Works
 
The Modern Software Architect
Niels Bech Nielsen
 
A summary of software architecture guide
Triet Ho
 
02 architectures in_context
Majong DevJfu
 
ASAS 2014 - Simon Brown
Avisi B.V.
 
Software design
Savyasachi14
 
Agile Open 2009 Tdd And Architecture Influences
Gustavo Andres Brey
 
Software engineering principles (marcello thiry)
Marcello Thiry
 
Resource Adaptive Systems
Tom Mueck
 
Software Architecture and Design Introduction
Usman Khan
 
No silver bullet
Ghufran Hasan
 
No silver-bullllet-1
Maria Riaz
 
No silver bullet summary (paper)
shakeel khan
 
No silver bullet essence and accidents of software engineering
Arun Banotra
 
Adaptable Designs for Agile Software Development
Hayim Makabee
 

Similar to What a Good Software Architect Does (20)

PDF
10 Hinweise für Architekten
adesso AG
 
PDF
Ten Advices for Architects
Eberhard Wolff
 
DOCX
Software architecture Unit 1 notes
Sudarshan Dhondaley
 
PPT
Importance of Software architecture
Steve Essich
 
PDF
O.Savchenko FWDays workshop Software Architecture
Alexandr Savchenko
 
PPTX
Introduction to Software architecture and design.pptx
NoshadLaghari
 
PDF
Software archiecture lecture03
Luktalja
 
PPTX
Software Architecture and Design CS.pptx
saroshaziz054
 
PPTX
1 introduction to sa
david10hm
 
DOC
Class notes
Pitchairaj Bhuvaneswari
 
PPTX
Sda 1
AmberMughal5
 
PPT
Architectural Thinking - What Is Architecture?
ingo
 
PDF
Software architecture
Udayna
 
PPTX
Architecture Design
Saqib Raza
 
PPTX
NISI Agile Software Architecture Slide Deck
Utrecht University
 
PDF
Understanding-the-Role-of-Software-Architecture-in-Modern-Development.pdf
Muhammad Rizki
 
PPTX
Software Architecture Introduction
SARCCOM
 
PDF
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
John Ortiz
 
PDF
Deep Dive into the Idea of Software Architecture
Matthew Clarke
 
PDF
XP-Manchester 2013 Software Architecture for Agile Developers Intro
Chris F Carroll
 
10 Hinweise für Architekten
adesso AG
 
Ten Advices for Architects
Eberhard Wolff
 
Software architecture Unit 1 notes
Sudarshan Dhondaley
 
Importance of Software architecture
Steve Essich
 
O.Savchenko FWDays workshop Software Architecture
Alexandr Savchenko
 
Introduction to Software architecture and design.pptx
NoshadLaghari
 
Software archiecture lecture03
Luktalja
 
Software Architecture and Design CS.pptx
saroshaziz054
 
1 introduction to sa
david10hm
 
Architectural Thinking - What Is Architecture?
ingo
 
Software architecture
Udayna
 
Architecture Design
Saqib Raza
 
NISI Agile Software Architecture Slide Deck
Utrecht University
 
Understanding-the-Role-of-Software-Architecture-in-Modern-Development.pdf
Muhammad Rizki
 
Software Architecture Introduction
SARCCOM
 
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
John Ortiz
 
Deep Dive into the Idea of Software Architecture
Matthew Clarke
 
XP-Manchester 2013 Software Architecture for Agile Developers Intro
Chris F Carroll
 
Ad

More from Eberhard Wolff (20)

PDF
Architectures and Alternatives
Eberhard Wolff
 
PDF
Beyond Microservices
Eberhard Wolff
 
PDF
The Frontiers of Continuous Delivery
Eberhard Wolff
 
PDF
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Eberhard Wolff
 
PDF
Microservices - not just with Java
Eberhard Wolff
 
PDF
Deployment - Done Right!
Eberhard Wolff
 
PDF
Data Architecture not Just for Microservices
Eberhard Wolff
 
PDF
How to Split Your System into Microservices
Eberhard Wolff
 
PDF
Microservices and Self-contained System to Scale Agile
Eberhard Wolff
 
PDF
How Small Can Java Microservices Be?
Eberhard Wolff
 
PDF
Data Architecturen Not Just for Microservices
Eberhard Wolff
 
PDF
Microservices: Redundancy=Maintainability
Eberhard Wolff
 
PDF
Self-contained Systems: A Different Approach to Microservices
Eberhard Wolff
 
PDF
Microservices Technology Stack
Eberhard Wolff
 
PDF
Software Architecture for Innovation
Eberhard Wolff
 
PDF
Five (easy?) Steps Towards Continuous Delivery
Eberhard Wolff
 
PDF
Nanoservices and Microservices with Java
Eberhard Wolff
 
PDF
Microservices: Architecture to Support Agile
Eberhard Wolff
 
PDF
Microservices: Architecture to scale Agile
Eberhard Wolff
 
PDF
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Eberhard Wolff
 
Architectures and Alternatives
Eberhard Wolff
 
Beyond Microservices
Eberhard Wolff
 
The Frontiers of Continuous Delivery
Eberhard Wolff
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Eberhard Wolff
 
Microservices - not just with Java
Eberhard Wolff
 
Deployment - Done Right!
Eberhard Wolff
 
Data Architecture not Just for Microservices
Eberhard Wolff
 
How to Split Your System into Microservices
Eberhard Wolff
 
Microservices and Self-contained System to Scale Agile
Eberhard Wolff
 
How Small Can Java Microservices Be?
Eberhard Wolff
 
Data Architecturen Not Just for Microservices
Eberhard Wolff
 
Microservices: Redundancy=Maintainability
Eberhard Wolff
 
Self-contained Systems: A Different Approach to Microservices
Eberhard Wolff
 
Microservices Technology Stack
Eberhard Wolff
 
Software Architecture for Innovation
Eberhard Wolff
 
Five (easy?) Steps Towards Continuous Delivery
Eberhard Wolff
 
Nanoservices and Microservices with Java
Eberhard Wolff
 
Microservices: Architecture to Support Agile
Eberhard Wolff
 
Microservices: Architecture to scale Agile
Eberhard Wolff
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Eberhard Wolff
 
Ad

Recently uploaded (20)

PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Python basic programing language for automation
DanialHabibi2
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 

What a Good Software Architect Does

  • 1. Was tut ein guter Software Architekt? Eberhard Wolff Architecture and Technology Manager adesso AG 29.03.12
  • 2. About Me ►  Eberhard Wolff ►  Architecture & Technology Manager at adesso ►  adesso is a leading IT consultancy in the German speaking region ►  Speaker ►  Author ►  Responsible for the Architect Training Program at adesso AG ►  Blog: http://ewolff.com ►  Twitter: @ewolff ►  http://www.slideshare.net/ewolff ►  [email protected] 29.03.12 Was tut ein guter Software Architekt?
  • 3. Software Architect Software architect is a general term with many accepted definitions which refers to a broad range of roles. Not really well defined… 29.03.12 Was tut ein guter Software Architekt?
  • 4. Software Architecture: Definition 1 The software architecture are those decisions that are hard to change Martin Fowler 29.03.12 Was tut ein guter Software Architekt?
  • 5. Decisions: A Close Look ►  Architect makes decision that are hard to change ►  Architect is responsible ►  Architect takes responsibility ►  Is responsible for the commercial success >  Wrong decisions hard to revise >  i.e. effort and costs must be considered ►  Do you know the Business Value of your project? ►  Do you know the stakeholders and their agenda? ►  How do your decisions match that? 29.03.12 Was tut ein guter Software Architekt?
  • 6. Decide based on business value Know the business value! 29.03.12 Was tut ein guter Software Architekt?
  • 7. Technology Decision ►  Which technologies and approaches will you use? ►  Important part of architecture ►  Need to know technologies and when to use what ►  I.e. broad knowledge – don’t get lost in details ►  But you should know some basic technologies by heart ►  It helps to have an interest in technologies ►  Must not like technologies as an ends in itself ►  …but as a tool ►  Does it help to solve the problem? ►  Does it actually make my life easier? 29.03.12 Was tut ein guter Software Architekt?
  • 8. Guideline: Mechanical Sympathy Most amazing achievement of software industry: Continuing cancellation of the steady and staggering gains in hardware Best F1 drivers: Enough understanding how a machine works so they can work in harmony 29.03.12 Was tut ein guter Software Architekt?
  • 9. Technology Decision: Multi Dimensional ►  Quality of the technology itself >  Performance >  Productivity ►  But the technology perspective might not be enough >  Skills >  Open Source License >  License costs and other costs >  Strategic decisions >  Operations ►  Need to take all into account ►  But: Decision can be challenged more often than you think ►  Prepare your case! ►  Often people are happy to get some advice 29.03.12 Was tut ein guter Software Architekt?
  • 10. Decisions = Trade Off ►  Each option has advantages and drawbacks ►  …in each dimension ►  So any decision will be a trade off ►  You won’t find the perfect match ►  So if it’s not perfect – relax ►  It’s just too many dimensions ►  Half done software might be good enough ►  …and even have a better time-to-market 29.03.12 Was tut ein guter Software Architekt?
  • 11. Technologies are just a tool and a trade-off. Know the technology options and the dimensions of technology decisions! 29.03.12 Was tut ein guter Software Architekt?
  • 12. Software Architecture: Definition 2 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. 29.03.12 Was tut ein guter Software Architekt?
  • 13. Software Architecture: Definition 2 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. What does that actually mean? 29.03.12 Was tut ein guter Software Architekt?
  • 14. Architecture ►  Elements >  Method, classes, packages, JARs / WARs / EARs >  Diagrams and PowerPoint are just helpers >  …and might be disconnected from reality ►  Relations >  Dependencies i.e. usage >  Well ordered >  No excessive dependencies ►  No excessively big elements ►  No cyclic dependencies – they effectively make two elements one ►  Do you manage your dependencies? ►  What do you do about big elements? 29.03.12 Was tut ein guter Software Architekt?
  • 15. An Example ►  This is actual code from a large and well known Open Source project ►  Dependency matrix ►  Everything in red is part of a cycle
  • 16. Dependency Graph ►  Overview ►  One large cycle
  • 17. Dependency   Graph   ►  Just a small part ►  Red line show circular references
  • 18. Architectural Debt ►  Hard to solve if it has reached this state ►  Consider managing it from the start ►  …or you are looking at a significant restructuring ►  Much more than Refactoring! 29.03.12 Was tut ein guter Software Architekt?
  • 19. Consider a tool ►  Overall view on dependencies not obvious in IDE ►  Without a tool structure is quite likely a mess ►  Some tools: >  JDepend >  Structure 101 >  Restructure 101 >  Sonargraph ►  Sonar is not enough 29.03.12 Was tut ein guter Software Architekt?
  • 20. Manage dependencies and size of elements – ideally from the start – because that is the architecture! You will need a tool! 29.03.12 Was tut ein guter Software Architekt?
  • 21. Software Architecture: Why We Care Performance Availability Productivity Software Architecture Maintainability Structures Software elements Security Relations Properties Operations 29.03.12 Was tut ein guter Software Architekt?
  • 22. Software Architecture: Why We Care Influences Performance Availability non-functional Software Architecture Productivity requirements & Maintainability Structures Software elements Security Relations quality Properties 29.03.12 Was tut ein guter Software Architekt? Operations
  • 23. Software Architect: Traditional Role ►  Manager ►  Responsibility: non-functional requirements / quality ►  Tool: Define and enforce architecture ►  Functional requirements covered by requirements process ►  Functional requirements influence the architecture 29.03.12 Was tut ein guter Software Architekt?
  • 24. Traditional View on Architect’s Responsebilities ►  Define the architecture ►  Enforce the architecture ►  i.e. create frameworks ►  Not necessarily any coding ►  Code reviews (maybe) ►  Assumptions >  Separation of labor >  Developers must be “controlled” ►  Does that still work in today’s world? 29.03.12 Was tut ein guter Software Architekt?
  • 25. Issues in the Real World ►  Ivory tower architecture ►  Architecture does not fit the domain ►  Architecture is not in the code ►  The documented architecture is different from the real architecture ►  Developers don’t feel their feedback is listened to ►  Either architecture is ignored ►  …or project results in a failure 29.03.12 Was tut ein guter Software Architekt?
  • 26. Agile Development i.e. Scrum Where is Scrum Master Removes obstacles Enforces rules the Architect Stories ? Product Team Owner Self-organizing Creates stories Implements stories 29.03.12 Was tut ein guter Software Architekt?
  • 27. Team ►  Is self organizing ►  An architect might / will emerge ►  …but is not planned for ►  Benefit: >  Responsibility is shared >  i.e. not just the architect cares ►  If the architecture / architect is not helpful, it / he will be ignored ►  Less damage in the end ►  Architect will see his ideas directly in action ►  Better feedback ►  Needs trust and collaboration 29.03.12 Was tut ein guter Software Architekt?
  • 28. Architect as a Manager ►  Limited tools to influence team ►  Actually that is very common for managers ►  A team cannot be lead against its will ►  Need to listen to other team members ►  … and stake holders 29.03.12 Was tut ein guter Software Architekt?
  • 29. New Challenges for Architects Role Creating an Architecture ►  Needs to collaborate with other team ►  Stories defined during the project members ►  Not all requirements known at the start ►  …and make himself useful ►  No Big Design Upfront possible ►  Supports and trusts other team members ►  Architecture needs to emerge ►  Architecture must be constantly redefined ►  Leads by experience ►  …not by title ►  More focus on code ►  Code is the reliable source for the current architecture and state of the project 29.03.12 Was tut ein guter Software Architekt?
  • 30. Architect is a team member – need to collaborate and listen! 29.03.12 Was tut ein guter Software Architekt?
  • 31. Quality ►  Not all parts of a system will have the same quality ►  Not all team members are equally skilled ►  The compromise on the quality can happen “by chance” ►  …or you can steer it ►  Identify core domains >  The ones that add the most value >  i.e. have a good business reason ►  Might want to isolate those ►  …and focus on them 29.03.12 Was tut ein guter Software Architekt?
  • 32. 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 29.03.12 Was tut ein guter Software Architekt?
  • 33. Domain Driven Design ►  “Tackling Complexity in the Heart of Software” ►  E.g. Ubiquitous Language for Code, Developers and Customers 29.03.12 Was tut ein guter Software Architekt?
  • 34. 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 29.03.12 Was tut ein guter Software Architekt?
  • 35. More Responsibilities for Architects ►  Define the Core Domain ►  Ensure that the Core Domain will be implemented properly ►  …and won’t be compromised ►  I.e. manage the overall quality ►  Needs detailed domain knowledge ►  Need to understand business case 29.03.12 Was tut ein guter Software Architekt?
  • 36. Quality will differ in the individual parts – Your choice is only to manage it or let it happen! 29.03.12 Was tut ein guter Software Architekt?
  • 37. ►  http://lemmings.mytrash.tv/
  • 38. You Must Not Be a Lemming! ►  No matter what others say ►  Take it as an advice ►  Come to your own conclusion ►  …and work on them. ►  It is you project ►  It is your decision ►  It is your responsibility ►  If you can’t come to your own conclusion you are probably not a good architect 29.03.12 Was tut ein guter Software Architekt?
  • 39. ►  Decide based on business value! ►  Know the business value! ►  Technologies: just a tool and trade-off ►  Know technology options and the dimensions of technology decisions! ►  Architect is a team member – need to collaborate and listen! ►  Manage architecture = dependencies and size of elements ►  Quality will differ in the individual parts – Your choice is only to manage it or let it happen!
  • 40. Wir suchen Sie als Ø  Software-Architekt (m/w) Ø  Projektleiter (m/w) Ø  Senior Software Engineer (m/w) [email protected] www.AAAjobs.de