1 / 8

Software Architecture in Practice (3 rd Ed) Introduction What is Software Architecture What software architecture is an

Software Architecture in Practice (3 rd Ed) Introduction What is Software Architecture What software architecture is and what it is not

sef
Download Presentation

Software Architecture in Practice (3 rd Ed) Introduction What is Software Architecture What software architecture is an

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture What software architecture is and what it is not The softwarearchitectureofasystemisthesetofstructuresneededto reason aboutthesystem, whichcomprise softwareelements, relations among them, andpropertiesofboth. Architecture is a set of software structures (program) decomposition structures, component-and-connector structures (C&C), allocation structures Architecture is an abstraction Model of a software system Every software system has a software architecture documented or undocumented Architecture includes behavior (external) behaviors/properties of architectural elements are part of architecture Not all architectures are good architectures determined by architecture’s quality attributes System architecture vs. enterprise architecture System architecture is concerned with a total system, including hardware, software, and humans. Enterprise architecture is a description of the structure and behavior of an organization’s processes, information flow, personnel, and organizational subunits, aligned with the organization’s core goals and strategic direction.

  2. Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Architectural Structures and Views A view is a representation of a coherent set of architectural elements, as written by and read by system stakeholders. It consists of a representation of a set of elements and relations among them. A Structure is the set of elements itself, as they exist in software or hardware. Three kinds of structures Module structures Module structures embodydecisionsastohowthesystemistobestructuredasasetofcodeordataunitsthathavetobeconstructedor procured. Modules representastaticwayofconsideringthesystem. Modules areassigned areasoffunctionalresponsibility Module structuresallowustoanswerquestionssuchasthese: ■ What istheprimaryfunctionalresponsibilityassignedtoeachmodule? ■ What othersoftwareelementsisamoduleallowedtouse? ■ What othersoftwaredoesitactuallyuseanddependon? ■ What modulesarerelatedtoothermodulesbygeneralizationorspecialization(i.e.,inheritance) relationships? Component-and-connector structures Allocation structures

  3. Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Three kinds of structures Module structures Component-and-connector structures Embody decisionsas tohowthesystem istobestructuredasasetofelementsthathaveruntimebehavior(components) andinteractions(connectors). In C&C, the elements areruntimecomponents Component-and-connector viewshelp to answerquestionssuchasthese: ■ What arethemajorexecutingcomponentsandhowdotheyinteractatruntime? ■ What arethemajorshareddatastores? ■ Whichpartsofthesystemarereplicated? ■ How doesdataprogressthroughthesystem? ■ What partsofthesystemcanruninparallel? ■ Can thesystem’sstructurechangeas itexecutesand, ifso, how? By extension, component-and-connector viewsarecruciallyimportant for askingquestionsaboutthesystem’sruntimepropertiessuchas performance, security, availability, andmore. Allocation structures

  4. Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Three kinds of structures Module structures Component-and-connector structures Allocation structures Embody decisionsastohowthesystemwillrelatenonsoftwarestructures inits environment (such asCPUs, filesystems,networks, developmentteams, etc.). These structuresshowtherelationshipbetweenthesoftwareelements and elements inoneormoreexternalenvironmentsinwhich thesoftwareiscreatedandexecuted. Allocation viewshelpusanswerquestionssuchasthese: ■ What processordoeseachsoftwareelementexecuteon? ■ In what directoriesor filesiseachelementstoredduringdevelopment,testing, andsystembuilding? ■ What istheassignmentofeachsoftwareelementtodevelopmentteams?

  5. Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Relating structures to each other

  6. Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Architectural Patterns In some cases, architectural elements are composed in ways that solve particular problems. The compositions have been found useful over time, and over many different domains, and so they have been documented and disseminated. These compositions of architectural elements, called architectural patterns, provide packaged strategies for solving some of the problems facing a system. Example module type pattern: Layered pattern Example C&C type patterns: Shared-data (or repository) pattern Client-server pattern Example allocation type patterns: Multi-tier pattern (software-to-hardware allocation) Competence center and platform (work assignment structure) Competence center: work isallocatedtositesdependingonthetechnicalordomainexpertiselocated atasite. Platform:onesiteistaskedwithdevelopingreusablecoreassetsofasoftwareproductline, andothersitesdevelopapplicationsthatusethecoreassets.

  7. What makes a “Good Architecture” Process recommendation The architectureshouldbetheproductofasinglearchitectorasmallgroupofarchitectswithanidentifiedtechnicalleader. The architect(or architectureteam) should, onanongoingbasis, basethe architectureona prioritized list of well-specified quality attribute requirements. The architecture should be documented using views. The views should address the concerns of the most important stakeholders in support of the project timeline. The architectureshouldbeevaluatedforitsabilitytodeliverthesystem’s importantqualityattributes. The architectureshouldlenditselftoincrementalimplementation, toavoidhavingtointegrateeverythingatonce(which almostneverworks) aswellastodiscoverproblemsearly. Product/Structural recommendation The architectureshouldfeaturewell-definedmoduleswhosefunctionalresponsibilitiesareassignedontheprinciplesofinformationhidingandseparation ofconcerns. Qualityattributesshouldbeachievedusingwell-known architecturalpatternsandtactics. The architectureshouldneverdependonaparticularversionofacommercialproductortool. Modules thatproducedatashouldbeseparatefrommodulesthatconsumedata. Don’t expectaone-to-one correspondencebetweenmodulesandcomponents. Every processshouldbewrittensothatitsassignmenttoa specificprocessorcanbeeasily changed, perhapsevenatruntime. The architectureshouldfeatureasmallnumberofwaysforcomponentstointeract. The architectureshouldcontainaspecific(and small) setofresourcecontentionareas, theresolutionofwhichisclearlyspecifiedandmaintained.

More Related