Software Architecture: Principles and Design

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Which of the following BEST describes software architecture?

  • The user interface design of a software system.
  • The detailed code implementation of a software system.
  • The specific algorithms used within a software system.
  • The organization of a software system into subsystems and components, their relationships, and guiding principles. (correct)

Which of the following is considered a NON-FUNCTIONAL system property significantly influenced by software architecture?

  • Variable names
  • Data structures
  • Specific algorithms
  • Response time (correct)

Which of the following BEST describes the role of stakeholders in architectural discussions?

  • Stakeholders need detailed technical knowledge to participate.
  • Stakeholders are primarily concerned with the project budget.
  • Stakeholders should not be involved in architectural discussions.
  • Stakeholders can understand an abstract view of the system without being confused by details. (correct)

What is a primary benefit of documenting software architecture?

<p>It shows the components, interfaces, and connections within the system. (B)</p> Signup and view all the answers

At the architectural level, what should be your primary concern?

<p>Defining the large-scale components and subsystems. (C)</p> Signup and view all the answers

What does 'decomposition' refer to in the context of software architecture?

<p>Analyzing large-scale components into a set of finer-grain components (A)</p> Signup and view all the answers

What is a software component?

<p>An element that implements a coherent set of functionality or features (D)</p> Signup and view all the answers

Which of the following is a KEY consideration regarding 'product lifetime' in architectural design?

<p>The need for regular product revisions and an evolvable architecture. (B)</p> Signup and view all the answers

Why is 'software compatibility' an important architectural design issue?

<p>To allow users to adopt the product and use data from different systems. (C)</p> Signup and view all the answers

How can the use of fine-grained, self-contained components affect maintainability?

<p>It simplifies component replacement and maintenance. (D)</p> Signup and view all the answers

What is a KEY principle when designing for 'security' in software architecture?

<p>Using a layered architecture with critical assets in the inner layers. (A)</p> Signup and view all the answers

Why might implementing extra components for 'availability' increase the chances of introducing bugs and vulnerabilities?

<p>Adding complexity to the system increases the potential for errors. (C)</p> Signup and view all the answers

What is a potential drawback of using a layered architecture to enhance security?

<p>It can negatively affect the usability of the software. (B)</p> Signup and view all the answers

What is the PRIMARY concern of 'control styles' in software architecture?

<p>The control flow between subsystems. (A)</p> Signup and view all the answers

Which statement BEST describes 'centralized control'?

<p>One subsystem has overall responsibility for control and starts/stops other subsystems. (A)</p> Signup and view all the answers

In 'event-based control', how do subsystems typically interact?

<p>They respond to externally generated events from other subsystems or the system's environment. (C)</p> Signup and view all the answers

What is the PRIMARY purpose of an architectural pattern?

<p>To describe a solution to a recurring design problem. (B)</p> Signup and view all the answers

How are architectural patterns typically represented?

<p>Using graphical and tabular descriptions. (B)</p> Signup and view all the answers

In a layered architecture, what is a KEY characteristic of each layer?

<p>It provides a set of services to the layer above it. (A)</p> Signup and view all the answers

What is a potential PERFORMANCE drawback of layered architectures?

<p>Service requests are processed at each layer. (C)</p> Signup and view all the answers

What does it mean for something to be a 'cross-cutting concern' in software architecture?

<p>It affects all layers in the system. (C)</p> Signup and view all the answers

Where should you put the security in a layered architecture, if it is a cross-cutting concern?

<p>At each layer providing defense in depth. (B)</p> Signup and view all the answers

What is the role of the 'Model' component in the Model-View-Controller (MVC) architectural pattern?

<p>To include business logic and data. (C)</p> Signup and view all the answers

When is the Model-View-Controller (MVC) architectural pattern MOST suitable?

<p>When there are multiple ways to view and interact with data. (C)</p> Signup and view all the answers

What is the PRIMARY advantage of the Repository architectural pattern?

<p>Components can be independent and all data is managed consistently. (C)</p> Signup and view all the answers

What is the MAIN disadvantage of the Repository architectural pattern?

<p>The repository is a single point of failure. (D)</p> Signup and view all the answers

In a Client-Server architecture, what is the role of the 'client'?

<p>To implement the user interface and request services. (B)</p> Signup and view all the answers

What is a PRIMARY advantage of the Client-Server architectural pattern?

<p>General functionality can be available to all clients and does not need to be implemented by all services. (B)</p> Signup and view all the answers

What is client-server communication normally using?

