System Design

Comprehensive reference on software architecture, system design principles, notations, and modeling. Standards: IEEE 1016-1998 (SDD), UML 2.5, C4 Model


Table of Contents

  1. System Design Fundamentals
  2. Software Architecture Styles
  3. Design Strategies: Top-Down, Bottom-Up, Hybrid
  4. Function-Oriented Design
  5. Object-Oriented Design
  6. User Interface Design
  7. Design Notations & Modeling Diagrams
  8. Data Flow Diagrams (DFD)
  9. Entity-Relationship Diagrams (ERD)
  10. UML Diagrams
  11. Data Dictionary
  12. Software Design Document (SDD) IEEE 1016
  13. Design for Non-Functional Requirements
  14. Agentic System Design Considerations

1. System Design Fundamentals

System design is the process of defining the architecture, components, modules, interfaces, and interactions of a software system to satisfy specified requirements. It transforms requirements into a blueprint for construction.

Software Design (IEEE): The process of defining the architecture, components, interfaces, and other characteristics of a system or component. Also defined as the result of that process.

Design vs Architecture

Aspect Architecture Design
Scope High-level structure, system-wide decisions Module-level, component internals
Concerns Quality attributes, constraints, trade-offs Algorithms, data structures, APIs
Stakeholders Architects, CTO, cross-team Developers, team leads
Decisions Hard to change (architecturally significant) Easier to refactor

Design Quality Attributes

A good design must be:


2. Software Architecture Styles

An architecture style defines the family of systems in terms of their structure, components, connectors, and constraints. The choice of style impacts scalability, maintainability, and deployment.

Layered (n-Tier) Architecture

Organizes the system into horizontal layers, each with a specific responsibility. Each layer depends only on the layer below it.

Layer Responsibility
Presentation User interface, client-side logic
Business Logic Domain rules, workflows
Data Access Database operations, ORM
Database Data persistence

Microservices Architecture

Decomposes the system into small, independently deployable services. Each service owns its data and communicates via APIs.

Event-Driven Architecture

Components communicate through events. Producers emit events; consumers react. Loosely coupled via message broker.

Microkernel (Plugin) Architecture

Core system provides minimal functionality. Extensions/plugins add features.

Pipe-and-Filter Architecture

Data flows through a sequence of processing steps (filters) connected by pipes.

Architecture Style Comparison

Style Scalability Maintainability Complexity Use Case
Layered Moderate High Low Enterprise apps
Microservices Very High Moderate High Large-scale distributed systems
Event-Driven Very High Moderate High Real-time processing
Microkernel Moderate Very High Medium Extensible products
Pipe-and-Filter Moderate High Low Data processing

3. Design Strategies: Top-Down, Bottom-Up, Hybrid

Top-Down Design

Start with the high-level system, then decompose it into subsystems, modules, and components.

Bottom-Up Design

Build primitive components first, then compose them into larger structures.

Hybrid Design

Combine both approaches. Use top-down for architectural decomposition and bottom-up for reusable component libraries.


4. Function-Oriented Design

Focuses on functions or processes as the primary decomposition unit. The system is divided into functions that transform inputs to outputs.

Key Concepts

When to Use

Limitations


5. Object-Oriented Design

Organizes the system as a collection of objects that encapsulate data and behavior. Each object is an instance of a class.

Key Concepts

Design Process

  1. Identify objects and classes from requirements
  2. Define attributes and methods for each class
  3. Establish relationships (inheritance, association, composition)
  4. Design interfaces and abstract classes
  5. Apply design patterns where appropriate

When to Use


6. User Interface Design

UI design focuses on the interaction between users and the system.

Design Principles

UI Design Process

  1. User Research — understand users, tasks, and context
  2. Information Architecture — structure content and navigation
  3. Wireframing — low-fidelity layout and flow
  4. Prototyping — interactive mockups
  5. Visual Design — colors, typography, branding
  6. Usability Testing — validate with real users

