آشنایی با طراحی نرم افزار
- طراحی نرم افزار چیست؟
- چالش های رایج طراحی نرم افزار
- سطوح مختلف در طراحی نرم افزار (Detailed Design, Architectural Design و ... )
- نقش ها و وظایف مختلف در فرآیند طراحی نرم افزار (معمار نرم افزار، طراح نرم افزار، توسعه دهنده و ...)
مبانی طراحی نرم افزار
- Modularization
- Abstraction
- Encapsulation
- Cohesion
- Coupling
آشنایی با Design Smell ها
- Design Smell چیست؟
- آشنایی با Design Smell های رایج
- Rigidity
- Fragility
- Immobility
- Viscosity
- Needless Complexity
- Needless Repetition
- Opacity
اصول SOLID
- Single Responsibility Principle (SRP)
- Open-Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
اصول Component Cohesion
- The Reuse/Release Equivalency Principle (REP)
- Common-Reuse Principle (CRP)
- Common-Closure Principle (CCP)
اصول Component Coupling
- Acyclic Dependencies Principle (ADP)
- Stable-Dependencies Principle (SDP)
- Stable-Abstractions Principle (SAP)
اصول و قواعد دیگر
- KISS
- YAGNI
- DRY
- Composition over inheritance
- Law of Demeter (Principle of least knowledge)
الگوهای طراحی GOF
Creational Patterns
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
Behavioral Patterns
- Chain of responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template method
- Visitor
Structural Patterns
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
الگوهای دیگر
- Specification
- Composite Specification
- Object Pool
- Private Class Data