Y L F M A E T Team-Fly® Large-Scale Software Architecture A Practical Guide using UML Jeff Garland CrystalClear Software Inc. Richard Anthony Object Computing Inc. Large-Scale Software Architecture Large-Scale Software Architecture A Practical Guide using UML Jeff Garland CrystalClear Software Inc. Richard Anthony Object Computing Inc. Copyright#2003byJohnWiley&SonsLtd,TheAtrium,SouthernGate,Chichester, WestSussexPO198SQ,England Telephone(+44)1243779777 Email(forordersandcustomerserviceenquiries):[email protected] VisitourHomePageonwww.wileyeurope.comorwww.wiley.com AllRightsReserved.Nopartofthispublicationmaybereproduced,storedinaretrievalsystemortransmittedin anyformorbyanymeans,electronic,mechanical,photocopying,recording,scanningorotherwise,exceptunderthe termsoftheCopyright,DesignsandPatentsAct1988orunderthetermsofalicenceissuedbytheCopyright LicensingAgencyLtd,90TottenhamCourtRoad,LondonW1T4LP,UK,withoutthepermissioninwritingofthe Publisher,withtheexceptionofanymaterialsuppliedspecificallyforthepurposeofbeingenteredandexecutedona computersystem,forexclusiveusebythepurchaserofthepublication.RequeststothePublishershouldbe addressedtothePermissionsDepartment,JohnWiley&SonsLtd,TheAtrium,SouthernGate,Chichester,West SussexPO198SQ,England,[email protected],orfaxedto(+44)1243770571. NeithertheauthorsnorJohnWiley&Sons,Ltdacceptanyresponsibilityorliabilityforlossordamageoccasioned toanypersonorpropertythroughusingthematerial,instructions,methodsorideascontainedherein,oractingor frerainingfromactingasaresultofsuchuse.Theauthorsandpublisherexpresslydisclaimallimpliedwarranties, includingmerchantabilityorfitnessforanyparticularpurpose.Therewillbenodutyontheauthorsorpublisherto correctanyerrorsordefectsinthesoftware. Designationsusedbycompaniestodistinguishtheirproductsareoftenclaimedastrademarks.Inallinstanceswhere JohnWiley&Sons,Ltdisawareofaclaim,theproductnamesappearincapitalorallcapitalletters.Readers, however,shouldcontacttheappropriatecompaniesformorecompleteinformationregardingtrademarksand registration. Thispublicationisdesignedtoprovideaccurateandauthoritativeinformationinregardtothesubjectmatter covered.ItissoldontheunderstandingthatthePublisherisnotengagedinrenderingprofessionalservices.If professionaladviceorotherexpertassistanceisrequired,theservicesofacompetentprofessionalshouldbesought. OtherWileyEditorialOffices JohnWiley&SonsInc.,111RiverStreet,Hoboken,NJ07030,USA Jossey-Bass,989MarketStreet,SanFrancisco,CA94103-1741,USA Wiley-VCHVerlagGmbH,Boschstr.12,D-69469Weinheim,Germany JohnWiley&SonsAustraliaLtd,33ParkRoad,Milton,Queensland4064,Australia JohnWiley&Sons(Asia)PteLtd,2ClementiLoop#02-01,JinXingDistripark,Singapore129809 JohnWiley&SonsCanadaLtd,22WorcesterRoad,Etobicoke,Ontario,CanadaM9W1L1 LibraryofCongressCataloging-in-PublicationData (tofollow) BritishLibraryCataloguinginPublicationData AcataloguerecordforthisbookisavailablefromtheBritishLibrary ISBN0470848499 Typesetin101/13ptSabonbyKeytecTypesetting,Bridport,Dorset 2 PrintedandboundinGreatBritainbyBiddlesLtd,GuildfordandKingsLynn Thisbookisprintedonacid-freepaperresponsiblymanufacturedfromsustainableforestry inwhichatleasttwotreesareplantedforeachoneusedforpaperproduction. Contents Preface xi Acknowledgments xvii 1 Introduction 1 1.1 WhatisSoftwareArchitecture 1 1.1.1 Whatsoftwarearchitectureisnot 4 1.1.2 Attributesofsoftwarearchitecture 5 1.1.3 Definitionsofotherkeyarchitecture-relatedterms 7 1.1.4 Othertypesofarchitectures 8 1.2 WhyArchitect? 10 1.3 ArchitecturalViewpointSummary 12 1.4 OtherSoftwareArchitectureApproaches 16 1.4.1 The4+1Views 16 1.4.2 RM-ODPviewpoints 17 1.4.3 Bassarchitecturalstructures 19 1.4.4 Hofmeistersoftwarearchitectureviews 19 1.5 RecommendedReading 19 2 Roles of theSoftware Architect 21 2.1 Relationshiptootherkeyrolesindevelopmentorganization 25 Role:projectmanagement 25 Role:developmentteammanagers 25 Role:systemarchitect/chiefengineer 26 Role:chiefsoftwareengineer 26 Role:hardwarearchitect 27 Role:networkarchitect 27 vi Contents Role:technicalleadsofeachrelease 28 Role:dataarchitect 28 Role:systemsengineeringleads 28 Role:softwaresystemsengineeringlead 29 2.2 SkillsandBackgroundfortheArchitect 29 2.3 InjectingArchitectureExperience 31 2.4 StructuringtheArchitectureTeam 32 2.5 TrapsandPitfallsAssociatedwiththeRoleofSoftwareArchitect 33 2.5.1 Cleardefinitionofleadership 34 2.5.2 Reportingstructureforthesoftwarearchitect 34 2.5.3 Geographicallocationofsoftwarearchitectandtechnicalleads 35 2.5.4 Architectureteamsizeandcomposition 36 2.5.5 Softwarearchitectlifecycleparticipation 36 2.6 RecommendedReading 37 3 Software Architectureand theDevelopment Process 39 3.1 OverviewofIterativeDevelopment 39 3.1.1 Overallprocessphases 40 3.1.2 Lifecyclestages 41 3.1.3 Architectureandagileprocesses 43 3.1.4 Startearly,refineconstantly 47 3.2 RequirementsManagement 48 3.2.1 Usecasesandrequirementsengineering 48 3.2.2 Additionalrequirementsthatimpactarchitecture 49 3.2.3 Requirementstracing 49 3.3 ManagementoftheTechnologyRoadmap 50 3.3.1 Externalsoftwareproducts 50 3.3.2 Softwaretechnologymanagementtrapsandpitfalls 53 3.3.3 Organizationaltechnologyroadmap 54 3.4 EffectiveTechnicalMeetings 55 3.4.1 Informaltechnicalmeetings 55 3.4.2 Peerreviewsandinspections 56 3.4.3 Designreviews 57 3.4.4 Designcommunicationmeetings 57 3.4.5 Managementmeetings 57 3.4.6 Vendorpresentations 58 3.4.7 Distributedtechnicalmeetings 58 3.5 TrapsandPitfallsoftheSoftwareArchitectureProcessActivities 59 Theout-of-toucharchitect 59 Analysisparalysis 60 Designforreuse 60 Usecases 60 Schedule 60 3.6 Computer-AidedSoftwareEngineering(CASE)Tools 61 3.7 RecommendedReading 62 vii Contents 4 ExampleSystem Overview 63 4.1 SystemOverview 64 4.2 OverviewofSystemInterfaces 64 4.3 Constraints 67 4.4 MajorOperationalRequirementsandSoftwareRequirements 67 5 UML Quick Tour 69 5.1 UMLDiagramSummary 69 5.2 GeneralDiagrammingConventions 72 5.2.1 GeneralUMLfeatures:stereotypes,taggedvalues,multi-instance 73 5.2.2 Viewlabels 74 5.3 TheDiagrams 75 5.3.1 Componentinstancediagrams 75 5.3.2 Classandsubsystemdiagrams 76 5.3.3 Interaction(sequenceandcollaboration)diagrams 77 5.3.4 Deploymentdiagrams 79 5.3.5 Statechartdiagrams 80 5.3.6 Activitydiagrams 81 5.4 ManagingComplexity 81 5.4.1 UseCasefocusedmodeling 82 5.4.2 Elementfocusedmodeling 82 5.4.3 Levelofdetail 83 5.4.4 Controllingthenumberofmodels 83 5.4.5 UseSupplementalTexturalInformation 85 5.5 RecommendedReading 85 6 System Contextand Domain Analysis 87 6.1 ConceptualDiagrams 87 6.2 ContextViewpoint 89 6.3 DomainAnalysisTechniques 94 6.3.1 Aformalanalysistechnique 95 6.3.2 Othertechniquesforfindingdomainentities 98 6.3.3 Analysisshortcuts 100 6.4 AnalysisViewpoints 101 6.4.1 AnalysisInteractionViewpoint 101 6.4.2 AnalysisFocusedViewpoint 103 6.4.3 AnalysisOverallViewpoint 105 6.4.4 Candidatesubsystemidentification 107 6.5 RecommendedReading 108 7 ComponentDesign and Modeling 111 7.1 Overview 111 7.1.1 Component-baseddevelopment 111 7.1.2 Terminology 112 7.1.3 Communicationandinterfaces 115 7.1.4 Findingcomponents 115 7.1.5 Qualitiesofcomponentdesign 116