SDA Assignment
SDA Assignment
Software design and architecture are fundamental aspects of software engineering that
define how a system is structured and how its components interact. Good software
architecture ensures scalability, maintainability, and efficiency.
Software Design
Software Architecture
Software architecture is the high-level structure of a system, defining its components and
how they interact. It ensures that the software meets technical and business
requirements.
Conclusion
Both software design and architecture are crucial for building robust and efficient software
systems. Design focuses on implementation details, while architecture provides a
strategic blueprint for system structure.
Software Design and Architecture
Software design and architecture are fundamental aspects of software engineering that
define how a system is structured and how its components interact. Good software
architecture ensures scalability, maintainability, and efficiency.
Software Design
Software design focuses on the detailed implementation of components, modules, and
data structures. It involves selecting algorithms, defining interfaces, and organizing logic.
1. Low-Level Design (LLD): Deals with the detailed implementation of modules, data
structures, and algorithms.
2. High-Level Design (HLD): Provides an overview of system components and their
interactions.
A Layered Architecture divides the software into different layers to separate concerns and
improve maintainability.
Example:
Example:
Example:
Conclusion
Both software design and architecture are crucial for building robust and efficient software
systems. Design focuses on implementation details, while architecture provides a
strategic blueprint for system structure. By using architectural patterns and design
principles, developers can build scalable, maintainable, and high-performance
applications.
• Class Diagrams
• Sequence Diagrams
• Use Case Diagrams
• Component Diagrams
• Deployment Diagrams
• State Diagrams
• Activity Diagrams
• Package Diagrams
Each type serves a different purpose in visualizing system components, interactions, and
workflows.
2. Class Diagram
A Class Diagram represents the static structure of a system, defining its classes,
attributes, methods, and relationships. It is widely used in Object-Oriented Design (OOD).
Use Case:
Class diagrams are used to model software systems in languages like Java, Python, and
C#.
3. Sequence Diagram
A Sequence Diagram represents interactions between objects in a time-sequenced order.
It is useful for modeling the flow of execution in a system.
Use Case:
Sequence diagrams are widely used in APIs, authentication processes, and system
workflows.
4. Use Case Diagram
A Use Case Diagram visualizes system functionality from a user perspective. It helps in
understanding the scope of a system.
+-----------------+
| Library System |
+-----------------+
/ | \
Librarian Member Admin
| | |
Add Book Borrow Manage Users
Return
Use Case:
Use case diagrams help in defining user interactions in web applications and mobile apps.
5. Component Diagram
A Component Diagram shows how different components of a system interact. It is useful
for designing modular applications.
Use Case:
6. Deployment Diagram
A Deployment Diagram visualizes hardware components and how software components
are deployed across them.
[User] --> [Web Server] --> [Application Server] --> [Database Server]
Use Case:
7. State Diagram
A State Diagram models the lifecycle of an object, showing different states and
transitions.
Example: Order Processing
• States: New -> Processing -> Shipped -> Delivered -> Canceled
• Transitions:
o A new order moves to processing.
o Once shipped, it moves to delivered.
o It can be canceled at any stage before delivery.
Use Case:
8. Activity Diagram
An Activity Diagram represents a workflow, depicting steps in a process.
[Start] --> [Select Items] --> [Checkout] --> [Enter Payment] --> [Confirm Payment] --> [End]
Use Case:
Activity diagrams are used in business process modeling and transaction flows.
9. Package Diagram
A Package Diagram organizes a system into packages, showing dependencies.
+---------------------+
| Banking System |
|---------------------|
| Account Management |
| Loan Processing |
| User Authentication|
+---------------------+
Use Case:
10. Conclusion
Architectural diagrams play a crucial role in software design and development. They help
in:
By using these diagrams, developers can design scalable and efficient systems that align
with business needs.