COMPSCI331 Software Architecture Introduction

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 the most accurate description of the 'BusTracker' case study?

  • A study focused solely on the front-end design of transportation apps.
  • A theoretical model for developing software architectures.
  • A detailed analysis of Auckland's public transportation system.
  • A series of videos demonstrating various aspects of software architecture development, similar to the Auckland Transport Live Departures system. (correct)

According to the lecture, what is a key consideration when determining if a software architecture is 'good enough'?

  • Its ability to be implemented quickly, regardless of other factors.
  • Its adherence to the latest industry standards.
  • Whether it has the required qualities and attributes. (correct)
  • Its complexity and innovative design patterns.

Software architecture is primarily concerned with the functionality of the system and not its structure.

False (B)

Which of the following is NOT considered a primary goal of defining a software architecture?

<p>To optimize data structures and algorithms for maximum performance. (B)</p>
Signup and view all the answers

In the software development lifecycle, when is the architecture typically defined?

<p>After specification but before detailed design. (D)</p>
Signup and view all the answers

Which of the following best describes the role of 'views' when describing software architectures?

<p>Different perspectives that highlight specific aspects of the architecture and the software elements related to it. (C)</p>
Signup and view all the answers

A software architecture can be inherently labeled as 'good' or 'bad' irrespective of its intended use.

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

Which of the following is NOT typically considered a key quality attribute relevant to software architecture?

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

In the context of software properties, what does 'portability' refer to?

<p>The ability to move systems onto different hardware and/or operating systems. (D)</p>
Signup and view all the answers

The architecture for a system of reasonable size will consist of __________ structures.

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

Give an example of a non-functional quality attribute that software architecture addresses.

<p>Security, performance, reliability, modifiability, scalability</p>
Signup and view all the answers

Which of the following architectures still remains the most widely adopted?

<p>Client-Server (D)</p>
Signup and view all the answers

Which is not a major component in Client-Server systems?

<p>Caching (C)</p>
Signup and view all the answers

There is only one layer in the OSI model

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

Which quality attributes are influenced by layers?

<p>Performance, buildability (B)</p>
Signup and view all the answers

Choose an appropriate attribute for server replication:

<p>Increasing throughput (C)</p>
Signup and view all the answers

Decomposing along functional lines does not make the module deploy in different places.

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

The software architecture depends on what requirements?

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

Understanding software architecture concepts helps inform what questions to __________

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

Match the following architectural styles with their primary characteristic:

<p>Client-Server = Decoupled components where client depends on the server Layers = Encapsulates layers of functionality Replication = Broadcast-style reduces effect of server failures</p>
Signup and view all the answers

Which of the following best describes the primary focus of software architecture?

<p>Defining the large-scale structure and design decisions of a system. (C)</p>
Signup and view all the answers

Which of the following resources is mentioned for further reading on software architecture?

<p>&quot;Software Architecture in Practice&quot; by Len Bass, Paul Clements, and Rick Kazman (D)</p>
Signup and view all the answers

Software architecture is only relevant for very large and complex systems.

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

What is the main purpose of the 'Motivation' sections presented in the lecture?

<p>To illustrate the practical need for software architecture in real-world scenarios. (D)</p>
Signup and view all the answers

Which of the following is the closest analogy to software architecture?

<p>Designing the blueprint for a building. (D)</p>
Signup and view all the answers

The structure of a program/system, their __________, and principles and guidelines governing their design and evolution over time is software architecture

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

Name at least one benefit to the use of software architecture

<p>Reuse, understanding, construction</p>
Signup and view all the answers

When it comes to 'good' or 'bad' architectures, why is quality described as not absolute?

<p>Since it can only be measured relative to what criteria are considered important (D)</p>
Signup and view all the answers

For a team of 20 developers, why is software architecture critical for such a group to adhere to?

<p>So all the developers can maximise their productivity (D)</p>
Signup and view all the answers

If clients increase, reliability becomes stronger.

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

