Map Of Content
Software Design vs System Design
System design refers to design of whole systems/infrastructures, while software design refers to the design of a specific software of a system.
Software Design Principles
- Coupling
- High Cohesion
Software Design Paradigms
- Functional Programming - functions as first class citizens, like Haskell
- Pure Functions are functions that operate purely only within their scope and do not modify any external components.
- Object Oriented Programming - focused on classes and objects, like Java
- Procedural Programming - focuses on procedures or routines, like C
- Declarative Programming - focused on what should be fine, not how, like SQL
- Event Driven Archtiecture - responds to user events or actions, like Javascript