آموزش ddd یک مرجع برای فهم عمیقتر و کاربردیتر در زمینه طراحی و توسعه نرم افزارهاست. در این دوره شروع کار با Domain Driven Design، به مفاهیم اصلی طراحی دامنه محور پرداخته میشود. در این آموزش Domain Driven Design (به اختصار DDD) قصد داریم شما را با روشها و الگوهایی آشنا کنیم که دریابید چه نرمافزاری را میخواهید تولید کنید و اصلاً چرا باید آن را تولید کنید؟ همچنین با روالهای کسب و کار و الگوهای پیادهسازی نرمافزار آشنا میشویم. به یاد داشته باشید این الگوها تنها مختص DDD نیستند و با یادگیری آنها میتوان تصمیمات درستتری برای پیادهسازی نرمافزار خود گرفت و برنامههایی با قابلیت توسعه و نگهداری بهتر ایجاد کرد. کاملترین آموزش مهندسی نرم افزار را در نیک آموز فرا بگیرید.
1.900.000 تومان
در اولین قسمت از آموزش ddd قصد داریم شما را با دامنه و انواع آن آشنا کنیم. دامنه (Domain) درواقع به مجموعهای از مفاهیم و دانشهای منسجم در یک حوزه گفته میشود. در حوزه طراحی دامنه محور، محدوده کسبوکاری که نرمافزار ما قرار است در آن به فعالیت بپردازد را دامنه مینامیم. در مبحث آشنایی با دامنه در این دوره آموزش Domain Driven Design، به بررسی مباحثی همچون موارد زیر میپردازیم:
▪️ دامنه کسب و کار چیست؟ ▪️ زیردامنه چیست و چه کاربردی دارد؟ ▪️ Core Subdomain چیست؟ ▪️ Generic Subdomain چیست؟ ▪️ Supporting Subdomains چیست؟ ▪️ مقایسه انواع زیردامنهها از جنبههای مختلف برای کسب و کار ▪️ آشنایی با Core Domain Chart ▪️ Domain Expert کیست و چه نقشی دارد؟
پس از آشنایی با دامنه و انواع آن، در بخش بعدی آموزش DDD با Ubiquitous Language آشنا میشویم. طراحی دامنه محور بر زوایای دیگری از فرآیند توسعه نرمافزار نیز تأثیرگذار است و تأکید زیادی در ارتباط دوطرفه تیم توسعه نرمافزار و کاربران متخصص Domain دارد. از آنجا که ممکن است در این ارتباط دوطرفه، تیم توسعه نرمافزار در فهمیدن برخی مفاهیم و مسائل، دچار اشتباه و دوگانگی شود؛ لذا ایجاد زبان یکسان بین دو تیم (Ubiquitous Language) درمورد مفاهیم Domain، امری الزامی است. در این بخش از آموزش Domain Driven Design، میخواهیم با زبان کسب و کار آشنا شویم:
▪️ آشنایی با مسائل کسب و کاری ▪️ چرا نیاز به ارتباط داریم؟ ▪️ چه مشکلاتی در ارتباطات وجود دارد؟ ▪️ Ubiquitous Language چیست؟ ▪️ زبان کسب و کار چه نقشی در تشکیل Ubiquitous Language دارد؟ ▪️ مدل چیست و چه ویژگیهایی دارد؟
Domain Driven Design میتواند راهکارهایی برای تقسیم نرمافزار به بخشهای جدا و مستقل (مفهوم Bounded Context) و همچنین ارتباط این بخشها با یکدیگر ارائه کند. این امر سبب میشود تا فرآیند توسعه نرمافزار بهصورت موازی بین چند تیم انجام شده و همچنین معماران سیستم را قادر میسازد تا از معماریها و تکنولوژیهای مختلف در بخشهای مختلف استفاده نمایند. در این بخش از آموزش DDD، به معرفی این مفهوم مهم میپردازیم:
▪️ مدلسازی با ابعاد بزرگ چه مشکلاتی دارد؟ ▪️ چرا نیاز به ایجاد مدلهای کوچکتر داریم؟ ▪️ Bounded Context چیست؟ ▪️ تفاوت Bounded Context با زیردامنه چیست؟ ▪️ Bounded Context چه محدودههایی را تعیین میکند؟
هنگامی که پروژههای بسیار بزرگ با روش Domain Driven Design پیادهسازی میشوند، پروژه به بخشهای مجزا ازهم به نام Bounded Context تفکیک میشود. (هر Bounded Context بهطور کامل از بقیه همتایانش جداست.) در این بخش از آموزش ddd، یاد خواهیم گرفت به چه شکلی بین Bounded Context ارتباط برقرار نماییم و موارد زیر را بررسی میکنیم:
▪️ آشنایی با ارتباط از نوع Cooperation ▪️ آشنایی با Customer Supplier ▪️ Separate way چیست؟ ▪️ الگوی Partnership چیست؟ ▪️ معرفی Shared Kernel و کاربردهای آن ▪️ معرفی Conformist ▪️ آشنایی با Open-Host Service ▪️ آشنایی با Anticorruption Layer و کاربردهای آن ▪️ Context-map چیست و چه نیازی را برآورده میکند؟
در این قسمت از آموزش Domain Driven Design با الگوهایی برای پیادهسازی نرم افزار آشنا میشویم. این الگوها مختص ddd نیستند؛ اما با یادگیری آنها میتوانیم تصمیمات درستتری برای الگوهای پیادهسازی نرم افزار خود بگیریم و برنامههایی با قابلیت توسعه و نگهداری بهتر ایجاد کنیم. در این بخش، به بررسی موضوعات زیر میپردازیم:
▪️ تاریخچهای بر روشهای پیادهسازی نرم افزار ▪️ آشنایی با Transaction Script ▪️ مزایا و معایب Transaction Script ▪️ آشنایی با روش پیادهسازی Transaction Script ▪️ چه زمانی از این الگو باید استفاده کنیم؟ ▪️ معرفی الگوی Active Record ▪️ آشنایی با نحوه پیادهسازی Active Record ▪️ مزایا و معایب Active Record چیست؟ ▪️ چه زمانی از Active Record استفاده کنیم؟
Rich Domain Model در طراحی دامنه محور به معنای ایجاد مدلی جامع و مفهومی از اجزای کسبوکار است که بهطور دقیق و کامل، مفاهیم و قوانین کسبوکار را بازتاب میدهد. این مدل دارای ارتباطات و تعاملات معنادار بین اجزا است و براساس نیازهای واقعی کسبوکار ساخته میشود.
با استفاده از Rich Domain Model، توسعهدهندگان میتوانند سیستمهای نرمافزاری با پایهای قوی و قابل توسعه را پیادهسازی کنند که با تغییرات در مفاهیم کسبوکار هماهنگی دارد و از مزایایی مانند افزایش قابلیت اطمینان و قابلیت تعمیمپذیری برخوردار است. در این بخش از آموزش ddd قصد داریم بررسی کنیم که:
▪️ مقدمهای بر Rich Domain Model ▪️ معرفی Value Object و کاربرد آن ▪️ معرفی Entity ▪️ Aggregate چیست و چه کاربردی دارد؟ ▪️ Domain Service چیست و چه زمانی کاربرد دارد؟ ▪️ Domain Event چیست و چه کاربردی دارد؟
Event Sourcing یک الگوی طراحی در Domain Driven Design است که در صنعت نرمافزار کاربرد دارد، وضعیت فعلی یک اپلیکیشن یا موجودیت را با استفاده از وقایعی که در طول زمان رخ دادهاند، نشان میدهد. به جای ذخیرهسازی وضعیت فعلی، وقایع ذخیره و بازیابی میشوند و وضعیت فعلی موجودیت با پردازش این وقایع تعیین میشود.
Event Sourcing امکاناتی از قبیل ثبت کامل تاریخچه، قابلیت بازگشت به وضعیتهای گذشته و افزایش اطمینان را فراهم میکند و به توسعهدهندگان کمک میکند تا سیستمهایی با پاسخگویی بهتر به نیازهای کسبوکار و قابلیت تطبیق با تغییرات را پیادهسازی کنند. در این قسمت از آموزش DDD ، بیشتر با جزئیات این الگوی جالب آشنا میشویم:
▪️ Event Sourcing چیست؟ ▪️ چرا به Event Sourcing نیاز داریم؟ ▪️ چگونه Domain Model خود را با این روش، پیادهسازی میکنیم؟ ▪️ مزایا و معایب Event Sourcing چیست؟ ▪️ سؤالات متداول درمورد Event Sourcing
آشنایی با نحوه معماری نرم افزار از بخشهای مهم آموزش Domain Driven Design است؛ چراکه این معماری بهمنظور ایجاد سیستمهای نرمافزاری قابل اطمینان، قابل توسعه و انعطافپذیر با استفاده از مدلسازی مفاهیم کسبوکار و هماهنگی تیمهای توسعه، تدوین شده است.
با استفاده از مفاهیم و الگوهایی که در ادامه آنها را بررسی میکنیم، معماری نرم افزار در طراحی دامنه، سعی در ایجاد سیستمهایی دارد که قابلیت تغییر و تطبیق با نیازهای کسبوکار را داشته باشند و با استفاده از مدلسازی دقیق مفاهیم کسبوکار، ارتباط بهتری با مشتریان و تیمهای توسعه برقرار کنند.
▪️ چرا نیاز به ایجاد ساختار برای برنامهها داریم؟ ▪️ آشنایی با معماری چندلایه ▪️ مزایا و معایب معماری چندلایه ▪️ معرفی Hexagonal Architecture ▪️ مزایا و معایب Hexagonal Architecture ▪️ رابطهی Hexagonal Architecture با Clean و Onion Architecture در چیست؟ ▪️ آشنایی با CQRS ▪️ چرا به CQRS نیاز داریم؟
در برنامههای توزیعشده که براساس Domain Driven Design (DDD) طراحی شدهاند، برای ارتباط بین اجزای مختلف سیستم از الگوهای مختلفی استفاده میشود. این الگوها بهطورکلی، برای اطمینان از ارتباطات مؤثر و معمولی بین اجزای مختلف سیستم و همچنین مدیریت پیچیدگیهای ارتباطی در سیستم توزیعشده طراحی شدهاند. الگوهای ارتباطی در برنامههای توزیعشده در این آموزش ddd شامل موارد زیر است:
▪️ ارتباط بین بخشهای مختلف برنامه چگونه برقرار میشود؟ ▪️ آشنایی با Model Translation و روش پیادهسازی آن ▪️ Event Outbox چیست و چه کمکی به ما میکند؟
در این قسمت آموزش Domain-Driven Design میخواهیم با روشهایی آشنا شویم که بتوانیم الگوهایی را که در قسمت اول و دوم یاد گرفتیم، در دنیای واقعی مورد استفاده قرار دهیم. Event Storming؛ راه حلی برای همذهنشدن تیمهای تحلیل و کسبوکار. تکنیک EventStorming یک روش تحلیل جدید است که امروزه در دنیا بسیار مورد توجه قرار گرفته است.
▪️ Event Storming چیست؟ ▪️ چه زمانی از Event Storming استفاده میکنیم؟ ▪️ چه کسانی را به جلسه دعوت میکنیم؟ ▪️ برای برگزاری جلسه چه نیازمندیهایی داریم؟ ▪️ زمان برگزاری جلسه چقدر است؟ ▪️ فرایند برگزاری جلسه چگونه انجام میشود؟ ▪️ آشنایی با Pivotal Event ▪️ آشنایی با Swimline و کاربرد آن ▪️ بعد از جلسه، چه کارهایی انجام میدهیم؟
Domain Storytelling یک روش متمرکز بر انسان است که در فرآیند طراحی دامنه محور برای درک عمیقتر و مشترک مفاهیم کسبوکار و تعاملات بین افراد و سیستم استفاده میشود. در این روش، داستانهای کاربردی (Use Cases) و نیازمندیهای کسبوکار به شکل داستانهای زندگی واقعی توصیف میشوند.
این داستانها با استفاده از زبان غنی و قابل فهمی که معمولاً با همکاری بین توسعهدهندگان و متخصصان کسب و کار ساخته میشوند. Domain Storytelling با استفاده از مراحلی که در این بخش از آموزش ddd آنها را بررسی میکنیم، به تیمهای توسعه اجازه میدهد تا نیازمندیهای کسبوکار را به شکلی داستانمحور و قابل فهم ترجمه کنند و اطمینان حاصل کنند که مفاهیم کلیدی کسبوکار بهدرستی درک شدهاند و در سیستم پیادهسازی میشوند.
▪️ Domain Story Telling چیست؟ ▪️ چرا Domain Story Telling روش مناسبی است؟ ▪️ چه کسانی را به جلسه دعوت میکنیم؟ ▪️ Facilitator کیست و چه نقشی در انجام کار دارد؟ ▪️ چه مواقعی از Domain Story Telling استفاده میکنیم؟
در دنیای نرمافزار، بسیاری از روشها و الگوهای معروفی وجود دارند که میتوانند با مفهوم طراحی دامنه محور (Domain Driven Design یا DDD) همخوانی داشته باشند و در فرآیند پیادهسازی طراحی محدودهبندیشده، مورد استفاده قرار بگیرند.
در ادامه بخش پایانی از آموزش ddd، با سه روش و الگوهای معروف در دنیای نرمافزار آشنا میشویم و بررسی میکنیم که چه ارتباطی با DDD دارند. این الگوها و روشها، هر یک با مفاهیم و اصول Domain Driven Design هماهنگی دارند و میتوانند به توسعه سیستمهای نرمافزاری کمک کنند که مدیریت پیچیدگیها، ایجاد مدل دامنه مفهومی و ایجاد سیستمهای قابل توسعه و قابل انعطاف باشند.
▪️ آشنایی با میکروسرویس ▪️ معرفی Event-Driven Architecture ▪️ آشنایی با Data Mesh
علیرضا ارومند به عنوان Technical Manager شرکت داتین (وابسته به فناپ) در حوزه پروژههای بانکی فعال است.او همچنین مدرس و Technical Manager پروژههای نیک آموز می باشد از دیگر تخصص های او میتوان به: تولید فریمورک برنامه نویسی فوق العاده حرفهای با مدیریت بیش از ۱ میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیامکوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز، همکاری با تیم توسعه شرکت ارتباط فردا (وابسته به بانک آینده)، کارشناس ارشد و معمار نرم افزار شرکت هایپرمدیا، کارشناس توسعه نرم افزارهای آنلاین بورس شرکت تدبیرپرداز، معمار نرم افزار و توسعه دهنده سیستم های اداری مرکزتحقیقات ساختمان و مسکن وزارت مسکن، مشاور IT معاون وزیر مسکن و شهرسازی در مرکزتحقیقات ساختمان و مسکن، برگزاری دوره آموزش برنامه نویسی وب برای تیم فنی خبرگزاری بین المللی نسیم.
Δ
ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
سلام. امسال الکامپ شرکت نکردید؟
با سلام و عرض ادب امسال هم مانند سال های قبل نیک آموز در الکامپ شرکت دارد- نمایشگاه بین المللی تهران، سالن میلاد، غرفه ۱۱۶
سلام وقتتون بخیر و تشکر میکنم از این دوره خوبتون. میخواستم بدونم آیا امکان برگزاری این دوره بصورت کمپ برگذار وجود دارد؟ که افرادی که در شهرستان هستند امکان حضور در دوره رو داشته باشند.
با سلام و عرض ادب لطفا ایمیل خود را بررسی نمایید
سلام درود بر شما و استاد ارومند یکی از مدرسان فوق حرفه ای نیک آموز دوره بسیار عالی ایه و منتظریم تا شروع بشه
تشکر از لطفی که شما نسبت به آقای ارومند و مجموعه نیک آموز دارید این دوره یکی از دوره های حرفه ای نیک آموز خواهد بود که بزودی استارت اون را خواهیم زد. به امید موفقیت