SlideShare a Scribd company logo
The Big Idea Software Architecture Lecture 1
The Origins Software Engineers have always employed software architectures Very often without realizing it! Address issues identified by researchers and practitioners Essential software engineering difficulties Unique characteristics of programming-in-the-large Need for software reuse Many ideas originated in other (non-computing) domains
Software Engineering Difficulties Software engineers deal with unique set of problems Young field with tremendous expectations Building of vastly complex, but intangible systems Software is not useful on its own e.g., unlike a car, thus  It must conform to changes in other engineering areas Some problems can be eliminated These are Brooks’ “accidental difficulties” Other problems can be lessened, but not eliminated These are Brooks’ “essential difficulties”
Accidental Difficulties Solutions exist Possibly waiting to be discovered Past productivity increases result of overcoming Inadequate programming constructs & abstractions Remedied by high-level programming languages Increased productivity by factor of five Complexity was never inherent in program at all
Accidental Difficulties (cont’d) Past productivity increases result of overcoming (cont’d) Viewing results of programming decisions took long time Remedied by time–sharing Turnaround time approaching limit of human perception Difficulty of using heterogeneous programs Addressed by integrated software development environments Support task that was conceptually always possible
Essential Difficulties Only partial solutions exist for them, if any Cannot be abstracted away Complexity Conformity Changeability Intangibility
Complexity No two software parts are alike If they are, they are abstracted away into one Complexity grows non-linearly with size E.g., it is impossible to enumerate all states of program Except perhaps “toy” programs
Conformity Software is required to conform to its Operating environment Hardware Often “last kid on block” Perceived as most conformable
Changeability Change originates with  New applications, users, machines, standards, laws Hardware problems Software is viewed as infinitely malleable
Intangibility Software is not embedded in space Often no constraining physical laws No obvious representation E.g., familiar geometric shapes
Pewter Bullets Ada, C++, Java and other high–level languages Object-oriented design/analysis/programming Artificial Intelligence Automatic Programming Graphical Programming Program Verification  Environments & tools Workstations
Promising Attacks On Complexity (In 1987) Buy vs. Build Requirements refinement & rapid prototyping Hardest part is deciding what to build (or buy?) Must show product to customer to get complete spec. Need for iterative feedback
Promising Attacks On Complexity (cont’d) Incremental/Evolutionary/Spiral Development Grow systems, don’t build them Good for morale Easy backtracking Early prototypes Great designers Good design can be taught; great design cannot Nurture great designers
Primacy of Design Software engineers collect requirements, code, test, integrate, configure, etc. An architecture-centric approach to software engineering places an emphasis on design  Design pervades the engineering activity from the very beginning But how do we go about the task of architectural design?
Analogy: Architecture of Buildings We all live in them (We think) We know how they are built Requirements Design (blueprints) Construction Use This is similar (though not identical) to how we build software
Some Obvious Parallels Satisfaction of customers’ needs Specialization of labor Multiple perspectives of the final product Intermediate points where plans and progress are reviewed
Deeper Parallels Architecture is different from, but linked with the product/structure Properties of structures are induced by the design of the architecture The architect has a distinctive role and character
Deeper Parallels (cont’d) Process is not as important as architecture Design and resulting qualities are at the forefront Process is a means, not an end Architecture has matured over time into a discipline Architectural styles as sets of constraints Styles also as wide range of solutions, techniques and palettes of compatible materials, colors, and sizes
More about the Architect A distinctive role and character in a project Very broad training Amasses and leverages extensive experience A keen sense of aesthetics Deep understanding of the domain Properties of structures, materials, and environments Needs of customers
More about the Architect (cont’d) Even first-rate programming skills are insufficient for the creation of complex software applications But are they even necessary?
Limitations of the Analogy… We know a lot about buildings, much less about software The nature of software is different from that of building architecture Software is much more malleable than physical materials The two “construction industries” are very different Software deployment has no counterpart in building architecture Software is a machine; a building is not
… But Still Very Real Power of Architecture Giving preeminence to architecture offers the potential for Intellectual control Conceptual integrity Effective basis for knowledge reuse Realizing experience, designs, and code Effective project communication Management of a set of variant systems Limited-term focus on architecture will not yield significant benefits!
Architecture in Action: WWW This is the Web Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy;  © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Architecture in Action: WWW So is this Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy;  © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Architecture in Action: WWW And this Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy;  © 2008 John Wiley & Sons, Inc. Reprinted with permission.
WWW in a (Big) Nutshell The Web is a collection of resources, each of which has a unique name known as a uniform resource locator, or “URL”.  Each resource denotes, informally, some information.  URI’s can be used to determine the identity of a machine on the Internet, known as an origin server, where the value of the resource may be ascertained. Communication is initiated by clients, known as user agents, who make requests of servers.  Web browsers are common instances of user agents.
WWW in a (Big) Nutshell (cont’d) Resources can be manipulated through their representations.  HTML is a very common representation language used on the Web. All communication between user agents and origin servers must be performed by a simple, generic protocol (HTTP), which offers the command methods GET, POST, etc. All communication between user agents and origin servers must be fully self-contained. (So-called “stateless interactions”)
WWW’s Architecture Architecture of the Web is wholly separate from the code There is no single piece of code that implements the architecture. There are multiple pieces of code that implement the various components of the architecture. E.g., different Web browsers
WWW’s Architecture (cont’d) Stylistic constraints of the Web’s architectural style are not apparent in the code The effects of the constraints are evident in the Web One of the world’s most successful applications is only understood adequately from an architectural vantage point.
Architecture in Action: Desktop Remember pipes and filters in Unix? ls invoices | grep –e august | sort  Application architecture can be understood based on very few rules Applications can be composed by non-programmers Akin to Lego blocks A simple architectural concept that can be comprehended and applied by a broad audience
Architecture in Action: Product Line Motivating example A consumer is interested in a 35-inch HDTV with a built-in DVD player for the North American market.  Such a device might contain upwards of a million lines of embedded software.  This particular television/DVD player will be very similar to a 35-inch HDTV without the DVD player, and also to a 35-inch HDTV with a built-in DVD player for the European market, where the TV must be able to handle PAL or SECAM encoded broadcasts, rather than North America’s NTSC format.  These closely related televisions will similarly each have a million or more lines of code embedded within them.
Growing Sophistication of Consumer Devices
Families of Related Products
The Necessity and Benefit of PLs Building each of these TVs from scratch would likely put Philips out of business Reusing structure, behaviors, and component implementations is increasingly important to successful business practice  It simplifies the software development task It reduces the development time and cost  it improves the overall system reliability  Recognizing and exploiting commonality and variability across products
Reuse as the Big Win Architecture: reuse of  Ideas Knowledge Patterns engineering guidance Well-worn experience Product families: reuse of  Structure Behaviors Implementations Test suites…
Added Benefit – Product Populations
The Centerpiece – Architecture
Summary Software is complex So are buildings And other engineering artifacts Building architectures are an attractive source of analogy Software engineers can learn from other domains They also need to develop—and have developed—a rich body of their own architectural knowledge and experience

