software architect - roles & responsabilities

37
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. People, Roles, and Teams Software Architecture Lecture 27

Upload: adrian-cristian-grigoras

Post on 16-Jul-2015

288 views

Category:

Technology


1 download

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

*