Architectural Design in Software Systems

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

Architectural design is unrelated to requirements engineering.

False (B)

The output of the architectural design process is an architectural model that outlines the system as a set of communicating components.

True (A)

Refactoring the system architecture is usually inexpensive and does not affect many components.

False (B)

Architecture in the small focuses on complex enterprise systems that include multiple managed programs.

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

Explicit architecture can aid in stakeholder communication and system analysis.

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

Product-line architectures are designed to be non-reusable across a range of systems.

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

Architecture in the large considers the organization of an individual program.

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

The early stages of agile processes typically involve designing an overall system architecture.

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

Layered architecture organizes a system into layers with unrelated functionality.

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

In a layered architecture, when a layer interface changes, only the adjacent layer is affected.

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

The lowest-level layers in a layered architecture represent auxiliary services that are rarely used.

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

Layered architecture is suitable for incremental development across different layers.

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

One of the disadvantages of layered architecture is the difficulty in achieving a clean separation between layers.

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

Using layered architecture often improves system performance despite multiple layers of interpretation.

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

Layered architecture allows for the replacement of entire layers, provided the interface is maintained.

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

Layered architecture is commonly used when building new functionalities on top of existing systems.

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

Simple block diagrams showing entities are the most frequently used method for documenting software architectures.

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

Box and line diagrams are very detailed and show the nature of component relationships in a system.

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

In a client-server architecture, services are delivered from a single server.

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

Replication of servers is beneficial in a client-server architecture during variable system load.

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

Architectural models are not necessary for facilitating discussion about the system design.

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

A primary disadvantage of client-server architecture is the potential for each service to be a single point of failure.

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

Architectural design processes are uniform across all types of systems.

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

The aim of documenting an architecture is to produce an incomplete system model.

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

Client-server architecture can only be implemented on a distributed network.

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

Systems within the same domain typically share similar architectures that reflect common domain concepts.

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

The pipe and filter model processes inputs to produce outputs through transformation functions.

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

Application product lines can only be built around a unique architecture without variants.

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

Client-server architecture completely eliminates management problems when servers are owned by different organizations.

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

Architectural design decisions have no impact on the non-functional characteristics of the system.

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

A network is necessary for clients to access servers in a client-server architecture.

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

The performance of a client-server system is independent of the network conditions.

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

A batch sequential model is suitable for interactive systems.

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

The pipe and filter pattern allows data to flow continuously through filters.

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

Each filter in a pipe and filter system performs multiple types of data transformations.

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

The pipe and filter architecture cannot be implemented as a concurrent system.

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

In a repository architecture, sub-systems can directly interact with each other without a central database.

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

In a pipe and filter system, the format for data transfer must be agreed upon by communicating transformations.

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

The repository pattern is best suited for systems that generate large volumes of information that need long-term storage.

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

Generic application architectures are designed to meet specific organizational needs.

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

The evolution of a pipe and filter system can be achieved by adding transformations.

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

One advantage of using a repository is that it allows for independent components that do not need to know about each other's existence.

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

System overhead increases when functional transformations in a pipe and filter system use incompatible data structures.

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

The repository architecture is considered a distributed model for data sharing.

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

Shared data in a repository system is accessible to all sub-systems.

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

A disadvantage of repository architecture is that it may lead to consistent data management across components.

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

Distributing the repository across several computers simplifies communication between system components.

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

One of the main uses of the repository pattern is in data-driven systems where data inclusion triggers an action.

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

Flashcards

Block Diagrams

Simple, informal diagrams used to show entities and their relationships. Commonly used for documenting software architectures. Lack semantics, don't show relationship types or entity properties.

Box and Line Diagrams

Architectural models that provide a high-level view of a system, facilitating communication with stakeholders and aiding project planning. They are abstract and don't convey the intricacies of component relationships or properties.

Architectural Design

A process of creating and documenting the structure of a software system. It involves making decisions about the components, their relationships, and how they interact to achieve the system's goals.

Architecture Reuse

The process of reusing existing architectural patterns or designs in new projects. This can save time and effort, improve consistency, and reduce risks.

Signup and view all the flashcards

Application Product Lines

A set of software systems designed to meet the needs of a particular market or industry. They share a common architecture and functionality, but may have variations for specific customer requirements.

Signup and view all the flashcards

Repository Pattern

A central data store that all system components access, enabling data sharing and communication. Components don't interact directly, but through the repository.

Signup and view all the flashcards

Shared Data Repository

A method of data exchange where all sub-systems share a common database or repository, allowing access to data by all.

Signup and view all the flashcards

Independent Sub-system Databases

Each sub-system manages its own database and communicates data directly to other sub-systems.

Signup and view all the flashcards

Repository Model for Large Data

When large volumes of data need to be shared, the repository model is often preferred for efficient data sharing.

Signup and view all the flashcards

Suitable Systems for Repository Pattern

The repository pattern is suitable for systems where large volumes of data are generated and need long-term storage.

Signup and view all the flashcards

Consistency and Change Propagation

Changes made by one component can be propagated to all other components through the central repository.

Signup and view all the flashcards

Disadvantages of Repository Pattern

Problems in the central repository can affect the entire system, making it a single point of failure.

Signup and view all the flashcards

Distributing the Repository

Distributing the repository across multiple computers can be challenging.

Signup and view all the flashcards

What is Architectural Design?

Architectural design focuses on structuring and organizing a software system, defining its overall composition and how components interact.

Signup and view all the flashcards

What is Architectural Design's Role?

Architectural design is the bridge between requirements and implementation, establishing the system's core building blocks and their connections.

Signup and view all the flashcards

What is an Architectural Model?

An architectural model represents the system's structure as a set of interacting components, visualized in diagrams or descriptions.

Signup and view all the flashcards

Why is Refactoring Architecture Expensive?

Refactoring the system architecture is a costly process affecting many components due to interdependencies.

Signup and view all the flashcards

What is Architecture in the Small?

Architecture in the small refers to designing a single program. It focuses on how a program is broken down into smaller, organized components.

Signup and view all the flashcards

What is Architecture in the Large?

Architecture in the large deals with complex systems that include multiple programs, components, and even systems outside the current project.

Signup and view all the flashcards

Why is Explicit Architecture Beneficial?

Explicitly defined architecture can help facilitate communication between stakeholders, analyze system capabilities, and enable large-scale reuse of design patterns.

Signup and view all the flashcards

What are Product-Line Architectures?

Product-line architectures aim to develop common, reusable design patterns and components across a range of systems within a specific product line.

Signup and view all the flashcards

Model-View-Controller (MVC)

A software design pattern that structures an application into three interconnected parts: Model, View, and Controller. The Model represents the data and business logic, the View handles the user interface, and the Controller acts as an intermediary between the Model and View.

Signup and view all the flashcards

Layered Architecture

A type of software architecture that organizes system components into distinct, hierarchical layers, each providing specific services to the layer above it. Layers are designed to minimize dependencies and facilitate modular development.

Signup and view all the flashcards

Lowest-Level Layer

The lowest level of a layered system, which provides core services utilized by all upper layers. Think of it as the foundation.

Signup and view all the flashcards

Intermediate Layer

The layer above the lowest level, providing services to the upper layers while utilizing the services of the lower layer

Signup and view all the flashcards

Highest-Level Layer

The uppermost layer in a layered architecture, responsible for user interactions and presenting results to the user.

Signup and view all the flashcards

Layer Replaceability

The ability to exchange or replace an entire layer without affecting other layers, as long as the interfaces remain compatible.

Signup and view all the flashcards

Redundant Facilities in Layers

Providing redundant mechanisms (e.g., authentication) in multiple layers to enhance system reliability by minimizing single points of failure.

Signup and view all the flashcards

Performance Impact of Layered Architecture

The potential for decreased performance due to the overhead of processing requests through multiple layers.

Signup and view all the flashcards

Client-Server Architecture

A software architecture pattern where functionality is divided into services, each provided by a separate server. Clients access these services over a network.

Signup and view all the flashcards

Client-Server Pattern

A type of client-server architecture where each client connects directly to a server, making requests and receiving responses.

Signup and view all the flashcards

Pipe and Filter Architecture

A type of software architecture where data is processed sequentially through a series of independent components called filters. Each filter performs a specific transformation on the data before passing it on to the next filter.

Signup and view all the flashcards

Distributed System Model

A distributed system model where data and processing are spread across different components, which can be on the same or different machines.

Signup and view all the flashcards

Stand-Alone Servers

A server providing a specific service, like data management or printing, accessed by clients over a network.

Signup and view all the flashcards

Clients

Users of services provided by servers in a client-server architecture. They can be applications or individual users.

Signup and view all the flashcards

Network

The network infrastructure that connects clients and servers, enabling communication and data transfer.

Signup and view all the flashcards

Advantages of Client-Server Pattern

The key advantage of this pattern is the ability to share functionality and resources among clients. Examples include printing services or databases.

Signup and view all the flashcards

Pipe and Filter Pattern

A processing pattern where data flows through a series of components, called filters, each performing a specific transformation on the data.

Signup and view all the flashcards

Batch Sequential Model

These systems are designed to process data sequentially, one step at a time. They are ideal for batch processing, where large amounts of data are processed in a single run. However, they are not suitable for real-time or interactive systems.

Signup and view all the flashcards

Filter Reusability

Filters in a pipe-and-filter architecture are independent components, meaning they can be developed and tested separately. This modularity makes it easy to reuse filters in different applications.

Signup and view all the flashcards

Ease of Evolution

A key benefit of the pipe-and-filter pattern is its ease of evolution. Adding new transformations simply involves plugging in additional filters to the pipeline, without affecting existing components.

Signup and view all the flashcards

Data Transfer Format

The data flowing between filters needs to be in a specific format, agreed upon by all components. This can lead to overhead and complexity, as components may need to parse and reformat data before processing.

Signup and view all the flashcards

Applications of Pipe and Filter

The pipe-and-filter pattern is commonly used in data processing systems, both for batch processing and for handling transactions. It effectively handles data transformations in a modular and reusable manner.

Signup and view all the flashcards

Application Architectures

The design of software systems to meet specific organizational needs. Reflects common business requirements.

Signup and view all the flashcards

Generic Application architecture

A basic framework that can be adapted to meet different needs.

Signup and view all the flashcards

Study Notes

Architectural Design

  • Architectural design is concerned with understanding how a software system should be organized and designing the overall structure.
  • It's the critical link between design and requirements engineering, identifying main structural components and relationships between them.
  • The output of the architectural design process is an architectural model; this describes how the system is organized as communicating components.

Agility and Architecture

  • An early stage of agile processes is designing an overall system architecture.
  • Refactoring the system architecture is typically expensive due to affecting many system components.

Architectural Abstraction

  • Architecture in the small concerns individual programs, focusing on how a program is decomposed into components.
  • Architecture in the large involves complex enterprise systems, including other systems, programs, and components, often distributed across multiple computers and companies.

Advantages of Explicit Architecture

  • Stakeholder communication: Architecture serves as a discussion point for stakeholders.
  • System analysis: Helps assess if a system meets non-functional requirements.
  • Large-scale reuse: Architects can be reusable across various systems, allowing for product-line architectures.

Architectural Representations

  • Informal block diagrams are frequently used to document software architectures, showing entities and relationships.
  • However, these diagrams lack semantics and don't show the types of relationships or entity properties.
  • Architectural model requirements depend on its specific usage.

Box and Line Diagrams

  • Very abstract, omitting component relationships and external properties.
  • Useful for communication with stakeholders and project planning.

Use of Architectural Models

  • Facilitate discussions about system design by providing a high-level overview, enabling stakeholders to relate to and understand the system without excessive detail.
  • Document the architecture, creating a complete system model displaying components, interfaces, and connections.

Architectural Design Decisions

  • The architectural design processes vary based on the specific system type.
  • Many decisions have impacts on non-functional system characteristics.
  • Examples include decisions on generic applications, data distribution, or architectural patterns and styles.

Architecture Reuse

  • Systems in similar domains often have similar architectures based on shared concepts.
  • Application product lines are built around core architectures enabling specific customer requirements.
  • System architectures can be designed around pre-existing patterns or styles, which capture the essence of an architecture and can be adapted.

Architecture and System Characteristics

  • Performance: Optimize critical operations and minimize communication by using large components.
  • Security: Use layered architectures to place critical assets in inner layers.
  • Safety: Focus safety-critical features within certain subsystems.
  • Availability: Ensure redundancy and fault tolerance via redundant components.
  • Maintainability: Use interchangeable, replaceable components.

Architectural Views

  • Understanding perspectives and notations for describing architectural models.
  • Each model provides a specific view or perspective of the system, for example, demonstrating modular decomposition, run-time interactions, or network distributions.
  • Multiple views are needed for comprehensive documentation and design. This is useful as a way to describe the systems architecture and multiple aspects.

4 + 1 View Model of Software Architecture

  • A logical view emphasizing key abstractions as objects (or objects/classes).
  • A process view illustrating how interacting processes (at run-time) compose the system.
  • A development view detailing how software is decomposed for design.
  • A physical view highlighting system hardware and component distribution across processors.
  • Use cases or scenarios can be used to relate these aspects.

Representing Architectural Views

  • While some propose UML for system architecture documentation, it is deemed insufficient due to its lack of relevant high-level abstractions.
  • Architectural Description Languages are developed but not widely adopted.

Architectural Patterns

  • Patterns represent, share, and reuse architectural knowledge.
  • They offer stylized descriptions of successful design practices.
  • They include insights into when they are and aren't applicable offering context on useful applications.
  • Both tabular and graphical descriptions are used to represent the patterns.

The Model-View-Controller (MVC) Pattern

  • Separates presentation/interaction from system data.
  • Composed of Model, View, and Controller components interacting to manage data, presentation and user input.
  • Figure 6.4 (within the text) visually demonstrates the architecture of a web-based application system using the MVC pattern.
  • Useful when multiple views or interactions are needed, and future presentation/interaction approaches are unknown.

Web Application Architecture using MVC

  • Illustrates a web application's structure using an MVC pattern with the involved components (controller, view, model).

Layered Architecture

  • Models interfacing subsystems, with each layer (or machine) offering services—often useful for incremental development, with interface changes affecting only adjacent layers.
  • The layered principle is sometimes not a suitable structure for systems.

Layered Architecture Pattern

  • Organizes systems by functionality into layers, showing a layered structure where related functionality is arranged.
  • Lower layers provide core services to higher layers (like Figure 6.6 and 6.7 in the text).
  • Suitable in multi-team/multi-level security/incremental building.

Generic Layered Architecture

  • Defines generic components of a layered architecture—typical components such as user interfaces, management of authentication and authorization, business logic, system utilities, and system support including the operating system and database.

The Architecture of the iLearn System

  • A layered approach demonstrates the specific application components found within iLearn, including utility layer components.

Repository Architecture

  • Subsystems need to share data (in two main ways). This is achieved via a central database or repository or each subsystem maintaining its own database and explicitly sharing data.
  • This is an efficient data-sharing mechanism.

The Repository Pattern

  • In this pattern, all data is managed in a central repository accessible to all components.
  • It is recommended when large volumes of data need to be stored and accessed over time, or for action triggers (that are data-driven) in a system.

Repository Architecture for an IDE

  • Illustrates how an integrated development environment (IDE) that uses a central repository stores and retrieves information among its various components.

Client-Server Architecture

  • A model for distributed systems, where components handle tasks such as data transfer, specific services, user calls, and network connections.
  • These models can be implemented on a single computer.

The Client-Server Pattern

  • A system functionality is organized into services delivered by independent servers accessed by client components.
  • Shows a potential example of a library organized as a client-server system.
  • Provides a way of distributing functionality. This is helpful for data that is stored in a shared database from various locations.

A Client-Server Architecture for a Film Library

  • Example visualizing a client-server system in a film library, demonstrating how multiple clients access centralized film catalogues, video stores, photos and web servers.

Pipe and Filter Architecture

  • A model of functional transformations. Data transformation components process input to produce outputs.
  • Suitable for data processing systems with sequential transformations.
  • Not well-suited for interactive systems.

The Pipe and Filter Pattern

  • Focuses on a data processing model based on discrete processing components as filters and data flowing through them.
  • Describes a typical use in a data processing system utilizing a pipeline and filters.

Example of Pipe and Filter Architecture in a Payments System

  • A diagram visually presenting a payments system's architecture using the pipe and filter model.

Application Architectures

  • Application systems are created to meet specific needs.
  • Businesses frequently share similar needs, leading to shared architectures.
  • Generic application architectures provide flexible support through various configurations.

Use of Application Architectures

  • Starting point for architectural design, acting as initial guidelines,
  • A design checklist
  • Organizing development team tasks
  • Assessing components and reuse
  • Defining application types

Examples of Application Types

  • Data processing applications without explicit user intervention
  • Transaction processing applications managing database updates
  • Event processing applications interpreting events from the environment
  • Language processing applications interpreting user intent using specialized languages

Application Type Examples

  • Examples include e-commerce systems, reservation systems, and compilers/interpreters, amongst other language processing systems.

Transaction Processing Systems

  • Systems processing user requests and updates on databases.
  • A transaction is a coherent set of operations toward a goal, like booking a flight.
  • Users send requests asynchronously; a transaction manager processes them.

The Structure of Transaction Processing Applications

  • Illustrates a typical structure for a transaction processing system via a sequence of components.

The Software Architecture of an ATM System

  • An architecture example for an ATM system visualizing how input, process, and output data flow.

Information Systems Architecture

  • Information systems are layered, with typical components including user interfaces, communication, information retrieval, and databases.

Layered Information System Architecture

  • A layout visualizing a typical layered architecture with specific roles for data flow within an information system.
  • The layout in this case, shows how the information system layers are organized sequentially with database transaction layers.

The Architecture of the Mentcare System

  • Example visualizing the structure of a medical/healthcare system.

Web-based Information Systems

  • Web-based systems handle resource management using web browsers.
  • E-commerce systems are an example of this, with functionalities like (shopping carts) to manage a number of items in a single payment transaction

Server Implementation

  • Usually, these are multi-tier client-server implementations involving the webserver for communication, an application server, and a database server to control database transactions.

The Architecture of a Language Processing System

  • Displays a graphical representation of a language processing system, illustrating the sequence of steps starting from source code to production of results.

Key Points

  • A software architecture describes a system's organization.
  • Decisions made during design can affect architecture and systems.
  • Architectures help document the system from multiple views.
  • Patterns are used for reusing existing system knowledge and practices.

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