computing and design
Computing and Design
Session - 1
- System - A system consists of interconnected components with expected behavior.
Complexity
- what are 5 signs of complexity?
- Large number of components
- Large number of interconnections
- Many irregularites
- A long description
- A teams of designers, implements, or maintainers
sources of complexity
- what are the sources of complexity ?
-
Comes from multiple requirements imposed by designers.
-
High utilization increases complexity.
-
More requirements and interactions add cascading complexity.

-
Coping with complexity
- What are the methods to cope with complexity?
- Divide and concur methord using subsystem
- Reduces debugging time and allows incremental improvement.
example
no. of lines ( N) ~ no. of bugs
N - 100 lines code - 100 Bug
to find 1 Bug, need to read N lines ( for finding 1 bug, - read 100 lines, )
100 bugs - 100 * 100 = 10000 times -Dividing code into K Modules - auth, user, product, demo, config, K = 5 Modules
eg: bug in auth, no. of lines to read is - N/K = 100/5 = 20 linesdebugging time
- time to fix 1 bug - 20 lines, N/K
- totol number of bugs - 100, which is N
- time to fix all bugs = time to fix 1 bugs * total number of bugs
date: 31/01/2025
Abstraction
- Separation of interface from internals.
- Often used with modularity.
- Ensures components interact in a well-defined manner.
Layering
- Organizes modules into layers where each builds on the one below.
- Reduces interconnections and simplifies design.
- Common in computing (e.g., OS, programming languages).
Hierarchy
- Components are organized into subsystems in a tree-like structure.
- Reduces the number of interactions among modules.
- Simplifies system design and debugging.
Why Modularity, Abstraction, Layering, and Hierarchy Aren't Enough
- These techniques assume designers fully understand the system.
- Choosing the right modularity, abstraction, layering, or hierarchy is difficult.
- Experience from previous systems helps guide decisions.
Iteration in System Design
- Start with a simple working system and gradually evolve it.
- Helps manage complexity and reduces risk.
- Document assumptions to manage future changes.
- Risks:
- Bad-news diode: Bad news may not spread within the organization.
- Second-system effect: Overconfidence from initial success can lead to overcomplicated redesigns.