<p>The HTTP protocol. (C)</p> Signup and view all the answers

What is the role of the application server in a multi-tier client-server architecture?

<p>To implement application-specific logic and manage information storage/retrieval. (A)</p> Signup and view all the answers

In a transaction processing system, what is the role of the 'transaction manager'?

<p>To process asynchronous user requests. (C)</p> Signup and view all the answers

Which architectural pattern involves functional transformations processing their inputs to produce outputs?

<p>Pipe and filter. (D)</p> Signup and view all the answers

What is a LIMITATION of the 'Pipe and Filter' architectural pattern?

<p>The format for data transfer has to be agreed upon between communicating transformations. (A)</p> Signup and view all the answers

What is a KEY characteristic of services in a 'service-oriented architecture'?

<p>They are stateless components, which means that they can be replicated and can migrate from one computer to another. (D)</p> Signup and view all the answers

In the context of architectural choice, what consideration is MOST relevant when using structured data that requires updates?

<p>Having a shared database with locking and transaction management. (B)</p> Signup and view all the answers

Why might a service-oriented architecture be preferable when planning to run a system on the cloud?

<p>Scaling the system is simpler. (C)</p> Signup and view all the answers

You are developing a highly scalable, real-time data processing system. You need to choose an architecture that allows you to easily add new processing steps and handle a large volume of data. The individual processing steps are independent of each other and can be executed in parallel. Data consistency is not a major concern, but fault tolerance is critical. Considering the characteristics of different styles, which of the following architectural patterns is MOST suitable for this system?

<p>Pipe and Filter Architecture (D)</p> Signup and view all the answers

Flashcards

Software Architecture

The organization of a software system into subsystems and components, their relationships, and guiding principles.

Explicit Architecture Advantages

Architecture supports discussions, provides system analysis, and promotes large-scale reuse.

Software Design Abstraction

Treating concerns at a high level, focusing on components or sub-systems rather than implementation details.

Software Component

An element implementing a coherent set of functionality or features, potentially including one or more services.

Signup and view all the flashcards

Nonfunctional Characteristics

Getting these wrong can cause product failure, requiring careful optimization.

Signup and view all the flashcards

Product Lifetime

Plan for product evolution by creating an architecture that can adapt and change over time.

Signup and view all the flashcards

Software Reuse

Reusing large components from other products can save time and effort.

Signup and view all the flashcards

Number of Users

Design your architecture to scale up or down to handle fluctuations in user traffic.

Signup and view all the flashcards

Software Compatibility

Maintaining the ability to work with other software ensures wider user adoption.

Signup and view all the flashcards

Maintainability in Architecture

Using self-contained, replaceable components to ease modifications.

Signup and view all the flashcards

Performance in Architecture

Localizing critical operations and minimizing communication for speed.

Signup and view all the flashcards

Security in Architecture

Employing a layered design with critical assets in the inner layers.

Signup and view all the flashcards

Safety in Architecture

Isolating key features within a few, well-tested subsystems helps increase confidence.

Signup and view all the flashcards

Availability in Architecture

Using redundant components and fault tolerance mechanisms.

Signup and view all the flashcards

Security vs. Usability

Balance protection layers with ease of use.

Signup and view all the flashcards

Architectural Pattern

A description of good design practice tried and tested in different environments.

Signup and view all the flashcards

Layered Architecture

Organizes the system into layers providing services to the layer above.

Signup and view all the flashcards

Cross-Cutting Concerns

Concerns that affect multiple layers of a system.

Signup and view all the flashcards

MVC Pattern

Separates presentation, user interaction, and system data into distinct components.

Signup and view all the flashcards

Repository Pattern

All data is managed in a central repository accessible to all system components.

Signup and view all the flashcards

Client-Server

System functionality is organized into services delivered from separate servers.

Signup and view all the flashcards

Client-Server Communication

Uses the HTTP protocol for communication.

Signup and view all the flashcards

Pipe and Filter

Functional transformations process inputs to outputs sequentially.

Signup and view all the flashcards

Service-Oriented Architecture

Components are stateless and can migrate; uses service gateway as proxy.

Signup and view all the flashcards

Study Notes

Software Architecture

  • Software architecture is the organization of a software system into subsystems and components.
  • These components and their relationships to each other and the environment should be guided by design and evolution principles.
  • Software architecture can be represented using block diagrams showing entities and relationships.
  • Architectural design is an early stage to design, it can be carried out in parallel with some specification activities and represents the link between specification and design processes.
  • An early stage of agile processes is changing the architecture, which is expensive because it affects many components in the system.
  • Architecture has a fundamental influence on non-functional system properties, such as response time, reliability, availability, security, usability, maintainability, and resilience

