دوره جامع طراحی و پیاده سازی مدرن نرم افزار
درباره دوره
دوره جامع طراحی و پیاده سازی مدرن نرم افزار با هدف آموزش تمام مهارت های لازم جهت تولید نرم افزار با کیفیت و کم هزینه برای برنامه نویسان طراحی شده است.
سرفصل دوره آموزشی
Clean Coding, Refactoring
- Code Smells
 - Practices & Techniques of Clean Coding
 - Pattern-Based Refactoring
 - Defensive Coding
 - Design by Contract & Code Contracts
 
Software Design
- Software Design Process
 - Software Architecture
 - Detailed Design
 - The Object Model (Classes & Objects)
 - Relationships among Classes (Dependency, Association, Aggregation, Composition, ...)
 - Design Smells
 - Design Principles (GRASP, SOLID, KISS, DRY, …)
 - Dependency Injection
 
Design Patterns
- Creational Patterns
- Abstract Factory
 - Builder
 - Factory Method
 - Prototype
 - Singleton
 
 - Structural Patterns
- Adapter
 - Bridge
 - Composite
 - Decorator
 - Façade
 - Flyweight
 - Proxy
 
 - Behavioral Patterns
- Chain of Responsibility
 - Command
 - Interpreter
 - Iterator
 - Mediator
 - Memento
 - Observer
 - State
 - Strategy
 - Template Method
 - Visitor
 
 
Domain-Driven Design, CQRS
- Introduction to DDD
 - Ubiquitous Language
 - Strategic Design
- Domain
 - Subdomain & Types
 - Bounded Context
 - Context Mapping
 
 - Tactical Design & Patterns
- Entity
 - Value Object
 - Aggregate & Aggregate Root
 - Domain Service
 - Domain Event
 - Repository
 - Factory
 
 - Relationship between bounded contexts
- Shared Kernel
 - Customer/Supplier
 - Conformist
 - Anti-Corruption Layer (ACL)
 - Separate Ways
 - Open Host Service
 - Published Language
 
 - Integrating Bounded Contexts
- Via REST, RPC
 - Via Messaging
 - Introduction to NServicebus
 
 - Architecture
- Onion Architecture, Hexagonal Architecture, Ports and Adapters, Clean Architecture
 - Domain Layer
 - Application Layer
 - Infrastructure Layer
 - Service Layer
 - Presentation Layer
 - Cross-Cutting Concerns
- Aspect-Oriented Programming (AOP)
 - Logging
 - Caching
 - Security
 - Exception Handling
 
 - Command Query Responsibility Segregation
 - Event Sourcing
 
 
Persistence
- Introduction to Popular ORMs (NHibernate, EF, …)
 - Techniques for Persisting Aggregate Using Entity Framework & NHibernate
 - Repository & UnitOfWork Pattern
 - Introduction to NoSQL
 
Service Layer
- Introduction to REST, RPC
 - REST Architectural Constraints
 - REST API Design Strategies & Rules
 - Content Negotiation
 - Introduction to ASP.NET Web API
 - Advanced Web API Topics (Versioning, Message Handlers, Media Formatters, Security, …)
 
Presentation Layer
- Introduction to SPA (Single-Page Application) & Frameworks (Angular, React)
 - Presentation Patterns (MVVM, MVC, MVP)
 - Task-based UI
 
Identity Management
- Terminology (STS, RP, Token, …)
 - Claim-based Identity
 - OAuth, OpenID Connect
- Implicit Flow
 - Authorization Code Flow
 - Client Credential Flow
 - Resource Owner Password Credential Flow
 
 - OWIN, Katana, ASP.NET Identity
 - Thinktecture Identity Server
 
Test-Driven Development (TDD)
- Terminology (Test Suite, Test Method, …)
 - Goals of Test Automation
 - Levels of Testing (Unit, Integration, Acceptance, Stress, …)
 - Test Pyramid
 - Testable Design
 - Quality Attributes of Good Test suite
 - Test Smells
 - Testing Strategies
 - Introduction to TDD
 - TDD Cycle
 - .NET Testing frameworks (xUnit, NUnit, …)
 - Test Doubles (Mock, Fake, Stub, …)
 - .NET Test Double Frameworks (NSubstitute, Moq, …)
 - 4-Phase Tests
 - Fixture-Setup Patterns
 - Result Verification Patterns & Frameworks (FluentAssertions, NFluent, …)
 - Fixture-Teardown Patterns
 - Test Parallelization
 - Testing Database & Data Access Layer
 - Continuous Testing Tools (NCrunch)
 - Continues Integration Tools (TFS, Team City)
 - Code Coverage Tools (DotCover)
 
Behavior-Driven Development (BDD)
- Terminology (Feature, Acceptance Criteria, Example, …)
 - Feature Injection
 - Identifying Key Examples
 - Using Ubiquitous Language in Scenarios
 - Introduction to Gherkin Syntax (Given/When/Then)
 - Introduction to Specflow
 - Layering & Architecting Acceptance Tests
 - Automating UI Layer
- Introduction to browser Automation tools (Selenium)
 - Page Object Model Pattern
 
 - Automating Non-UI Layer
 
پیش نیاز دوره
حداقل 3 سال سابقه برنامه نویسی با C#