oop 2014 sw architekt v3
Post on 10-May-2015
353 Views
Preview:
TRANSCRIPT
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
top related