what does it really mean to be an architect?

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

Upload: eberhard-wolff

Post on 12-May-2015

3.705 views

Category:

Technology


2 download

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.

TRANSCRIPT

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?