This document provides an overview of architectural design. It discusses that architectural design organizes a system's overall structure and identifies main components and their relationships. It also describes architecture in the small of individual programs and architecture in the large of complex enterprise systems. Key architectural design decisions are discussed as well as common architectural views and patterns like layered architecture, repository architecture, client-server architecture, and MVC. Performance, security, and maintainability are some important non-functional requirements related to architectural design.
2. Introduction
Architectural design is concerned with understanding how a system
should be organized and designing the overall structure of that
system.
It is the critical link between design and requirements engineering,
as it identifies the main structural components in a system and the
relationships between them.
4. Introduction
Architecture in the small is concerned with the architecture of
individual programs. At this level, we are concerned with the way
that an individual program is decomposed into components.
Architecture in the large is concerned with the architecture of
complex enterprise systems that include other systems, programs,
and program components.
5. Architectural design decisions
Architectural design is a creative process where you design a system
organization that will satisfy the functional and non-functional
requirements of a system.
Because of the close relationship between non-functional requirements
and software architecture.
Performance Security Safety Availability Maintainability
7. MVC (Model-View-Controller)
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 (e.g.,
key presses, mouse clicks, etc.)
10. Architectural patterns
The idea of patterns as a way of presenting, sharing, and
reusing knowledge about software systems is now widely
used.
1)Layered architecture
2)Repository architecture
3)Client–server architecture
11. Layered architecture
Organizes the system into layers with related functionality associated with each layer. 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. (Allows replacement of entire layers )
clean
separation
between layers
Performance
12. Repository architecture
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 (Components can be independent ).
single point
Distributing the
repository
13. client–server
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 ( distributed across a
network(services) ).
Attack
Cause failure
14. Pipe and filter
The processing of the data in a system is organized so that
each processing component (filter) is discrete and carries
out one type of data transformation. The data flows (as in
a pipe) from one component to another for processing.