Top Banner
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. People, Roles, and Teams Software Architecture Lecture 27
37
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: Software architect - roles & responsabilities

Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.

People, Roles, and Teams

Software ArchitectureLecture 27

Page 2: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

The Need

● The greatest architectures are the product of u A single mind oru A very small, carefully structured team

● Rechtin, Systems Architecting: Creating & Building Complex Systems, 1991, p21

● Every project should have exactly 1 identifiable architect u For larger projects, principal architect should be

backed up by architect team of modest size

● Booch, Object Solutions, 1996

*

Page 3: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Software Architects

● Architect is “jack of all trades”● Maintainer of system’s conceptual integrity● Part of team

u Set of people with complementary skillsu Committed to common

● Purpose● Performance goals● Approach

u Hold each other accountable● Life of architect is long series of locally suboptimal decisions made

partly in the darku Sometimes painful

*

Page 4: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Desired Skill Set● Software development expertise● Domain expertise● Communicator● Strategist● Consultant● Leader● Technologist● Cost estimator● Cheerleader● Politician● Salesperson

*

Page 5: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Blending the Skill Set

● May need different people & skills based on u Characteristics of project & domainu Lifecycle “phase”u Type of architecture

● Enterprise vs. product-line vs. productu Distinction between junior & senior architects

● Each architect should possess some subset of above skills● What architects are usually not in a project

u Developers – though they may prototype their ideasu Managers – except in small organizations

*

Page 6: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Software Development Experts

● Must understand nuances of software developmentu Principlesu Methods & techniquesu Methodologiesu Tools

● Need not be world-class software programmers● Should understand ramifications of architectural choices

u Do not live in ivory toweru Some architectural choices constrain implementation

optionsu Some implementation-level techniques & tools constrain

architectural choices*

Page 7: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Domain Experts

● Software engineering expertise is not enough● Problem domain nuances

u Maturityu Stabilityu System user profile

● May greatly affect selected & developed architectural solutionsu Distributionu Scaleu Evolvability

● Requires artifacts that model problem spaceu Not solution space *

Page 8: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Team Needs Balance & Shared Vocabulary

*

D

S

Too little domain knowledge

Page 9: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Team Needs Balance & Shared Vocabulary

*

DD

S

Too little domain knowledge

S

Too little SWE knowledge

Page 10: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Team Needs Balance & Shared Vocabulary

*

DD

S

Too little domain knowledge

S

Too little SWE knowledge

D

S

No Shared Vocabulary

Page 11: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Team Needs Balance & Shared Vocabulary

*

DD

S

Too little domain knowledge

S

Too little SWE knowledge

D

S

No Shared Vocabulary

D

S

Good!

Page 12: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Communicators

● At least ½ of the job● Must

u Listen to stakeholder concernsu Explain the architectureu Negotiate compromises

● Need good communication skillsu Writing u Speakingu Presenting

*

Page 13: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects Communicate With● Managers

u Must relay key messages● Architecture is useful & important● Ensure support throughout project

u Must listen to concerns● Cost● Schedule

● Developersu Convince them that architecture is effectiveu Justify local suboptimal choicesu Listen to problems

● Tools● Methods● Design choices

● Other software architectsu Ensure conceptual integrityu Ensure desired system properties & evolution

*

Page 14: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects Also Communicate With

● System engineersu Coordinate requirements & solutionsu Explain how architecture addresses key concerns

● Customersu Determine needsu Explain how architecture addresses requirements

● Usersu Determine needsu Explain how architecture addresses those needsu Listen to problems

● Marketersu Get/help set goals & directions u Explain how architecture addresses marketing objectives

*

Page 15: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Strategists

● Developing elegant architecture is not enoughu Technology is only part of pictureu Architecture must be right for organization

● Must fit organization’su Business strategyu Rationale behind itu Business practicesu Planning cyclesu Decision making processes

● Must also be aware of competitors’u Productsu Strategiesu Processes

*

Page 16: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Consultants

● Architects must recognize developers are their primary “customer”

● Developers u Goals do not match architects’u Not focused on making architecture successfulu Focused on

● Satisfying functional, quality, and scheduling requirements

● Subsystems for which they are responsible

*

Page 17: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Consultants (cont.)

● Developers must be convinced to u Learn, adhere to, & effectively leverage architecture

● Architects need to make these tasks reasonably easy

u Document & report architecturally-relevant modifications

● Architects need to make clear what’s architecturally-relevant◆ “Where are load bearing walls?”

*

Page 18: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Leaders● Must be technical leader

u Based on knowledge & achievementu Command respect by ideas, expertise, words, & actionsu Cannot rely on position in org chart

● Must do so without managerial authority● Ensures that design decisions, guidelines, and rules are

followed ● To improve productivity & quality, injects

u New ideas, solutions, & techniquesu Mentor newcomers & junior people

● Make decisions & help assure their implementationu Enlist help of others in doing so

*

Page 19: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Technologists

● Understand software development approachesu E.g., object-oriented (OO) & component-based

● Understand fundamental technologiesu Operating system/networkingu Middlewareu Securityu Databasesu Graphical user interface (GUI) toolkits

● Keep on top of trendsu E.g., CORBA, COM/DCOM, JavaBeans, UML, XML

● Demonstrated expertise inu System modelingu Architectural trade-off analysisu Tying architectural solutions to system requirements

*

Page 20: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Cost Estimators

● Must understand financial ramifications of architectural choicesu Green-field vs. Brown-field developmentu Cost of COTS adoptionu Cost of development for reuseu Company’s financial stability & position in marketplace

