SlideShare a Scribd company logo
Software Architecture
Presented by Steve EssichPresented by Steve Essich
https://www.linkedin.com/in/sessich/https://www.linkedin.com/in/sessich/
Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
Introduction to Software Architecture
Vision
• Maximize the value of the solutions built forMaximize the value of the solutions built for
customerscustomers
 Utilize the depth and breadth of the technical portfolio andUtilize the depth and breadth of the technical portfolio and
resource pool.resource pool.
• Distinguish solutions from those ofDistinguish solutions from those of
competitorscompetitors
 Explore innovative and novel approachesExplore innovative and novel approaches
• Leverage assets created during projectsLeverage assets created during projects
 Repeat success by creating reference architecturesRepeat success by creating reference architectures
Introduction to Software Architecture
Vision(continued)
• Encourage cross-selling / up-sellingEncourage cross-selling / up-selling
 Harness the imagination and experience of the technicalHarness the imagination and experience of the technical
staff by improving communication about opportunitiesstaff by improving communication about opportunities
across the firm’s technical communityacross the firm’s technical community
• Promote long-term relationships withPromote long-term relationships with
customerscustomers
 Provide a foundation for the future with the delivery of aProvide a foundation for the future with the delivery of a
well architected solution.well architected solution.
• Improve communication with stakeholdersImprove communication with stakeholders
regarding technical issues and decisionsregarding technical issues and decisions
 Enable debate, therefore improving overall qualityEnable debate, therefore improving overall quality
Introduction to Software Architecture
Vision(continued)
• Move toward a solution focus from aMove toward a solution focus from a
technology biastechnology bias
 Look at the delivery organization as a toolbox containingLook at the delivery organization as a toolbox containing
diverse and complimentary toolsdiverse and complimentary tools
• Identify technical areas that needIdentify technical areas that need
enhancementenhancement
 Increase customer value and enhance our deliveryIncrease customer value and enhance our delivery
capabilitiescapabilities
• Harness and focus developer creativity byHarness and focus developer creativity by
providing necessary constraintsproviding necessary constraints
 Define best practices, standards and guidelinesDefine best practices, standards and guidelines
• Improve the firm’s ability to scale up byImprove the firm’s ability to scale up by
creating an architecture practicecreating an architecture practice
Introduction to Software Architecture
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
Agenda
Introduction to Software Architecture
Value
• Reduce operating costs for development andReduce operating costs for development and
supportsupport
 Lower the number of latent defects / LOCLower the number of latent defects / LOC
 Reduce the cost of removing defectsReduce the cost of removing defects
 Positive impact on costs during warranty periodsPositive impact on costs during warranty periods
• Reduce the customer’s cost of ownership forReduce the customer’s cost of ownership for
productsproducts
 Defect repair (outside warranty periods) is expensive.Defect repair (outside warranty periods) is expensive.
 Increased customer satisfactionIncreased customer satisfaction
 Increased product lifespanIncreased product lifespan
Introduction to Software Architecture
Value (continued)
• Enhance customer retention, encourageEnhance customer retention, encourage
extensions to existing productsextensions to existing products
 Well architected solutions are easier to extend, therebyWell architected solutions are easier to extend, thereby
extending the product lifespan and the relationship with theextending the product lifespan and the relationship with the
firm.firm.
 Building new software and extending existing systems isBuilding new software and extending existing systems is
higher margin work than fixing defects.higher margin work than fixing defects.
• Higher staff productivity & improved retentionHigher staff productivity & improved retention
 More efficient use of staffMore efficient use of staff
 Reduction in the time spent repairing defectsReduction in the time spent repairing defects
 Increased employee satisfactionIncreased employee satisfaction
Introduction to Software Architecture
Value (continued)
• Improved estimates and more predictableImproved estimates and more predictable
schedulesschedules
 Reduces the risk of project work, especially fixed price projectsReduces the risk of project work, especially fixed price projects
• Create reusable assetsCreate reusable assets
 Leverage assets created for one project across other projectsLeverage assets created for one project across other projects
in the verticalin the vertical
Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
Introduction to Software Architecture
What is Software Architecture?
• Software architecture is the collection ofSoftware architecture is the collection of
decisions affecting the system’s qualitydecisions affecting the system’s quality
attributes; which have global effects andattributes; which have global effects and
are hardest to change.*are hardest to change.*
* Arnon Rotem-Gal-Oz
• Software architecture providesSoftware architecture provides
the frame within which the designthe frame within which the design
(code) is built.*(code) is built.*
Introduction to Software Architecture
What is Software Architecture? (continued)
• Software architecture is the fundamentalSoftware architecture is the fundamental
organization of a system, embodied in itsorganization of a system, embodied in its
components, their relationships to each othercomponents, their relationships to each other
and the environment, and the principlesand the environment, and the principles
governing its design andgoverning its design and
evolution.*evolution.*
* IEEE 1471-2000
Introduction to Software Architecture
What is Software Architecture? (continued)
• The software architecture of a program orThe software architecture of a program or
computing system is the structure orcomputing system is the structure or
structures of the system, which comprise thestructures of the system, which comprise the
software elements, the externally visiblesoftware elements, the externally visible
properties of those elements,properties of those elements,
and the relationships betweenand the relationships between
them.them.*
* Software Architecture in Practice
Introduction to Software Architecture
What is Software Architecture? (continued)
• Software architecture…Software architecture…
 Identifies the technologies that will be usedIdentifies the technologies that will be used
 Defines the main components of a system and theirDefines the main components of a system and their
relationships.relationships.
 Defines how the components interact with eachDefines how the components interact with each
other, and with the outside world.other, and with the outside world.
 Is complex and can’t be described in a one-Is complex and can’t be described in a one-
dimensional fashion.dimensional fashion.
 Is driven by the need to satisfy quality factorsIs driven by the need to satisfy quality factors
 Constrains the design and the implementation.Constrains the design and the implementation.
• Thereby focusing creativity and innovation.Thereby focusing creativity and innovation.
Introduction to Software Architecture
What is Software Architecture? (continued)
• Every system has an architectureEvery system has an architecture
 Even if it is accidental.Even if it is accidental.