7. Design Notations & Modeling Diagrams

Purpose of Modeling

The C4 Model

A hierarchical approach to visualizing software architecture:

Level Diagram Audience
Level 1: Context System context diagram Technical and non-technical stakeholders
Level 2: Containers Container diagram Technical stakeholders, developers
Level 3: Components Component diagram Developers
Level 4: Code Class/sequence diagram Developers

8. Data Flow Diagrams (DFD)

DFDs represent the flow of data through a system. They show how data enters, is processed, stored, and leaves the system.

DFD Symbols (Yourdon/DeMarco)

Symbol Name Description
Circle/oval Process Transforms input data to output
Rectangle External Entity External source or destination of data
Open rectangle Data Store Repository of data
Arrow Data Flow Movement of data between elements

DFD Levels

Guidelines


9. Entity-Relationship Diagrams (ERD)

ERDs model the data entities in a system and the relationships between them.

Components

Component Notation Description
Entity Rectangle A real-world object or concept (e.g., Customer, Order)
Attribute Ellipse Properties of an entity (e.g., name, email)
Relationship Diamond Association between entities (e.g., places, belongs to)

Relationship Types

Cardinality Notation (Chen vs Crow’s Foot)

Chen Crow’s Foot Meaning
1 ||–|| Exactly one
M ||–< Many
Optional o–|| Zero or one

10. UML Diagrams

UML (Unified Modeling Language) 2.5 provides a standardized set of diagrams for modeling software systems.

Structure Diagrams (Static View)

Diagram Purpose
Class Diagram Classes, attributes, methods, and relationships
Component Diagram Physical components and their dependencies
Deployment Diagram Hardware nodes and software deployment
Package Diagram Grouping of model elements

Behavior Diagrams (Dynamic View)

Diagram Purpose
Use Case Diagram Actors, use cases, and system boundaries
Sequence Diagram Interactions between objects over time
Activity Diagram Workflow and process flow
State Machine Diagram States and transitions of an object

Class Diagram Relationships

Relationship Notation Description
Association Solid line Structural relationship
Inheritance Hollow triangle Generalization/specialization
Aggregation Hollow diamond Part-of (weak ownership)
Composition Filled diamond Part-of (strong ownership, shared lifetime)
Dependency Dashed arrow Uses or depends on

11. Data Dictionary

A data dictionary is a centralized repository of information about data elements in the system.

Contents

Element Description
Name Unique identifier for the data element
Alias Alternative names
Type Data type (string, integer, date, etc.)
Length Maximum size
Range Valid values or value range
Nullability Whether null values are allowed
Default Value Default if not specified
Source Where the data originates
Description Business meaning and usage

Data Dictionary Notation

Example:

Customer Address = Street + City + State + ZipCode
Customer Name = [First Name | Last Name]
Order Items = {Item}

12. Software Design Document (SDD) IEEE 1016

The SDD is a formal document that describes the architecture and design of a software system.

IEEE 1016-1998 SDD Structure

Section Content
1. Introduction Purpose, scope, definitions, references
2. Architectural Design Decomposition, component descriptions, connectors
3. Detailed Design Module interfaces, data structures, algorithms
4. Design Decisions Rationale, trade-offs, alternatives considered
5. Requirements Traceability Mapping design elements to requirements
6. Appendices Supporting information, glossaries

Design Viewpoints (IEEE 1016)

Viewpoint Focus
Decomposition Viewpoint Module breakdown and hierarchy
Dependency Viewpoint Inter-module dependencies and coupling
Interface Viewpoint Module interfaces and protocols
Detailed Design Viewpoint Internal design of each module

13. Design for Non-Functional Requirements

Performance

Security

Scalability

Maintainability


14. Agentic System Design Considerations

Design for Autonomous Agents

Multi-Agent Systems

Safety & Guardrails


References: IEEE 1016-1998, UML 2.5, GoF, C4 Model, SOLID Principles