Skip to content

Software design and its activities

πŸ“˜ What is Software Design?

Software Design is the process of defining architecture, components, interfaces, and data for a software system to meet specified requirements.

βœ… It acts as a blueprint for software construction β€” just like a building’s architectural plan!


🧱 Why is Software Design Important?

  • Ensures clarity before coding
  • Helps in modular, scalable, and maintainable software
  • Reduces errors and cost in later phases
  • Makes the development process more systematic

πŸ› οΈ Major Activities in Software Design

Software Design is carried out in two main phases:

1. πŸ—οΈ High-Level Design (Architectural Design)

Also known as System Design, it focuses on the overall structure of the system.

Activities:

ActivityDescription
System DecompositionDividing the system into subsystems/modules
Interface DesignDefining how modules interact with each other
Data DesignIdentifying data structures and database organization
Technology SelectionDeciding platforms, frameworks, or tools

πŸ” Example: Dividing an online food delivery system into modules like User Login, Menu Display, Order Management, Payment, and Delivery Tracking.


2. 🧩 Detailed Design (Low-Level Design)

This is where each module/component is designed in detail.

Activities:

ActivityDescription
Algorithm DesignCreating step-by-step logic for modules
Data Structure DesignSelecting appropriate data structures (arrays, trees, etc.)
Component DesignDescribing functions, methods, inputs, and outputs
User Interface Design (UI)Designing the layout and user interaction

πŸ” Example: Writing pseudocode or flowcharts for the β€œOrder Management” module, showing how to add items, remove items, and calculate total price.


πŸ”‘ Design Principles to Follow

  • Modularity: Break the system into independent modules
  • Abstraction: Hide internal details and show only necessary features
  • Reusability: Design components that can be reused in other projects
  • Cohesion & Coupling:
    • High Cohesion (each module does one job)
    • Low Coupling (modules depend less on each other)

🧠 Simple Example – “Online Library System”

ModuleDesign Consideration
User LoginInterface with username/password check
Book SearchAlgorithm for filtering by name, author, genre
Borrow BookData flow between user account and book inventory
Admin PanelSeparate interface for adding/removing books

πŸ“‹ Summary

TermDefinition
Software DesignThe process of planning a software solution’s structure
High-Level DesignFocuses on modules, interfaces, and data flow
Low-Level DesignFocuses on algorithms, functions, and logic
Design PrinciplesModularity, Abstraction, Reusability, Cohesion & Coupling

🧠 Viva Questions

  1. Q: What is the difference between high-level and low-level design?
    A: High-level design focuses on system structure; low-level design focuses on module internals.
  2. Q: What is modularity in software design?
    A: Dividing software into independent, manageable modules.
  3. Q: Give one example of design activity in software engineering.
    A: Algorithm design in the detailed design phase.