Topic 1: Introduction to Software Architecture
🎯 Learning Objectives
By the end of the video, you should be able to:
Define software architecture.
Explain why well-designed software architecture is important.
Understand how architecture impacts design decisions (tech stack, production
environment).
List artifacts from software architecture design.
What is Software Architecture?
Definition: Organization of the system.
Functions as a blueprint for developers to create interacting components.
Captures fundamental structures and system behavior.
Defines:
o Component interactions.
o Operating environment.
o Design principles.
🔑 Importance of Software Architecture
Captures early design decisions (hard to change later, costly to modify).
Addresses non-functional aspects:
o Performance
o Scalability
o Maintainability
o Interoperability
o Security
o Manageability
Why it matters:
o Balances stakeholder needs.
o Serves as a communication tool among team members.
o Provides agility to adapt to changing requirements.
o Increases lifespan of software, even if implementation details change.
⚙️Architecture & Tech Stack
Architecture guides choice of technology stack.
A tech stack includes:
o Programming languages
o Frameworks
o Libraries
o Other supporting software/tools
Architects must know the advantages and disadvantages of stacks to anticipate
development needs.
Architecture ensures stacks meet non-functional requirements.
📄 Artifacts of Software Architecture
1. Software Design Document (SDD)
o Collection of technical specifications.
o Functional description + design considerations:
Assumptions
Dependencies
Constraints
Requirements
Objectives
Methodologies
2. Architectural Diagram
o Shows:
Components
Interactions
Constraints
Patterns used
o Communicates high-level structure.
3. UML (Unified Modeling Language) Diagrams
o Programming language–agnostic.
o Show structure and behavior of the system.
o Common, standardized notation.
🌍 Production Environment Considerations
Architecture influences deployment environment.
Production environment includes:
o Servers
o Load balancers
o Databases
o Other infrastructure that delivers the application to users.
📌 Key Takeaways
Software architecture = blueprint + organization of application.
Well-designed architecture:
o Improves communication
o Captures hard-to-change early decisions
o Handles evolving requirements
o Extends software lifespan
Architecture impacts tech stack and production environment.
Artifacts:
o SDD
o Architectural Diagram
o UML Diagrams
Topic 2 – Software Design & Modeling
🎯 Learning Objectives
By the end of this video, you should be able to:
Compare and contrast structured design and behavioral models.
Describe UML and its advantages.
Explain the purpose of state transition diagrams and interaction diagrams.
Software Design & Modeling
Software Design = process of documenting structural components and behavioral
attributes of software before development.
A key activity: modeling the software → creating visual/diagrammatic representations
of:
o The bigger solution
o Sub-components
o Interactions among components
Tools:
o Simple flowcharts
o UML (Unified Modeling Language) → standardized
📌 Structured Design
Breaks down a software problem into organized smaller solution elements:
o Modules
o Sub-modules
Principles:
o Cohesion → all related functionality grouped together.
o Coupling → communication between modules; aim for loose coupling (weak
association so changes in one module minimally affect others).
Used in service-oriented architectures and microservices.
Example: Billing System
o Main module: Billing
o Sub-modules: Insurance Verification, Submit Claim, Output Total
o Arrows show data flow.
📌 Behavioral Models
Describe what a system does (not how it does it).
Show overall behavior of the system.
Use behavioral UML diagrams such as:
o State transition diagrams
o Interaction diagrams
Unified Modeling Language (UML)
Definition: Standardized modeling language to visually represent:
o Architecture
o Design
o Implementation
Types of UML diagrams:
o Structural
o Behavioral
Advantages of UML:
1. Plan features before coding → saves time & money.
2. Helps new/joining developers understand system quickly.
3. Facilitates communication between technical & non-technical audiences.
4. Provides visual maps → helps navigate source code.
Programming language agnostic → universally understandable.
🔄 State Transition Diagram
Behavioral UML diagram.
Shows:
o Different states of a system.
o Events causing transitions between states.
Example: Clinic Visit
o States: Waiting, Testing, With Doctor
o Transitions triggered by events (e.g., appointment starts → waiting ends).
🔁 Interaction Diagram
Models the dynamic nature of a system.
Visualizes objects and their relationships.
Example: Sequence Diagram
o Communication between objects shown over time.
o Ex: Patient booking appointment in online portal.
Another type of behavioral UML diagram.
📌 Key Takeaways
Structured Design: Breaks problem into organized modules; emphasizes cohesion and
loose coupling.
Behavioral Models: Describe system behavior without detailing implementation.
UML: Standardized, language-agnostic; improves planning, communication, onboarding,
and navigation.
State Transition Diagram: Shows states + events causing transitions.
Interaction Diagram: Shows communication between objects (e.g., sequence diagram).