انواع الگوها در طراحی و توسعه نرم افزار
۵ خرداد ۱۴۰۵
زمان مطالعه:
دقیقه

شاید اولین چیزی که از اسم الگوها (Software Patterns) در نرم افزار به یاد هر برنامه نویس تازه کاری میآید الگوهای طراحی نرم افزار (Software Design Patterns) باشند، اما الگوهای نرم افزاری صرفا به الگوهای طراحی یا همان دیزاین پترن ها (Design Patterns) خلاصه نمیشوند بلکه هر مرحله از فرآیند طراحی و توسعه نرم افزار الگوهای خاص خود را دارد و حتی هر لایه از یک نرم افزار نیز الگوهای خود را دارد، در این پست قصد دارم به معرفی انواع الگوهای نرم افزاری در فرآیند طراحی و توسعه نرم افزارهای رایانه ای بپردازم، از آنجائیکه ارائه نمونه کد و پیاده سازی بسیار طولانی میشود و در یک پست نمیتوان این موارد را آورد، لذا در این پست فقط به معرفی و تعریف هر الگو می پردازم و در پست های بعدی اگر مجالی بود هر الگو به همراه نمونه کد و پیاده سازی معرفی خواهند شد.

از لحاظ فرآیند توسعه نرم افزار

الگوهای فرآیند

الگوهای مدیریت پروژه

 

 

از لحاظ فازهای فرآیند توسعه نرم افزار 

الگوهای تحلیل (Analysis Patterns)

  • Accountability Pattern → مسئولیت‌ها و نقش‌ها
  • Party Pattern → مدل‌سازی شخص/سازمان
  • Inventory Pattern
  • Order & Shipment Pattern
  • Reservation Pattern

الگوهای طراحی (Design Patterns)

الف) ایجادی (Creational)

برای ساخت آبجکت

  • Singleton
  • Factory Method
  • Abstract Factory
  • Builder
  • Prototype

ب) ساختاری (Structural)

ساختار کلاس‌ها

  • Adapter
  • Facade
  • Decorator
  • Composite
  • Proxy
  • Bridge
  • Flyweight

ج) رفتاری (Behavioral)

رفتار سیستم

  • Observer
  • Strategy
  • State
  • Command
  • Mediator
  • Chain of Responsibility
  • Template Method
  • Visitor
  • Iterator
  • Memento

الگوهای معماری (Architectural Patterns)

  • Layered Architecture (N-Tier)
  • MVC
  • MVVM
  • Microservices
  • Monolithic
  • Event-Driven Architecture
  • Hexagonal Architecture
  • Clean Architecture
  • Onion Architecture
  • CQRS
  • Pipe & Filter
  • Client-Server
  • Broker
  • Peer-to-Peer

الگوهای پیاده سازی (Implementation Patterns)

الگوهای Concurrency / Parallelism

برای پردازش همزمان.

  • Producer-Consumer
  • Thread Pool
  • Reactor
  • Leader-Follower
  • Active Object
  • Fork/Join

Workflow / Business Process Patterns

برای سیستم‌های BPM و ERP.

  • Approval Workflow
  • State Machine
  • Escalation Pattern
  • Saga Workflow

الگوهای API و Distributed Systems

در سیستم‌های مدرن و Cloud.

  • API Gateway
  • Backend For Frontend (BFF)
  • Circuit Breaker
  • Retry Pattern
  • Saga Pattern
  • Bulkhead
  • Service Discovery
  • Sidecar
  • Strangler Fig

الگوهای Domain-Driven Design (DDD Patterns)

برای سیستم‌های پیچیده کسب‌وکار.

مفاهیم:

  • Entity
  • Value Object
  • Aggregate
  • Aggregate Root
  • Repository
  • Domain Service
  • Domain Event
  • Bounded Context
  • Ubiquitous Language
  • Anti-Corruption Layer

الگوهای آزمون (Testing Patterns)

  • AAA (Arrange-Act-Assert)
  • Test Fixture
  • Mock Object
  • Stub
  • Fake
  • Test Data Builder
  • Page Object Model

الگوهای توزیع و تحویل (DevOps / Deployment Patterns)

  • Blue-Green Deployment
  • Canary Release
  • Rolling Deployment
  • Feature Toggle
  • Side-by-Side Deployment

 

از لحاظ لایه های توسعه نرم افزار

از آنجائیکه این دسته بندی از نگاه دیگری دسته بندی مربوط به الگوها را مشخص میکند ممکن است برخی از الگوهای معرفی شده در بخش قبل در بین این الگوها نیز موجود باشند.

الگوهای رابط کاربری (UI/UX Patterns)

  • Wizard
  • Infinite Scroll
  • Dashboard
  • Search Pattern
  • Master-Detail
  • Pagination
  • Progressive Disclosure

الگوهای منطق کسب و کار (BL Patterns)

  • Transaction Script
  • Domain Model
  • Service Layer

الگوهای دسترسی به داده ها (DL Patterns)

  • Repository
  • DAO
  • Unit of Work
  • Data Mapper
  • Active Record

الگوهای بانک اطلاعاتی (DB Patterns)

  • Repository
  • ORM
  • Identity Map
  • Lazy Loading
  • Unit of Work
  • Cache Aside
  • Database per Service
  • CQRS Read Model

الگوهای امنیتی (Security Patterns)

  • Authentication
  • Authorization
  • RBAC
  • OAuth
  • JWT Pattern
  • Zero Trust
  • Secure Session
  • Defense in Depth

از لحاظ مقیاس نرم افزار (الگوهای سازمانی |Enterprise Patterns)

دسترسی به داده ها (Data Access):

  • Repository
  • DAO
  • Unit of Work
  • Data Mapper
  • Active Record

منطق کسب و کار (Business Logic):

  • Transaction Script
  • Domain Model
  • Service Layer

نمایش (Presentation):

  • Front Controller
  • Page Controller
  • MVC

توزیع (Distribution):

  • Remote Facade
  • DTO

الگوهای یکپارچگی سازمانی (Integration Patterns):

  • Message Bus
  • Message Queue
  • Publish/Subscribe
  • Content Router
  • Message Translator
  • Event Channel
  • Aggregator
  • Request-Reply

 

 

الگوهای Distributed System Patterns

Cloud Design Patterns

کد کاتا

الگوهای پالایش (Refactoring Patterns)

فرا الگوها (Meta Patterns)

 

ضد الگو ها (Anti-Patterns)

  • God Object
  • Big Ball of Mud
  • Spaghetti Code
  • Golden Hammer
  • Copy-Paste Programming
  • Lava Flow
  • Database as Integration