CompSci331: Lecture 12 Introduction to Software Architecture

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

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.

False (B)

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 ______.

<p>quality attributes</p>
Signup and view all the answers

In the context of software architecture, what is the primary purpose of 'views'?

<p>To provide different perspectives of the software architecture, showcasing relevant elements and their relationships. (B)</p>
Signup and view all the answers

A 'good' software architecture is universally defined, irrespective of the system's specific quality requirements.

<p>False (B)</p>
Signup and view all the answers

According to the lecture, what is one reason why software architecture is important?

<p>Systems are getting bigger and more complicated.</p>
Signup and view all the answers

Software architecture is not system (or Computer) Architecture and is not about ______.

<p>functionality</p>
Signup and view all the answers

What is the role of 'quality attributes' in software architecture?

<p>They specify non-functional requirements and characteristics that the system must possess. (A)</p>
Signup and view all the answers

Software architecture primarily focuses on the detailed algorithms and data structures used within the system.

<p>False (B)</p>
Signup and view all the answers

What is one of the 'relevant questions' one should ask when motivated to provide a 'good enough' software architecture?

<p>What is a software architecture?</p>
Signup and view all the answers

Large scale ______ are more important than data structures and algorithms when considering the total system cost.

<p>decisions</p>
Signup and view all the answers

What does 'buildability' refer to in the context of software properties?

<p>The ability to get the system built quickly. (A)</p>
Signup and view all the answers

The 'Client-Server' architecture is a novel design and not one of the most widely adopted architectural models.

<p>False (B)</p>
Signup and view all the answers

Name two quality attributes relevant to the client-server architecture.

<p>Extensibility and Performance</p>
Signup and view all the answers

In layer architecture, a layer ______ everything below it.

<p>encapsulates</p>
Signup and view all the answers

Which of the following quality attributes is most directly affected by using more layers in a software architecture?

<p>Performance (A)</p>
Signup and view all the answers

Replication, as an architectural strategy, always improves both latency and availability simultaneously.

<p>False (B)</p>
Signup and view all the answers

Name two quality attributes relevant to the use of replication in software architecture.

<p>Availability and Performance</p>
Signup and view all the answers

The choice of architecture for a system depends on the ______ the system must meet, not the functionality.

<p>quality attributes</p>
Signup and view all the answers

What is the primary focus of the BusTracker case study mentioned in the lecture?

<p>Illustrating the various aspects of software architecture development. (A)</p>
Signup and view all the answers

According to the lecture, software architecture is synonymous with system architecture.

<p>False (B)</p>
Signup and view all the answers

What does the acronym UML stand for?

<p>Unified Modeling Language</p>
Signup and view all the answers

Systems have ______, and subsystems have architecture.

<p>subsystems</p>
Signup and view all the answers

Match the following concepts with their most appropriate definitions:

<p>Software Architecture = The structure of the components of a program/system and their interrelationships. Quality Attributes = Non-functional requirements that define the characteristics of a system. Buildability = The attribute that refers to getting the system built quickly. Extensibility = The attribute that refers to adding new functionality cost effectively.</p>
Signup and view all the answers

Which of the following best defines the scope of Software Architecture in a large-scale system development?

<p>Involves making significant decisions about the organization of a software system, selection of structural elements, and their interfaces. (D)</p>
Signup and view all the answers

According to one definition presented, the software architecture of a system includes the externally visible properties of the system's components.

<p>True (A)</p>
Signup and view all the answers

Why is it important to understand different software architecture styles?

<p>To reuse 'standard' solutions to common problems.</p>
Signup and view all the answers

When describing architectures, a ______ must describe the relevant software elements and their relationships.

<p>view</p>
Signup and view all the answers

According to the lecture, what factors affect the success of software architectures?

<p>Quality Attribute requirements (D)</p>
Signup and view all the answers

Performance is typically not a relevant Quality Attribute in Client Server Architectures.

<p>False (B)</p>
Signup and view all the answers

What does extensibility refer to in the context of service software?

<p>Adding new functionality cost effectively</p>
Signup and view all the answers

Understanding software architecture informs what ______ to ask.

<p>questions</p>
Signup and view all the answers

What factors can influence the performance of a layered architecture?

<p>The number of layers (C)</p>
Signup and view all the answers

Match the reasons for needing software architecture with its rationale?

