Dashboard
/
CCNA Automation
/ Notes
Software Development and Design
Study cheat sheet Β· DEVASC
Generated May 13, 2026
Practice This Topic
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:
mainis 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
- PUT vs. PATCH: PUT replaces the entire resource; PATCH updates only specified fields β exam questions love this distinction
- CI vs. CD confusion: CI = automatically building and testing; CD = automatically deploying β they are separate steps, not the same thing
- Unit β Integration testing: Unit tests are isolated (mocks/stubs used); integration tests use real connections between components β don't mix them up
- Agile β Scrum: Scrum is one framework within Agile; Agile is the broader philosophy β saying they're the same is wrong
- 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 viaget_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; useget_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.