Oop 2014 sw architekt v3

Post on 10-May-2015

354 views 1 download

Tags:

Transcript of Oop 2014 sw architekt v3

Everything You Always Wanted to Know Everything You Always Wanted to Know About About Software Architects* but Software Architects* but Were Were Afraid to Ask Afraid to Ask

© 2014, Prof. Dr. Michael Stal

Why do we need Architects?Why do we need Architects?„We use an agile process where architecture is built by community“„Architecture is being created in one small design step“„Our application is so small; architecture design is a waste of resources“„We always use the same reference architecture“

Houdini

Get rid of the architectural chains and

get rid of architects

Because Architecture is the Because Architecture is the Backbone of any SystemBackbone of any System

Architecture design comprises the whole lifecycleArchitects have many responsibilities that are not related to design Almost all design-by-community efforts result in bad products (see Frederick P. Brooks‘ The Design of Design)Architecting and implementation need different sets of skillsArchitectural flaws cause substantial costs and risks (i.e., accidental complexity as opposed to inherent complexity)

Becoming an Architect seems to be Becoming an Architect seems to be incredibly easyincredibly easy

Just read the right books ...and obtain some mathematical skills

Just shift your ShapeJust shift your Shape

Developer Architect

Some Miracle

BirthBirth ofof ArchitectsArchitects

In some organizations architects are those who have the label „Architect“ (on their business card)

BirthBirth ofof ArchitectsArchitects ((cont‘dcont‘d))

Some other organizations may use sophisticated questionaires

BirthBirth ofof ArchitectsArchitects ((cont‘dcont‘d))

Advanced organizations may even have a job profile ...

... that is insufficient (e.g. RUP)

Design Design errorserrors maymay causecause expensive expensive andand lethallethal failuresfailures

Architecture as the backbone of allsystems:

Architectures with lack of quality are doomed to fail

Architecture design should happen in a planned and systematic way, not ad-hoc

Skilled & experienced architects needed across the whole product lifecycle, not just in one short project phase

Tacoma Narrows Bridge (1940) collapsed due to neglectingresonance forces

Radiation Therapy System Therac-25: lack of quality andsoftware failure caused 3 deaths

Lousy Architects create lousy Lousy Architects create lousy Architectures ...Architectures ...

Intempo Skyscaper, Spain:Architects forgot elevators between 21st and 47th level – Maybe for health reasons

Tower of Pisa: structural engineering did not work very well

Airport BER: No compliance with safety regulations led to a

very large delay

... ... aand Lousy Architectures cause nd Lousy Architectures cause DisastersDisasters

„Even God himself could not sink this ship“

Challenger Disaster caused by bad rocket booster design

Ariane 5 explosion due to overflow exception

And all of this reduces Customer And all of this reduces Customer HappinessHappiness

HHow can we find good Architects?ow can we find good Architects?

Only with the help of wizards?

Or by chasing this rare species in its habitats?

Or by assigning the role to some unfortunate developers?

Architects in quest for good design

Architecture as the Holy Grail

Architects Habitat Architects Habitat -- TheoryTheory

What we want:

Architects Habitat Architects Habitat -- PracticePractice

What we often get:

Failure has many RootsFailure has many RootsWe can‘t forbid failure, but we can enforce learning from failure!

Cemetery for past/passed projects

Real Architects need Skills, Real Architects need Skills, Knowledge & ExperienceKnowledge & Experience

RequirementsEngineering

Software Architect

Responsibilities and Involvements of Responsibilities and Involvements of ArchitectsArchitects

(c) Siemens AG

ArchitectureArchitecture & Design Skills& Design SkillsArchitects need deep knowledge and skills such as:

Development Processes

Architecture Design and Implementation incl. Scoping, Modelling, Prototyping

Architecture Evolution & Improvement

Product Line & Platform Engineering

Architecture Assessment + CQM

Assessment of Internal Architecture Quality

System and Application Integration

Relevant Technologies, Methods and Tools

Relevant Best Practices (e.g., Design Tactics, Patterns & Architecture Styles)

Usability & Habitability

Project management skills are optional but very useful (e.g. for effort planning)

Knowledge of Business and StrategyKnowledge of Business and StrategyTo help achieve business goals andmake projects succeed it isnecessary for architects to know:

Business Strategy of own organizationProduct RoadmapTechnology RoadmapsVendor ManagementTarget Markets & CustomersLegal Issues, Patents, Licensing Standards and Regulations (i.e., TÜV, DIN, FDA, …)Product Line & Platform Engineering

Otherwise, they cannot makeappropriate design decisions

RequirementsRequirements Engineering SkillsEngineering SkillsArchitects must know thedomain(s) (i.e. problemdomain and solutiondomain)They need to understand requirements, assess their quality, feasibility & sufficiency, and give feedbackPrioritization is typically conducted by business AND architects

