software architect - roles & responsabilities
TRANSCRIPT
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.
People, Roles, and Teams
Software ArchitectureLecture 27
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
*
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
*
Software Architecture: Foundations, Theory, and Practice
Desired Skill Set● Software development expertise● Domain expertise● Communicator● Strategist● Consultant● Leader● Technologist● Cost estimator● Cheerleader● Politician● Salesperson
*
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
*
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*
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 *
Software Architecture: Foundations, Theory, and Practice
Team Needs Balance & Shared Vocabulary
*
D
S
Too little domain knowledge
Software Architecture: Foundations, Theory, and Practice
Team Needs Balance & Shared Vocabulary
*
DD
S
Too little domain knowledge
S
Too little SWE knowledge
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
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!
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
*
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
*
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
*
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
*
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
*
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?”
*
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
*
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
*
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*
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
*
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
*
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
*
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*
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
*
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
*
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
*
Software Architecture: Foundations, Theory, and Practice
Assessing Technical Risks
● The architecture team maintains lists of perceived risks● May propose exploratory studies or prototypes
*
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
*
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
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
*
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
*
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
*
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 *
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
*
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*
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
*