Requirement Gathering & Software Design Patterns - up1/training-courses GitHub Wiki
Course :: Software Design Patterns
Target groups
- Software Analyst
- Solution Architect
- Software Developer/Programmer
Outline
1. Software Requirement Gathering
- Software Development Life Cycle
- Requirement
- Architecture design
- Analysis
- Develop
- Testing
- Deployment
- Introduction to Requirement Gathering
- Common Challenges and Pitfalls
- Types of Requirements:
- Functional vs. Non-functional
- Business vs. System Requirements
- Technical Constraints
- Stakeholders in Requirement Gathering
- Workshop
- Writing Effective Requirements
- Characteristics of Well-Written Requirements (SMART Criteria)
- Use Case Development
- User Stories and Acceptance Criteria
- Workshop
2. High level :: Architecture
- Software architecture
- characteristics
- decision
- structure
- design principles
- Software architecture patterns
- ภาพรวมของสถาปัตยกรรม software แบบต่าง ๆ ข้อดีและข้อเสีย
- Evolution of Software architecture
- Monolith
- Distributed Monolith
- N-tiers
- Service-Oriented Architecture
- Microservices
- Event-Driven Microservices Architecture
- Micro Frontend
- Design principles
- Creational
- How to compose or decompose service ?
- Communication between service
- Interface (UX/UI and API)
- Easy to use
- Compatibility
- Testing
- Operation
- Plan for failure
- Monitoring and observability
- Workshop from use cases
3. Low level :: Development in each piece of software/service
- Design pattern of Software
- What are design patterns ?
- Importance of design patterns in software development
- Categories of design patterns (Creational, Structural, Behavioral)
- The history of design patterns (Gang of Four - GoF)
- Principles of Object-Oriented Design
- SOLID principles
- Encapsulation, inheritance, and polymorphism
- Understanding coupling and cohesion
- Composition over inheritance
- Advanced Design Patterns and Best Practices
- MVC (Model-View-Controller) Pattern
- MVVM (Model-View-ViewModel) Pattern
- Hexagonal Architecture
- Clean architecture
- Anti-patterns
- Recognizing common design flaws
- Examples: God Object, Singleton overuse, Spaghetti Code
- Development and Delivery process
- Understanding requirement
- Design (draw diagrams)
- Develop + Testing
- Deploy
- Workshop from use cases