Software engineering is not only about writing code. It also includes requirements, design, testing, deployment, maintenance, and collaboration.
SDLC
The software development lifecycle usually includes:
- Planning
- Requirement analysis
- Design
- Development
- Testing
- Deployment
- Maintenance
Common models include waterfall, iterative development, agile, and DevOps.
DevOps
DevOps emphasizes collaboration between development and operations. The goal is faster and more reliable delivery.
Core concepts:
- CI: Continuous Integration
- CD: Continuous Delivery/Deployment
- IaC: Infrastructure as Code
- Monitoring and logging
- Automated testing
OOP
Object-oriented programming centers on encapsulation, inheritance, and polymorphism.
Encapsulation hides implementation details. Inheritance reuses and extends behavior. Polymorphism allows the same interface to have different implementations.
SOLID
SOLID principles:
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
The goal is lower coupling and better maintainability.
Design Patterns
Common patterns:
- Singleton
- Factory
- Factory Method
- Adapter
- State
- Strategy
Design patterns are not for decoration. They solve recurring structural problems.