Podcast
Questions and Answers
Which of the following is NOT a primary focus of software architecture?
Which of the following is NOT a primary focus of software architecture?
- Principles governing design evolution
- Interrelationships between components
- Component structure
- System functionality (correct)
Software architecture is solely about creating box-and-line diagrams.
Software architecture is solely about creating box-and-line diagrams.
False (B)
Name three quality attributes relevant to software architecture.
Name three quality attributes relevant to software architecture.
Extensibility, Performance, and Security
The only criteria of relevance for software architecture is whether it meets the required ______.
The only criteria of relevance for software architecture is whether it meets the required ______.
In the context of software architecture, what is the primary purpose of 'views'?
In the context of software architecture, what is the primary purpose of 'views'?
A 'good' software architecture is universally defined, irrespective of the system's specific quality requirements.
A 'good' software architecture is universally defined, irrespective of the system's specific quality requirements.
According to the lecture, what is one reason why software architecture is important?
According to the lecture, what is one reason why software architecture is important?
Software architecture is not system (or Computer) Architecture and is not about ______.
Software architecture is not system (or Computer) Architecture and is not about ______.
What is the role of 'quality attributes' in software architecture?
What is the role of 'quality attributes' in software architecture?
Software architecture primarily focuses on the detailed algorithms and data structures used within the system.
Software architecture primarily focuses on the detailed algorithms and data structures used within the system.
What is one of the 'relevant questions' one should ask when motivated to provide a 'good enough' software architecture?
What is one of the 'relevant questions' one should ask when motivated to provide a 'good enough' software architecture?
Large scale ______ are more important than data structures and algorithms when considering the total system cost.
Large scale ______ are more important than data structures and algorithms when considering the total system cost.
What does 'buildability' refer to in the context of software properties?
What does 'buildability' refer to in the context of software properties?
The 'Client-Server' architecture is a novel design and not one of the most widely adopted architectural models.
The 'Client-Server' architecture is a novel design and not one of the most widely adopted architectural models.
Name two quality attributes relevant to the client-server architecture.
Name two quality attributes relevant to the client-server architecture.
In layer architecture, a layer ______ everything below it.
In layer architecture, a layer ______ everything below it.
Which of the following quality attributes is most directly affected by using more layers in a software architecture?
Which of the following quality attributes is most directly affected by using more layers in a software architecture?
Replication, as an architectural strategy, always improves both latency and availability simultaneously.
Replication, as an architectural strategy, always improves both latency and availability simultaneously.
Name two quality attributes relevant to the use of replication in software architecture.
Name two quality attributes relevant to the use of replication in software architecture.
The choice of architecture for a system depends on the ______ the system must meet, not the functionality.
The choice of architecture for a system depends on the ______ the system must meet, not the functionality.
What is the primary focus of the BusTracker case study mentioned in the lecture?
What is the primary focus of the BusTracker case study mentioned in the lecture?
According to the lecture, software architecture is synonymous with system architecture.
According to the lecture, software architecture is synonymous with system architecture.
What does the acronym UML stand for?
What does the acronym UML stand for?
Systems have ______, and subsystems have architecture.
Systems have ______, and subsystems have architecture.
Match the following concepts with their most appropriate definitions:
Match the following concepts with their most appropriate definitions:
Which of the following best defines the scope of Software Architecture in a large-scale system development?
Which of the following best defines the scope of Software Architecture in a large-scale system development?
According to one definition presented, the software architecture of a system includes the externally visible properties of the system's components.
According to one definition presented, the software architecture of a system includes the externally visible properties of the system's components.
Why is it important to understand different software architecture styles?
Why is it important to understand different software architecture styles?
When describing architectures, a ______ must describe the relevant software elements and their relationships.
When describing architectures, a ______ must describe the relevant software elements and their relationships.
According to the lecture, what factors affect the success of software architectures?
According to the lecture, what factors affect the success of software architectures?
Performance is typically not a relevant Quality Attribute in Client Server Architectures.
Performance is typically not a relevant Quality Attribute in Client Server Architectures.
What does extensibility refer to in the context of service software?
What does extensibility refer to in the context of service software?
Understanding software architecture informs what ______ to ask.
Understanding software architecture informs what ______ to ask.
What factors can influence the performance of a layered architecture?
What factors can influence the performance of a layered architecture?
Match the reasons for needing software architecture with its rationale?
Match the reasons for needing software architecture with its rationale?
Flashcards
What is BusTracker?
What is BusTracker?
A series of videos going through the aspects of software architecture development. Uses the Auckland Transport Live Departures system as an example.
Software Architecture
Software Architecture
The structure of components, their interrelationships, and principles/guidelines governing their design and evolution.
Why use software architecture?
Why use software architecture?
Systems are increasingly complex, needing standard solutions, clear communication, organization, analysis, and management.
Software Lifecycle Stages
Software Lifecycle Stages
Signup and view all the flashcards
Architecture Classification
Architecture Classification
Signup and view all the flashcards
Architecture Analysis
Architecture Analysis
Signup and view all the flashcards
Architecture Development
Architecture Development
Signup and view all the flashcards
Architecture Documentation
Architecture Documentation
Signup and view all the flashcards
Quality Attributes
Quality Attributes
Signup and view all the flashcards
What is buildability?
What is buildability?
Signup and view all the flashcards
What is modifiability/maintainability?
What is modifiability/maintainability?
Signup and view all the flashcards
What is extensibility?
What is extensibility?
Signup and view all the flashcards
What is portability?
What is portability?
Signup and view all the flashcards
What is understandability, readability and comprehensibility?
What is understandability, readability and comprehensibility?
Signup and view all the flashcards
Client-Server Architecture
Client-Server Architecture
Signup and view all the flashcards
Extensibility (Client-Server)
Extensibility (Client-Server)
Signup and view all the flashcards
Performance (Client-Server)
Performance (Client-Server)
Signup and view all the flashcards
Security (Client-Server)
Security (Client-Server)
Signup and view all the flashcards
Understandability, Readability, Comprehensibility (Client-Server)
Understandability, Readability, Comprehensibility (Client-Server)
Signup and view all the flashcards
Modifiability (Client-Server)
Modifiability (Client-Server)
Signup and view all the flashcards
Portability (Client-Server)
Portability (Client-Server)
Signup and view all the flashcards
Buildability (Client-Server)
Buildability (Client-Server)
Signup and view all the flashcards
Scaleability (Client-Server)
Scaleability (Client-Server)
Signup and view all the flashcards
Availability (Client-Server)
Availability (Client-Server)
Signup and view all the flashcards
Reliability (Client-Server)
Reliability (Client-Server)
Signup and view all the flashcards
What are layers?
What are layers?
Signup and view all the flashcards
Performance (Layers)
Performance (Layers)
Signup and view all the flashcards
Buildability/Modifiability/Understandability/. . . (Layers)
Buildability/Modifiability/Understandability/. . . (Layers)
Signup and view all the flashcards
Portability (Layers)
Portability (Layers)
Signup and view all the flashcards
Availability, Performance (Latency) (Replication)
Availability, Performance (Latency) (Replication)
Signup and view all the flashcards
Performance (throughput) (Replication)
Performance (throughput) (Replication)
Signup and view all the flashcards
Scaleability (Replication)
Scaleability (Replication)
Signup and view all the flashcards
Describing the 'code'
Describing the 'code'
Signup and view all the flashcards
System Architecture
System Architecture
Signup and view all the flashcards
Specifying Architecture Quality
Specifying Architecture Quality
Signup and view all the flashcards
Key Points on Software Architecture
Key Points on Software Architecture
Signup and view all the flashcards
Study Notes
- This lecture introduces Software Architecture
- The lecture includes a Case Study: BusTracker
Agenda Items:
- Case study
- References
- Software Architecture Overview
- Reading: The Architecture of Open Source Applications, Volume II. Scalable Web Architecture and Distributed Systems by Kate Matsudaira
Case Study: BusTracker
- A series of videos going through the various aspects of software architecture development
- The example is similar to the Auckland Transport Live Departures system
References
- Resources include "Software Architecture in Practice" by Len Bass, Paul Clements, and Rick Kazman, with the 3rd edition available online
- Another resource is "The architecture of open source applications" by Amy Brown and Greg Wilson
- Other books include “Essential Software Architecture” by Ian Gorton and “Software architecture: perspectives on an emerging discipline” by Mary Shaw, David Garlan
Motivation
- Given a brief description of a system for providing a Concert Booking Web Service, describe a "good enough" Software Architecture for it
- Relevant questions include: What is a software architecture? How to describe a software architecture?
- How do you know it is good enough? (Answer: It has the required quality attributes)
- What are qualitas attributes? How do you demonstrate that a given software architecture has specific quality attributes?
Second Motivation
- Build a system for managing pay-as-you-park solutions, a competitor to ParkMate
- System provides real-time tracking of parking space availability to a central control center for monitoring and user information
- Questions include: Should it be a web service or based on containers? Will a web service be fast enough and how to ensure reliability and security?
- How to maximize a team of 20 developers' productivity?
- Design a system maximizing the use of small servers due to power and air conditioning limitations
- How synchronous should the communication be?
Definitions of Software Architecture
- Many definitions exist, including over 100 documented at http://www.sei.cmu.edu/architecture/definitions.html
- Software Architecture constitutes the structure of the components of a program/system
- Software Architecture Includes their interrelationships, and principles and guidelines governing their design and evolution over time
- It is the set of significant decisions about the organization of a software system
- Software Architecture comprises the selection of structural elements and interfaces, their behavior and collaborations, and the architectural style
- The software architecture involves the structure or structures of a system
- The software architecture includes software elements, their externally visible properties and the relationships among them
Common Phrases
- "large scale components”
- "system level abstraction”
- "components and interaction between components"
- "system level analysis
- "load-bearing walls"
Why Software Architecture
- Systems are getting bigger and more complicated, needing "standard" solutions and reuse for common problem types
- Architecture allows communicating and understanding, organizing construction and evolution, and enabling analysis and management
- Large scale decisions are more important than data structures and algorithms from a total system cost viewpoint
Software Lifecycle Integration
- Software Architecture lies between Specification and Detailed Design
Topics
- Understand how to classify architectures, their styles, and how to describe them
- Analyze a given architecture, determining what needs to be known to reason effectively
- The goal is to create a new architecture ensuring what issues need to be considered
- Determine how architectures should be documented and what's important to show
What Software Architecture Is Not
- Not System (or Computer) Architecture
- Software Architecture is not always about functionality, but about qualities
- Isn't just a box-and-line drawing alone
What is Software Architecture?
- The software architecture of a program or computing system comprises the structure or structures of the system
- It comprises software elements, the externally visible properties of those elements, and the relationships among them
Describing Architectures
- Architectures cannot be fully understood by looking at one picture
- Software Architectures for a reasonable size system will consist of multiple structures each providing different information to answer questions
- To describe a structure, provide one or more views describing relevant software elements and their relationships
Good and Bad Architectures
- Architectures are not inherently "good" or "bad", relevance comes meeting quality requirements or having required attributes
- Quality is not absolute, it is measured relative to considered important criteria
Relevant Quality Attributes
- Examples of attributes include:
- Extensibility
- Performance
- Security
- Understandability
- Readability
- Comprehensibility
- Modifiability
- Maintainability
- Portability
- Buildability
- Scaleability
- Availability
- Reliability
Properties of Software
- Consider importance or getting the system built quickly (buildability)
- Evaluate making changes to it cost effectively, whether to fix faults (modifiability or maintainability)
- Make modifications to add new functionality cost effectively (extensibility)
- Determine the ability to move systems onto different hardware and/or operating systems (portability)
- Ensure new developers can quickly understand the software (understandability, readability, comprehensibility)
Client-Server Architecture
- The "seminal architectural model which remains the most widely adopted"
- One consideration is: What makes something “Client-Server"?
- It is important to ask when you should and should not use Client-Server
- Examples in use with this paradigm are:
- Git
- Canvas
- Amazon
- Excel
- SPSS (statistics)
Client-Server Attributes
- Extensibility: Only the server needs to change
- Performance: Add more servers
- Security: Communications channel is a weak link
- Understandability, Readability, Comprehensibility: separation is possible (UI only) separately from server (no UI), added protocol complexity
- Modifiability: Change client and server independently
- Maintainability: Faults in client won't affect server
- Portability: Change client and server hardware independently
- Buildability: More work to do
- Scaleability: Add more clients
- Availability: System can be unavailable even if server (client) is working
- Reliability; more things to fail
Layers
- A layer encapsulates everything below it
Layer Attributes
- Performance: More layers can mean slower performance
- Buildability/Modifiability/Understandability: Only need to deal with one layer at a time
- Portability: Only the lower layer(s) need to change
Replication and its forms
- Under which circumstances should different forms be used?
Attributes of Replication
- Availability, Performance (Latency): Broadcast style increases by reducing effect of server failures without waiting for the slowest server, but broadcast in general does not scale
- Performance (throughput): Processing a client request through a single server allows more requests to be processed simultaneously, and increases throughput
- Scaleability: Can add as many servers as are needed, sometimes at the cost of performance
Describing the Code
- Decompose along functional lines into modules and each module gets deployed in different places
Specifying Quality
- Software architectures depend on quality attribute requirements
Key Points
- Software architecture is the "large-scale" view of a system's design, showing the “important” design decisions
- Architecture choice depends on the desired qualities of the system, not the functionality itself
- Understanding architecture concepts informs what questions to ask
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.