Top Banner
Eberhard Wolff, adesso AG Ten Advices for Architects
56

Ten Advices for Architects

Jan 14, 2015

Download

Technology

Eberhard Wolff

These are ten advices for Software Architechts.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ten Advices for Architects

Eberhard Wolff, adesso AG

Ten Advices for Architects

Page 2: Ten Advices for Architects

About me

•  Eberhard Wolff •  Architecture & Technology Manager at adesso •  adesso is a leading IT consultancy in Germany •  Speaker •  Author (e.g. first German Spring book) •  Blog: http://ewolff.com •  Twitter: @ewolff •  http://slideshare.com/ewolff •  [email protected]

Page 3: Ten Advices for Architects

Why?

•  Educating architects internally at adesso

•  What should they know?

•  What is the bare minimum?

Page 4: Ten Advices for Architects

Software Architect Software architect is a general term with many accepted definitions which refers to a broad range of roles.

Not really well defined…

Page 5: Ten Advices for Architects

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.

Page 6: Ten Advices for Architects

Why We Care

Software Architecture

Structures Software elements Relations Properties

Performance

Availability

Productivity

Maintainability

Security

Operations

Defines non-functional requirements &

quality

Page 7: Ten Advices for Architects

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

Page 8: Ten Advices for Architects

YOU ARE NOT AN ARCHITECT!

Page 9: Ten Advices for Architects

Agile Development i.e. Scrum

Product Owner

Creates stories

Stories

Scrum Master Removes obstacles

Enforces rules

Team Self-organizing

Implements stories

Where is the

Architect?

Page 10: Ten Advices for Architects

You Are Not An Architect!

•  No manager •  Need to convince not manage •  Therefore: Not that different from a developer •  More experienced •  More knowledge

Page 11: Ten Advices for Architects

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 •  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

Page 12: Ten Advices for Architects

Different Way to Think About Roles

1999 2001

Page 13: Ten Advices for Architects

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

Page 14: Ten Advices for Architects

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

Page 15: Ten Advices for Architects

YOUR OPINION MATTERS!

Page 16: Ten Advices for Architects

Your Opinion Matters!

•  You need to have your own opinion •  …about technologies •  …about architecture approaches

•  Listen to opinions of others •  …but come up with your own •  Your responsibility

Page 17: Ten Advices for Architects

•  http://lemmings.mytrash.tv/

Page 18: Ten Advices for Architects

Your Opinion Matters!

•  This applies to this conference •  …and this talk •  If it does not make sense to you

– say so •  Your opinion – your responsibility •  Even if someone is a speaker – he might still

be wrong •  Never be intimidated!

Page 19: Ten Advices for Architects

PEOPLE WANT TO IMPROVE!

Page 20: Ten Advices for Architects

People Want to Improve!

•  Technical people take pride in their skills

•  …often also quality

•  They want to improve and create great quality!

•  Guide the way •  Define what quality is

Page 21: Ten Advices for Architects

What You Can Do…

•  Education •  Review •  Pairing •  Talks •  …

Page 22: Ten Advices for Architects

What If They Don’t Want to Improve?

•  You are screwed •  No way to create high quality with

those people

•  Ensure that they know what quality is and what is expected

Page 23: Ten Advices for Architects

ARCHITECTURE = TRADE OFF

Page 24: Ten Advices for Architects

Architecture = Trade Off

•  There are numerous ways to architect each system

•  There is no one single right architecture

•  Each architecture has strength and weaknesses

•  Think about architecture in terms of Trade Offs

•  Do they match your requirements?

Page 25: Ten Advices for Architects

Example for Trade Off: Persistence

•  Option: SQL – More control – Less infrastructure

•  Option: O/R mapper – Seemingly easier to use – But a complex piece of technology

•  Option: NoSQL – A lot of options with individual strength and

weaknesses

Page 26: Ten Advices for Architects

IMPROVE YOUR VOCABULARY

Page 27: Ten Advices for Architects

Vocabulary •  Approaches to architecting a

system •  Defines what kind of architectures

and systems you can express

•  The more you know the better you can do trade offs

•  Will offer new perspectives on what you doing

•  Also it is interesting to learn what others do

Page 28: Ten Advices for Architects

How to Improve Your Vocabulary

•  Patterns – Fowler: Patterns of Enterprise

Application Architecture – Gamma et al: Design Patterns – Buschmann et al: Patterns-

Oriented Software Architecture – Hohpe: Pattern of Enterprise

Integration •  Evans: Domain Driven Design

Page 29: Ten Advices for Architects

How to Improve Your Vocabulary •  Technologies

– How many Persistence approaches do you know?

– Should at least have a high level overview

– There is life beyond standards – Can save a lot of time and effort

•  Conferences •  Web Sites •  Reviews •  Coaching

Page 30: Ten Advices for Architects

Again: Persistence

