People, Roles, and TeamsThe NeedSoftware ArchitectsDesired Skill SetBlending the Skill SetArchitects As Software Development ExpertsArchitects As Domain ExpertsTeam Needs Balance & Shared VocabularySlide 9Slide 10Slide 11Architects As CommunicatorsArchitects Communicate WithArchitects Also Communicate WithArchitects As StrategistsArchitects As ConsultantsArchitects As Consultants (cont.)Architects As LeadersArchitects As TechnologistsArchitects As Cost EstimatorsArchitects As CheerleadersArchitects As PoliticiansArchitects as SalespeopleSoftware Architecture TeamRole of Architecture TeamDefining Software ArchitectureMaintaining Architectural IntegrityAssessing Technical RisksOrdering & Content Of Development IterationsCoordinate & Coexist with Other TeamsPitfalls of Software Architect TeamsPitfall: Lack Of AuthorityPitfall: Life In Ivory TowerPitfall: Imbalance Of SkillsPitfall: Confusing Tools With ArchitecturesPitfall: ProcrastinationSummaryCopyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.People, Roles, and TeamsSoftware ArchitectureLecture 272Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureThe NeedThe greatest architectures are the product of A single mind orA very small, carefully structured teamRechtin, Systems Architecting: Creating & Building Complex Systems, 1991, p21Every project should have exactly 1 identifiable architect For larger projects, principal architect should be backed up by architect team of modest sizeBooch, Object Solutions, 19963Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureSoftware ArchitectsArchitect is “jack of all trades”Maintainer of system’s conceptual integrityPart of teamSet of people with complementary skillsCommitted to commonPurposePerformance goalsApproachHold each other accountableLife of architect is long series of locally suboptimal decisions made partly in the darkSometimes painful4Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureDesired Skill SetSoftware development expertiseDomain expertiseCommunicatorStrategistConsultantLeaderTechnologistCost estimatorCheerleaderPoliticianSalesperson5Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureBlending the Skill SetMay need different people & skills based on Characteristics of project & domainLifecycle “phase”Type of architecture Enterprise vs. product-line vs. productDistinction between junior & senior architectsEach architect should possess some subset of above skillsWhat architects are usually not in a project Developers – though they may prototype their ideasManagers – except in small organizations6Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureArchitects As Software Development ExpertsMust understand nuances of software developmentPrinciplesMethods & techniquesMethodologiesToolsNeed not be world-class software programmersShould understand ramifications of architectural choicesDo not live in ivory towerSome architectural choices constrain implementation optionsSome implementation-level techniques & tools constrain architectural choices7Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureArchitects As Domain ExpertsSoftware engineering expertise is not enoughProblem domain nuancesMaturityStabilitySystem user profileMay greatly affect selected & developed architectural solutionsDistributionScaleEvolvabilityRequires artifacts that model problem spaceNot solution space8Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureTeam Needs Balance & Shared VocabularyDSToo little domain knowledge9Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureTeam Needs Balance & Shared VocabularyDDSToo little domain knowledgeSToo little SWE knowledge10Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureTeam Needs Balance & Shared VocabularyDDSToo little domain knowledgeSToo little SWE knowledgeDSNo Shared Vocabulary11Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureTeam Needs Balance & Shared VocabularyDDSToo little domain knowledgeSToo little SWE knowledgeDSNo Shared VocabularyDSGood!12Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureArchitects As CommunicatorsAt least ½ of the jobMustListen to stakeholder concernsExplain the architectureNegotiate compromisesNeed good communication skillsWriting SpeakingPresenting13Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureArchitects Communicate WithManagersMust relay key messagesArchitecture is useful & importantEnsure support throughout projectMust listen to concernsCostScheduleDevelopersConvince them that architecture is effectiveJustify local suboptimal choicesListen to problemsToolsMethodsDesign choicesOther software architectsEnsure conceptual integrityEnsure desired system properties & evolution14Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureArchitects Also Communicate WithSystem engineersCoordinate requirements & solutionsExplain how architecture addresses key concernsCustomersDetermine needsExplain how architecture addresses requirementsUsersDetermine needsExplain how architecture addresses those needsListen to problemsMarketersGet/help set goals & directions Explain how architecture addresses marketing objectives15Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureArchitects As StrategistsDeveloping elegant architecture is not enoughTechnology is only part of pictureArchitecture must be right for organizationMust fit organization’sBusiness strategyRationale behind itBusiness practicesPlanning cyclesDecision making processesMust also be aware of competitors’ProductsStrategiesProcesses16Foundations, Theory, and PracticeSoftware ArchitectureSoftware ArchitectureArchitects As ConsultantsArchitects must recognize developers are their primary “customer”Developers Goals do not match architects’Not focused on making architecture successfulFocused onSatisfying functional, quality, and scheduling
View Full Document