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

PDF
Software Modernization
PPTX
User story estimation with agile architectures
PPTX
Solution Architecture tips & tricks by Roman Shramkov
PDF
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
PDF
KEY
PPTX
How to bake in quality in agile scrum projects
PDF
1221 raise expectations_for_the_ always_on_enterprise
Software Modernization
User story estimation with agile architectures
Solution Architecture tips & tricks by Roman Shramkov
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
How to bake in quality in agile scrum projects
1221 raise expectations_for_the_ always_on_enterprise

What's hot (19)

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

Similar to Importance of Software architecture (20)

PPTX
Software Architecture Introduction
PPTX
Software architecture introduction
PDF
PPT
Chapter 09
PPTX
Working with software architects - advice to project managers
PPTX
1 introduction
PPTX
1 introduction (1)
PDF
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
PPTX
SE-1.pptx abcdabcdabcdbabcsjbsdicbbhidssdb
PPTX
intro Software Development and Construtions
PDF
Certified DevOps Architect.pdf
PPTX
Introduction to Software Engineering Course Lectur 2
PPTX
Software_Engineering_Presentation about intro
PPTX
Modern software architect post the agile wave
PPTX
Lecsfsfsfsfsfsfafsgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1.pptx
PDF
Aligning Product and Software Design
PDF
Software systems engineering PRINCIPLES
PPTX
Agile architecture
PPTX
Software testing
Software Architecture Introduction
Software architecture introduction
Chapter 09
Working with software architects - advice to project managers
1 introduction
1 introduction (1)
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
SE-1.pptx abcdabcdabcdbabcsjbsdicbbhidssdb
intro Software Development and Construtions
Certified DevOps Architect.pdf
Introduction to Software Engineering Course Lectur 2
Software_Engineering_Presentation about intro
Modern software architect post the agile wave
Lecsfsfsfsfsfsfafsgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1.pptx
Aligning Product and Software Design
Software systems engineering PRINCIPLES
Agile architecture
Software testing
Ad

Recently uploaded (20)

PDF
System and Network Administraation Chapter 3
PDF
System and Network Administration Chapter 2
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
ai tools demonstartion for schools and inter college
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Digital Strategies for Manufacturing Companies
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Transform Your Business with a Software ERP System
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
AI in Product Development-omnex systems
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Understanding Forklifts - TECH EHS Solution
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
history of c programming in notes for students .pptx
System and Network Administraation Chapter 3
System and Network Administration Chapter 2
How Creative Agencies Leverage Project Management Software.pdf
ManageIQ - Sprint 268 Review - Slide Deck
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
ai tools demonstartion for schools and inter college
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Digital Strategies for Manufacturing Companies
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Transform Your Business with a Software ERP System
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
AI in Product Development-omnex systems
Wondershare Filmora 15 Crack With Activation Key [2025
How to Choose the Right IT Partner for Your Business in Malaysia
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Understanding Forklifts - TECH EHS Solution
How to Migrate SBCGlobal Email to Yahoo Easily
Design an Analysis of Algorithms II-SECS-1021-03
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
history of c programming in notes for students .pptx

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

  • #4: 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
  • #5: Encourage cross-selling / up-selling Selling Application Services into ITS opportunities (for example) Promote long-term relationships with out customers
  • #6: Not just a collection of hammers all in search of a nail.
  • #12: 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.
  • #13: This definition focuses on components and their relationships and integrates in the idea that architecture goes beyond simple structures.
  • #14: 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.
  • #15: Is what an architect does.
  • #16: Accidental or unintentional Some decisions we want to delay. Architecture is about making the fundamental decisions that can’t or shouldn’t be delayed.
  • #17: 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.
  • #18: 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.)
  • #19: Software Architecture in Practice, 2nd Edition
  • #20: Software Architecture in Practice, 2nd Edition
  • #21: Software Architecture in Practice, 2nd Edition
  • #23: Software Architecture in Practice, 2nd Edition
  • #24: 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.
  • #25: I often will identify “Partitions” which are groups of functionality.
  • #29: Evangelist Zealot for architecture and SDP
  • #33: 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.