what a good software architect does
DESCRIPTION
Presentation from BEDcon 2012 about Software Architects and their role.TRANSCRIPT
![Page 1: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/1.jpg)
29.03.12
Was tut ein guter Software Architekt? Eberhard Wolff Architecture and Technology Manager adesso AG
![Page 2: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/2.jpg)
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
Was tut ein guter Software Architekt? 29.03.12
![Page 3: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/3.jpg)
Software Architect
Software architect is a general term with many accepted definitions which refers to a broad range of roles.
Not really well defined…
Was tut ein guter Software Architekt? 29.03.12
![Page 4: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/4.jpg)
Software Architecture: Definition 1
29.03.12 Was tut ein guter Software Architekt?
The software architecture are those
decisions
that are
hard to change Martin Fowler
![Page 5: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/5.jpg)
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?
![Page 6: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/6.jpg)
Decide based on business value Know the business value!
29.03.12 Was tut ein guter Software Architekt?
![Page 7: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/7.jpg)
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?
![Page 8: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/8.jpg)
Guideline: Mechanical Sympathy
29.03.12 Was tut ein guter Software Architekt?
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
![Page 9: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/9.jpg)
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?
![Page 10: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/10.jpg)
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?
![Page 11: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/11.jpg)
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?
![Page 12: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/12.jpg)
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.
Was tut ein guter Software Architekt? 29.03.12
![Page 13: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/13.jpg)
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.
Was tut ein guter Software Architekt? 29.03.12
What does that actually mean?
![Page 14: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/14.jpg)
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?
![Page 15: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/15.jpg)
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
![Page 16: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/16.jpg)
Dependency Graph
► Overview
► One large cycle
![Page 17: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/17.jpg)
Dependency Graph
► Just a small part
► Red line show circular references
![Page 18: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/18.jpg)
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?
![Page 19: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/19.jpg)
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?
![Page 20: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/20.jpg)
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?
![Page 21: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/21.jpg)
Software Architecture: Why We Care
29.03.12
Software Architecture
Structures Software elements Relations Properties
Performance
Availability
Productivity
Maintainability
Security
Operations
Was tut ein guter Software Architekt?
![Page 22: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/22.jpg)
Software Architecture: Why We Care
29.03.12
Software Architecture
Structures Software elements Relations Properties
Performance
Availability
Productivity
Maintainability
Security
Operations
Influences non-functional requirements &
quality Was tut ein guter Software Architekt?
![Page 23: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/23.jpg)
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?
![Page 24: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/24.jpg)
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?
![Page 25: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/25.jpg)
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?
![Page 26: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/26.jpg)
Agile Development i.e. Scrum
29.03.12
Product Owner
Creates stories
Stories
Scrum Master Removes obstacles
Enforces rules
Team Self-organizing
Implements stories
Where is the
Architect?
Was tut ein guter Software Architekt?
![Page 27: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/27.jpg)
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?
![Page 28: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/28.jpg)
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?
![Page 29: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/29.jpg)
New Challenges for Architects
Role
► Needs to collaborate with other team members
► …and make himself useful
► Supports and trusts other team members
► Leads by experience
► …not by title
Creating an Architecture
► Stories defined during the project
► Not all requirements known at the start
► No Big Design Upfront possible
► Architecture needs to emerge
► Architecture must be constantly redefined
► 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?
![Page 30: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/30.jpg)
Architect is a team member – need to collaborate and listen!
29.03.12 Was tut ein guter Software Architekt?
![Page 31: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/31.jpg)
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?
![Page 32: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/32.jpg)
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?
![Page 33: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/33.jpg)
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?
![Page 34: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/34.jpg)
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?
![Page 35: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/35.jpg)
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?
![Page 36: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/36.jpg)
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?
![Page 37: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/37.jpg)
► http://lemmings.mytrash.tv/
![Page 38: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/38.jpg)
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?
![Page 39: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/39.jpg)
► 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!
![Page 40: What a Good Software Architect Does](https://reader034.vdocuments.site/reader034/viewer/2022042813/54b58f484a795920708b4649/html5/thumbnails/40.jpg)
www.AAAjobs.de
Wir suchen Sie als
Ø Software-Architekt (m/w) Ø Projektleiter (m/w) Ø Senior Software Engineer (m/w)