How can someone know if a software architecture is good enough?

<p>If it carries the required qualities</p>
Signup and view all the answers

Software architecture is not about __________

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

Match the following definitions to software terms:

<p>Reliability = More things to fail Scaleability = More Clients Portability = Change client/server hardware independently</p>
Signup and view all the answers

Flashcards

Software Architecture

The high-level structure of a program/system, their interrelationships, and principles guiding their design and evolution.

Decomposition

Breaking down along functional lines into modules.

BusTracker Case Study

A series of videos that goes through the various aspects of software architecture development

Describe Functional Lines of Code

Breaking down along functional lines into modules where different modules get deployed in different places

Signup and view all the flashcards

Software Architecture in Practice

A reference book for software architecture.

Signup and view all the flashcards

Client-Server Architecture

A type of software architecture where a system serves multiple clients.

Signup and view all the flashcards

Good vs Bad Architectures

Not inherently good or bad. It depends on the quality attribute requirements.

Signup and view all the flashcards

Replication

Duplication of servers to improve availability, performance and scalability.

Signup and view all the flashcards

Layers

A way to organize a system where each layer encapsulates the layers below it.

Signup and view all the flashcards

Modifiability

How readily a system can be modified.

Signup and view all the flashcards

Extensibility

Ability to add new functionality.

Signup and view all the flashcards

Buildability

How quickly a system can be built.

Signup and view all the flashcards

Portability

The ability to move systems onto different hardware configurations

Signup and view all the flashcards

Software Architecture

The “large-scale” view of a system's design, showing the “important” design decisions

Signup and view all the flashcards

Study Notes

  • COMPSCI331: Large-Scale Software Development for Week 7 Lecture 1 is an introduction to Software Architecture, by Ewan Tempero, School of Computer Science.

Agenda

  • Several topics will be discussed including a case study, references, motivation, what is achitecture as well as looking at quality

Case Study: BusTracker

  • BusTracker is a case study consisting of series of videos (about 5) that go through aspects of software architecture development.
  • BusTracker is similar to the Auckland Transport Live Departures system.

References

  • Good references for Software Architecture include:
  • Software Architecture in Practice by Len Bass, Paul Clements, Rick Kazman - 1st (1998), 2nd (2003), and 3rd (2013) editions
  • The Architecture of Open Source Applications by Amy Brown & Greg Wilson (editors), Volumes I & II http://aosabook.org
  • Essential Software Architecture by Ian Gorton (2006)
  • Software Architecture: Perspectives on an Emerging Discipline by Mary Shaw, David Garlan (1996)

Motivation

  • When given a brief description of a system providing a Concert Booking Web Service, describe a "good enough" Software Architecture for it.
  • In that scenario, you would need to consider:
  • What is a software architecture?
  • How do we describe a software architecture?
  • How do we know it is good enough? (Answer: It has the required quality attributes)
  • What are qualitas attributes?
  • How do we demontrate that a given software architecture has specific quality attributes?

Motivation 2

  • You are about to start building a system for managing pay-as-you-park solutions (e.g. a competitor to ParkMate).
  • Requirements for this system include real-time tracking of available and occupied parking spaces to a central control centre and provide available parking to users, as well as payment support.
  • In this case, you would need to consider:
  • Should it be a web service, or only a web service, or a web service based on containers?
  • Will a web service be fast enough (and how fast does it need to be?)
  • How do we ensure reliability and security?
  • How do we maximise the productivity of a team of 20 developers?
  • How do we design the system to make best use of the avalaible small servers?
  • How synchronous should the communication be?

