الگوهای طراحی و معماری نرم‌افزار

مدرس: دکتر رامان رامسین پیش‌نیاز: برنامه‌سازی شی‌گرا (جاوا)
ترم: محل برگزاری: کلاس مجازی
زمان ارائه: مشاهده: دریافت لایسنس

از نوشتن کد تا طراحی نرم‌افزارهای قابل توسعه، نگهداری و اعتماد

چرا بعضی نرم‌افزارها با اضافه‌شدن قابلیت‌های جدید، به‌سادگی توسعه پیدا می‌کنند، اما در برخی پروژه‌ها حتی یک تغییر کوچک می‌تواند بخش‌های مختلف سیستم را با مشکل مواجه کند؟ پاسخ این تفاوت را باید تا حد زیادی در کیفیت طراحی نرم‌افزار و تصمیم‌هایی جست‌وجو کرد که در مراحل مختلف توسعه گرفته می‌شوند.

درس الگوهای طراحی و معماری نرم‌افزار به شما کمک می‌کند با راه‌حل‌های شناخته‌شده برای مسائل پرتکرار طراحی نرم‌افزار آشنا شوید و انتخاب‌های آگاهانه‌تری هنگام پیاده‌سازی سیستم‌های نرم‌افزاری داشته باشید. در این دوره، علاوه بر الگوهای پرکاربرد طراحی و معماری، با اصول طراحی شیءگرا و پادالگوهایی آشنا می‌شوید که شناخت آن‌ها به شما کمک می‌کند از تصمیم‌های نادرست و ساختارهای مسئله‌ساز در پروژه‌های نرم‌افزاری دوری کنید.

چرا این درس ارزشمند است؟

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

در این درس، صرفاً با مجموعه‌ای از الگوها و نام‌های آن‌ها آشنا نمی‌شوید؛ بلکه با مبانی و اصول پشت آن‌ها نیز آشنا خواهید شد تا بتوانید متناسب با مسئله، راه‌حل مناسب را انتخاب کنید و از به‌کارگیری بی‌دلیل الگوها بپرهیزید.

در این دوره چه مهارت‌هایی کسب می‌کنید؟

با گذراندن این درس، با مفاهیم و روش‌هایی آشنا خواهید شد که به شما کمک می‌کنند:

  • الگوهای رایج طراحی نرم‌افزار را بشناسید و در موقعیت‌های مناسب به کار بگیرید.
  • ساختار نرم‌افزار را با توجه به نیازمندی‌ها و پیچیدگی سیستم طراحی کنید.
  • از اصول طراحی شیءگرا برای ایجاد کدهایی با ساختار بهتر و قابلیت نگهداری بیشتر استفاده کنید.
  • با الگوهای معماری و نقش آن‌ها در شکل‌گیری ساختار کلان سیستم‌های نرم‌افزاری آشنا شوید.
  • پادالگوها و پیامدهای تصمیم‌های نامناسب طراحی را تشخیص دهید.
  • درباره انتخاب‌های طراحی نرم‌افزار دقیق‌تر استدلال کنید و راه‌حل‌های مختلف را از نظر مزایا و محدودیت‌ها ارزیابی کنید.

این دوره برای چه کسانی مناسب است؟

این درس برای دانشجویان علوم کامپیوتر و مهندسی کامپیوتر، برنامه‌نویسان و توسعه‌دهندگان نرم‌افزار و افرادی مناسب است که می‌خواهند فراتر از پیاده‌سازی قابلیت‌ها، به کیفیت طراحی و ساختار نرم‌افزارهای خود توجه کنند.

اگر در پروژه‌های نرم‌افزاری با کدهای پیچیده، دشواری افزودن قابلیت‌های جدید یا مشکلات نگهداری مواجه شده‌اید، آشنایی با اصول و الگوهای طراحی می‌تواند ابزارهای فکری ارزشمندی برای تحلیل و حل این مسائل در اختیار شما قرار دهد.

گامی برای حرفه‌ای‌تر شدن در توسعه نرم‌افزار

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

سرفصل‌ها

  • مقدمه: مبانی و تاریخچه (۱ جلسه)
  • الگوهای طراحی (8 جلسه)
    • الگوهای آفرینشی
    • الگوهای ساختاری
    • الگوهای رفتاری
  • اصول و قواعد شیءگرا در قالب الگوها (۲ جلسه)
    • اصول شش‌گانه
    • الگوهای GRASP
    • طراحی بر اساس قرارداد
  • الگوهای معماری (۵ جلسه)
  • پادالگوها (۲ جلسه)

ارزیابی

  • تمرین‌ها: ۶ نمره
  • آزمون پایان دوره: ۱۴ نمره

منابع

  1. E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
  2. E. Freeman, E. Robson. Head First Design Patterns. 2nd ed. O'Reilly Media, 2020.
  3. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal. Pattern-Oriented Software Architecture: A System of Patterns. Vol. 1. Wiley, 1996.
  4. M. Richards, Software Architecture Patterns, 2nd ed. O'Reilly Media, 2022.
  5. C.J. Neill, P.A. Laplante, J.F. DeFranco. Antipatterns: Managing Software Organizations and People. 2nd ed. CRC Press, 2012.