Advantages of Explicit Architecture

  • Stakeholders can use the architecture for communication because they can understand an abstract view of the system without being confused by details.
  • System analysis checks whether the system can meet its non-functional requirements.
  • Large-scale reuse means the architecture may be reusable across a range of systems.
  • Systems in the same domain often have similar architectures that reflect domain concepts.
  • An architecture can be designed around architectural patterns or styles.
  • Documenting an architecture shows the different components in a system, their interfaces, and their connections.

Software Design Abstraction

  • At the architectural level, your concern should be on large-scale architectural components or subsystems.
  • You don't have to decide how an architectural element or component is to be implemented.
  • A designer needs to design the component interface and leave the implementation to a later stage.
  • Decomposition involves analyzing large-scale components and representing them as a set of finer-grain components.

Software Components

  • A component is an element that implements a coherent set of functionality or features
  • Components can be a collection of one or more services that may be used by other components.

Architectural Design Issues

  • Nonfunctional product characteristics can determine whether your product will be a success.
  • Product lifetime means that if you anticipate a long product lifetime, you will need to create regular product revisions.
  • Software reuse means you can save time and effort if you can reuse large components from other products.
  • Number of users can change very quickly, so you need to design your architecture so that your system can be scaled up and down.
  • Software compatibility is important to maintain compatibility with other software so that users can adopt your product.

Architecture and System Characteristics

  • Maintainability means using fine-grain, self-contained, replaceable components.
  • Performance means to localise critical operations and minimise communications.
  • Security means use a layered architecture with critical assets in the inner layers.
  • Safety means to localise safety-critical features in a small number of sub-systems.
  • Availability includes redundant components and mechanisms for fault tolerance.

Security vs Usability

  • Security is designing the system protection as a series of layers, which an attacker has to penetrate to reach assets.
  • Layers might include authentication layers and encryption layers.
  • A layered approach to security affects the usability of the software, like the need to remember passwords.

Architectural Design Decisions

  • Determine if there is a generic architecture that can be used and appropriate architectural patterns or styles.
  • Consider what architectural design is best for delivering the non-functional requirements
  • Decide how the system will be distributed across hardware
  • Choose what approach to use to structure the system and what control strategy should be used?
  • Determine how the architecture should be documented

Control Styles

  • Control styles are concerned with the control flow between subsystems.
  • Centralised control involves one subsystem with overall responsibility for control, it starts and stops other subsystems.
  • Event-based control means that each subsystem can respond to externally generated events from other subsystems or the system's environment.

Architectural patterns

  • An architectural pattern is a description of good design practice, which has been tried and tested in different environments.
  • Patterns represent a means of representing, sharing, and reusing knowledge.
  • Patterns may be represented using graphical and tabular descriptions.

Layered Architecture

  • A layered architecture organises the system into a set of layers, each providing a set of services to the layer above.
  • Each layer is an area of concern and considered separately from other layers.
  • The components are independent within each layer and do not overlap in functionality.
  • Layered architecture supports the incremental development of sub-systems in different layers.
  • When a layer interface changes, only the adjacent layer is affected.
  • Entire layers can be replaced, assuming that the interface is maintained.
  • Redundant facilities (e.g., authentication) can be provided in each layer to increase dependability.

The Layered Architecture Pattern

  • This pattern organises the system into layers with related functionality associated with each layer.
  • Lower-level layers represent core services that are likely to be used throughout the system.
  • Replacing entire layers is allowed as long as the interface is maintained.
  • Redundant facilities can be provided in each layer to increase the dependability of the system.
  • A high-level layer may have to interact directly with lower-level layers rather than through the layer immediately below it.
  • Performance can be a problem because of multiple levels of interpretation of a service request as processed at each layer.

Cross-Cutting Concerns

  • Cross-cutting concerns are concerns that affect the whole system.
  • Cross-cutting concerns affect all layers in the system.
  • Security is a cross-cutting concern, so protection from attacks is required at each layer.
  • Distributing security across the layers makes your system is more resilient to attacks and software failure.
  • The existence of cross-cutting concerns is the reason why modifying a system after it has been designed to improve its security is often difficult.