<p>Reuse = Need 'standard' solutions to common problem types Understanding = Need some way to talk about applications Evolution = Need some way to organise applications Management = Need some way to reason about applications</p>
Signup and view all the answers

Flashcards

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

The structure of components, their interrelationships, and principles/guidelines governing their design and evolution.

Why use software architecture?

Systems are increasingly complex, needing standard solutions, clear communication, organization, analysis, and management.

Software Lifecycle Stages

Requirements, specification, architecture, detailed design, and implementation.

Signup and view all the flashcards

Architecture Classification

Organizing architectures, types, and descriptions.

Signup and view all the flashcards

Architecture Analysis

Reasoning about architecture. What do we need to know about it to reason effectively?

Signup and view all the flashcards

Architecture Development

Deciding on an architecture for a system. How do we create a new arhcitecture? What issues do we have to keep in mind?

Signup and view all the flashcards

Architecture Documentation

How architectures should be described and what are the important things to show about them?

Signup and view all the flashcards

Quality Attributes

Refers to aspects like extensibility, performance, security, understandability, readability, modifiability, maintainability, and portability.

Signup and view all the flashcards

What is buildability?

Getting the system built quickly.

Signup and view all the flashcards

What is modifiability/maintainability?

Making changes to it cost effectively to fix faults or to cope with changing condidtions.

Signup and view all the flashcards

What is extensibility?

Making changes to it to add new functionality cost effectively

Signup and view all the flashcards

What is portability?

Be able to move systems onto different hardware and/or operating systems.

Signup and view all the flashcards

What is understandability, readability and comprehensibility?

New developers are able to understand it quickly enough to be able to be useful

Signup and view all the flashcards

Client-Server Architecture

Architectural model where clients request services from servers.

Signup and view all the flashcards

Extensibility (Client-Server)

Ability to extend or add new features with minimal impact on existing system.

Signup and view all the flashcards

Performance (Client-Server)

How well a system performs under different conditions.

Signup and view all the flashcards

Security (Client-Server)

Protecting data and communication between clients and servers.

Signup and view all the flashcards

Understandability, Readability, Comprehensibility (Client-Server)

How easily the system can be understood and maintained.

Signup and view all the flashcards

Modifiability (Client-Server)

How easily components can be changed without affecting others.

Signup and view all the flashcards

Portability (Client-Server)

Adapting to different hardware and software environments.

Signup and view all the flashcards

Buildability (Client-Server)

The effort required to create a working system.

Signup and view all the flashcards

Scaleability (Client-Server)

Ability to handle increasing loads by adding more clients.

Signup and view all the flashcards

Availability (Client-Server)

The systems are still functional despite the client and server is not working.

Signup and view all the flashcards

Reliability (Client-Server)

How long the system can function without failure.

Signup and view all the flashcards

What are layers?

A way of organizing code with increasing levels of abtraction. A layer encapsulates everything below it.

Signup and view all the flashcards

Performance (Layers)

Relates to the number of layers, slower.

Signup and view all the flashcards

Buildability/Modifiability/Understandability/. . . (Layers)

Only need to deal with one layer at a time

Signup and view all the flashcards

Portability (Layers)

Only the lower layer(s) need to change

Signup and view all the flashcards

Availability, Performance (Latency) (Replication)

Broadcast style increases by reducing effect of server failures, and not having to wait for the slowest server, but broadcast in general does not scale

Signup and view all the flashcards

Performance (throughput) (Replication)

Having a single server process a client request means more requests can be processed simultaneously, increasing throughput (but reducing latency and availability)

Signup and view all the flashcards

Scaleability (Replication)

Can add as many servers as are needed (sometimes at the cost of performance)

Signup and view all the flashcards

Describing the 'code'

Decompose along functional lines into modules. Different modules get deployed in different places.

Signup and view all the flashcards

System Architecture

Systems have subsystems and subsystems have architecture.

Signup and view all the flashcards

Specifying Architecture Quality

Software Architecture depends on quality attribute requirements. How do we specify these requirements so that we can determine if a given software architecture meets them?

Signup and view all the flashcards

Key Points on Software Architecture

Software architecture shows the important design decisions, depends on specified quality attributes, and is a concept whose understanding facilitates the correct initial questions.

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
    • Google
    • 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.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser