Software Engineering Chapter 6: Architectural Design

ImaginativeElbaite avatar
ImaginativeElbaite
·
·
Download

Start Quiz

Study Flashcards

7 Questions

What is a client-server architecture?

A distributed system model where data and processing are distributed across components

Describe the Client-server pattern in software architecture.

In a client-server architecture, services are organized into separate servers which clients access to utilize. Servers can be replicated, and the model allows data from shared databases to be accessed from multiple locations.

What is architectural design concerned with?

Understanding how a software system should be organized

Architectural design decisions are often a sequence of activities.

False

What is the output of the architectural design process?

architectural model

____ diagrams are a commonly used method for documenting software architectures.

block

Match the architectural view with its description:

Logical view = Shows key abstractions in the system as objects or object classes Process view = Illustrates how the system is composed of interacting processes at run-time Development view = Shows how the software is decomposed for development Physical view = Demonstrates the system hardware and the distribution of software components across processors Conceptual view = Abstract view decomposing high-level requirements into detailed specifications

Study Notes

Architectural Design

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

Advantages of Architecture Design

  • Stakeholder communication: Architecture may be used as a focus of discussion by system stakeholders.
  • System analysis: It means that analysis of whether the system can meet its non-functional requirements is possible.
  • Large-scale reuse: The architecture may be reusable across a range of systems with similar requirements.

Architectural Representations

  • Informal block diagrams showing entities and relationships are the most frequently used method for documenting software architectures.
  • Block diagrams are a useful way for communication between stakeholders and for project planning.
  • However, they have been criticized because they lack semantics, do not show the types of relationships between entities, nor the visible properties of entities in the architecture.

Architectural Design Decisions

  • Architectural design is a creative process that differs depending on the type of system being developed, the background and experience of the system architect, and the specific requirements for the system.
  • It is useful to think of architectural design as a series of decisions rather than a sequence of activities.
  • System architects have to make a number of structural decisions that affect the system, its development process, and its non-functional characteristics.

Architecture Reuse

  • Systems in the same domain often have similar architectures that reflect domain concepts.
  • Application product lines are built around a core architecture with variants that satisfy particular customer requirements.
  • The architecture of a system may be designed around one or more architectural patterns or ‘styles’.

Architecture and System Characteristics

  • Performance: Localize critical operations and minimize communications. Use large rather than fine-grain components.
  • Security: Use a layered architecture with critical assets in the inner layers.
  • Safety: Localize safety-critical features in a small number of sub-systems to reduce the costs and problems of safety validation.
  • Availability: Include redundant components and mechanisms for fault tolerance.
  • Maintainability: Use replaceable components to be readily changed and separate producers of data from consumers.

Architectural Views

  • A logical view shows the key abstractions in the system as objects or object classes.
  • A process view shows how, at run-time, the system is composed of interacting processes.
  • A development view shows how the software is decomposed for development.
  • A physical view shows the system hardware and how software components are distributed across the processors in the system.
  • A conceptual view (+1) is an abstract view of the system that decomposes high-level requirements into more detailed specifications.

Architectural Patterns

  • Patterns are a means of representing, sharing, and reusing knowledge.
  • An architectural pattern is a stylized description of good design practice, which has been tried and tested in different environments.
  • Patterns should include information about when they are and when they are not useful.
  • Patterns may be represented using tabular and graphical descriptions.

The Model-View-Controller (MVC) Pattern

  • The 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, the View, and the Controller.
  • 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.

The Layered Architecture Pattern

  • The Layered architecture pattern organizes the system into a set of layers each of which provides a set of services.
  • A layer provides services to the layer above it, so the lowest-level layers represent core services that are likely to be used throughout the system.
  • Supports the incremental development of sub-systems in different layers.
  • When a layer interface changes, only the adjacent layer is affected.

The Repository Pattern

  • All data in a system is managed in a central repository that is accessible to all system components.
  • Components do not interact directly, only through the repository.
  • Used when you have a system in which large volumes of information are generated that has to be stored for a long time.

The Client-Server Pattern

  • In a client-server architecture, the functionality of the system is organized into services, with each service delivered from a separate server.
  • Clients are users of these services and access servers to make use of them.
  • Used when data in a shared database has to be accessed from a range of locations.
  • Because servers can be replicated, may also be used when the load on a system is variable.

This quiz covers the topics of architectural design decisions, architectural views, and architectural patterns in software engineering. It focuses on understanding how a software system should be organized and designing the overall structure of that system.

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Chapter 6 Architectural Design
40 questions
Monolithic Application vs Microservices
36 questions
Use Quizgecko on...
Browser
Browser