خانه مهندسی نرم افزار قسمت سوم EventStorming: برگزاری اولین جلسه مهندسی نرم افزار DDD نوشته شده توسط: علیرضا ارومند تاریخ انتشار: ۲۷ فروردین ۱۳۹۹ آخرین بروزرسانی: ۲۱ مهر ۱۴۰۱ زمان مطالعه: 18 دقیقه ۰ (۰) در قسمت اول از این سری با کلیات Event Storming و اینکه چرا باید با این روش آشنا باشیم و از آن استفاده کنیم آشنا شدیم. سپس در دومین قسمت به سراغ بررسی شرایط برگزاری جلسه رفتیم و دیدیم قبل، هنگام و بعد از برگزاری جلسه چه کارهایی باید انجام دهیم. حالا در سومین قسمت میخواهیم به بررسی یک جلسه واقعی بپردازیم. مقدمه حال که با شرایط کلی برگزاری یک جلسه Event Storming آشنا شدیم بد نیست شرایط برگزاری یک جلسه واقعی را با هم بررسی کنیم. با توجه به ماهیت این جلسات و اینکه این جلسات با حضور و تعامل افراد معنی پیدا میکند، بررسی این جلسات روی کاغذ نه کار ساده است و نه دید کافی و کاملی ایجاد میکند، ولی به هر حال بررسی کلی کار میتواند به درک صحیحتر ما از Event Storming کمک کند. صورت مسئله خوب این روزها بحث استارتآپها بسیار داغ است و یکی از سادهترین کارها (البته در ظاهر) کپیبرداری از یک استارتآپ موفق و رفع ایرادات آن است تا به موفقیت برسیم. برای همین، شرکتی که تا امروز کار خرید و فروش اجناس دست دوم را انجام میداده، با الگوبرداری از سایت دیوار، تصمیم به راه اندازی کسب و کاری آنلاین در حوزه کاری خود یعنی معامله اجناس دست دوم گرفتهاند. برای انجام این کار از من، علیرضا ارومند برای همکاری در کار تحلیل و شناخت مسئله دعوت کردن تا برای رسیدن به هدف به تیم کمک کنم. بعد از اینکه کمی در سازمان بالا و پایین رفتم و اطلاعات از خواستههای آنها و نحوه کارکرد فعلی آنها بدست آوردم دست به کار میشوم و میخواهم اولین جلسه Event Storming را ایجاد کنم. برای این کار باید از شرکت کنندگان دعوت به عمل بیاورم. معرفی شرکت کنندگان به عنوان اولین نفر از آقای اسکروچ مدیرعامل مجموعه خواهش میکنم که در جلسه حضور داشته باشن. ایده اولیه این کار توسط آقای اسکروچ ارائه شده و معتقد هستن که با توجه به شرایط بد اقتصادی و نیاز مردم به کالاهای مختلف، حتما ارائه یک برنامه ساده و کاربردی در زمینه معامله اجناس دست دوم برگ برنده شرکت خواهد بود. به عنوان دومین نفر به سراغ نیما حسینی میروم، طراح و گرافیست شرکت که برای طراحی خروجی اپلیکیشن قرار هست با تیم همکاری داشته باشه و نیاز هست برای طراحی هرچه بهتر اپلیکیش در جریان جزئیات سیستم قرار بگیرید. سومین مهمان جلسه آقای حمید صابری، مسئول تحقیق بازار هستن که قبل از شروع کار کمی در مورد اپلیکیشنهای موجود بررسی کردن و از شرایط بازار و نیازمندیهای اولیه و برگهای برنده اپلیکیشن با خبر هستند. حتما از نوشتههای قبلی به یاد دارید که تیم فنی و توسعه یکی از مهم ترین شرکت کنندگان در جلسه هستند، برای همین از تیم برنامه نویسی آقای امید قربانی خواهش میکنم تا به همراه دو نفر توسعه دهنده دیگری که در تیم خودشون دارند یعنی امیر الماسی و پسرخاله در جلسه شرکت کنند. آخرین نفری که تصمیم به دعوت از ایشون دارم، آقای رمضانی هست. فردی که معمولا کارهای پشت صحنه و اصلی شرکت را انجام میدهند و به قول معروف سرش تو حساب و کتاب هست و مواظب هست که همه کارها به خوبی پیش رفته و خدای نکرده شرکت دچار ضرر و زیان نشود. شروع جلسه بالاخره روز جلسه فرا میرسد و افراد در ساعت مقرر به جلسه میآیند. کمی فضا برایشان غریب است. به دنبال صندلی برای نشستن میگردند اما صندلی وجود ندارد. فقط دو میز کوچک گوشه اتاق که روی یکی فاسک چای و مقداری بیسکوئیت و نسکافه وجود دارد و میز دیگر پر از Stickyها در رنگها و سایزهای مختلف است و به تعداد ۱۰ عدد ماژیک مشکی با اندازه مناسب نوشتن روی Stickyهای موجود. با توجه به ابعاد اتاق و اینکه اتاق کمی مستطیل شکل بود، یک ضلع طولی اتاق را با کاغذ بزرگی پوشاندهام که آماده نصب Stickyها باشد و در گوشه ای دیگر یک وایت برد کوچک روی سه پایه قرار دادهام تا برای چسباندن راهنماها از آن استفاده کنم. خوب شرایط تا اینجام به خوبی پیش رفته و شرکت کنندگان که کمی شبیه علامت سوال هستند در حالی چشمانشان به اطراف میچرخد هر از چندگاهی به من نگاه میکنند و بدون اینکه حرفی بزنند سوالاتشان را با نگاه از من میپرسند. حالا وقت دست به کار شدن است. پس خیلی سریع و کوتاه توضیح میدهم: علیرضا ارومند: “به اولین جلسه Event Storming شرکت خوش آمدید. در این جلسه قصد داریم بررسی کنیم که به چه شکلی قرار است کارهای سازمان را انجام دهیم و کسب و کار ما چگونه کار میکند. امیدوارم در پایان این جلسه همه حاضرین درک مشترکی از کاری که باید انجام دهیم داشته باشند.” خیلی سریع به سراغ مرحله بعدی میروم و یک Sticky نارنجی برمیداریم و رو آن مینویسم “Domain Event – اتفاقی که در سیستم رخ داده است.” و آن را روی تخته وایت برد میچسبانم. به صفحه کاغذی و نموداری در خط افق کشیده شده است اشاره میکنم و میگویم:” وقایع مختلفی در سیستم ما اتفاق میافتد و قصد داریم این وقایع را با هم پیدا کنیم. این وقایع در طول زمان و با تقدم و تاخر متفاوتی اتفاق میافتند و برای همین منظور لازم است این تقدم و تاخر را روی نمودار نیز رعایت کنیم.”در ادامه خیلی سریع مقداری Stickyبه هرکدام از شرکت کنندگان به همراه یک ماژیک میدهم تا بتوانند خیلی سریع کار خودشان را شروع کنند. کماکان همه نگران به نظر میرسند و با کمی نگاه در صورتشان میتوانم متوجه میشوم که برای شروع کار پر از علامت سوال هستند. با توجه به اینکه حمید صابری بیشتر از بقیه از جریانات کسب و کار خبر جدید با خبر هست و روحیه برونگرا و حرف زنی هم داره خیلی سریع سر رشته صحبت را به دست گرفته و میگوید:”خوب معلومه، باید از اول کار شروع کنیم، یعنی ثبت نام کاربر”. با توجه به اینکه شرکت کنندگان دید کاملی از مسئله ندارند بحث شروع شده و هر کدام از شرکت کنندگان نظری ارائه میکنند ولی هیچ کس جرات نوشتن اولین Domain Event و نصب آن روی دیوار را ندارد. پس خودم دست به کار میشوم و روی یک Sticky نارنجی مینویسم، “آگهی منتشر شد” و آن را جایی در میانه دیوار نصب میکنم.با این کار بحث هم شروع میشود و هرکس شروع میکند نظری ارائه کند، و بعد از چند دقیقه صحبت کلی افراد شروع به ثبت اولین domain eventهایی میکنند که به نظرشان باید قبل از انتشار آگهی وجود داشته باشند. کارهایی مثل: ثبت آگهی، ویرایش توضیحات آگهی، تغییر عنوان آگهی و …نیما که یک UX کار حرفهای هست با یک نگاه اجمالی به مدل فعلی به این نتیجه رسیده که یک جای کار ایراد دارد. پس خیلی سریع توضیح میدهد که: ” ویرایش کل آگهی کار درست و اصولی نیست، آگهی شامل قسمتهای متفاوتی است که میتواند به طور جداگانه به روز رسانی شود و کاربری و استفاده بهتری خواهد داشت، مثلا میتوانیم عنوان را جداگانه ویرایش کنیم و قیمت را هم جداگانه ویرایش کنیم، به این شکل هنگامی که قیمت ویرایش میشود اگر قیمت کاهش یافته بود، میتوانیم به افرادی که آگهی را نشان کرده اند هم خیلی سریع Notification ارسال کنیم و احتمال فروش کالا بالاتر میرود. پس بهتر است به جای یک فرم ویرایش، کارهای تخصصی ویرایش انجام دهیم.” در گوشهای دیگر از اتاق اسکروچ که خیلی به بخش تولید و مدیریت آگهی علاقهای ندارد در حال صحبت کردن با امید است و به او میگوید: “باید امکانی داشته باشیم که خریداران و فروشندگان بتوانند بعد از معامله به همدیگر و آگهیها و معاملهای که انجام دادهاند امتیاز بدهند.” امید رشته کلام اسکروچ را پاره میکند و میگوید:” خریدار و فروشنده از نظر من تفاوتی ندارد، من یک کاربر در سامانه طراحی میکنم که بتواند با نام کاربری و کلمه عبور در سیستم لاگین کند و بعد با توجه به دسترسیهایی که دارد بتواند کارهای متفاوتی در سیستم انجام دهد.” اسکروچ با خود فکر میکند: “کاربر؟ کاربر دیگر کیست؟ به من چه که چطور در سیستم لاگین میکنند و پروفایل خود را چگونه تنظیم میکنند. برای من مهم است بدانم چه کسی خریدار است و چه کسی میفروشد. من خریدار و فروشنده را میشناسم این کاربر از کجا پیدایش شد؟” در این زمان احتمالا شرایط دیوار مانند تصویر زیر است: به نظر میرسد شرکت کنندگان خسته شدهاند و نیاز به استراحت و تمرکز دارند، پس همینجا با صدای بلند اعلام میکنم: ” جنگ و جدل کافیه، بهتره چند دقیقهای استراحت کنیم.” بعد از چند دقیقه استراحت برمیگردیم تا جلسه را ادامه دهیم و قبل از اینکه فرصت صحبت کردن داشته باشم، امید شروع به صحبت کردن میکند:” در زمان استراحت با پسرخاله داشتیم فکر میکردیم همچین سیستمی اگر نظارتی روی آگهیها نداشته باشیم و هر کسی هر آگهی ثبت کند، به زودی سر و کله اسپمرها در سیستم پیدا میشود و خیلی زود اعتبار ما در بازار از دست میرود. بهتر است هر آگهی قبل از انتشار بررسی شود و در صورت عدم وجود مشکل کار ادامه پیدا کند. اگر اتفاقی که برای تبلغات خودرو در سایت دیوار افتاد برای اپلیکیش ما هم رخ دهد باید چکار کنیم؟ چطور با دلالهایی که آگهیهای غیرواقعی ثبت میکنند مقابله کنیم؟” بحث شروع میشود و هر کدام از شرکت کنندگان نظری میدهد، مسعود میگوید:”امکان جذب نیرو و پرداخت هزینه برای اینکار نداریم و چارهای نداریم جز اینکه یا ریسک این کار را بپذیریم یا یکی از خود ما مسئول این کار شود یا به صورت اتوماتیک این کار انجام شود.”. امید کلام مسعود را قطع میکند و میگوید:” اصلا میدانی برای انجام اتوماتیک این کار چه سطحی از هوشمندی باید در برنامه پیاده سازی شود؟ اصلا به زمان توسعه و … فکر کرده ای؟”. اوضاع رو به وخامت میرود، سریع وارد عمل میشوم و از شرکت کنندگان خواهش میکنم فعلا این نکته را روی یک sticky یادداشت کنند و تصمیم در مورد نحوه انجام کار را به بعد موکول کنندتوجهم به امیر الماسی جلب شد، از اول جلسه گوشهای ایساده و در هیچ بحثی شرکت نکرده. پیش امیر میروم و سعی میکنم امیر هم وارد بازی بشود. این طور سر حرف را با امیر باز میکنم: “امیر چی شده؟ چرا اینقدر ساکت و ناراحتی؟ اگر مشکلی داری بگو بدونیم” و امیر که گویا منتظر توجه بود بحث را ادامه میدهد:” ای بابا، چی بگم؟ دلتون خوشهها، سه ماهه حقوق نگرفتیم و داریم یه سیستم طراحی میکنیم و اصلا معلوم نیست این سیستم کجا قراره به پول برسه. اصلا اگر همین روزها شرکت یه سرمایه گذار پیدا نکند و نتواند پول به مجموعه تزریق کند همه باید دنبال یه کار جدید باشیم نه اینکه به فکر توسعه سیستم جدید باشیم.”. همه از شنیدن صحبتهای امیر شوکه شدن، مسعود و حمید و آقای اسکروچ که مدتها در مورد این موضوع فکر کرده بودن از اینکه تبیین موضوع به این مهمی را چطور فراموش کردن، متعجب شدن. مسعود:” نگران نباش، در این باره کاملا فکر کردیم. امکانات اولیه اپلیکیشن کاملا رایگان در اختیار همه قرار خواهد گرفت. اما قرار هست ویژگیهایی در نظر بگیریم که برای ارائه این ویژگیها از کاربران پول دریافت خواهیم کرد. مثلا آگهیهای ویژه خواهیم داشت که همیشه بالاتر از سایر آگهیها نمایش داده خواهد شد و برای این آگهیها پول دریافت میکنیم.” حمید:” ثبت تصویر فقط در ابعاد کوچک و یک تصویر برای آگهیهای رایگان امکان پذیر هست و اگر کسی تمایل داشته باشه چند تصویر و با کیفیت بالا بارگذاری کنه باید حتما مبلغی به عنوان حق عضویت پرداخت کرده باشه”. اینجا آقای اسکروچ وارد بحث شده و این طور توضیح میدهد: ” امکان معامله رایگان فقط برای اشخاص حقیقی و برای کالاهای کوچک امکان پذیر هست. سود اصلی ما هنگام است که سازمانها بخواهند برای خرید و فروش از سیستم ما استفاده کنند و برای کاربران حقوقی حتما حق عضویت بالایی در نظر خواهیم گرفت. در ضمن ما فقط در بازار اجناس دست دوم توقف نخواهیم کرد و هدف من استفاده از این سیستم برای بازار مسکن است. برای معاملات مسکن من با دوستان خودم در شهرداری و وزارت مسکن و سازمان ثبت صحبت کردم و استعلامهایی به صورت وب سرویس در اختیار ما قرارخواهند داد تا خریدار از صحت دادهها خاطر جمع باشد، مسلما این تبلیغات و استفاده از این امکانات رایگان ارائه نخواهد شد. کسی که قصد دارد ۲ میلیارد برای خرید خانه پرداخت کند، مسلما ناراحت نخواهد شد اگر در ازای دریافت ۱۰۰ هزارتومان خیالش را بابت صحت اطلاعات راحت کنیم.” کمی که بحث ادامه پیدا میکند، چند رخداد دیگر شناسایی میشوند مثل ثبت سفارش و تایید پرداخت و … که بسیار مهم هستند و برای انجام شدن نیاز به استفاده از سیستمهای خارجی مثل درگاههای پرداخت و استعلامها دارند. در این زمان احتمالا مدل ما به شکل زیر خواهد بود.زمان جلسه همینجا به پایان میرسد، اعضا به نظر خسته میرسند و آقای صابری باید به جلسه دیگری برود. پس همینجا جلسه را قطع میکنم و تا جلسه آینده از اعضا خداحافظی میکنم. بعد از جلسه جلسه پرکاری بود و مطالب زیادی در مورد دامنه خود یاد گرفتیم. بعضی موارد کاملا مشهود بود. برخی نکات پیدا شد که اصلا قبل از این در مورد آن صحبت نشده بود، مثل اینکه نیاز داریم به روشی تشخیص دهیم آگهیها مشکل دار نباشند. نکات دیگری هم وجود داشت که برای برخی شرکت کنندگان واضح بود و برای سایرین اصلا قابل تصور نبود، مثل اینکه برای کسب درآمد از این سیستم راهکارهای متوعی در نظر گرفته شده است که لازم است توسط افراد مختلف برای رسیدن به این اهداف کارهایی انجام شود. جمع بندی جلسات Event Storming میتواند خیلی تعامل سازندهای بین اعضای تیمهای ایجاد کند. برقراری این جلسات لزومی به DDD ندارد و برای هرکاری میتوان از این نوع جلسات استفاده کرد. این جلسات هم برای تحلیل کسب و کارهای موجود مناسب است و هم برای ایدهپردازی برای کسب و کارهای نوظهور. دقت کنید که جلسات Event Storming در سطوح مختلفی برگزار میشود. در این جلسه یک تصویر و درک کلی و کامل از کسب و کار برای همه افراد ایجاد شد. اما از این جلسات برای شناخت جزیئات دامنه و مدلسازی آن نیز میتوانیم استفاده کنیم و مدل ما اجزای بیشتری پیدا خواهد کرد که در قسمتهای بعد بررسی خواهیم کرد چه رتبه ای میدهید؟ میانگین ۰ / ۵. از مجموع ۰ اولین نفر باش دانلود مقاله قسمت سوم EventStorming: برگزاری اولین جلسه فرمت PDF 8 صفحه حجم 1 مگابایت دانلود مقاله معرفی نویسنده مقالات 23 مقاله توسط این نویسنده محصولات 43 دوره توسط این نویسنده علیرضا ارومند علیرضا ارومند به عنوان Product Manager شرکت داتین (وابسته به فناپ) در حوزه پروژههای بانکی فعال است.او همچنین مدرس و Technical Manager پروژههای نیک آموز می باشد از دیگر تخصص های او میتوان به: تولید فریمورک برنامه نویسی فوق العاده حرفهای با مدیریت بیش از 1 میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیامکوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز، همکاری با تیم توسعه شرکت ارتباط فردا معرفی محصول علیرضا ارومند دوره آموزش معماری میکروسرویس 5.190.000 تومان مقالات مرتبط ۰۷ فروردین مهندسی نرم افزار تفاوت DDD، میکروسرویس (Microservice)، الگوهای طراحی (Design pattern) و معماری تمیز (Clean Architecture) تیم فنی نیک آموز ۰۳ اسفند مهندسی نرم افزار آشنایی با تفاوت Domain Events و Integration Events تیم فنی نیک آموز ۲۶ بهمن مهندسی نرم افزار ۵ راز ساخت سیستم قدرتمند با پیاده سازی معماری میکروسرویس : چالش ها و راه حل ها تیم فنی نیک آموز ۰۵ دی مهندسی نرم افزار راهنمای مسیر شغلی معمار ارشد نرم افزار تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ میلاد ۲۷ / ۰۱ / ۹۹ - ۰۴:۱۰ سلام و عرض ادب واقعا عالی بود ،خیلی حرفه ای و کاربردی بود این مقاله . کارت درسته مهندس پاسخ به دیدگاه میلاد ۲۷ / ۰۱ / ۹۹ - ۰۴:۱۰ سلام و عرض ادب واقعا عالی بود ،خیلی حرفه ای و کاربردی بود این مقاله . کارت درسته مهندس پاسخ به دیدگاه