The document discusses the evolving role of a software architect. It notes that traditionally, an architect was separated from developers and focused on defining and enforcing architecture. However, in agile development, the architect must collaborate closely with developers, share responsibility, and allow the architecture to emerge through code. The architect acts more as a master craftsman, guiding others through experience while also learning. Quality and the core domain become strategic focuses, with the architect ensuring these are properly implemented through the code.
1. What Does It Really Mean to Be an Architect?
Eberhard Wolff
Architecture and Technology Manager
adesso AG
13.09.11
2. About Me
► Eberhard Wolff
► Architecture & Technology Manager at adesso
► adesso is a leading IT consultancy in the German speaking region
► Speaker
► Author
► Blog: http://ewolff.com
► Twitter: @ewolff
► http://www.slideshare.net/ewolff
► eberhard.wolff@adesso.de
Eberhard Wolff: What Does It Really Mean to Be an Architect?
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…
Eberhard Wolff: What Does It Really Mean to Be an Architect?
4. 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.
(Won’t be talking about Enterprise Architecture)
Eberhard Wolff: What Does It Really Mean to Be an Architect?
5. Software Architecture: Why We Care
Defines
Performance
Availability
non-functional
Software
Architecture
Productivity
requirements &
Maintainability
Structures
Software elements
Security
Relations
quality
Properties
13.09.11 5 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Operations
6. 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
13.09.11 6 Eberhard Wolff: What Does It Really Mean to Be an Architect?
7. Traditional View on Architect’s Role
► 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?
13.09.11 7 Eberhard Wolff: What Does It Really Mean to Be an Architect?
8. 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
13.09.11 8 Eberhard Wolff: What Does It Really Mean to Be an Architect?
9. 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
13.09.11 9 Eberhard Wolff: What Does It Really Mean to Be an Architect?
10. 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
13.09.11 10 Eberhard Wolff: What Does It Really Mean to Be an Architect?
11. 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
13.09.11 11 Eberhard Wolff: What Does It Really Mean to Be an Architect?
12. New Skills For Architects
► Even more communication
► Convince, not enforce
► Must listen to other team members
► …and use their experience and knowledge
► Must have excellent technical skills
► Must not think about architecture as stable
► i.e. must be able to change plans and adapt
13.09.11 12 Eberhard Wolff: What Does It Really Mean to Be an Architect?
13. Traditional Architect as a Metaphor
An architect is a person
trained in the planning,
design and oversight of the
construction of buildings.
13.09.11 13 Eberhard Wolff: What Does It Really Mean to Be an Architect?
14. 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
► Specification
► 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
13.09.11 14 Eberhard Wolff: What Does It Really Mean to Be an Architect?
15. A New Way to Think About Creating Software
1999 2001
13.09.11 15 Eberhard Wolff: What Does It Really Mean to Be an Architect?
16. 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
13.09.11 16 Eberhard Wolff: What Does It Really Mean to Be an Architect?
17. Software Craftsmanship
► Quality, even perfection
► Work with code
► Apprenticeship / collaboration
► Smaller barriers between team members
13.09.11 17 Eberhard Wolff: What Does It Really Mean to Be an Architect?
18. 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
13.09.11 18 Eberhard Wolff: What Does It Really Mean to Be an Architect?
19. Architect’s Experience
► Bigger “Vocabulary”
> Architecture patterns
> Basic approaches
> Frameworks, languages etc.
► Thinks in trade offs
> Knows the alternatives
> There is no black and white
► Knows what is going on in the project
> Code quality
> Current issues
► Knows how to get software into production
13.09.11 19 Eberhard Wolff: What Does It Really Mean to Be an Architect?
20. Code vs. Architecture
► Ultimately, code is the deliverable
► Architecture must be expressed in the
code
► If the architecture is not in the code, the
architect failed
► It makes sense to focus on code
► …and see whether the architecture is
really implemented
► Of course architecture and its
documentation are important to reach the
project goal!
13.09.11 20 Eberhard Wolff: What Does It Really Mean to Be an Architect?
21. What Is Wrong About Craftsmanship?
► The software is at the center
► It fails to mention what the software is created
for
► Most software has a clear business goal
► At the end customers have to be happy
► Quality and how it is created must serve this
goal
► Software is not a goal in itself
► http://dannorth.net/
2011/01/11/programming-is-not-a-craft/
13.09.11 21 Eberhard Wolff: What Does It Really Mean to Be an Architect?
22. Responsibilities Again
► Non-functional requirements /
quality
> Performance
> Availability
> Productivity
> Maintainability
> Security
> Operation readiness
► The architecture will create a
compromise between these goals
► E.g. seemingly half finished
software might be enough
► Even though it is not well-crafted
► See agility
13.09.11 22 Eberhard Wolff: What Does It Really Mean to Be an Architect?
23. 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
13.09.11 23 Eberhard Wolff: What Does It Really Mean to Be an Architect?
24. 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
13.09.11 24 Eberhard Wolff: What Does It Really Mean to Be an Architect?
25. Domain Driven Design
► “Tackling Complexity in the
Heart of Software”
► E.g. Ubiquitous Language
for Code, Developers and
Customers
13.09.11 25 Eberhard Wolff: What Does It Really Mean to Be an Architect?
26. 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
13.09.11 26 Eberhard Wolff: What Does It Really Mean to Be an Architect?
27. 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
13.09.11 27 Eberhard Wolff: What Does It Really Mean to Be an Architect?
28. So:
What Does It Really Mean to Be an Architect?
13.09.11
28
29. Architect
► Cares about non-functional requirements
► Used to be clearly separated from developers
► Cannot lead “by title”
> In particular in self-organizing teams
> Will be ignored
> …or create a failure
► Communication, giving and accepting feedback
► Craftsmanship might be a better metaphor
> Apprenticeship and learning
> More focus on code
► Vocabulary (pattern, typical architectural approaches) important
► Strategic design – quality where it matters
Eberhard Wolff: What Does It Really Mean to Be an Architect?