SA Module 1
SA Module 1
SA Module 1
SOFTWARE ARCHITECTURE
AND SOFTWARE PRODUCT
LIFE CYCLE
Module 1
Contents
◻ Evolution of Software Development
◻ Fundamentals of Software Engineering
◻ Elements of Software Architecture
◻ Management View
◻ Software Engineering View
◻ Engineering Design View
◻ Architectural View
What is Software Architecture?
◻ Software architecture
presents a view of a
software system as
components and
connectors.
◻ Software Architecture
and Software Design
methodologies are
same?
Difference
Software architecture and software design methodologies are related but distinct
concepts in the field of software engineering.
Software architecture refers to the high-level Software design methodologies are systematic
structure of a software system, the discipline approaches to designing software. They provide
of creating such structures, and the specific techniques and processes for transforming
documentation of these structures. requirements into a design.
- Focus: It focuses on the overall system - Focus: They focus on the individual components of
structure, including the major components and the system, their algorithms, data structures, and
their interactions, how they fit into the overall detailed workflows.
system, and how they communicate with each
other.
• 1949
• Beginning of software development (binary machine instructions)
• Structured
• Software design and
• Late 1950s Late
Engineering development
tools
• Automatic Programming (first paradigm shift) discipline 1970s (second
• 1960s-1970s 1960s was
instituted paradigm
shift)
• Abstract Programming
• Design
Late • Beginning
Late
• UML-
of multiviewed
Late paradigm 1980s- Software approach
1972 • Information shifted to
Architecture
1990s
Hiding 1980s Object early
Orientation 1990s
Scalability
◻ Scalability is the ability of the system to handle increasing loads by adding resources either
vertically (upgrading existing hardware) or horizontally (adding more nodes).It Ensures that
the system can grow and adapt to increasing demands without compromising performance.
Performance
◻ Performance pertains to how efficiently a software system uses resources to provide
timely responses and process data. It is Critical for ensuring that the system meets its
response time, throughput, and resource utilization goals.
Characteristics of Software Architecture
Security
◻ Security involves protecting the system from malicious attacks, unauthorized access, and
ensuring data integrity and confidentiality. It is Essential for maintaining trust, protecting
sensitive data, and complying with regulatory requirements.
Maintainability
◻ Maintainability is the ease with which a system can be modified to fix defects, improve
performance, or adapt to a changed environment.It Reduces the cost and effort required to
keep the system operational and up-to-date, enabling longer system lifespans and more
efficient evolution.
These characteristics collectively help ensure that the software architecture supports the overall
goals and requirements of the system, providing a robust foundation for its development and
future growth.
The Software Product Life Cycle: Views
� Key Activities:
◻ The four phases above when combined with the following build
phases form an architecture-driven software construction method:
� Project documents phase
� Construction phase
� Postconstruction phase
Synthesizing the Views
◻ Each view contains some overlapping concepts and
ways of visualizing the process.
◻ There is no one right way to design and construct
software.
◻ You should choose the activities that make the most
sense given the project at hand, finding a balance
between risk and development speed.
SDLC
◻ It stands for Software development Lifecycle.
◻ The Software Development Life Cycle (SDLC) is a
structured approach to developing software
applications, ensuring that they are built
systematically and efficiently. It outlines a series of
steps or phases that guide software developers
from the initial concept to the final product.
Phases of SDLC
◻ Planning
◻ Requirements Analysis
◻ Design
◻ Implementation (or
Coding)
◻ Testing
◻ Deployment
◻ Maintenance
Types Of SDLC Models
◻ Waterfall
◻ Prototype
◻ Devops
◻ Incremental
◻ Iterative
◻ Spiral
◻ V-Model
Types Of Architecture
◻ Software architecture refers to the high-level structure and
design of a software system, encompassing the organization of
components, their interactions, and how they meet the system's
requirements. Several types of software architectures are used,
each with different characteristics and suited to various types
of applications.
◻ 1. Layered (N-Tier) Architecture
◻ Description: This architecture separates the software system
into layers, where each layer has a specific responsibility.
Common layers include presentation, business logic, and data
access.
◻ Use Case : Enterprise applications, where separation of
concerns and maintainability are crucial.
◻ Example: A three-tier architecture with a UI layer, a business
logic layer, and a database layer.
◻ 2. Microservices Architecture
◻ Description: In this architecture, the software system is
composed of small, independent services that
communicate over a network. Each service focuses on
a specific business function and can be deployed,
updated, and scaled independently.
◻ Use Case: Large-scale applications requiring
flexibility, scalability, and rapid deployment.
◻ Example: Netflix's system architecture, where each
service (e.g., streaming, recommendations) runs
independently.
◻ 3. Monolithic Architecture
◻ Description: A traditional approach where the
entire software system is built as a single,
indivisible unit. All components are tightly coupled
and usually deployed together.
◻ Use Case: Smaller applications or when ease of
deployment is prioritized over scalability.
◻ Example: A simple web application with all
features integrated into one codebase.
◻ 4. Event-Driven Architecture
◻ Description: This architecture is centered around the
production, detection, and consumption of events.
Components communicate via event messages, and the
system responds to those events asynchronously.
◻ Use Case: Real-time systems, IoT applications, or
applications requiring asynchronous processing.
◻ Example: E-commerce systems where an event (e.g., order
placed) triggers various services like payment processing,
inventory updates, and notifications.
◻ 5. Service-Oriented Architecture (SOA)
◻ Description: Similar to microservices, SOA structures
software as services. However, in SOA, services are
often larger and more monolithic, providing coarse-
grained services that communicate via a common
message bus.
◻ Use Case: Enterprises with multiple applications
needing to integrate and communicate via well-
defined services.
◻ Example: A company-wide enterprise service bus
(ESB) that integrates different systems like CRM, ERP,
and payment processing.
◻ 6. Serverless Architecture
◻ Description: In this architecture, the infrastructure
management (e.g., server provisioning and scaling) is
abstracted away. Developers focus on writing
functions that are triggered by events, with the cloud
provider handling execution and scaling.
◻ Use Case: Applications with unpredictable traffic,
needing to scale rapidly and only pay for actual
compute time.
◻ Example: AWS Lambda or Azure Functions that
execute specific pieces of logic in response to events
like API calls or file uploads.
◻ 7. Client-Server Architecture
◻ Description: This is a distributed architecture
where clients request services, and servers
provide those services. The server hosts and
manages resources, while clients access and
utilize those resources.
◻ Use Case: Web applications, email systems, or
network-based applications.
◻ Example: A web browser (client) interacting with
a web server to retrieve and display webpages.
◻ 8. Component-Based Architecture
◻ Description: This architecture breaks the system down
into reusable, self-contained components that
encapsulate specific functionality. Components
interact with each other through well-defined
interfaces.
◻ Use Case: Systems requiring modularity and
reusability, such as desktop or enterprise
applications.
◻ Example: A software development environment (IDE)
where different components like code editor,
debugger, and compiler interact.
◻ 9. Peer-to-Peer (P2P) Architecture
◻ Description: In P2P architecture, each node (peer)
in the network acts both as a client and a server.
There is no central authority, and peers directly
communicate and share resources with each other.
◻ Use Case: Decentralized applications like file-
sharing systems or blockchain networks.
◻ Example: BitTorrent, a file-sharing system where
peers upload and download files directly from
each other.
◻ 10. Message-Driven Architecture
◻ Description: Components communicate by sending
and receiving messages via a message queue. This
architecture supports loose coupling and
asynchronous communication between components.
◻ Use Case: Systems needing reliable, asynchronous
communication, such as financial transaction systems
or order processing systems.
◻ Example: A stock trading system where trades are
processed through a message broker to ensure
reliability and fault tolerance.
◻ 11. Microkernel (Plug-in) Architecture
◻ Description: The core functionality of the system
(microkernel) provides the essential services, while
additional features are implemented as plug-ins or
extensions that interact with the core.
◻ Use Case: Extensible systems like IDEs, where core
functionality can be enhanced via plugins.
◻ Example: Eclipse IDE, where the core editor can be
extended with various language support plugins.
◻ 12. Domain-Driven Design (DDD)
◻ Description: DDD architecture focuses on modeling
the software based on the domain it serves. The
design is organized around domain entities,
aggregates, and services that reflect the business
logic.
◻ Use Case: Complex business systems where
aligning software design with business rules is
critical.
◻ Example: An inventory management system where
domain entities like products, orders, and
warehouses drive the architecture.
◻ 13. Hexagonal (Ports and Adapters) Architecture
◻ Description: This architecture emphasizes separation
of concerns by structuring the system into the core
(business logic) and adapters (interfaces with external
systems). The core is agnostic to how it's used or
interacted with.
◻ Use Case: Systems that need to be easily adaptable
to different interfaces or environments.
◻ Example: An application that can interact with
different databases or UI frameworks without
changing core business logic.
◻ 14. Pipe-and-Filter Architecture
◻ Description: The system is broken down into a series of processing
elements (filters) connected by channels (pipes). Each filter processes
input and passes the result to the next filter in the pipeline.
◻ Use Case: Systems that require data transformation, such as compilers,
data processing pipelines, or multimedia processing.
◻ Example: A video processing pipeline where each filter adds a different
effect to the video stream.
◻ These architectures can also be combined to fit specific application needs.
For instance, a microservices architecture can leverage event-driven
communication patterns or incorporate serverless components. The choice
of architecture depends on factors like system complexity, scalability
needs, development practices, and specific business goals.
Thank You