More Related Content

PPT
Cs 1023 lec 1 big idea (week 1)
PDF
What a Good Software Architect Does
PDF
Software architect - roles & responsabilities
PPTX
Reducing Technical Debt
PPTX
No silver bullet essence and accidents of software engineering
PPTX
No silver-bullllet-1
PPTX
No silver bullet
PPTX
No silver bullet summary (paper)
Cs 1023 lec 1 big idea (week 1)
What a Good Software Architect Does
Software architect - roles & responsabilities
Reducing Technical Debt
No silver bullet essence and accidents of software engineering
No silver-bullllet-1
No silver bullet
No silver bullet summary (paper)

What's hot (20)

PPTX
The Role of the Software Architect (short version)
PDF
Software engineering principles (marcello thiry)
PDF
Why care about technical debt?
PPTX
The five expertise of a software architect
PDF
Architecture Design Decisions and Group Decision Making
PPTX
No Silver Bullet - Essence and Accidents of Software Engineering
PPT
Lukito Edi Nugroho - Information System Engineering
PPT
04 designing architectures
PDF
Big Ball of Mud: Software Maintenance Nightmares
DOCX
Notes of Software engineering and Project Management
PPTX
A presentation on software crisis
PDF
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
PPT
19 designing for_nf_ps
PPT
20070921 Uni Softwareengineering
PPTX
CSC426 - Software Engineering Lecture Note Cont'd
PPT
Software Life Cylce Model
DOC
Chapter1
PDF
How to become a great developer
PDF
Vivek_MK
The Role of the Software Architect (short version)
Software engineering principles (marcello thiry)
Why care about technical debt?
The five expertise of a software architect
Architecture Design Decisions and Group Decision Making
No Silver Bullet - Essence and Accidents of Software Engineering
Lukito Edi Nugroho - Information System Engineering
04 designing architectures
Big Ball of Mud: Software Maintenance Nightmares
Notes of Software engineering and Project Management
A presentation on software crisis
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
19 designing for_nf_ps
20070921 Uni Softwareengineering
CSC426 - Software Engineering Lecture Note Cont'd
Software Life Cylce Model
Chapter1
How to become a great developer
Vivek_MK
Ad

