ساخت ارتباط اثربخش طراح محصول و توسعه‌دهنده

آشنایی با اصطلاحات فنی (۳)مقدمهاین مقاله، قسمت سوم از مجموعه مقالات آشنایی با اصطلاحات فنی‌ است. این مجموعه مقالات، چکیده‌ای از جلسات ما در چپتر طراحی «بله» است که در آن میزبان آقای مهندس محمدامین پایدار بودیم. قسمت اول و قسمت دوم این مجموعه مقالات را نیز می‌توانید مطالعه کنید.تحلیل تکنیکالبار (Load)به ترافیکی از درخواست و rpcها که روی سیستم وجود دارد بار(Load) می‌گویند.الگوریتمبرنامه‌ریزی جهت اجرای صفر تا صد یک کار را الگوریتم می‌گویند.مثال الگوریتم در زندگی روزمره: دستور عمل پختن غذا یک نوع الگوریتم است که شامل یکسری عملیات و شروط است.در طراحی محصول هم نوشتن User Story نوعی از الگوریتم است که شروط از دید کاربر نوشته می‌شود. در طراحی نرم‌افزار، علاوه بر شروطی که از دید کاربر در نظر گرفته می‌شود جزییات بیشتر و پیچیده‌تری در طراحی الگوریتم در نظر گرفته می‌شود.برای مثال وقتی کاربر در یک فیلد ایمیل، ایمیلی را وارد می‌کند فرایند وارد شدن این ایمیل و چک کردن آن که ایمیل وارد شده قابل قبول هست و فرمت درستی دارد یک الگوریتم ساده است.یک الگوریتم پیچیده‌تر؛ در یک اپلیکیشن پیام‌رسان زمانیکه کاربر بعد از چند روز موبایل خود را روشن می‌کند این فرایند که تمام لیست‌ چت‌های کاربر به‌روز شود و دیده شدن یا دیده نشدن پیام‌ها به درستی نمایش داده شود یک الگوریتم است.ساختمان داده (Data Structure)وقتی روی یکسری دادهٔ ورودی الگوریتمی اعمال می‌شود، داده‌ها باید به روشی نگهداری شوند تا بتوان فرایندهای لازم را روی آن‌ها انجام داد. در واقع ساختمان داده یک قالب خاص از سازماندهی، پردازش، بازیابی و ذخیرهٔ داده و اطلاعات است.ساختمان داده‌ها روش‌های ذخیرهٔ داده‌ها در رایانه با هدف دسترسی آسان‌تر و بهینه‌تر است در حالی که الگوریتم روشی به منظور حل مسئله به وسیلهٔ کامپیوتر است.مثال‌ برای انواع ساختمان داده: آرایه‌ها، صف، stack ،گراف، درخت، link listمثال ساختمان داده در سرچ‌کردن (جستجو): اگر دیتایی که ذخیره ‌می‌کنیم در هنگام نوشتن در سکشن‌ها و بخش‌های جدا و منظم ذخیره شوند (index شوند)، در زمان بازیابی خیلی راحت‌تر می‌توان دیتای مورد نظر را پیدا کرد. (مثال روزمره: بخش‌بندی کردن لباس‌ها در کشو و کمد)پایگاه داده (Date Base)پایگاه داده (Data Base) مجموعه‌ای وسیع از داده‌ها و اطلاعات ساختاریافته هستند که در قالبی که برای دستگاه‌ها و رایانه‌ها قابل خواندن و دسترسی باشد ذخیره می‌شوند.دو نوع دیتابیس SQL و No-SQL داریم.تفاوت SQL و No-SQL:در SQL ساختار دیتا رابطه‌ای و ساختارمند است. در آینده می‌توان روی دیتابیس کوئری خاص و دقیقی زد و دیتاها را کاملا دقیق می‌دهند. ضعف این ساختار این است که تعداد ریکورد زیاد (حجم زیاد دیتا) را نمی‌توانند نگه دارند. برای مثال اگر بخواهیم ۱۰۰ میلیارد رکورد را در پستگرس نگهداری کنیم باید این دیتا را در چندین پستگرس مختلف نگهداری کنیم. یک دیتابیس ظرفیت نگه‌داری این حجم دیتا را ندارد.در No-SQL ساختار دیتا غیررابطه‌ای است؛ کوئری‌ها باید دقیق و مشخص باشند. پس می‌توان هر دیتایی را بدون ساختار مشخص وارد کرد ولی فقط باید کوئری‌های مشخص‌شده از اول را روی دیتاها زد.مزیت این مدل دیتابیس این است که حجم زیادی از دیتا را می‌تواند نگهداری کند. در این مدل می‌توان دیتاها را با ساختار خاصی نگهداری کرد ولی در sql نمی‌توان چنین کاری انجام داد.ردیس (Redis)مخفف عبارت Remote Dictionary Server دیتابیسی برای کش کردن دیتا و نگهداری دیتا در رم است.همچنین شایان ذکر است که داده‌ها در ردیس بصورت key-value ذخیره می‌شوند و مدل ذخیره‌سازی آن با دیتابیسی مثل پستگرس فرق میکند.معماری اطلاعات در کلاینتوقتی در کلاینت از معماری صحبت می‌شود منظور این است که بخش‌های مختلف کدها را به چه نوع ساختاربندی کردیم و ارتباط Business Logic و UI به چه شکل است.در معماری اطلاعات اصالت بر این است که لایهٔ UI و ‌Business logic از یکدیگر جدا باشند و به صورت جداگانه نوشته شوند.اینکه اول کدام یک از لایه‌ها نوشته شوند بستگی به نوع برنامه دارد. در جاهایی که UI پیچیدگی زیادی داشته باشد و جزییاتش قابل توجه باشد اول باید UI طراحی شود تا توسعه دهنده هم دقیق‌تر نیازهایش از دیتایی که باید وجود داشته باشد را درک کند. در حدود ۸۰ درصد مواقع ابتدا باید UI طراحی شود.منطق کسب‌وکار (Business Logic)به طور خلاصه می‌توان گفت منطق (Logic) یعنی آن‌طور که یک محصول باید کار کند.در طراحی نرم‌افزار، هنگامی که یک UI طراحی می‌شود دارای دیتا و اطلاعاتی‌ست که باید از یک راهی دریافت شده و در نرم افزار نمایش داده شود. این دیتا و نمایش آن می‌تواند سطوح پیچیدگی مختلفی داشته باشد. مثلا نمایش دیتا در لندینگ یک وب‌سایت استاتیک است و پیچیدگی زیادی ندارد و اطلاعات در UI قرار می‌گیرد. ولی در بخش‌هایی که پیچیدگی دیگری دارند مانند نمایش آخرین پیام‌های ارسال شده در لیست گفتگوهای یک پیام‌رسان درگیر سرور، API، دیتابیس و… می‌شویم و نیاز به ریکوئست زدن و انجام عملیات این‌چنینی لازم است. انجام چنین فرایندی در طراحی نرم‌افزار همان بخش business logic است.معمولا برنامه نویسان UI و business logic را به صورت جدا و مستقل از هم پیاده‌سازی می‌کنند. دلیل این کار هم این است که اگر هر کدام از این بخش‌ها تغییر کردند، بتوانند تغییرات را مستقل از بخش دیگر اعمال کنند.