•  “Patterns of Enterprise Application Architecture” lists persistence approaches

•  Ruby on Rails uses Active Record (i.e. objects can store themselves)

•  myBATIS for easy persistence using SQL (Java / .NET)

•  …

Page 31: Ten Advices for Architects

EAT YOUR OWN DOG FOOD!

Page 32: Ten Advices for Architects

Eat Your Own Dog Food! •  Defining an architecture is easy •  It is hard to create the right

architecture

•  Need feedback

•  Eat your own dog food: Develop code yourself

•  Do pair programming •  To become grounded

Page 33: Ten Advices for Architects

NO BROKEN WINDOWS

Page 34: Ten Advices for Architects

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

Page 35: Ten Advices for Architects

Broken Windows in Architecture •  Compromises on quality will

become out of hand •  Might speed up a project for

a limited time •  But: Will hurt productivity in

the long run •  …and ultimately slow it down •  Higher quality can mean less

cost and quicker delivery •  Metaphor: Technical debt •  Much like debt in real life

Page 36: Ten Advices for Architects

But…

•  There might still be broken windows •  There might be more and less skilled

developers

•  What do I do?

Page 37: Ten Advices for Architects

STRATEGIC DESIGN

Page 38: Ten Advices for Architects

Domain Driven Design •  “Tackling Complexity

in the Heart of Software”

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

Page 39: Ten Advices for Architects

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

Page 40: Ten Advices for Architects

Strategic Domain Driven Design

•  Can be used to manage quality

•  What are the core business domains?

•  Focus on quality of those •  Isolate them from the rest of

the system •  Let the best developer work

on the most important parts

Page 41: Ten Advices for Architects

Strategic Domain Driven Design

•  Acknowledges that not all developers are equals

•  …and not all parts of a system will have the same quality

•  Allows you to steer which parts will be better

Page 42: Ten Advices for Architects

CARE ABOUT ARCHITECTURE AND CODE

Page 43: Ten Advices for Architects

Care About Architecture and Code

•  You can draw diagrams until the end of time •  It’s the code and the architecture in the code

that matters •  Architectures is only used to influence code

Page 44: Ten Advices for Architects

MEASURE AND REDUCE

Page 45: Ten Advices for Architects

Measure and Reduce

•  No way to know all code by heart •  Still: You and the team need to understand

the state of the project •  Need tools to measure and reduce

information

Page 46: Ten Advices for Architects

Sonar

•  Server that integrates a lot of systems •  Static code analysis (Findbugs, PMD etc) •  Lines of Code, classes •  Test code coverage •  Complexity •  Historized i.e. easy to spot trends •  Easy to install •  Visit http://nemo.sonarsource.org/ for

examples

Page 47: Ten Advices for Architects

Draw Conclusions!

•  Do not try to enforce a certain value for a metric!

•  Metrics are used to reduce information and get warning signs

•  Use them to improve quality •  If you enforce a value mindlessly problems

will be avoided – not solved •  …and measurements will become worthless

Page 48: Ten Advices for Architects

DEPENDENCIES MATTER!

Page 49: Ten Advices for Architects

Dependency Management

•  Essential for measuring architecture •  i.e. what is the structure in the code?

•  Why are Dependencies so important?

Page 50: Ten Advices for Architects

What is Architecture?

•  Architecture is the decomposition of systems in parts

•  No large or complex parts •  No cyclic dependencies

Page 51: Ten Advices for Architects

Normal Dependencies •  A and B might be

packages or classes

•  B depends on A, i.e. it uses classes, methods etc.

•  Changes in A impact B •  Changes in B do not

impact A

Component A

Component B

Page 52: Ten Advices for Architects

Cyclic Dependency •  B depends on A and A on

B •  Changes in A impact B •  Changes in B impact A •  A and B can only be

changed as one unit •  …even though they should

be two separate units

Component A

Component B

Page 53: Ten Advices for Architects

Bigger cyclic dependencies

Component A

Component C

Component B

Page 54: Ten Advices for Architects

Measure Dependencies!

•  …otherwise they will get out of hand •  Cyclic dependencies mean:

–  It should be separated according to the architecture

– …but it is not

•  JDepend – rather outdated •  Structure 101 •  Sonargraph

Page 55: Ten Advices for Architects

Care about Code and

Architecture

Measure and Reduce

Dependencies Matter

You are Not an Architect

Eat your own Dog Food

People Want To Improve

Architecture is Trade Off

Vocabulary

Quality

No Broken Windows

Strategic Design

And Remember: Your Opinion Matters!

Page 56: Ten Advices for Architects

www.AAAjobs.de

[email protected]

Wir suchen Sie als

Ø  Software-Architekt (m/w) Ø  Projektleiter (m/w) Ø  Senior Software Engineer (m/w)

Ø  Kommen Sie zum Stand und gewinnen Sie ein iPad 2!