Viewers also liked (20)

PPT
10 modeling and_notations
PPT
11 visualizing software_architectures
PPT
27 people roles_and_teams
PPT
15 implementing architectures
PPT
09 introduction to_modeling
PPT
18 applied architectures_part_2
PPT
12 visualizing software_architectures_part_2
PPT
13 analysis of_software_architectures
PPT
06 styles and_greenfield_design
PPT
16 implementation techniques
PPT
17 applied architectures
PDF
Linguaggi Formali e Compilazione: Automi
PPT
03 basic concepts
PPT
02 architectures in_context
PPT
23 intro to_dsse
PPT
20 nfp design_techniques
PPT
21 security and_trust
PPT
22 deployment and_mobility
PPT
25 architectural adaptation
PPT
24 dssa and_product_lines
10 modeling and_notations
11 visualizing software_architectures
27 people roles_and_teams
15 implementing architectures
09 introduction to_modeling
18 applied architectures_part_2
12 visualizing software_architectures_part_2
13 analysis of_software_architectures
06 styles and_greenfield_design
16 implementation techniques
17 applied architectures
Linguaggi Formali e Compilazione: Automi
03 basic concepts
02 architectures in_context
23 intro to_dsse
20 nfp design_techniques
21 security and_trust
22 deployment and_mobility
25 architectural adaptation
24 dssa and_product_lines
Ad

Similar to 01 the big_idea (20)

PPT
Cs 1023 lec 1 big idea (week 1)
PDF
01 Introduction to SDA 2.pdf software architecture
PDF
Lecture-1-Introduction.pdf
PPTX
NISI Agile Software Architecture Slide Deck
PPT
Architectural Thinking - What Is Architecture?
PDF
10 Hinweise für Architekten
PDF
Ten Advices for Architects
PPTX
Architecture Design
PPTX
Software engineering 17 architectural design
PDF
Architecture Business Cycle 2.pdf Software
PPTX
02 Architecture Business Cycle.pptx software
PPT
Cs 1023 lec 3 architecture (week 1)
PPT
Cs 1023 lec 3 architecture (week 1)
PDF
Software archiecture lecture03
PPTX
Software architecture slides chap1 .pptx
PPTX
Unit 4colorcolorcolorcolorcolorcolorcolor.pptx
PPT
02archintro
PPTX
Software Engineering Architectural Design
PDF
Modern Agile Software Architecture
PPTX
Introduction to Software architecture and design.pptx
Cs 1023 lec 1 big idea (week 1)
01 Introduction to SDA 2.pdf software architecture
Lecture-1-Introduction.pdf
NISI Agile Software Architecture Slide Deck
Architectural Thinking - What Is Architecture?
10 Hinweise für Architekten
Ten Advices for Architects
Architecture Design
Software engineering 17 architectural design
Architecture Business Cycle 2.pdf Software
02 Architecture Business Cycle.pptx software
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)
Software archiecture lecture03
Software architecture slides chap1 .pptx
Unit 4colorcolorcolorcolorcolorcolorcolor.pptx
02archintro
Software Engineering Architectural Design
Modern Agile Software Architecture
Introduction to Software architecture and design.pptx

More from Majong DevJfu (20)

PDF
9 - Architetture Software - SOA Cloud
PDF
8 - Architetture Software - Architecture centric processes
PDF
7 - Architetture Software - Software product line
PDF
6 - Architetture Software - Model transformation
PDF
5 - Architetture Software - Metamodelling and the Model Driven Architecture
PDF
4 - Architetture Software - Architecture Portfolio
PDF
3 - Architetture Software - Architectural styles
PDF
2 - Architetture Software - Software architecture
PDF
1 - Architetture Software - Software as a product
PDF
10 - Architetture Software - More architectural styles
PDF
PDF
PDF
4 (uml basic)
POT
Tmd template-sand
PPT
26 standards
9 - Architetture Software - SOA Cloud
8 - Architetture Software - Architecture centric processes
7 - Architetture Software - Software product line
6 - Architetture Software - Model transformation
5 - Architetture Software - Metamodelling and the Model Driven Architecture
4 - Architetture Software - Architecture Portfolio
3 - Architetture Software - Architectural styles
2 - Architetture Software - Software architecture
1 - Architetture Software - Software as a product
10 - Architetture Software - More architectural styles
4 (uml basic)
Tmd template-sand
26 standards

