⚑ IT Wisdom chmod 777 is not a solution. It's a confession.
Skilled Practitioner
4249 XP 1751 to Expert

Key Concepts

  • Software Development Lifecycle (SDLC): Plan β†’ Design β†’ Develop β†’ Test β†’ Deploy β†’ Maintain
  • Version Control: Git is the standard; tracks changes, enables collaboration, branching strategies
  • Design Patterns: Reusable solutions to common problems (MVC, Singleton, Observer, Factory)
  • MVC (Model-View-Controller): Separates data (Model), UI (View), and logic (Controller)
  • REST vs. SOAP: REST = stateless, uses HTTP verbs, JSON/XML; SOAP = strict XML, more overhead
  • Coding Best Practices: DRY (Don't Repeat Yourself), KISS (Keep It Simple), SOLID principles
  • Testing Types:
  • Unit – single function/component
  • Integration – multiple components together
  • Functional – tests against requirements
  • End-to-End (E2E) – full workflow simulation
  • Regression – ensures new code doesn't break old features
  • CI/CD: Continuous Integration (auto-build/test on commit) β†’ Continuous Delivery/Deployment (auto-release)
  • Agile vs. Waterfall: Agile = iterative sprints, flexible; Waterfall = sequential, rigid phases
  • Scrum Artifacts: Product Backlog, Sprint Backlog, Increment
  • Code Review: Peer review before merging; improves quality, catches bugs early
  • Technical Debt: Shortcuts taken now that must be fixed later
  • Pair Programming: Two devs, one keyboard β€” driver writes code, navigator reviews in real time

How It Works

  • Git Branching: main is production-stable; feature branches are created, worked on, then merged via Pull Request (PR)
  • CI/CD Pipeline Flow: Developer pushes code β†’ trigger build β†’ automated tests run β†’ if passed, deploy to staging β†’ promote to production
  • TDD (Test-Driven Development): Write the failing test first β†’ write code to pass it β†’ refactor. Cycle = Red β†’ Green β†’ Refactor
  • MVC Flow: User sends request β†’ Controller handles it β†’ queries Model for data β†’ passes data to View β†’ View renders response to user

Commands / Syntax / Key Values

Concept Key Detail
git init Initialize a new repo
git clone Copy a remote repo locally
git commit -m Save a snapshot with a message
git branch / git checkout Create/switch branches
git merge / git rebase Combine branch changes
git pull / git push Sync with remote repo
HTTP Methods (REST) GET (read), POST (create), PUT (replace), PATCH (update), DELETE (remove)
HTTP Status Codes 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Server Error
Agile Sprint Typically 1–4 weeks
SOLID Single Responsibility, Open/Closed, Liskov, Interface Segregation, Dependency Inversion

Exam Gotchas

  1. PUT vs. PATCH: PUT replaces the entire resource; PATCH updates only specified fields β€” exam questions love this distinction
  2. CI vs. CD confusion: CI = automatically building and testing; CD = automatically deploying β€” they are separate steps, not the same thing
  3. Unit β‰  Integration testing: Unit tests are isolated (mocks/stubs used); integration tests use real connections between components β€” don't mix them up
  4. Agile β‰  Scrum: Scrum is one framework within Agile; Agile is the broader philosophy β€” saying they're the same is wrong
  5. Git rebase vs. merge: Merge preserves branch history; rebase rewrites history for a cleaner linear log β€” rebase should not be used on shared/public branches

Quick Summary

Software Development and Design on the DEVASC exam focuses on three core areas: design principles (MVC, SOLID, DRY β€” know what each separates or solves), testing strategy (

My Notes
Edit your saved notes here. Saving replaces what is stored.

Key Points

  • Software Architecture organizes components and their connections; good architecture aids communication, performance prediction, and onboarding
  • Six key architecture characteristics to consider when designing: Performance, Availability, Modifiability, Testability, Usability, Security
  • Design patterns are reusable solutions to common problems β€” not libraries, just concepts; language-agnostic

Layered Architecture Pattern

  • Organizes application into distinct layers, each with a specific, isolated responsibility
  • Most common implementation: 4 layers
  • Presentation – UI communication, user input, formatting output
  • Business – business rules, calculations, order/customer processing
  • Persistence – handles data requests to/from the database layer
  • Database – physical storage and retrieval; uses query languages like SQL
  • Business + Persistence layers are sometimes combined β†’ 3-tier architecture
  • Separation of concerns = each layer only handles its own domain
  • Layers communicate via well-defined APIs/interfaces β†’ promotes loose coupling, high cohesion
  • Layers can be open or closed (open = optional to pass through for certain requests)
  • Monolithic by nature β€” easy to develop and test, but difficult to scale
  • Changes to one layer should be made in isolation from other layers

Architecture Patterns (list to know)

  • Layered / Multitier
  • Event-driven
  • Microservices
  • Model-View-Controller (MVC)
  • Space-based

Software Design Patterns

  • Three categories:
  • Creational – class/object creation (Singleton, Abstract Factory, Prototype, Factory Method)
  • Structural – organizing larger structures (Adapter, Decorator, Facade, Proxy)
  • Behavioral – interaction between components (Observer, Interpreter, Mediator, State)
  • Based on Gang of Four (GoF) book: Design Patterns: Elements of Reusable Object-Oriented Software β€” authors: Gamma, Helm, Johnson, Vlissides
  • Design patterns are described using: Intent, Motivation, Applicability, Structure (UML), Implementation/sample code

Singleton Pattern

  • Ensures a class has only one instance with a global access point
  • Use case: shared resources like a database connection
  • Achieved by: private constructor + static method (get_instance()) that returns the existing instance
  • In Python: __init__() checks if instance exists β†’ raises error if it does; access via get_instance()
  • Avoids global variables while protecting shared resources from being overwritten

UML (Unified Modeling Language)

  • Graphical notation for describing software design, especially object-oriented systems
  • Used for: documentation, pre-coding design ("sketching"), and reverse-engineering existing systems
  • Class inheritance shown with a solid line with an arrow
  • Provides high-level abstraction independent of programming language

Commands / Values

  • Python Singleton: __init__() raises error if instance exists; use get_instance() to retrieve instance
  • SQL mentioned as the query language used by the Database Layer
  • UML: solid line + arrow = class inheritance

Exam Watch-outs

  • ⚠️ 3-tier vs 4-tier: The business and persistence layers are sometimes combined into one β†’ results in a 3-tier architecture. Don't assume it's always 4 layers
  • ⚠️ Design patterns β‰  libraries: They are concepts/templates, NOT importable code libraries
  • ⚠️ Layered β‰  Microservices: Layered architecture is monolithic and hard to scale; microservices architecture is better for scaling β€” these are contrasted frequently
  • ⚠️ Singleton constructor is private: In exam scenarios, if asked how Singleton prevents multiple instances, the answer is the private constructor + static get_instance() method, not just "using a global variable"
  • ⚠️ Open vs Closed layers: A closed layer must be passed through; an open layer can be bypassed β€” easy to get these definitions reversed
  • ⚠️ GoF = Gang of Four: Know the four authors and the book title β€” could appear as
Add More Notes
Paste new content here. It will be added below your existing notes β€” nothing gets overwritten.
← Back to Course Practice This Topic