• Architecture is about making choices…Architecture is about making choices…
 Early in the product development lifecycleEarly in the product development lifecycle
 That if delayed would be expensive or significantlyThat if delayed would be expensive or significantly
degrade quality.degrade quality.
 In response to (conflicting) requirements.In response to (conflicting) requirements.
• Architecture is about strategy, structure andArchitecture is about strategy, structure and
purpose.purpose.
 Tends to be abstractTends to be abstract
Introduction to Software Architecture
What is Software Architecture? (continued)
• The Architecture is a blueprint for the project!The Architecture is a blueprint for the project!
 Team selectionTeam selection
 Documentation organizationDocumentation organization
 Work breakdown structureWork breakdown structure
 Scheduling, planning, budgetingScheduling, planning, budgeting
 Unit testing and integrationUnit testing and integration
Introduction to Software Architecture
What is Software Architecture?
• All Architecture is design…All Architecture is design…
 But not all design is architectureBut not all design is architecture
• Design focuses on…Design focuses on…
 The internal structure of componentsThe internal structure of components
 The configuration of previously identified tools andThe configuration of previously identified tools and
technologiestechnologies
 Algorithms, procedures and data types.Algorithms, procedures and data types.
• Design w/o architecture may produce solutions that…Design w/o architecture may produce solutions that…
 Don’t address non-functional requirementsDon’t address non-functional requirements
 Incur high-levels of unintentional technical debt.Incur high-levels of unintentional technical debt.
not
Introduction to Software Architecture
Software Quality
Introduction to Software Architecture
Rules of Thumb for Architecture
• Created by a single architect or a smallCreated by a single architect or a small
group with an identified leadergroup with an identified leader
• Start with functional and non-functionalStart with functional and non-functional
requirements, along with prioritizedrequirements, along with prioritized
quality factors.quality factors.
• Documented with the needs of allDocumented with the needs of all
stakeholders in mindstakeholders in mind
Introduction to Software Architecture
Rules of Thumb for Architecture
(continued)
• Actively reviewed by stakeholdersActively reviewed by stakeholders
• Evaluated for satisfaction ofEvaluated for satisfaction of
requirements and quality factorsrequirements and quality factors
• Suitable for incremental implementationSuitable for incremental implementation
• Decomposed into software componentsDecomposed into software components
that adhere to the modularity principlesthat adhere to the modularity principles
Introduction to Software Architecture
Rules of Thumb for Architecture
(continued)
• Isolate dependencies on COTSIsolate dependencies on COTS
 Or external systemsOr external systems
• Separate production and consumption ofSeparate production and consumption of
datadata
• Use a small number of interactionUse a small number of interaction
patternspatterns
Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
Introduction to Software Architecture
Documenting a Software Architecture
• The perfect architecture is useless unless itThe perfect architecture is useless unless it
is effectively communicated.is effectively communicated.
 Appropriate level of detailAppropriate level of detail
 Without ambiguityWithout ambiguity
 Organized for ease of useOrganized for ease of use
 Tailored to the audience and their purposesTailored to the audience and their purposes
• You cannot create a single comprehensive model ofYou cannot create a single comprehensive model of
a reasonably complex software system.a reasonably complex software system.
Introduction to Software Architecture
Introduction to Views
• You must partition the documentation into separateYou must partition the documentation into separate
but interrelated views.but interrelated views.
 Each view represents one or more structural aspects of anEach view represents one or more structural aspects of an
architecture.architecture.
• Benefits of Views include…Benefits of Views include…
 Separation of concernsSeparation of concerns
 Communication with stakeholder groupsCommunication with stakeholder groups
 Management of complexityManagement of complexity
 Improved developer focusImproved developer focus
• Drawbacks of Views include…Drawbacks of Views include…
 InconsistencyInconsistency
 Selection of the wrong set of viewsSelection of the wrong set of views
 View fragmentationView fragmentation
Introduction to Software Architecture
View Catalog
• Logical or Functional ViewLogical or Functional View
 Decomposes the system into functional elements.Decomposes the system into functional elements.
• Includes the architecturally significant elementsIncludes the architecturally significant elements
• Layers, components.Layers, components.
• Describes each elements’ responsibilitiesDescribes each elements’ responsibilities
 Describes the relationships and interactions betweenDescribes the relationships and interactions between
elements.elements.
• Data or Information ViewData or Information View
 Represents the data model for the systemRepresents the data model for the system
 Relates the data model back to Logical View elementsRelates the data model back to Logical View elements
Introduction to Software Architecture
View Catalog (continued)
• Process or Concurrency ViewProcess or Concurrency View
 Represents the systems processes, threads, andRepresents the systems processes, threads, and
concurrency control mechanisms.concurrency control mechanisms.
 Maps elements of the Logical View to processes andMaps elements of the Logical View to processes and
threads.threads.
• Implementation or Development ViewImplementation or Development View
 Represents the organization of the system in terms ofRepresents the organization of the system in terms of
packages for design and implementation.packages for design and implementation.
 Identifies standards and guidelines to be used during theIdentifies standards and guidelines to be used during the
design and implementation.design and implementation.
Introduction to Software Architecture
View Catalog (continued)
• Deployment ViewDeployment View
 Describes the physical environment in which the system willDescribes the physical environment in which the system will
run. (For example:run. (For example: nodes, connections and storage)nodes, connections and storage)
 Identifies the technical requirements for each elementIdentifies the technical requirements for each element
 Maps Logical View elements across nodes.Maps Logical View elements across nodes.
• Operational ViewOperational View
 Describes how the system will be operated, administeredDescribes how the system will be operated, administered
and supported when running in the production environment.and supported when running in the production environment.
 Includes information about…Includes information about…
