Software Design and
Architecture
software architecture view
• refers to a specific representation or perspective
of the system's architecture that emphasizes
particular aspects or concerns. Views are used to
understand, analyze, and communicate different
aspects of a software system to various
stakeholders, such as developers, architects,
project managers, and clients. Each view focuses
on specific concerns, such as functionality,
structure, behavior, performance, or deployment.
Functional View:
• This view describes the system's functionality
from a user's perspective. It focuses on the
functionalities the system provides and how
users interact with it. Use cases, scenarios, and
user stories are often used to describe this
view. For example, in an e-commerce
application, the functional view might describe
how users can browse products, add them to a
shopping cart, and complete a purchase.
Structural View:
• This view focuses on the structure of the system, including
its components, modules, and their relationships. It helps
understand how the system is organized and how its
components interact with each other. Diagrams such as
class diagrams(static structure), package
diagrams(grouping ), and component diagrams(physical
components) are commonly used to represent the
structural view. For instance, in a web application, the
structural view might illustrate the different layers such as
presentation layer, business logic layer, and data access
layer, along with the components within each layer.
Behavioral View:
• This view captures the dynamic behavior of the
system, showing how it responds to external
stimuli and how internal components collaborate
to achieve certain functionalities. Sequence
diagrams, state diagrams, and activity diagrams
are often used to represent the behavioral view.
In a messaging application, the behavioral view
might represent the sequence of interactions
between users when sending and receiving
messages.
Concurrency View:
• This view focuses on the concurrent aspects of
the system, including processes, threads,
synchronization mechanisms, and their
interactions. It helps understand how the system
manages multiple tasks concurrently and ensures
correctness and efficiency in a multi-threaded or
distributed environment. Diagrams such as
concurrency diagrams and sequence diagrams
with lifelines can be used to represent
concurrency concerns.
Deployment View (Physical View):
• This view describes how the system is physically
deployed onto hardware infrastructure, including
servers, networks, and other physical resources. It
shows the distribution of components and how they
are interconnected in the deployment environment.
Deployment diagrams and network diagrams are
commonly used to represent the deployment view. For
example, the deployment view might show how web
servers, application servers, and databases are
deployed across multiple servers in a cloud
environment.
What is the 4+1 View Model?
• The 4+1 View Model is an architectural description
approach developed by Philippe Kruchten in 1995.
• It provides five concurrent views of a software
architecture to address the concerns of various
stakeholders.
• The four primary views are logical, development,
process, and physical.
• Additionally, it includes the "+1" view, which is the
scenario view, illustrating how the system behaves in
response to different use cases.
Logical View:
• This view represents the functionality that the
system provides to its users. It focuses on the
logical organization of the system's
functionality, including the decomposition of
the system into modules or components and
the relationships between them. The logical
view is concerned with what the system does
rather than how it does it
Logical View
• Description: Focuses on the functional
requirements and logical structure of the system.
• Viewer: Software architects, developers, and
stakeholders.
• Real-World Example: E-commerce Website
– Components: User Interface, Shopping Cart, Inventory
Management, Payment Gateway
– Viewer: Developers analyze this view to understand
how different modules interact to fulfill user
requirements.
Development View:
• This view represents the software
development organization and processes. It
focuses on the software development tasks,
such as analysis, design, implementation,
testing, and maintenance. The development
view describes how the system is developed
and maintained over time, including the roles
and responsibilities of the development team
and the development environment.
Process View:
• This view represents the dynamic behavior of
the system. It focuses on the processes and
interactions between components or modules
at runtime. The process view describes how
the system responds to events, handles
requests, and executes tasks. It also includes
concurrency, synchronization, and
communication mechanisms.
Physical View:
• This view represents the physical deployment
of the system onto hardware components. It
focuses on the mapping of software
components to hardware components and the
distribution of the system across different
physical nodes. The physical view describes
the deployment topology, including servers,
networks, and other infrastructure
components.
Scenarios (or Use Cases):
• Scenarios represent specific examples or
instances of system behavior. They are used to
illustrate how the system interacts with its
users and other systems in different situations.
Scenarios are typically described in terms of
use cases, which specify the sequences of
interactions between actors and the system to
achieve specific goals.
Development View
• Description: Emphasizes the organization of software
modules and components during development.
• Viewer: Software development teams, project
managers.
• Real-World Example: Mobile Application
Development
– Components: Frontend, Backend, APIs, Database
– Viewer: Project managers use this view to allocate tasks,
manage dependencies, and track progress during
development.
Process View
• Description: Illustrates the system's runtime behavior
and how processes communicate with each other.
• Viewer: System administrators, performance
engineers.
• Real-World Example: Online Banking System
– Components: Login Process, Transaction Processing,
Database Queries
– Viewer: System administrators monitor this view to ensure
smooth operation, identify bottlenecks, and optimize
performance.
Physical View
• Description: Describes the physical deployment
of software components onto hardware.
• Viewer: System administrators, network
engineers.
• Real-World Example: Cloud-Based Application
– Components: Virtual Machines, Load Balancers,
Storage, Network Infrastructure
– Viewer: Network engineers use this view to design
scalable and reliable infrastructure, while system
administrators deploy and manage resources.
+1 View: Scenario View
• Description: Presents concrete scenarios or use
cases to illustrate the system's behavior from the
user's perspective.
• Viewer: End-users, stakeholders.
• Real-World Example: Ride-Sharing App
– Scenario: Booking a Ride, Tracking Driver, Making
Payment
– Viewer: End-users and stakeholders evaluate this view
to ensure the system meets their requirements and
expectations