کانال مکتب‌خانه DDD
688 subscribers
88 photos
1 video
5 files
181 links
کانال مکتب‌خانه DDD

اطلاع‌رسانی کارگاه‌ها، دوره‌ها و وبینارهای آموزشی
ارائه منابع و مطالب آموزشی

https://DomainDrivenDesign.ir

#Youtube Channel:
https://www.youtube.com/@Masoud.Bahrami

#Public Group:
https://t.iss.one/DomainDrivenDesignGroup

#DDD
Download Telegram
💡 چالش شماره 8 DDD Plus
https://domaindrivendesign.ir/ddd-plus-8

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

این مسئله بخصوص از این جهت حائز اهمیت است که اکثر اوقات ما تمامی این اطلاعات را بصورت همزمان از مالک/مدیر محصول نمی شنویم. و ممکن است در طی چند اسپرینت(گاها غیر متوالی) با این موارد مواجه شویم.

این سناریو سناریویی بسیار متداول در توسعه یک محصول است. بخصوص هنگامی که با ویژگیهایی از محصول سروکار داریم که جنبه qualitative دارند و مالک/مدیر محصول نیازمند سطح زیادی از تجربه گرایی در طراحی و دست یابی به قابلیت نهایی محصول است.

در اصل باید اینطور بگم که این یکی از abilityهای مهم در طراحی محصول به شمار می رود که شما به عنوان توسعه دهنده، طراح یا معمار سیستم میتوانید به محصولچیهای خود بدهید یا از اونها دریغ کنید!

🔴 پیش‌زمینه:

شما در حال توسعه یک social media app‌ برای شرکت SayHelloToTheWonderfulWorld.Com 😍هستید.

🔴 سناریو:

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

مثلا شما شخص A را دنبال می‌کنید. شخص A شخص B را دنبال می‌کند. در نتیجه برنامه ممکن است شخص B را به شما جهت فالو کردن پیشنهاد دهد. همانطور که متوجه شدید در این مثال برنامه یک لول در بین افرادی که شما دنبال کرده‌اید جلو رفته است. اما می‌توانیم متصور شویم که این سطح می‌تواند طولانی تر نیز باشد. مثل شما A را دنبال می‌کنید. A شخص B و B شخص C و در نهایت در سطح nام ممکن است شخص Y شخص Z را دنبال می‌کند. در نتیجه ممکن است از شما خواسته شود که برنامه شخص X را نیز در نهایت به شما پیشنهاد دهد.

همچنین این دنبال کردن دارای تاثیرات جانبی مهم دیگری نیز می‌باشد. به عنوان مثال در صفحه هوم برنامه از شما خواسته شده است که لیستی از تجربه‌های سفر را به نحوی به کاربر نشان دهید، که تجارب به اشتراک گذاشته شده توسط افرادی که شما دنبال کرده‌اید در اولویت قرار گیرد. به عنوان مثال در صورتی که ۲۰ نفر در برنامه شما تجارب خود را به اشتراک گذاشته باشند و شما ۵ نفر از آنها را دنبال کرده باشید، در صفحه اول برنامه وقتی وارد اپ می‌شوید، تجاربی که این ۵ نفر به اشتراک گذاشته‌اند در بالای لیست قرار می‌گیرد. همانند مثال بالا، سایر افرادی که شما مستقیما دنبال نمی‌کنید ولی توسط ۵ نفری که شما دنبال می‌کنید، در صورتی که تجربه‌ای را به اشتراک گذاشته باشند، اولویت بالاتری نسبت به سایر افراد؛ از نقطه نظر نمایش تجارت به اشتراک گذاشته شده آنها برای شما در صفحه اول، خواهند داشت.


🔴 صورت مسئله:

با در نظر گرفتن سناریوی بالا، و اینکه شما در حال پیاده‌سازی ویژگی دنبال کردن در این app هستید، به موارد زیر پاسخ دهید:

🔶 داستان(های) کاربری مربوط به سناریوهای بالا را بنویسید؟
🔶 شرایط پذیرش را برای داستان(های) کاربری خود بنویسید؟
🔶 برای سناریوهای بالا، سناریوهای تست پذیرش که منجر به اطمینان از صحت عملکرد برنامه شما می‌شود را بنویسید؟
🔶 مسئله فالو کردن کاربران، را مدل کنید؟
🔶 چگونه از وجود خاصیت evovability را برای مسئله بالا که با طیف وسیعی از ویژگی‌های qualitative سرو کار دارد، در مدلی که برای این مسئله ارائه دادید مطمئن می‌شوید؟
🔶 نیازمندیهای ارائه شده در بالا، در طیف نیازمندیهایی هستند که به شدت تغییر پذیری هستند. بدین معنی که با گذشت زمان و دریافت اطلاعات بیشتر از دومین و نحوه‌ی استفاده کاربران از برنامه، امکان تغییر در نیازمندیهایی که جنبه quantitative دارند وجود دارند. در همچنین مواقعی چه استراتژی‌ای در توسعه برنامه در پیش می‌گیرید؟

لینک به چالش هفته هشتم:

https://domaindrivendesign.ir/ddd-plus-8

💬گروه بحث و تبادل نظر در مورد این چالش:
https://t.iss.one/DomainDrivenDesignGroup

هشتگ‌:
#DDDP | #DDD_Plus | #dddp8

https://t.iss.one/DomainDrivenDesign_ir
👍1