• Installation / upgradesInstallation / upgrades
• Data migrationData migration
• Operational monitoring and controlOperational monitoring and control
• Configuration managementConfiguration management
• Backup and restoreBackup and restore
Introduction to Software Architecture
Agenda
• VisionVision
• ValueValue
• What is Software Architecture?What is Software Architecture?
• Documenting a Software ArchitectureDocumenting a Software Architecture
• Characteristics of an ArchitectCharacteristics of an Architect
Introduction to Software Architecture
Characteristics of an Architect
• GeneralistGeneralist
 Experience with multiple technologies.Experience with multiple technologies.
 Appreciation of multiple disciplinesAppreciation of multiple disciplines
 Awareness of personal strengths and weaknessesAwareness of personal strengths and weaknesses
• LeaderLeader
 Able to make technical decisions after seekingAble to make technical decisions after seeking
meaningful inputmeaningful input
• CommunicatorCommunicator
 ListenerListener
 Able to effectively communicate with a variety ofAble to effectively communicate with a variety of
audiences, tailoring the message appropriatelyaudiences, tailoring the message appropriately
Introduction to Software Architecture
Characteristics of an Architect (continued)
• Delivery focusedDelivery focused
 Act as a driving force for the delivery of tangibleAct as a driving force for the delivery of tangible
results throughout the product lifecycle.results throughout the product lifecycle.
• Organize resources and contribute to planningOrganize resources and contribute to planning
 Architectural decisions drive…Architectural decisions drive…
• The skill sets required for the project.The skill sets required for the project.
• The identification and sequencing of tasks.The identification and sequencing of tasks.
• Keen interest in the business domainKeen interest in the business domain
 The architect is an advocate for the customer andThe architect is an advocate for the customer and
the delivery of a solution.the delivery of a solution.
Introduction to Software Architecture
Characteristics of an Architect (continued)
• Understands the importance of the softwareUnderstands the importance of the software
development processdevelopment process
 Key participant in the definition of the SDP.Key participant in the definition of the SDP.
• Skilled participant in the elicitation andSkilled participant in the elicitation and
documentation of requirementsdocumentation of requirements
 Especially non-functional requirementsEspecially non-functional requirements
• Significant experience in the use of relevantSignificant experience in the use of relevant
technologiestechnologies
 At least some of the relevant technologiesAt least some of the relevant technologies
Introduction to Software Architecture
Characteristics of an Architect (continued)
• Ability to recognize a good design orAbility to recognize a good design or
implementationimplementation
 Or a poor one.Or a poor one.
• MentorMentor
 Mentor developers in design and implementationMentor developers in design and implementation
• Aware of organizational politicsAware of organizational politics
Introduction to Software Architecture
Mantras for the Architect*
• It DependsIt Depends
 Architects make decisionsArchitects make decisions
 First the architect must identify the optionsFirst the architect must identify the options
 Then the architect must evaluate the optionsThen the architect must evaluate the options
• Requirements Are Lord Over AllRequirements Are Lord Over All
 Requirements are what the customer decides theyRequirements are what the customer decides they
want / need.want / need.
 Requirements drive the architecture, which drivesRequirements drive the architecture, which drives
the design, which drives the implementationthe design, which drives the implementation
 Customers don’t really know what they want / needCustomers don’t really know what they want / need
so requirements change.so requirements change.
* Microsoft .NET: Architecting Applications for the Enterprise
Introduction to Software Architecture
Mantras for the Architect (continued)
• Program To An InterfaceProgram To An Interface
 Keep the interface and implementation separateKeep the interface and implementation separate
• Keep It Simple But Not SimplisticKeep It Simple But Not Simplistic
 Simple and concise is usually equivalent to greatSimple and concise is usually equivalent to great
and well done.and well done.
 But simplistic is just as dangerous as tooBut simplistic is just as dangerous as too
complicated.complicated.
 Just complicated enough, but no more.Just complicated enough, but no more.
Introduction to Software Architecture
Mantras for the Architect (continued)
• Inheritance Is About PolymorphismInheritance Is About Polymorphism
 Inheritance enables reuse, but reuse should beInheritance enables reuse, but reuse should be
viewed as a side effect.viewed as a side effect.
 Use of inheritance for reuse alone is gratuitousUse of inheritance for reuse alone is gratuitous
• No SQL Outside of the DALNo SQL Outside of the DAL
 The use of SQL (or any other similar queryThe use of SQL (or any other similar query
language) outside of the Data Access Layerlanguage) outside of the Data Access Layer
should be avoided at all costs.should be avoided at all costs.
Introduction to Software Architecture
Mantras for the Architect (continued)
• Maintainability FirstMaintainability First
 If a software system can’t be maintained itIf a software system can’t be maintained it
will probably have a short and miserablewill probably have a short and miserable
existence.existence.
• All User Input Is EvilAll User Input Is Evil
 Murphy was a userMurphy was a user
Introduction to Software Architecture
Mantras for the Architect (continued)
• Optimize LastOptimize Last
 Donald Knuth said premature optimizationDonald Knuth said premature optimization
is the root of all software evil.is the root of all software evil.
 Design the system for extendibility andDesign the system for extendibility and
maintainability.maintainability.
 Optimize only when you’ve identified aOptimize only when you’ve identified a
deficiencydeficiency
• Security and Verifiability Are By DesignSecurity and Verifiability Are By Design
 If it’s important it needs to be consideredIf it’s important it needs to be considered
from the beginning.from the beginning.

More Related Content

What's hot

Design systems in organisations
Design systems in organisationsDesign systems in organisations
Design systems in organisations
Annalisa Valente
 
Agile product development and management
Agile product development and managementAgile product development and management
Agile product development and management
Ashwinee Kumar
 
RAMP: Requirements Authors Mentoring Program
RAMP: Requirements Authors Mentoring ProgramRAMP: Requirements Authors Mentoring Program
RAMP: Requirements Authors Mentoring Program
TechWell
 
Agile Software Development - Making Programming Fun Again
Agile Software Development - Making Programming Fun AgainAgile Software Development - Making Programming Fun Again
Agile Software Development - Making Programming Fun Again
Calen Legaspi
 
IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3
IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3
IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3
Mirco Hering
 
Lightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile ApproachLightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile Approach
Stephen Ritchie
 
Essential Elements Of Distributed Agile
Essential Elements Of Distributed AgileEssential Elements Of Distributed Agile
Essential Elements Of Distributed Agile
Vernon Stinebaker
 
