آموزش طراحی و معماری نرم افزار، در این دوره دانشجو با مباحث Clean Coding، Refactoring، اصول SOLID، الگوهای طراحی (Design Pattern)، تست نرم افزار Unit Testing آشنا می شود.

دوره جامع طراحی و پیاده سازی مدرن نرم افزار

درباره دوره

دوره جامع طراحی و پیاده سازی مدرن نرم افزار با هدف آموزش تمام مهارت های لازم جهت تولید نرم افزار با کیفیت و کم هزینه برای برنامه نویسان طراحی شده است.

سرفصل دوره آموزشی

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#