● Technologically superior solution is not always most appropriate oneu Impact on cost & schedule

● Quick, approximate cost estimations are often sufficientu Detailed cost estimation techniques can be applied

once set of candidate solutions is narrowed down*

Page 21: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Cheerleaders● Especially needed on long, large, complex projects

u Development teams work in trenches on small subsets of projectu Managers lose sight of overall project goalsu Customers get impatient from long wait

● Mustu Maintain high-level vision with necessary details sprinkled inu Convince different stakeholders of architecture’s

● Beauty● Utility● Adaptability● Technological impact● Financial impact

u Keep the troops’ morale high

*

Page 22: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects As Politicians● Must get key organization players committed to

architecture● Must do a lot of influencing themselves

u Find out who the key players areu Find out what they wantu Find out the organization behind the organization

● Architects must continuouslyu Listenu Networku Articulateu Sell visionu See problem from multiple viewpoints

*

Page 23: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Architects as Salespeople

● For many of the above reasons, architects must sellu Overall visionu Technological solutionsu Key properties of architectureu Key properties of eventual system that architecture

will directly enableu Cost/schedule profileu Importance of sticking to architectureu Penalties of deviating from it

*

Page 24: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Software Architecture Team

● Collection of software architects● Typically stratified● Team size fluctuates during life of project

u 1 architect per 10 developers during project inceptionu 1 architect per 12-15 developers in later stages

● Architects mayu Become subsystem development leads

● Maintainers of grand vision on development team● Bridges to “central” architecture team for duration

of projectu Be shifted to other projects

● After project’s architecture is sufficiently stable*

Page 25: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Role of Architecture Team

● Define software architecture● Maintain architectural integrity of software● Assess technical risks associated with design● Propose order & contents of development

iterations● Coordinate & coexist with other teams● Assist in project management decisions● Assist marketing in future product definition

*

Page 26: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Defining Software Architecture

● The architecture team must define

u Major design major elements

u System organization/structure

u The way major elements interact

● Works with system engineers & development teams

*

Page 27: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Maintaining Architectural Integrity

● The architecture team develops & maintains guidelines foru Designu Programming

● Helps with reviews● Approves

u Changes to interfaces of major componentsu Departures from guidelines

● Final arbiter on aesthetics● Assists change control board with resolving software

problems

*

Page 28: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Assessing Technical Risks

● The architecture team maintains lists of perceived risks● May propose exploratory studies or prototypes

*

Page 29: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Ordering & Content Of Development Iterations

● The architecture team determines order & contents of iterations based onu Selected scenariosu Services to be studied & implemented

● Helps development teams transition from architectural design to more detailed design

*

Page 30: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Coordinate & Coexist with Other Teams● No structural difference between architecture

team & other teams● Just focused on higher level issues

*

Architecture team Software Management

Development Team A Development Team B Development Team C

Integration & Test Team

feedback

Architecture design, scenarios, & guidelines

Modules, subsystems, & tests

Page 31: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Pitfalls of Software Architect Teams● Imbalance of skills

u Lack of software development experienceu Lack of domain expertise

● Lack of authorityu Team acts as committee

● Life in ivory tower● Confusing tools/techniques/methodologies with

architectures● Procrastination

*

Page 32: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Pitfall: Lack Of Authority

● Problemu What incentives are there for group leaders to

● Follow recommendations of architecture team?● Report progress or problems to architecture team?

u Architect team● Frequently has no explicit authority

◆ Architects are not managers● Just another team in organization

u Problem compounded when external architect or architecture team is hired

● Solution:u Must influence based on skills & experienceu Must communicate

*

Page 33: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Pitfall: Life In Ivory Tower● Problem

u Developers & managers must be aware of architecture team’s existence & role

● Solutionu Team must continuously communicate with rest of personnelu Team must be co-located with rest of project personnelu Do not use team as retirement home for ageing developersu Architecture team must recognize & adjust to organizational

realities● Technological base● Personnel issues● Organizational politics● Market pressures

*

Page 34: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Pitfall: Imbalance Of Skills● Problem

u Predominant expertise in one area creates imbalance● Database● GUI● Networking● Systems

u Imbalance may affect how architecture is● Designed● Communicated● Evolved

● Solutionu Balanced architecture team appropriate to

● Project type & size● Problem domain● Personnel *

Page 35: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Pitfall: Confusing Tools With Architectures

● Problemu Common pitfallu Usual culprits

● Databases● GUI● Case tools

u More recently, the culprit is middleware● “Our architecture is CORBA”

u Tools tend to influence architecture● Solution

u Balanced architecture team

*

Page 36: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Pitfall: Procrastination● Problem

u Waiting until the team is convinced it is able to make the “right” decision

u Incomplete & changing information yields indecisionu Architects’ indecision impacts other teams

● Domino effect, may paralyze entire project● Solution

u Often better to make a decision than suspend the project● Make educated guesses● Document rationale for decision● Document known consequences● Change decision if/when better alternatives present themselves● Be decisive

u Being an effective architect demands rapidly making tactical decisions & living with resulting anxiety

● Suboptimal decisions based on incomplete information*

Page 37: Software architect - roles & responsabilities

Software Architecture: Foundations, Theory, and Practice

Summary

● Designate architect or assemble architecture team to be creators & proponents of common system goal/vision

● Architects must be experienced at least in problem domain & software development

● Software architect is a full-time job● Charter of software architecture team should

u Clearly define its roles & responsibilitiesu Clearly specify its authority

● Do not isolate software architecture team from the rest of project personnel

● Avoid pitfalls

*