29
13.09.11 What Does It Really Mean to Be an Architect? Eberhard Wolff Architecture and Technology Manager adesso AG

What Does It Really Mean to Be an Architect?

Embed Size (px)

DESCRIPTION

This presentation was the keynote at ECSA2011. It talks talks about the definition of architecture, architect and the responsibilities the architect should have in a project.

Citation preview

Page 1: What Does It Really Mean to Be an Architect?

13.09.11

What Does It Really Mean to Be an Architect? Eberhard Wolff

Architecture and Technology Manager

adesso AG

Page 2: What Does It Really Mean to Be an Architect?

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

►  [email protected]

Eberhard Wolff: What Does It Really Mean to Be an Architect?

Page 3: What Does It Really Mean to Be an Architect?

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?

Page 4: What Does It Really Mean to Be an Architect?

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?

Page 5: What Does It Really Mean to Be an Architect?

Software Architecture: Why We Care

13.09.11 5

Software Architecture

Structures Software elements Relations Properties

Performance

Availability

Productivity

Maintainability

Security

Operations

Defines non-functional requirements &

quality Eberhard Wolff: What Does It Really Mean to Be an Architect?

Page 6: What Does It Really Mean to Be an Architect?

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?

Page 7: What Does It Really Mean to Be an Architect?

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?

Page 8: What Does It Really Mean to Be an Architect?

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?

Page 9: What Does It Really Mean to Be an Architect?

Agile Development i.e. Scrum

13.09.11 9

Product Owner

Creates stories

Stories

Scrum Master Removes obstacles

Enforces rules

Team Self-organizing

Implements stories

Where is the

Architect?

Eberhard Wolff: What Does It Really Mean to Be an Architect?

Page 10: What Does It Really Mean to Be an Architect?

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?

Page 11: What Does It Really Mean to Be an Architect?

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

13.09.11 11 Eberhard Wolff: What Does It Really Mean to Be an Architect?

Page 12: What Does It Really Mean to Be an Architect?

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?

Page 13: What Does It Really Mean to Be an Architect?

Traditional Architect as a Metaphor

13.09.11 13

An architect is a person trained in the planning, design and oversight of the construction of buildings.

Eberhard Wolff: What Does It Really Mean to Be an Architect?

Page 14: What Does It Really Mean to Be an Architect?

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?

Page 15: What Does It Really Mean to Be an Architect?

A New Way to Think About Creating Software

13.09.11 15

1999 2001

Eberhard Wolff: What Does It Really Mean to Be an Architect?

Page 16: What Does It Really Mean to Be an Architect?

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?

Page 17: What Does It Really Mean to Be an Architect?

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?

Page 18: What Does It Really Mean to Be an Architect?

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?

Page 19: What Does It Really Mean to Be an Architect?

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?

Page 20: What Does It Really Mean to Be an Architect?

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?

Page 21: What Does It Really Mean to Be an Architect?

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?

Page 22: What Does It Really Mean to Be an Architect?

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?

Page 23: What Does It Really Mean to Be an Architect?

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?

Page 24: What Does It Really Mean to Be an Architect?

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?

Page 25: What Does It Really Mean to Be an Architect?

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?

Page 26: What Does It Really Mean to Be an Architect?

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?

Page 27: What Does It Really Mean to Be an Architect?

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?

Page 28: What Does It Really Mean to Be an Architect?

So: What Does It Really Mean to Be an Architect?

13.09.11 28

Page 29: What Does It Really Mean to Be an Architect?

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?