Testing & Quality SkillsTesting & Quality SkillsArchitects need in-breadthknowledge about

Test PlansTest MethodsFlavors of testing (integrationtests, system tests, componenttests, acceptance tests, loadtests, …)

… and in-depth knowledgeabout

Design for TestabilityTDDTest Strategies

Soft SkillsSoft Skills

… are essential for architects, e.g.:Stakeholder-specific communication

(Giving and receiving) feedback, Mentoring

Listening

Conflict resolution

Understanding different personalities

Leading and convincing others without line function

Typically, Architects are leaders without power. Their only means is to convince with arguments

Cooperation, not ConfrontationCooperation, not ConfrontationArchitecture design requires many contributors: testers, customers, developers, product managers, ...Architecture is the result of joint workJoint work requires close and effective cooperation

The day, when the architect died

Domain KnowledgeDomain KnowledgeIt is important for architects to understand the relevant domains:

Solution Domain: important concepts, technologies, methods, tools, trends, ...Problem Domain: Domain-specific concepts, standards, regulations, markets, products, competitors, trends, ...

They should know essential aspects in-depth, other aspects in-breadth

Experiences in Software EngineeringExperiences in Software EngineeringArchitects of small systems should have

at least 3 years experience as software engineer

experience as a key developer or subsystem architect

For mission-critical Systemsat least 6 years experience as software/systems engineer

3 years experience as architect in small to medium projects

Uncertainty PrincipleUncertainty PrincipleArchitects are facing the Uncertainty Principle in their daily work. They must be able to deal with uncertainty.

Architecture ProcessArchitecture ProcessNot-iterative, non-incremental development process models don‘t work for strategic and tactical designWe require a risk-driven and test-driven feedback loop to address uncertaintyArchitecture must be built using piecemeal growth -even within more „traditional“ processes

Activities of an ArchitectActivities of an ArchitectArchitecting does not only involve creation of architectures but also:

Monitoring the development process by CQM (Code quality Management) toolsReviewing architecturesImproving and extending architecturesConducting Architecture Archeology

You need to foster architectures as if they were your children

Unchartered TerritoriesUnchartered TerritoriesNo technology is a panacea – you can even loose all of the benefits by bad designWe cannot predict how new and innovative, sometimes disruptive technologies will influence the architecture (e.g. quality attributes)This is even worse for the combination of technologies, and is usually not addressed very wellArchitects should leverage feasibility prototypes, at least for the most crucial qualitiesMethods for Architecture Assessment are applicable as well Some Prototypes

TipTip ofof thethe IcebergIcebergThere are many forces architects have to balanceE.g., architects are actually facing additional non-technical and non-architectural responsibilities and involvements

Design

All the rest

Decision MakingDecision MakingArchitecting is about decision making and risk mitigationSometimes, architects are anxious to make a wrong decision or don‘t have the courage to enforce a decisionExperience tells us to be courageous. In most cases is almost always better to go the wrong way than being stuck Power stealing in India

Essence of Good CollaborationEssence of Good Collaboration

Software Development is a collaborative game [Alistair Cockburn]

Thus, communication skills are probably the most important skills in software/system engineering

Hence:

NO! YES!

Network of CommunicationNetwork of CommunicationLeadership, Communication and Interaction with other roles in software development, are probably the most time-intensive and most important responsibilities

Software Project Manager –in a meeting with the CEO

SoftwareArchitect

Requirements Engineer

Test Manager

Software Developer

Other Roles ?

Product line Manager

Head of R&D

Be aware Be aware ofof Conway‘sConway‘s LawLawOne important consideration isConway‘s law:

“organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations”

Complex decision processes

Corperate Spam

Meeting Overkill

Unclear or overlapping Responsibilities

Systems EngineeringSystems EngineeringIn systems engineering the architect needs to closely cooperate with the systems architect

Software Architects must understand

the contribution of different disciplines (Electronics, Mechatronics, Software, ...) and their „orchestration“,

the additional development phases such as commissioning,

the pitfalls and traps (developing software when the rest is only partially available, relation of unit costs and software architecture, ...).

Systems engineer

Software Architect

Electrial Engineering

Project Manager

Stay UpStay Up--ToTo--DateDateTechnologies & methods appear and evolve veryfrequentlyConsequently, architects need to stay in sync withrelevant technologies and methods

„Architect always implements“

Active Networking

Mutual Architecture Assessments

Attending events such as Conferences

Collecting & digesting news in (practioner) magazines, web sites

CloudsSustainabilityMobile Devices, ...

The The otherother Side Side ofof thethe CoinCoin --Working as an Working as an ArchitectArchitect

... can be extremely exhausting,even dangerous.

TenTen ReasonsReasons notnot to be an Architect*to be an Architect*1. The gene pool that is your social life will not have a lot of diversity

