در شروع کار با DDD قصد داریم شما را با روشها و الگوهایی آشنا کنیم که دریابید چه نرمافزاری را میخواهیم تولید کنیم و اصلاً چرا باید آن را تولید کنیم؟ با روالهای کسب و کار و الگوهایی پیادهسازی نرمافزار آشنا شویم. به یاد داشته باشید این الگوها تنها مختص DDD نیستند و با یادگیری آنها میتوان تصمیمات درستتری برای پیادهسازی نرمافزار خود بگیریم و برنامههایی با قابلیت توسعه و نگهداری بهتر ایجاد کنیم.
1.900.000 تومان 1.140.000 تومان
مجموعهای مفاهیم و دانشهای منسجم در یک حوزه دامنه آن حوزه است. در حوزه Domain Driven Design ، که از این به بعد به آن DDD میگوییم، محدوده کسب و کاری که نرمافزار ما قرار است در آن به فعالیت بپردازد را دامنه مینامیم.
▪️ دامنه کسب و کار چیست؟ ▪️ زیردامنه چیست و چه کاربردی دارد؟ ▪️ Core Subdomain چیست؟ ▪️ Generic Subdomain چیست؟ ▪️ Supporting Subdomains چیست؟ ▪️ مقایسه انواع زیردامنهها از جنبههای مختلف برای کسب و کار ▪️ آشنایی با Core Domain Chart ▪️ Domain Expert کیست و چه نقشی دارد؟
DDD بر زوایای دیگری از فرآیند توسعه نرم افزار نیز تأثیرگذار است و تأکید زیادی در ارتباط دوطرفه تیم توسعه نرم افزار و کاربران متخصص Domain دارد. از آنجا که ممکن است در این ارتباط دوطرفه، تیم توسعه نرم افزار در فهمیدن برخی مفاهیم و مسائل، دچار اشتباه و دوگانگی شود، لذا ایجاد زبان یکسان بین دو تیم (Ubiquitous Language) درمورد مفاهیم Domain ، امری الزامی است. در این بخش، میخواهیم با زمان کسب و کار آشنا شویم.
▪️ آشنایی با مسائل کسب و کاری ▪️ چرا نیاز به ارتباط داریم؟ ▪️ چه مشکلاتی در ارتباطات وجود دارد؟ ▪️ Ubiquitous Language چیست؟ ▪️ زبان کسب و کار چه نقشی در تشکیل Ubiquitous Language دارد؟ ▪️ مدل چیست و چه ویژگیهایی دارد؟
DDD همچنین راهکارهایی برای تقسیم نرم افزار به بخشهای جدا و مستقل (مفهوم Bounded Context) و همچنین ارتباط این بخشها با یکدیگر ارائه میکند. این امر سبب میشود تا فرآیند توسعه نرم افزار بهصورت موازی بین چند تیم انجام شده و همچنین معماران سیستم را قادر میسازد تا از معماریها و تکنولوژیهای مختلف در بخشهای مختلف استفاده نمایند. در این بخش، به معرفی این مفهوم مهم میپردازیم.
▪️ مدلسازی با ابعاد بزرگ چه مشکلاتی دارد؟ ▪️ چرا نیاز به ایجاد مدلهای کوچکتر داریم؟ ▪️ Bounded Context چیست؟ ▪️ تفاوت Bounded Context با زیردامنه چیست؟ ▪️ Bounded Context چه محدودههایی را تعیین میکند؟
هنگامی که پروژههای بسیار بزرگ با روش Domain Driven Design پیادهسازی میشوند، پروژه به بخشهای مجزا ازهم به نام Bounded Context ها تفکیک میشود (هر Bounded Context بهطور کامل از بقیه هم تایانش جداست). در این بخش، یاد خواهیم گرفت به چه شکلی بین Bounded Context ها ارتباط برقرار کنیم.
▪️ آشنایی با ارتباط از نوع Cooperation ▪️ آشنایی با Customer Supplier ▪️ Separate way چیست؟ ▪️ الگوی Partnership چیست؟ ▪️ معرفی Shared Kernel و کاربردهای آن ▪️ معرفی Conformist ▪️ آشنایی با Open-Host Service ▪️ آشنایی با Anticorruption Layer و کاربردهای آن ▪️ Context-map چیست و چه نیازی را برآورده میکند؟
در این قسمت با الگوهایی برای پیادهسازی نرم افزار آشنا میشویم. این الگوها مختص DDD نیستند؛ اما با یادگیری آنها میتوانیم تصمیمات درستتری برای الگوهای پیادهسازی نرم افزار خود بگیریم و برنامههایی با قابلیت توسعه و نگهداری بهتر ایجاد کنیم.
▪️ تاریخچهای بر روشهای پیادهسازی نرم افزار ▪️ آشنایی با Transaction Script ▪️ مزایا و معایب Transaction Script ▪️ آشنایی با روش پیادهسازی Transaction Script ▪️ چه زمانی از این الگو باید استفاده کنیم؟ ▪️ معرفی الگوی Active Record ▪️ آشنایی با نحوه پیادهسازی Active Record ▪️ مزایا و معایب Active Record چیست؟ ▪️ چه زمانی از Active Record استفاده کنیم؟
▪️ مقدمهای بر Rich Domain Model ▪️ معرفی Value Object و کاربرد آن ▪️ معرفی Entity ▪️ Aggregate چیست و چه کاربردی دارد؟ ▪️ Domain Service چیست و چه زمانی کاربرد دارد؟ ▪️ Domain Event چیست و چه کاربردی دارد؟
الگوی Event Sourcing در صنعت نرم افزار کاربرد دارد. تآکید این الگو برروی ذخیره رویدادها یا تغییراتی است که برروی یک موجودیت اتفاق میافتد. در ادامه، بیشتر با جزئیات این الگوی جالب آشنا میشویم.
▪️ Event Sourcing چیست؟ ▪️ چرا به Event Sourcing نیاز داریم؟ ▪️ چگونه Domain Model خود را با این روش، پیادهسازی میکنیم؟ ▪️ مزایا و معایب Event Sourcing چیست؟ ▪️ سؤالات متداول درمورد Event Sourcing
در این بخش، گشتی در معماریها میزنیم و با آنها آشنا میشویم و معایب و مزایا هرکدام را بررسی کنیم.
▪️ چرا نیاز به ایجاد ساختار برای برنامهها داریم؟ ▪️ آشنایی با معماری چندلایه ▪️ مزایا و معایب معماری چندلایه ▪️ معرفی Hexagonal Architecture ▪️ مزایا و معایب Hexagonal Architecture ▪️ رابطهی Hexagonal Architecture با Clean و Onion Architecture در چیست؟ ▪️ آشنایی با CQRS ▪️ چرا به CQRS نیاز داریم؟
▪️ ارتباط بین بخشهای مختلف برنامه چگونه برقرار میشود؟ ▪️ آشنایی با Model Translation و روش پیادهسازی آن ▪️ Event Outbox چیست و چه کمکی به ما میکند؟
در این قسمت میخواهیم با روشهایی آشنا شویم که بتوانیم الگوهایی را که در قسمت اول و دوم یاد گرفتیم، در دنیای واقعی مورد استفاده قرار دهیم. Event Storming؛ راهحلی برای همذهن شدن تیمهای تحلیل و کسب و کار. تکنیک EventStorming یک روش تحلیل جدید است که امروزه در دنیا بسیار مورد توجه قرار گرفته است.
▪️ Event Storming چیست؟ ▪️ چه زمانی از Event Storming استفاده میکنیم؟ ▪️ چه کسانی را به جلسه دعوت میکنیم؟ ▪️ برای برگزاری جلسه چه نیازمندیهایی داریم؟ ▪️ زمان برگزاری جلسه چقدر است؟ ▪️ فرایند برگزاری جلسه چگونه انجام میشود؟ ▪️ آشنایی با Pivotal Event ها ▪️ آشنایی با Swimline و کاربرد آن ▪️ بعد از جلسه، چه کارهایی انجام میدهیم؟
▪️ Domain Story Telling چیست؟ ▪️ چرا Domain Story Telling روش مناسبی است؟ ▪️ چه کسانی را به جلسه دعوت میکنیم؟ ▪️ Facilitator کیست و چه نقشی در انجام کار دارد؟ ▪️ چه مواقعی از Domain Story Telling استفاده میکنیم؟
در این قسمت، با سه روش و الگوهای معروف در دنیای نرم افزار آشنا میشویم و بررسی میکنیم که چه ارتباطی با DDD دارند:
▪️ آشنایی با میکروسرویس ▪️ معرفی Event-Driven Architecture ▪️ آشنایی با Data Mesh
علیرضا ارومند به عنوان Technical Manager شرکت داتین (وابسته به فناپ) در حوزه پروژههای بانکی فعال است.او همچنین مدرس و Technical Manager پروژههای نیک آموز می باشد از دیگر تخصص های او میتوان به: تولید فریمورک برنامه نویسی فوق العاده حرفهای با مدیریت بیش از ۱ میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیامکوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز، همکاری با تیم توسعه شرکت ارتباط فردا (وابسته به بانک آینده)، کارشناس ارشد و معمار نرم افزار شرکت هایپرمدیا، کارشناس توسعه نرم افزارهای آنلاین بورس شرکت تدبیرپرداز، معمار نرم افزار و توسعه دهنده سیستم های اداری مرکزتحقیقات ساختمان و مسکن وزارت مسکن، مشاور IT معاون وزیر مسکن و شهرسازی در مرکزتحقیقات ساختمان و مسکن، برگزاری دوره آموزش برنامه نویسی وب برای تیم فنی خبرگزاری بین المللی نسیم.
Domain Driven Design یا DDD، یک رویکرد طراحی و توسعه نرم افزار محسوب میشود که در آن، برروی درک عمیق و مدلسازی حوزه اصلی کسب و کار تمرکز میشود و شما این مدل را بهعنوان ابزار راهنما در تمام مسیر توسعه نرم افزار استفاده خواهید کرد. درحقیقت، آشنایی با قوانین و الگوهای DDD باعث میشود تا اعضای تیم توسعه و کارشناسان دامنه، به درک مشترکی از Domain پروژه برسند، روند توسعه نرم افزار با اهداف کسب و کار همتراز شود، مدیریت پیچیدگیها تسهیل یابد و درنهایت، این اطمینان حاصل شود که نرم افزار ایجادشده دقیقاً پاسخگوی نیازمندیهای کسب و کار باشد. شما میتوانید با مطالعه مقاله «Domain Driven Design چیست؟ [بررسی دامنه]» مفاهیم مربوط به دامنه کسب و کار بهتر درک کنید.
در Domain Driven Design، یک مفهوم بنیادی به نام Bounded Context وجود دارد که با استفاده از آن، مرزبندی مفهومی و شفافی برای تعریف اسکوپ، محدودیتهای درون دامنه مدل و قوانین مربوطه تعریف میشود. Bounded Context ها بهعنوان یک بخش ضروری، کمک میکنند تا درک مشترک از دامنه حفظ شود و افراد تیم توسعه نرم افزار بتوانند درنهایت شفافیت و بدون تعارض، برروی بخشهای مختلف پروژه بهصورت مستقل کار کنند.
اساساً مفاهیم Domain Driven Design به یک نوع خاص از زبان برنامه نویسی وابسته نیست و شما میتوانید آن را برای انواع زبانهای برنامه نویسیی مختلف به کار ببرید. لازم به ذکر است که تمامی مثالها و تمرینهای این دوره، براساس زبان برنامه نویسی دات نت (NET.) طراحی شدهاند.
این چهار مفهوم همگی از موضوعات پراهمیت توسعه نرم افزار بهحساب میآیند. DDD یک متدولوژی برای طراحی سیستمهای نرم افزاری پیچیده است که در آن، تمرکز برروی دامنه اصلی کسب و کار قرار دارد و منجر به مواردی مانند درک نیازمندیهای سازمان، کدهایی با قابلیت نگهداری و مرزبندی شفاف خواهد شد.
میکروسرویس یک شیوه معماری نرم افزار است که در آن، اپلیکیشن نرم افزاری در قالب مجموعهای از سرویسهای کوچک و مستقل ساختاردهی میشود و هر سرویس، برای قسمت خاصی از کسب و کار کاربرد دارد.
دیزاین پترن راه حلهای با قابلیت استفاده مجددی بهحساب میآیند که به منظور حل مسائل رایج طراحی نرم افزار مورد استفاده قرار میگیرند و باعث بهبود کیفیت کدها و قابل نگهداری بودن آنها میشوند.
Clean Architecture یک فلسفه طراحی نرم افزار است که بهواسطه آن، عناصر طراحی به سطوح حلقه حلقه جداسازی میشوند. Clean Architecture به گونهای طراحی شده است که توسعهدهنده میتواند آن را برای سازماندهی کدها استفاده کند تا منطق کسب و کار در چارچوبی جداگانه از مکانیزم تحویل (Delivery) جداسازی شود.
بله. هدف ما در مجموعه نیک آموز، فراهم کردن دورههای آموزشی بهروز و مطابق با آخرین تغییرات است. علاوهبر این، براساس اینکه در طول زمان، چه میزان تغییراتی در محتوای دوره آموزشی ایجاد شود، تخفیفهای مناسبی (۵۰٪ الی ۱۰۰٪) به خریداران دورههای پیشین تعلق میگیرد. در شرایطی که بهروزرسانی دوره، به افزایش مثالها یا Feature های خاصی محدود شود، این موارد بهصورت رایگان در اختیار شما قرار خواهد گرفت تا شما بتوانید دورهای که از قبل تهیه کردهاید را به بهترین شکل ممکن درک کنید و مهارتهای خود را مطابق با آپدیتها گسترش دهید. ضمن اینکه میتوانید تا مدت زمان شش ماه، از پشتیبانی برخوردار شوید.
هرچند در هر دوی DDD و TDD، تمرکز روی ایجاد نرم افزار کارآمد و سریع است، اما این دو رویکرد از دو نقطه نظر مختلف این کار را انجام میدهند. در Test Driven Domain یا همان TDD، تمرکز اصلی روی ایجاد یک برنامهریزی توسعه بهصورت گامبهگام و همراه با جزئیات است و این روند، ازطریق فرآیند Testing انجام خواهد شد. در حالی که در DDD ، روی درک دقیق و صحیح کسب و کار و تلفیق قوانین پیچیده آن درون طراحی نرم افزار تمرکز میشود.
بله. میتوانید ازطریق اسنپ پی، بهراحتی این دوره آموزشي DDD را تهیه کنید. کافیست در اسنپ پی، حساب کاربری ایجاد کرده و پس از ورود به صفحه نیک آموز، دوره موردنظر را تهیه کنید. اگر بخواهید از خرید اقساطی بهعنوان روش پرداخت هزینه استفاده کنید، تنها یک چهارم آن را در ابتدا پرداخت خواهید کرد. شما میتوانید با مطالعه «راهنمای خرید اقساطی دوره آموزشی با اسنپ پی» با مراحل آن آشنا شوید.
این دوره دارای لایسنس پخش میباشد. شما میتوانید این دوره را در پلیر اختصاصی مجموعه، با نام اسپات پلیر مشاهده کنید. توجه کنید که پس از تهیه این دوره، یک کلید لایسنس منحصر به فرد در پنل کاربری شما قرار میگیرد. در صورتی که به لایسنسهای بیشتری نیاز داشته باشد، میتوانید با پرداخت هزینه آن از این مزیت برخوردار شوید. توجه کنید که تمام فایلهای مربوط به دوره، شامل سورس کدها و جزوات، همگی در اسپات پلیر قابل دسترس شما هستند. برای اطلاعات بیشتر، به مقاله «راهنمای مشاهده محصولات آموزشی محافظت شده نیکآموز» مراجعه کنید.
در صورت تمایل به دریافت فاکتور رسمی، پیش از خرید خود با واحد فروش مجموعه (17 00 07 91 – 021) تماس حاصل نمایید. لطفاً توجه کنید که پس از خرید آنلاین از سایت مجموعه، به هیچ عنوان امکان صدور فاکتور رسمی وجود نخواهد داشت.
این دوره آموزش Domain Driven Design در استودیو اختصاصی نیک آموز تهیه شده است و در آن، مفاهیم مربوط به درک و تحلیل دامنه کسب و کار بهصورت مرحله به مرحله و با جزییات دقیق برای شما شرح داده میشوند. نحوه ارائه دوره به گونهای است که شما میتوانید به دانش مطلوبی از نحوه شناخت نیازمندیهای دامنه سازمان برسید و همزمان با مدرس به تجزیه و تحلیل نرم افزاری مثالها بپردازید.
شما میتوانید با مراجعه به فرم درخواست مشاوره تخصصی از متخصصان نیک آموز مشاوره دریافت کنید و با به کارگیری مهارتهای تجربی تیم ما، در خصوص متدولوژی Domain Driven Design راهنمایی بگیرید.
بله. در نیک آموز امکان برگزاری دورههای سازمانی بهصورت تخصصی فراهم شده است. به منظور ثبت درخواست، کافی است اطلاعات خود و دوره سازمانی مدنظر را در فرم درخواست آموزش سازمانی ثبت کنید تا ما با شما تماس بگیریم.
برای اینکه بتوانید در ارتباط با Domain Driven Design مشاوره / تدریس خصوصی بگیرید، لطفا فرم درخواست مشاوره مدرسین را تکمیل نمایید تا کارشناسان ما با شما تماس بگیرند.
رضایت شما از دوره آموزشی و کمک به رفع مشکلات احتمالی برای ما اهمیت زیادی دارد. به همین دلیل، یک گروه پشتیبانی در تلگرام ایجاد شده است تا شما بتوانید در صورت نیاز، مسائل خود را در این بستر مطرح کنید. تا حداکثر ۴۸ ساعت کاری پس از ثبت نام در دوره، با شما تماس گرفته میشود و فرآیند عضویت شما در گروه تلگرام نهایی خواهد شد. توجه شود که در آینده سیستم تیکتینگ راهاندازی میشود و فرآیند پشتیبانی از گروه تلگرامی به آنجا منتقل خواهد شد.
بله، شما میتوانید از مشاوره های نیکآموز به عنوان راهنما در مسیر خود استفاده کنید. برای این منظور لطفا شماره خود را در فرم مشاوره صفحه دوره وارد کنید تا مشاوران نیک آموز با شما تماس بگیرند.
Δ
ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
با سلام من این دوره رو خریداری کردم میخواستم بدون مثال های پیاده سازی شده کلاس توسط استاد داخل فلش نبود !!
درود وقت بخیر لطفا برای دریافت سمپل های جلسات برگزار شده با اکانت @nikamoozwebmaster در تماس باشید. سپاس از همراهی شما
با سلام بنده می خواستم این دوره را خریداری کنم اما به دلیل مشکل مالی می خواستم بپرسم که آیا این پکیج شامل تخفیف میشه یا خیر ؟ با تشکر از سایت خوبتون
درود وقت بخیر لطفا برای دریافت تخفیف با شماره ۰۲۱۹۱۰۷۰۰۱۷ داخلی ۱ آقای اختباری در تماس باشید. سپاس از همراهی شما
با سلام و آروزی سلامتی
برای من که دوره مفیدی بود ای کاش یه کارگاه تکمیلی هم برای این دوره برگزار بشه تا مواردی مثل کانتکس گزارش گیری و پیاده سازی باس رو هم توش گفته بشه
دوره خیلی خوب بود. دید نرم افزاریمو کامل عوض کرد. واقعا ارزش خرید داره پیشنهاد می کنم همه تهیه کنن و ببینن. با تشکر از استاد ارومند عزیز
سرفصل های مهم داره ای کاش قبل از اینکه برنامه نویس میشدم این مفاهیم رو یاد میگرفتم واقعیتی که شناخت و یادگیری اون از نون شب و از هر کاری واجب تره نمی دونم چطور برگزار شده ولی تاثیرش رو میتونم بفهم این اصول این قدر قدرتمند هست که هرکسی نمیتونه آموزش بده تنها سایتی که داره این مباحث رو آموزش میده قطعا برگزار کننده ی قدرتمندی هست آقای ارومند این دوره دقیقا داره اخلاق مهندسی رو آموزش میده خوش بحال کسایی که توی این دوره بودن و یا میتونن این دوره رو تهیه کن
این دوره به شدت کاربری و کاملا حرفه ایی است . بی نهایت ممنون از مدس این دوره و تیم نیک آموز بابت ارائه این دست از آموزش ها . امیدوار دوره Modern Data Layer هم با سرفصل های جدید قددرتمند تر از قبل ارائه شود .