What is Architecture

  • There are many definitions of software architecture
  • The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time. (Garlan and Perry, Guest editorial, IEEE Transactions on Software Engineering, April 1995)
  • An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organization—these elements and their interfaces, their collaborations, and their composition (Booch, Rumbaugh, and Jacobson, The UML Modeling Language User Guide, 1999).
  • The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. (Bass, Clements, Kazman Software Architecture in Practice
  • Some other phrases used include
  • 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.
  • There is a need for "standard" solutions to common problem types to enable reuse.
  • Software architecture helps towards understanding, communication, construction, evolution, analysis, and management.
  • Large scale decisions are more important (from a total system cost viewpoint) than data structures and algorithms.
  • In the Software Lifecycle:
  • Requirements
  • Specification
  • Architecture
  • Detailed Design
  • Implementation
  • Topics include:
  • Classification: How do we organise architectures? What kinds (or "styles") or architectures are there? How do we describe an architecture?
  • Analysis: Given an architecture, how do we reason about it? What do we need to know about it to reason effectively?
  • Develop: How do we decide on an architecture for a system? How do we create a new architecture? What issues to we have to keep in mind?
  • Documentation: How should architectures be described? What are the important things to show?

What Software Architecture is Not

  • Software architecture is not System (or Computer) Architecture.
  • Software Architecture is not about functionality.
  • Software Architecture is not a box-and-line drawing.
  • The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
  • This includes:
  • Multiple structures
  • Software elements and relationships
  • Externally visible properties
  • An architecture rarely can be fully understood by just looking at one picture.
  • The architecture for a system of a reasonable size will typically consist of multiple structures.
  • Different structures provide different information about the architecture, and so help answer different kinds of questions.
  • Different structures may have different kinds of software elements and/or relationships.
  • To describe a structure, we must provide one or more views of it.
  • A view must describe the relevant software elements and their relationships.
  • An architecture is not inherently "good" or "bad".
  • The only criteria of relevance is "meets quality requirements” or “has the required quality attributes".
  • Quality is not absolute, but relative to what criteria are considered important.

Quality Attributes

  • Quality Attributes relevant to Software Architecture include:
  • Extensibility
  • Performance
  • Security
  • Understandability
  • Readability
  • Comprehensibility
  • Modifiability
  • Maintainability
  • Portability
  • Buildability
  • Adaptability
  • Scaleability
  • Availability
  • Reliability
  • What properties of software are more important?
  • Getting the system built quickly (buildability)
  • Making changes to it cost effectively, whether to fix faults or to cope with changing conditions (modifiability or maintainability)
  • Making changes to it to add new functionality cost effectively (extensibility)
  • Be able to move systems onto different hardware and/or operating systems (portability)
  • Having developers new to the project be able to understand it quickly enough to be able to be useful (understandability, readability, comprehensibility)

Examples of quality attributes

  • Client-Server is a seminal architectural model which is the most widely adopted
  • Need to consider what makes something “Client-Server", When should we use Client-Server and when should we not use Client-Server.
  • For example, is Client-Server necessary and sufficient for Git, Canvas, Google, Amazon, Excel, SPSS (statistics)?
  • Client-Server Relevant Quality Attributes include:
  • Extensibility
  • Performance
  • Security
  • Understandability, Readability, Comprehensibility
  • Modifiability
  • Maintainability
  • Portability
  • Buildability
  • Scaleability
  • Availability
  • Reliability
  • Layers:
  • A layer encapsulates everything below it
  • Quality Attributes relevant to Layers include:
  • Performance
  • Buildability/Modifiability/Understandability
  • Portability
  • Replication needs to take into account what circumstances should different forms be used?
  • Quality Attributes relevant to Replication include:
  • Availability, Performance (Latency)
  • Performance (throughput)
  • Scaleability

"Code"

  • Decompose along functional lines into modules
  • Different modules get deployed in different places
  • Systems have subsystems
  • Subsystems have architecture

Specifying Quality

  • Software architecture depends on quality attribute requirements.
  • We need to specify these requirements so that we can determine if a given software architecture meets them.

Key points

  • The software architecture of a system is the "large-scale" view of its design, showing the “important” design decisions.
  • The choice of architecture for a system depends on the quality attributes the system must meet, not the functionality.
  • Understanding software architecture concepts helps inform 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