2. The pay and benefits are not as good as they could be

3. The hours you work are long and under-valued

4. Your ideals don’t really matter

5. If your ideals are important to you, you will lose work

6. Not all architects have fun jobs

7. The systems you use will depress you

8. You will live with terrible decisions

9. Architecture requires a lot of work and dedication

10. You probably won’t be a designer

* source: http://www.lifeofanarchitect.com/top-ten-reasons-not-to-be-an-architect/

Interestingly this is what building architects think

Avoid Design HellAvoid Design Hell

How to create a bad architect

Ingredients:Spaghetti DesignDesign Erosion

Architecture DriftDesign Flaw

UMLFailure,

New Requirements....

If you are still not terrified ...If you are still not terrified ...

How can you systematically achieve or increase architecture skills?

Let us take the long & dangerous Let us take the long & dangerous Route to Architect‘s ParadiseRoute to Architect‘s Paradise

Step 1: ProfilingStep 1: ProfilingDevelop a set of skills, knowledge and experience you need as an architect (in your organization)

Compare your current profile with this target profile

Don‘t do this alone but ask other colleagues and roles to give you feedback about your current profile and their expectations

Step 2: ReflectionStep 2: ReflectionElaborate and prioritize your gaps

Or as they say in the London Underground: Mind the gap!

Make a detailed and prioritized plan how to systematically fill these gaps, e.g. by

certifications

seminars

books, web casts

coaches, mentors

opportunities to practice

...

Step 3: DoingStep 3: DoingPerform the aforementioned stepsIn our fast moving industry this process should be repeated regularlyIn addition, active networking with other architects is highly recommended

Piecemeal GrowthPiecemeal GrowthThe gaps might be terrifying, but don‘tpanic!Be patient and improve step by step, the same way your architectures should be createdYour education as an architect will never end, since methods andtechnologies evolvequickly

Mission Accomplished Mission Accomplished

Be relaxed: You‘ll eventually become a cool architect, ... if you start early enough

ArchitectsArchitects CertificationCertificationDevelopment of company-internal education programBenefits:

customized for specific needscontinuous improvementnot limited to architecture (may also teach in testing, business, …)

Liabilities:requires large cost

Certification by 3rd party organisationssuch as iSAQB, IASA, CMU Software Engineering InstituteBenefits:

usually less expensiveLiabilities:

more „generic“ to suit all kinds of participantsArchitecture & Design onlydifferent trainings lead to education patchwork

Hybrid approach (Best-of-Breed)use option 1, but fill gaps with option 2 (Best-of-Breed)

ExampleExample: Siemens Education : Siemens Education Programs Programs forfor (Senior) (Senior) ArchitectsArchitects

Introduced in 2007Main Constituents of Senior ArchitectsProgram

Proposal of Candidates by Sector CEOs Interviews with each Candidate => Acceptance4 Workshops with 2-3 month breaksCertification Gates after each workshopCandidates work on topics (optional) andhomework (mandatory) within their actualproject (no toy projects!)Education areas: Architecture, Business & Strategy, Requirements/Product Line Engineering, Testing & Quality, Soft Skills

Network of Siemens Architects whomeet regularly and work jointly on important topicsSo far, excellent feedback and highacceptance in Top Management

Content not carved in stone. Feedback ofparticipants helps improveand evolve the material continuously

Learning Learning fromfrom FailureFailure

Senior Senior ArchitectArchitect CertificationCertification @ @ SiemensSiemens

Goal: share good practices, be aware of pitfalls and eliminate the potential for failure in software development at Siemens!

© SIEMENS AG

Workshop 1: Workshop 1: EstablishEstablish ArchitectureArchitectureVisionVision

© SIEMENS AG

Workshop 2: Workshop 2: RealizeRealize ArchitectureArchitecture

© SIEMENS AG

Workshop 3: Workshop 3: SustainSustain ArchitectureArchitecture

© SIEMENS AG

Don‘tDon‘t ignoreignore Work Life BalanceWork Life BalanceIf you want to be successful, balance work & lifeThis aspect is commonly underestimatedIn my experience architects with work overload cause more harm than good. Exhausted, unfocused architects are a common root of design flaws

SummarySummaryBecoming and being a good architect is a continuous and sometimes hard process, not a one-way street Architects need expertise, skills and knowledge - not only in Engineering but also in Communication, Testing, Requirements Engineering, Business & Strategy, ...Architecting is also about decision making and learning from failureIf not reviewed regularly, design flaws will erode the architecture. Thus, Test/Risk-Driven-Design, Architecture Assessments, Refactoring should considered mandatoryReflect continuously about the capabilities you need and where you should increase or improve your knowledge

Stairway to Heaven (for Software Architects)

The EndThe End

Source: starush, flickr.com

Just kiddingJust kidding

This is the real Happy End