Forming Agile Scrum Teams to Manage DITA Infrastructure
Forming Agile Scrum Teams to Manage DITA InfrastructureForming Agile Scrum Teams to Manage DITA Infrastructure
Forming Agile Scrum Teams to Manage DITA Infrastructure
Stan Doherty
 
Hothouse: CX Design in a Big Company
Hothouse: CX Design in a Big CompanyHothouse: CX Design in a Big Company
Hothouse: CX Design in a Big Company
Shardul Mehta
 
Tsp Overview
Tsp OverviewTsp Overview
Tsp Overview
Khaled Annajar
 
Agile Overview As V1.2
Agile Overview As V1.2Agile Overview As V1.2
Agile Overview As V1.2
Anjan Roy
 
[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...
[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...
[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...
Strongstep - Innovation in software quality
 
DevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASADevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASA
Kari Kakkonen
 
ISTQB Agile Extension
ISTQB Agile ExtensionISTQB Agile Extension
ISTQB Agile Extension
Davis Thomas
 
[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...
[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...
[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...
Strongstep - Innovation in software quality
 
Towards tool support for situational engineering of agile methodology
Towards tool support for situational engineering of agile methodologyTowards tool support for situational engineering of agile methodology
Towards tool support for situational engineering of agile methodologySandhiya Rajagopal
 
Midrange role in isets
Midrange role in isetsMidrange role in isets
Midrange role in isetsraziqfareed
 
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORASummary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Ragavendra Prasath
 
Catalyst college-presentation
Catalyst college-presentationCatalyst college-presentation
Catalyst college-presentationVinodh Kombissan
 

What's hot (19)

Design systems in organisations
Design systems in organisationsDesign systems in organisations
Design systems in organisations
 
Agile product development and management
Agile product development and managementAgile product development and management
Agile product development and management
 
RAMP: Requirements Authors Mentoring Program
RAMP: Requirements Authors Mentoring ProgramRAMP: Requirements Authors Mentoring Program
RAMP: Requirements Authors Mentoring Program
 
Agile Software Development - Making Programming Fun Again
Agile Software Development - Making Programming Fun AgainAgile Software Development - Making Programming Fun Again
Agile Software Development - Making Programming Fun Again
 
IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3
IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3
IBM Innovate - Adoption of Continuous Delivery at Scale at a large telco v0 3
 
Lightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile ApproachLightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile Approach
 
Essential Elements Of Distributed Agile
Essential Elements Of Distributed AgileEssential Elements Of Distributed Agile
Essential Elements Of Distributed Agile
 
Forming Agile Scrum Teams to Manage DITA Infrastructure
Forming Agile Scrum Teams to Manage DITA InfrastructureForming Agile Scrum Teams to Manage DITA Infrastructure
Forming Agile Scrum Teams to Manage DITA Infrastructure
 
Hothouse: CX Design in a Big Company
Hothouse: CX Design in a Big CompanyHothouse: CX Design in a Big Company
Hothouse: CX Design in a Big Company
 
Tsp Overview
Tsp OverviewTsp Overview
Tsp Overview
 
Agile Overview As V1.2
Agile Overview As V1.2Agile Overview As V1.2
Agile Overview As V1.2
 
[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...
[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...
[StepTalks2011] Team Software Process (TSP): High Performance Individuals, Hi...
 
DevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASADevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASA
 
ISTQB Agile Extension
ISTQB Agile ExtensionISTQB Agile Extension
ISTQB Agile Extension
 
[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...
[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...
[Agile Portugal 2012] TSP/PSP and Agile-SCRUM: Similarities & Differences Stu...
 
Towards tool support for situational engineering of agile methodology
Towards tool support for situational engineering of agile methodologyTowards tool support for situational engineering of agile methodology
Towards tool support for situational engineering of agile methodology
 
Midrange role in isets
Midrange role in isetsMidrange role in isets
Midrange role in isets
 
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORASummary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
 
Catalyst college-presentation
Catalyst college-presentationCatalyst college-presentation
Catalyst college-presentation
 

Similar to Importance of Software architecture

Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
SARCCOM
 
Software architecture introduction
Software architecture introductionSoftware architecture introduction
Software architecture introduction
Freddy Munandar
 
lect1.pdf
lect1.pdflect1.pdf
Working with software architects - advice to project managers
Working with software architects - advice to project managersWorking with software architects - advice to project managers
Working with software architects - advice to project managers
Yaniv Pessach
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore
 
Certified DevOps Architect.pdf
Certified DevOps Architect.pdfCertified DevOps Architect.pdf
Certified DevOps Architect.pdf
DevOps University
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
Niels Bech Nielsen
 
Aligning Product and Software Design
Aligning Product and Software DesignAligning Product and Software Design
Aligning Product and Software Design
Sandro Mancuso
 
Software systems engineering PRINCIPLES
Software systems engineering PRINCIPLESSoftware systems engineering PRINCIPLES
Software systems engineering PRINCIPLES
Ivano Malavolta
 
Agile architecture
Agile architectureAgile architecture
Agile architecturePaul Preiss
 
Software testing
Software testingSoftware testing
Software testing
Dhanasekaran Narayanaswamy
 
SOFTWARE ENGINEERING
SOFTWARE ENGINEERINGSOFTWARE ENGINEERING
SOFTWARE ENGINEERING
Mahalakshmi Seenaswamy
 
An introduction to software engineering
An introduction to software engineeringAn introduction to software engineering
An introduction to software engineering
SHREEHARI WADAWADAGI
 
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdfMODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
Jayanthi Kannan MK
 
Microdeployments for microservices dev ops nashville
Microdeployments for microservices   dev ops nashvilleMicrodeployments for microservices   dev ops nashville
Microdeployments for microservices dev ops nashville
Nathaniel (Ned) Bauerle
 
Architecture Design
Architecture DesignArchitecture Design
Architecture Design
Saqib Raza
 

Similar to Importance of Software architecture (20)

Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
 
Software architecture introduction
Software architecture introductionSoftware architecture introduction
Software architecture introduction
 
lect1.pdf
lect1.pdflect1.pdf
lect1.pdf
 
Chapter 09
Chapter 09Chapter 09
Chapter 09
 
Working with software architects - advice to project managers
Working with software architects - advice to project managersWorking with software architects - advice to project managers
Working with software architects - advice to project managers
 
1 introduction
1 introduction1 introduction
1 introduction
 
1 introduction (1)
1 introduction (1)1 introduction (1)
1 introduction (1)
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
 
Certified DevOps Architect.pdf
Certified DevOps Architect.pdfCertified DevOps Architect.pdf
Certified DevOps Architect.pdf
 
RRC RUP
RRC RUPRRC RUP
RRC RUP
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Aligning Product and Software Design
Aligning Product and Software DesignAligning Product and Software Design
Aligning Product and Software Design
 
Software systems engineering PRINCIPLES
Software systems engineering PRINCIPLESSoftware systems engineering PRINCIPLES
Software systems engineering PRINCIPLES
 
Agile architecture
Agile architectureAgile architecture
Agile architecture
 
Software testing
Software testingSoftware testing
Software testing
 
SOFTWARE ENGINEERING
SOFTWARE ENGINEERINGSOFTWARE ENGINEERING
SOFTWARE ENGINEERING
 
An introduction to software engineering
An introduction to software engineeringAn introduction to software engineering
An introduction to software engineering
 
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdfMODULE 1 Software Product and Process_ SW ENGG  22CSE141.pdf
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
 
Microdeployments for microservices dev ops nashville
Microdeployments for microservices   dev ops nashvilleMicrodeployments for microservices   dev ops nashville
Microdeployments for microservices dev ops nashville
 
Architecture Design
Architecture DesignArchitecture Design
Architecture Design
 

Recently uploaded

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 

Recently uploaded (20)

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 

Importance of Software architecture

  • 1. Software Architecture Presented by Steve EssichPresented by Steve Essich https://www.linkedin.com/in/sessich/https://www.linkedin.com/in/sessich/
  • 2. Introduction to Software Architecture Agenda • VisionVision • ValueValue • What is Software Architecture?What is Software Architecture? • Documenting a Software ArchitectureDocumenting a Software Architecture • Characteristics of an ArchitectCharacteristics of an Architect
  • 3. Introduction to Software Architecture Vision • Maximize the value of the solutions built forMaximize the value of the solutions built for customerscustomers  Utilize the depth and breadth of the technical portfolio andUtilize the depth and breadth of the technical portfolio and resource pool.resource pool. • Distinguish solutions from those ofDistinguish solutions from those of competitorscompetitors  Explore innovative and novel approachesExplore innovative and novel approaches • Leverage assets created during projectsLeverage assets created during projects  Repeat success by creating reference architecturesRepeat success by creating reference architectures
  • 4. Introduction to Software Architecture Vision(continued) • Encourage cross-selling / up-sellingEncourage cross-selling / up-selling  Harness the imagination and experience of the technicalHarness the imagination and experience of the technical staff by improving communication about opportunitiesstaff by improving communication about opportunities across the firm’s technical communityacross the firm’s technical community • Promote long-term relationships withPromote long-term relationships with customerscustomers  Provide a foundation for the future with the delivery of aProvide a foundation for the future with the delivery of a well architected solution.well architected solution. • Improve communication with stakeholdersImprove communication with stakeholders regarding technical issues and decisionsregarding technical issues and decisions  Enable debate, therefore improving overall qualityEnable debate, therefore improving overall quality
  • 5. Introduction to Software Architecture Vision(continued) • Move toward a solution focus from aMove toward a solution focus from a technology biastechnology bias  Look at the delivery organization as a toolbox containingLook at the delivery organization as a toolbox containing diverse and complimentary toolsdiverse and complimentary tools • Identify technical areas that needIdentify technical areas that need enhancementenhancement  Increase customer value and enhance our deliveryIncrease customer value and enhance our delivery capabilitiescapabilities • Harness and focus developer creativity byHarness and focus developer creativity by providing necessary constraintsproviding necessary constraints  Define best practices, standards and guidelinesDefine best practices, standards and guidelines • Improve the firm’s ability to scale up byImprove the firm’s ability to scale up by creating an architecture practicecreating an architecture practice
  • 6. Introduction to Software Architecture • VisionVision • ValueValue • What is Software Architecture?What is Software Architecture? • Documenting a Software ArchitectureDocumenting a Software Architecture • Characteristics of an ArchitectCharacteristics of an Architect Agenda
  • 7. Introduction to Software Architecture Value • Reduce operating costs for development andReduce operating costs for development and supportsupport  Lower the number of latent defects / LOCLower the number of latent defects / LOC  Reduce the cost of removing defectsReduce the cost of removing defects  Positive impact on costs during warranty periodsPositive impact on costs during warranty periods • Reduce the customer’s cost of ownership forReduce the customer’s cost of ownership for productsproducts  Defect repair (outside warranty periods) is expensive.Defect repair (outside warranty periods) is expensive.  Increased customer satisfactionIncreased customer satisfaction  Increased product lifespanIncreased product lifespan
  • 8. Introduction to Software Architecture Value (continued) • Enhance customer retention, encourageEnhance customer retention, encourage extensions to existing productsextensions to existing products  Well architected solutions are easier to extend, therebyWell architected solutions are easier to extend, thereby extending the product lifespan and the relationship with theextending the product lifespan and the relationship with the firm.firm.  Building new software and extending existing systems isBuilding new software and extending existing systems is higher margin work than fixing defects.higher margin work than fixing defects. • Higher staff productivity & improved retentionHigher staff productivity & improved retention  More efficient use of staffMore efficient use of staff  Reduction in the time spent repairing defectsReduction in the time spent repairing defects  Increased employee satisfactionIncreased employee satisfaction
  • 9. Introduction to Software Architecture Value (continued) • Improved estimates and more predictableImproved estimates and more predictable schedulesschedules  Reduces the risk of project work, especially fixed price projectsReduces the risk of project work, especially fixed price projects • Create reusable assetsCreate reusable assets  Leverage assets created for one project across other projectsLeverage assets created for one project across other projects in the verticalin the vertical
  • 10. Introduction to Software Architecture Agenda • VisionVision • ValueValue • What is Software Architecture?What is Software Architecture? • Documenting a Software ArchitectureDocumenting a Software Architecture • Characteristics of an ArchitectCharacteristics of an Architect
  • 11. Introduction to Software Architecture What is Software Architecture? • Software architecture is the collection ofSoftware architecture is the collection of decisions affecting the system’s qualitydecisions affecting the system’s quality attributes; which have global effects andattributes; which have global effects and are hardest to change.*are hardest to change.* * Arnon Rotem-Gal-Oz • Software architecture providesSoftware architecture provides the frame within which the designthe frame within which the design (code) is built.*(code) is built.*
  • 12. Introduction to Software Architecture What is Software Architecture? (continued) • Software architecture is the fundamentalSoftware architecture is the fundamental organization of a system, embodied in itsorganization of a system, embodied in its components, their relationships to each othercomponents, their relationships to each other and the environment, and the principlesand the environment, and the principles governing its design andgoverning its design and evolution.*evolution.* * IEEE 1471-2000
  • 13. Introduction to Software Architecture What is Software Architecture? (continued) • The software architecture of a program orThe software architecture of a program or computing system is the structure orcomputing system is the structure or structures of the system, which comprise thestructures of the system, which comprise the software elements, the externally visiblesoftware elements, the externally visible properties of those elements,properties of those elements, and the relationships betweenand the relationships between them.them.* * Software Architecture in Practice
  • 14. Introduction to Software Architecture What is Software Architecture? (continued) • Software architecture…Software architecture…  Identifies the technologies that will be usedIdentifies the technologies that will be used  Defines the main components of a system and theirDefines the main components of a system and their relationships.relationships.  Defines how the components interact with eachDefines how the components interact with each other, and with the outside world.other, and with the outside world.  Is complex and can’t be described in a one-Is complex and can’t be described in a one- dimensional fashion.dimensional fashion.  Is driven by the need to satisfy quality factorsIs driven by the need to satisfy quality factors  Constrains the design and the implementation.Constrains the design and the implementation. • Thereby focusing creativity and innovation.Thereby focusing creativity and innovation.
  • 15. Introduction to Software Architecture What is Software Architecture? (continued) • Every system has an architectureEvery system has an architecture  Even if it is accidental.Even if it is accidental. • Architecture is about making choices…Architecture is about making choices…  Early in the product development lifecycleEarly in the product development lifecycle  That if delayed would be expensive or significantlyThat if delayed would be expensive or significantly degrade quality.degrade quality.  In response to (conflicting) requirements.In response to (conflicting) requirements. • Architecture is about strategy, structure andArchitecture is about strategy, structure and purpose.purpose.  Tends to be abstractTends to be abstract
  • 16. Introduction to Software Architecture What is Software Architecture? (continued) • The Architecture is a blueprint for the project!The Architecture is a blueprint for the project!  Team selectionTeam selection  Documentation organizationDocumentation organization  Work breakdown structureWork breakdown structure  Scheduling, planning, budgetingScheduling, planning, budgeting  Unit testing and integrationUnit testing and integration
  • 17. Introduction to Software Architecture What is Software Architecture? • All Architecture is design…All Architecture is design…  But not all design is architectureBut not all design is architecture • Design focuses on…Design focuses on…  The internal structure of componentsThe internal structure of components  The configuration of previously identified tools andThe configuration of previously identified tools and technologiestechnologies  Algorithms, procedures and data types.Algorithms, procedures and data types. • Design w/o architecture may produce solutions that…Design w/o architecture may produce solutions that…  Don’t address non-functional requirementsDon’t address non-functional requirements  Incur high-levels of unintentional technical debt.Incur high-levels of unintentional technical debt. not
  • 18. Introduction to Software Architecture Software Quality
  • 19. Introduction to Software Architecture Rules of Thumb for Architecture • Created by a single architect or a smallCreated by a single architect or a small group with an identified leadergroup with an identified leader • Start with functional and non-functionalStart with functional and non-functional requirements, along with prioritizedrequirements, along with prioritized quality factors.quality factors. • Documented with the needs of allDocumented with the needs of all stakeholders in mindstakeholders in mind
  • 20. Introduction to Software Architecture Rules of Thumb for Architecture (continued) • Actively reviewed by stakeholdersActively reviewed by stakeholders • Evaluated for satisfaction ofEvaluated for satisfaction of requirements and quality factorsrequirements and quality factors • Suitable for incremental implementationSuitable for incremental implementation • Decomposed into software componentsDecomposed into software components that adhere to the modularity principlesthat adhere to the modularity principles
  • 21. Introduction to Software Architecture Rules of Thumb for Architecture (continued) • Isolate dependencies on COTSIsolate dependencies on COTS  Or external systemsOr external systems • Separate production and consumption ofSeparate production and consumption of datadata • Use a small number of interactionUse a small number of interaction patternspatterns
  • 22. Introduction to Software Architecture Agenda • VisionVision • ValueValue • What is Software Architecture?What is Software Architecture? • Documenting a Software ArchitectureDocumenting a Software Architecture • Characteristics of an ArchitectCharacteristics of an Architect
  • 23. Introduction to Software Architecture Documenting a Software Architecture • The perfect architecture is useless unless itThe perfect architecture is useless unless it is effectively communicated.is effectively communicated.  Appropriate level of detailAppropriate level of detail  Without ambiguityWithout ambiguity  Organized for ease of useOrganized for ease of use  Tailored to the audience and their purposesTailored to the audience and their purposes • You cannot create a single comprehensive model ofYou cannot create a single comprehensive model of a reasonably complex software system.a reasonably complex software system.
  • 24. Introduction to Software Architecture Introduction to Views • You must partition the documentation into separateYou must partition the documentation into separate but interrelated views.but interrelated views.  Each view represents one or more structural aspects of anEach view represents one or more structural aspects of an architecture.architecture. • Benefits of Views include…Benefits of Views include…  Separation of concernsSeparation of concerns  Communication with stakeholder groupsCommunication with stakeholder groups  Management of complexityManagement of complexity  Improved developer focusImproved developer focus • Drawbacks of Views include…Drawbacks of Views include…  InconsistencyInconsistency  Selection of the wrong set of viewsSelection of the wrong set of views  View fragmentationView fragmentation
  • 25. Introduction to Software Architecture View Catalog • Logical or Functional ViewLogical or Functional View  Decomposes the system into functional elements.Decomposes the system into functional elements. • Includes the architecturally significant elementsIncludes the architecturally significant elements • Layers, components.Layers, components. • Describes each elements’ responsibilitiesDescribes each elements’ responsibilities  Describes the relationships and interactions betweenDescribes the relationships and interactions between elements.elements. • Data or Information ViewData or Information View  Represents the data model for the systemRepresents the data model for the system  Relates the data model back to Logical View elementsRelates the data model back to Logical View elements
  • 26. Introduction to Software Architecture View Catalog (continued) • Process or Concurrency ViewProcess or Concurrency View  Represents the systems processes, threads, andRepresents the systems processes, threads, and concurrency control mechanisms.concurrency control mechanisms.  Maps elements of the Logical View to processes andMaps elements of the Logical View to processes and threads.threads. • Implementation or Development ViewImplementation or Development View  Represents the organization of the system in terms ofRepresents the organization of the system in terms of packages for design and implementation.packages for design and implementation.  Identifies standards and guidelines to be used during theIdentifies standards and guidelines to be used during the design and implementation.design and implementation.
  • 27. Introduction to Software Architecture View Catalog (continued) • Deployment ViewDeployment View  Describes the physical environment in which the system willDescribes the physical environment in which the system will run. (For example:run. (For example: nodes, connections and storage)nodes, connections and storage)  Identifies the technical requirements for each elementIdentifies the technical requirements for each element  Maps Logical View elements across nodes.Maps Logical View elements across nodes. • Operational ViewOperational View  Describes how the system will be operated, administeredDescribes how the system will be operated, administered and supported when running in the production environment.and supported when running in the production environment.  Includes information about…Includes information about… • Installation / upgradesInstallation / upgrades • Data migrationData migration • Operational monitoring and controlOperational monitoring and control • Configuration managementConfiguration management • Backup and restoreBackup and restore
  • 28. Introduction to Software Architecture Agenda • VisionVision • ValueValue • What is Software Architecture?What is Software Architecture? • Documenting a Software ArchitectureDocumenting a Software Architecture • Characteristics of an ArchitectCharacteristics of an Architect
  • 29. Introduction to Software Architecture Characteristics of an Architect • GeneralistGeneralist  Experience with multiple technologies.Experience with multiple technologies.  Appreciation of multiple disciplinesAppreciation of multiple disciplines  Awareness of personal strengths and weaknessesAwareness of personal strengths and weaknesses • LeaderLeader  Able to make technical decisions after seekingAble to make technical decisions after seeking meaningful inputmeaningful input • CommunicatorCommunicator  ListenerListener  Able to effectively communicate with a variety ofAble to effectively communicate with a variety of audiences, tailoring the message appropriatelyaudiences, tailoring the message appropriately
  • 30. Introduction to Software Architecture Characteristics of an Architect (continued) • Delivery focusedDelivery focused  Act as a driving force for the delivery of tangibleAct as a driving force for the delivery of tangible results throughout the product lifecycle.results throughout the product lifecycle. • Organize resources and contribute to planningOrganize resources and contribute to planning  Architectural decisions drive…Architectural decisions drive… • The skill sets required for the project.The skill sets required for the project. • The identification and sequencing of tasks.The identification and sequencing of tasks. • Keen interest in the business domainKeen interest in the business domain  The architect is an advocate for the customer andThe architect is an advocate for the customer and the delivery of a solution.the delivery of a solution.
  • 31. Introduction to Software Architecture Characteristics of an Architect (continued) • Understands the importance of the softwareUnderstands the importance of the software development processdevelopment process  Key participant in the definition of the SDP.Key participant in the definition of the SDP. • Skilled participant in the elicitation andSkilled participant in the elicitation and documentation of requirementsdocumentation of requirements  Especially non-functional requirementsEspecially non-functional requirements • Significant experience in the use of relevantSignificant experience in the use of relevant technologiestechnologies  At least some of the relevant technologiesAt least some of the relevant technologies
  • 32. Introduction to Software Architecture Characteristics of an Architect (continued) • Ability to recognize a good design orAbility to recognize a good design or implementationimplementation  Or a poor one.Or a poor one. • MentorMentor  Mentor developers in design and implementationMentor developers in design and implementation • Aware of organizational politicsAware of organizational politics
  • 33. Introduction to Software Architecture Mantras for the Architect* • It DependsIt Depends  Architects make decisionsArchitects make decisions  First the architect must identify the optionsFirst the architect must identify the options  Then the architect must evaluate the optionsThen the architect must evaluate the options • Requirements Are Lord Over AllRequirements Are Lord Over All  Requirements are what the customer decides theyRequirements are what the customer decides they want / need.want / need.  Requirements drive the architecture, which drivesRequirements drive the architecture, which drives the design, which drives the implementationthe design, which drives the implementation  Customers don’t really know what they want / needCustomers don’t really know what they want / need so requirements change.so requirements change. * Microsoft .NET: Architecting Applications for the Enterprise
  • 34. Introduction to Software Architecture Mantras for the Architect (continued) • Program To An InterfaceProgram To An Interface  Keep the interface and implementation separateKeep the interface and implementation separate • Keep It Simple But Not SimplisticKeep It Simple But Not Simplistic  Simple and concise is usually equivalent to greatSimple and concise is usually equivalent to great and well done.and well done.  But simplistic is just as dangerous as tooBut simplistic is just as dangerous as too complicated.complicated.  Just complicated enough, but no more.Just complicated enough, but no more.
  • 35. Introduction to Software Architecture Mantras for the Architect (continued) • Inheritance Is About PolymorphismInheritance Is About Polymorphism  Inheritance enables reuse, but reuse should beInheritance enables reuse, but reuse should be viewed as a side effect.viewed as a side effect.  Use of inheritance for reuse alone is gratuitousUse of inheritance for reuse alone is gratuitous • No SQL Outside of the DALNo SQL Outside of the DAL  The use of SQL (or any other similar queryThe use of SQL (or any other similar query language) outside of the Data Access Layerlanguage) outside of the Data Access Layer should be avoided at all costs.should be avoided at all costs.
  • 36. Introduction to Software Architecture Mantras for the Architect (continued) • Maintainability FirstMaintainability First  If a software system can’t be maintained itIf a software system can’t be maintained it will probably have a short and miserablewill probably have a short and miserable existence.existence. • All User Input Is EvilAll User Input Is Evil  Murphy was a userMurphy was a user
  • 37. Introduction to Software Architecture Mantras for the Architect (continued) • Optimize LastOptimize Last  Donald Knuth said premature optimizationDonald Knuth said premature optimization is the root of all software evil.is the root of all software evil.  Design the system for extendibility andDesign the system for extendibility and maintainability.maintainability.  Optimize only when you’ve identified aOptimize only when you’ve identified a deficiencydeficiency • Security and Verifiability Are By DesignSecurity and Verifiability Are By Design  If it’s important it needs to be consideredIf it’s important it needs to be considered from the beginning.from the beginning.
  • 38. Introduction to Software Architecture Agenda • VisionVision • ValueValue • What is Software Architecture?What is Software Architecture? • Documenting a Software ArchitectureDocumenting a Software Architecture • Characteristics of an ArchitectCharacteristics of an Architect

Editor's Notes

  1. Maximize the value of the solutions we build for our customers Utilize the depth and breadth of the technical portfolio and resource pool. Distinguish solutions from competitors Explore innovative and novel approaches Leverage assets created during projects Repeat success by creating reference architectures
  2. Encourage cross-selling / up-selling Selling Application Services into ITS opportunities (for example) Promote long-term relationships with out customers
  3. Not just a collection of hammers all in search of a nail.
  4. I like this definition because it identifies the importance of quality attributes and architecture’s role in addressing these attributes. It gives short shrift to structure.
  5. This definition focuses on components and their relationships and integrates in the idea that architecture goes beyond simple structures.
  6. SEI software architecture courses are based on this book. This definition is similar to the previous one it includes the idea that we are only interested in the externally visible properties of components. None of these definitions goes quite far enough. The fact is that Software Architecture is difficult to define in a sentence or two.
  7. Is what an architect does.
  8. Accidental or unintentional Some decisions we want to delay. Architecture is about making the fundamental decisions that can’t or shouldn’t be delayed.
  9. By creating a software architecture we make it easier to select team members. Selecting team members is driven by skill requirements and skill requirements result from architectural choices. The technical documentation for a project is organized at the highest level by the architecture documentation. The architectural elements (layers, components, partitions (vertical slices of functionality) can be used to organize the development team as well as the plan and schedule.
  10. All architecture is design just as all horses are mammals. The term "technical debt" was coined by Ward Cunningham to describe the obligation that a software organization incurs when it chooses a design or construction approach that's expedient in the short term but that increases complexity and is more costly in the long term. The first kind of technical debt is the kind that is incurred unintentionally. For example, a design approach just turns out to be error-prone or a junior programmer just writes bad code. This technical debt is the non-strategic result of doing a poor job. In some cases, this kind of debt can be incurred unknowingly, for example, your company might acquire a company that has accumulated significant technical debt that you don't identify until after the acquisition. Sometimes, ironically, this debt can be created when a team stumbles in its efforts to rewrite a debt-laden platform and inadvertently creates more debt. We'll call this general category of debt Type I. The second kind of technical debt is the kind that is incurred intentionally. This commonly occurs when an organization makes a conscious decision to optimize for the present rather than for the future. "If we don't get this release done on time, there won't be a next release" is a common refrain—and often a compelling one. This leads to decisions like, "We don't have time to reconcile these two databases, so we'll write some glue code that keeps them synchronized for now and reconcile them after we ship." Or "We have some code written by a contractor that doesn't follow our coding standards; we'll clean that up later." Or "We didn't have time to write all the unit tests for the code we wrote the last 2 months of the project. We'll right those tests after the release." (We'll call this Type II.)
  11. Software Architecture in Practice, 2nd Edition
  12. Software Architecture in Practice, 2nd Edition
  13. Software Architecture in Practice, 2nd Edition
  14. Software Architecture in Practice, 2nd Edition
  15. Separation of concerns: Focus on some aspect of the architecture separately from others. Communication with stakeholder groups: Satisfies a group of stakeholders by focusing on those aspects of particular interest to them using appropriate language and terminology. Management of complexity: A large system can be effectively decomposed and understood. Improved developer focus: The architecture is the foundation for system design. Separate views allows developers to focus on different aspects of the system thereby ensuring that the right system gets built. Inconsistency: Views are interrelated, but sometimes it’s difficult to make sure that you have consistency between the views. Selection of the wrong set of views: It can be difficult to know which views should be created. The different audiences and their needs, the complexity of the system, and the time available are all factors that need to be taken into consideration. Fragmentation: Too many views increase opportunities for inconsistencies and require additional effort. Too few views can result in combining views and creating something that is difficult to understand.
  16. I often will identify “Partitions” which are groups of functionality.
  17. Evangelist Zealot for architecture and SDP
  18. Requirements may be Lord over all, but people tend to think first in terms of a solution. One of the things that an architect can do is use technical options to help the customer understand what their requirements actually are. I often will present a continuum to the customer when the customer seems unsure of what their requirement is / should be (or if I think they are just plain wrong). I will offer two divergent possibilities and use the natural tendency to think about solution to find out the underlying requirement. Recently there was a system that is going to import data from a flat file into a database. There may be errors or issues with the importation process. I presented the customer with the two options, one option would deliver an email whenever there was a problem with a file import. The other option was to provide a dashboard that the user could navigate to see any issues that may have occurred. We discussed the idea that they are not mutually exclusive. Thinking in terms of a solution helped the customer identify their requirement.