Generic Layered Architecture for Web-Based Application

  • This contains a browser-based or mobile user interface, where HTML forms are used to collect user input.
  • Authentication and UI management contains a user interface management layer that may include components for user authentication and web page generation.
  • Application-specific functionality contains an 'application' layer that provides functionality of the application.
  • Basic shared services is a shared services layer, which includes components that provide services used by the application layer components.
  • Database and transaction management is a database layer that provides services to manage transactions.

iLearn architectural design principles

  • Replaceability means users can replace applications in the system with alternatives.
  • Extensibility means users or system administrators can create their own versions of the system.
  • Age-appropriate means alternate user interfaces should be supported so that age-appropriate interfaces for students at different levels can be created.
  • Programmability means users can easily create their own applications by linking existing applications in the system.
  • Minimum work means users who do not wish to change the system should not have to do extra work.

Model-View-Controller (MVC) Architecture

  • Contains 3 logical components:
    • The Controller component manages user interaction.
    • The Model component includes business logic and data.
    • The View component defines and manages how the data is presented to user.

The Model-View-Controller (MVC) Pattern

  • Separates presentation and interaction from the system data.
  • The system is structured into three logical components that interact with each other.
  • The Model component manages the system data and associated operations on that data.
  • The View component defines and manages how the data is presented to the user.
  • The Controller component manages user interaction and passes these interactions to the View and the Model.
  • This pattern is used when data in a shared database has to be accessed from a range of locations.
  • It supports presentation of the same data in different ways with changes made in one representation shown in all of them.

Repository Architecture

  • Subsystems exchange data.
  • Shared data is held in a central database or repository and may be accessed by all sub-systems.
  • Each sub-system maintains its own database and passes data explicitly to other sub-systems.
  • The repository model is commonly used for sharing large amounts of data, making it efficient.

The Repository Pattern

  • Management of system data is in a central repository that is accessible to all system components.
  • You should use this pattern when there are large volumes of information generated requiring archiving.
  • Components can be independent and do not need to know of the existence of other components.

Client-Server Architecture

  • A type of distributed architecture in which clients access shared services.
  • In client-server architecture. the user interface can be implemented on the client computer.
  • Functionality is distributed between the client and one or more server computers.

The Client-Server Pattern

  • Server can be distributed across a network, enabling general functionality available to all clients.

Client-Server Communication

  • Client-server communication normally uses the HTTP protocol.
  • The client sends a message to the server that includes an instruction with the identifier of a resource.
  • HTTP is a text-only protocol, the two ways this is represented are with XML and JSON.

Multi-Tier Client-Server Architecture

  • The web server is responsible for all user communications
  • The application server is responsible for implementing application-specific logic and information storage requests
  • The database server moves information to and from the database and handles transaction management.

Transaction Processing Systems

  • Process user requests for information from or to update a database.
  • A transaction is any coherent sequence of operations that satisfies a goal.
  • Users make asynchronous requests for service, which are then processed by a transaction manager.

Pipe and Filter Architecture

  • Functional transformations process their inputs to produce outputs.
  • Transformations can be called a pipe and filter model.
  • When transformations are sequential, this is a batch sequential model, which is extensively used in data processing systems.

The Pipe And Filter Pattern

  • Used in data processing applications where inputs are processed in separate stages to generate related outputs.
  • This supports transformation reuse, it can be implemented as either a sequential or concurrent system.
  • The format for data transfer must to be agreed upon between communicating transformations.

Service-Oriented Architecture

  • Services are stateless components, which means that they can be replicated and can migrate from one computer to another.
  • A service gateway is a single access point and acts as a proxy for multiple services.
  • It enables transformations, routing, and common processing across all the services.
  • Clients do not need to know what communication protocol is being used.
  • SOA is easier to scale if demand increases and is resilient to failure.

Issues In Architectural Choice

  • The type of data and updates should be from a shared database that provides locking and transaction management.
  • If system components will be regularly changed or replaced, isolating these components as separate services simplifies those changes.
  • To run a system on the cloud, it is best to implement it as a service-oriented architecture because scaling the system is simpler.

Technology Choices

  • Relational databases, such as MySQL, are suitable for transaction management.
  • NoSQL databases, such as MongoDB, are more flexible for data analysis.
  • To ensure performance, you may need a completely different decomposition architecture in different versions.
  • You can use dedicated in-house servers or design your system to run on a public cloud like Amazon, Google, or Microsoft.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

BIS301 Software Architecture Overview
48 questions
Software Architecture Design
39 questions

Software Architecture Design

ReputableMusicalSaw1941 avatar
ReputableMusicalSaw1941
Use Quizgecko on...
Browser
Browser