Recently uploaded (20)

PPTX
A Presentation on Artificial Intelligence
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
cuic standard and advanced reporting.pdf
PDF
KodekX | Application Modernization Development
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Empathic Computing: Creating Shared Understanding
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Approach and Philosophy of On baking technology
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPT
Teaching material agriculture food technology
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Unlocking AI with Model Context Protocol (MCP)
A Presentation on Artificial Intelligence
Advanced methodologies resolving dimensionality complications for autism neur...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
MYSQL Presentation for SQL database connectivity
cuic standard and advanced reporting.pdf
KodekX | Application Modernization Development
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
NewMind AI Monthly Chronicles - July 2025
Empathic Computing: Creating Shared Understanding
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Approach and Philosophy of On baking technology
Review of recent advances in non-invasive hemoglobin estimation
Teaching material agriculture food technology
“AI and Expert System Decision Support & Business Intelligence Systems”
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Unlocking AI with Model Context Protocol (MCP)

01 the big_idea

  • 1. The Big Idea Software Architecture Lecture 1
  • 2. The Origins Software Engineers have always employed software architectures Very often without realizing it! Address issues identified by researchers and practitioners Essential software engineering difficulties Unique characteristics of programming-in-the-large Need for software reuse Many ideas originated in other (non-computing) domains
  • 3. Software Engineering Difficulties Software engineers deal with unique set of problems Young field with tremendous expectations Building of vastly complex, but intangible systems Software is not useful on its own e.g., unlike a car, thus It must conform to changes in other engineering areas Some problems can be eliminated These are Brooks’ “accidental difficulties” Other problems can be lessened, but not eliminated These are Brooks’ “essential difficulties”
  • 4. Accidental Difficulties Solutions exist Possibly waiting to be discovered Past productivity increases result of overcoming Inadequate programming constructs & abstractions Remedied by high-level programming languages Increased productivity by factor of five Complexity was never inherent in program at all
  • 5. Accidental Difficulties (cont’d) Past productivity increases result of overcoming (cont’d) Viewing results of programming decisions took long time Remedied by time–sharing Turnaround time approaching limit of human perception Difficulty of using heterogeneous programs Addressed by integrated software development environments Support task that was conceptually always possible
  • 6. Essential Difficulties Only partial solutions exist for them, if any Cannot be abstracted away Complexity Conformity Changeability Intangibility
  • 7. Complexity No two software parts are alike If they are, they are abstracted away into one Complexity grows non-linearly with size E.g., it is impossible to enumerate all states of program Except perhaps “toy” programs
  • 8. Conformity Software is required to conform to its Operating environment Hardware Often “last kid on block” Perceived as most conformable
  • 9. Changeability Change originates with New applications, users, machines, standards, laws Hardware problems Software is viewed as infinitely malleable
  • 10. Intangibility Software is not embedded in space Often no constraining physical laws No obvious representation E.g., familiar geometric shapes
  • 11. Pewter Bullets Ada, C++, Java and other high–level languages Object-oriented design/analysis/programming Artificial Intelligence Automatic Programming Graphical Programming Program Verification Environments & tools Workstations
  • 12. Promising Attacks On Complexity (In 1987) Buy vs. Build Requirements refinement & rapid prototyping Hardest part is deciding what to build (or buy?) Must show product to customer to get complete spec. Need for iterative feedback
  • 13. Promising Attacks On Complexity (cont’d) Incremental/Evolutionary/Spiral Development Grow systems, don’t build them Good for morale Easy backtracking Early prototypes Great designers Good design can be taught; great design cannot Nurture great designers
  • 14. Primacy of Design Software engineers collect requirements, code, test, integrate, configure, etc. An architecture-centric approach to software engineering places an emphasis on design Design pervades the engineering activity from the very beginning But how do we go about the task of architectural design?
  • 15. Analogy: Architecture of Buildings We all live in them (We think) We know how they are built Requirements Design (blueprints) Construction Use This is similar (though not identical) to how we build software
  • 16. Some Obvious Parallels Satisfaction of customers’ needs Specialization of labor Multiple perspectives of the final product Intermediate points where plans and progress are reviewed
  • 17. Deeper Parallels Architecture is different from, but linked with the product/structure Properties of structures are induced by the design of the architecture The architect has a distinctive role and character
  • 18. Deeper Parallels (cont’d) Process is not as important as architecture Design and resulting qualities are at the forefront Process is a means, not an end Architecture has matured over time into a discipline Architectural styles as sets of constraints Styles also as wide range of solutions, techniques and palettes of compatible materials, colors, and sizes
  • 19. More about the Architect A distinctive role and character in a project Very broad training Amasses and leverages extensive experience A keen sense of aesthetics Deep understanding of the domain Properties of structures, materials, and environments Needs of customers
  • 20. More about the Architect (cont’d) Even first-rate programming skills are insufficient for the creation of complex software applications But are they even necessary?
  • 21. Limitations of the Analogy… We know a lot about buildings, much less about software The nature of software is different from that of building architecture Software is much more malleable than physical materials The two “construction industries” are very different Software deployment has no counterpart in building architecture Software is a machine; a building is not
  • 22. … But Still Very Real Power of Architecture Giving preeminence to architecture offers the potential for Intellectual control Conceptual integrity Effective basis for knowledge reuse Realizing experience, designs, and code Effective project communication Management of a set of variant systems Limited-term focus on architecture will not yield significant benefits!
  • 23. Architecture in Action: WWW This is the Web Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
  • 24. Architecture in Action: WWW So is this Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
  • 25. Architecture in Action: WWW And this Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
  • 26. WWW in a (Big) Nutshell The Web is a collection of resources, each of which has a unique name known as a uniform resource locator, or “URL”. Each resource denotes, informally, some information. URI’s can be used to determine the identity of a machine on the Internet, known as an origin server, where the value of the resource may be ascertained. Communication is initiated by clients, known as user agents, who make requests of servers. Web browsers are common instances of user agents.
  • 27. WWW in a (Big) Nutshell (cont’d) Resources can be manipulated through their representations. HTML is a very common representation language used on the Web. All communication between user agents and origin servers must be performed by a simple, generic protocol (HTTP), which offers the command methods GET, POST, etc. All communication between user agents and origin servers must be fully self-contained. (So-called “stateless interactions”)
  • 28. WWW’s Architecture Architecture of the Web is wholly separate from the code There is no single piece of code that implements the architecture. There are multiple pieces of code that implement the various components of the architecture. E.g., different Web browsers
  • 29. WWW’s Architecture (cont’d) Stylistic constraints of the Web’s architectural style are not apparent in the code The effects of the constraints are evident in the Web One of the world’s most successful applications is only understood adequately from an architectural vantage point.
  • 30. Architecture in Action: Desktop Remember pipes and filters in Unix? ls invoices | grep –e august | sort Application architecture can be understood based on very few rules Applications can be composed by non-programmers Akin to Lego blocks A simple architectural concept that can be comprehended and applied by a broad audience
  • 31. Architecture in Action: Product Line Motivating example A consumer is interested in a 35-inch HDTV with a built-in DVD player for the North American market. Such a device might contain upwards of a million lines of embedded software. This particular television/DVD player will be very similar to a 35-inch HDTV without the DVD player, and also to a 35-inch HDTV with a built-in DVD player for the European market, where the TV must be able to handle PAL or SECAM encoded broadcasts, rather than North America’s NTSC format. These closely related televisions will similarly each have a million or more lines of code embedded within them.
  • 32. Growing Sophistication of Consumer Devices
  • 34. The Necessity and Benefit of PLs Building each of these TVs from scratch would likely put Philips out of business Reusing structure, behaviors, and component implementations is increasingly important to successful business practice It simplifies the software development task It reduces the development time and cost it improves the overall system reliability Recognizing and exploiting commonality and variability across products
  • 35. Reuse as the Big Win Architecture: reuse of Ideas Knowledge Patterns engineering guidance Well-worn experience Product families: reuse of Structure Behaviors Implementations Test suites…
  • 36. Added Benefit – Product Populations
  • 37. The Centerpiece – Architecture
  • 38. Summary Software is complex So are buildings And other engineering artifacts Building architectures are an attractive source of analogy Software engineers can learn from other domains They also need to develop—and have developed—a rich body of their own architectural knowledge and experience

Editor's Notes

  • #13: Brooks in 1987
  • #14: Brooks in 1987