آموزش اصول برنامه نویسی شی گرا : چالش دستگاه پخش موسیقی

این مطلب بخشی از آموزش اصول برنامه نویسی شی گرا هست.

چالش

زمان آن فرا رسیده تا تمرینی برای تعریف نیازمندی ها انجام دهیم. فضانوردان ما برای سفر طولانی به کره ماه به موسیقی نیاز دارند! بنابراین ما به کمک شما برای طراحی یک دستگاه پخش موسیقی (Jukebox)، برای فضانوردان نیاز داریم.

Jukebox
Jukebox

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

حال ، هدف شما از این چالش نوشتن مجموعه ای از نیازمندی ها برای طراحی دستگاه پخش موسیقی است. سعی کنید حداقل سه مورد نیازمندی های عملیاتی و سه مورد نیازمندی های غیر عملیاتی داشته باشید. (اگر ویدیوهای قبلی آموزش را ندیده اید از این لینک استفاده کنید). اگر نمی دانید از کجا باید شروع کنید بهتر است از ویژگی های FURPS استفاده کنید.
ما در اینجا عمدا جزییات را بیان نکردیم و مسئله را مبهم قرار دادیم، زیرا این چالش مربوط به درک مسئله جدید (گاها نیمه کاره) و نوشتن نیازمندی های آن است. هیچ جواب درست و دقیقی برای این چالش وجود ندارد، پس مدتی به این مسئله فکر کنید و سپس راه حل آن را مشاهده کنید.


راه حل

برای حل چالش دستگاه پخش موسیقی از مدل FURPS بهره خواهیم گرفت. F که حرف اول عملکرد (Functionality) است مشخص میکند که نیازمندی های عملیاتی سیستم چه چیزهایی است و سیستم چه کارهایی باید انجام دهد.
برخی از کاربردهای دستگاه پخش کننده موسیقی شامل موارد زیر است:
داشتن کتابخانه ای از آلبوم ها و آهنگ ها، امکان مرور آهنگ ها، امکان انتخاب آهنگ های شخصی توسط کاربران و جلوگیری از پخش آلبوم های کامل، همچنین داشتن صف آهنگ برای پخش. و مهمترین قابلیت یعنی پخش موسیقی.
علاوه بر اینکه ما باید به کاربر اجازه پخش آهنگ بدهیم باید دکمه برای مرتب سازی آهنگ ها بر اساس هنرمندان نیز داشته باشیم. البته که این ایده ی خوبی است، اما باید آن را بهتر بیان کرد. گفتن اینکه سیستم باید دکمه‌ای داشته باشد که کاربر بتواند برای مرتب کردن بر اساس هنرمندان آن را کلیک کند، خیلی مناسب نیست، شیوه بهتر برای گفتن این نیاز این است که بگوییم، "سیستم باید به کاربر اجازه دهد تا آهنگ ها را بر اساس هنرمندان مرتب کند".
نیازهای خاص تری نیز وجود دارند مانند اینکه دستگاه پخش موسیقی باید هر کاربر را تشخیص دهد و تعداد آهنگ های پخش شده توسط هر فرد را ردیابی کند یا به عبارتی دیگر بدانیم هر کاربر چه آهنگ هایی را پخش کرده است.
توجه کنید که ما مشخص نکردیم که سیستم چگونه کاربران را شناسایی می کند، شرط فوق بیان می کند که فقط باید کاربران شناسایی شوند. چندین روش وجود دارد که ما می توانیم این کار را انجام دهیم. شاید قبل از استفاده از سیستم، به هر کاربر شناسه منحصر به فردی اختصاص دهیم یا می توانیم از یک دستگاه خواننده اثر انگشت یا شاید یک دوربین هوشمند برای شناسایی چهره کاربران استفاده کنیم. در این مرحله، ما متعهد نیستیم که روش خاصی برای تحقق نیاز داشته باشیم. بنابراین، جزئیات اجرای آن را در مرحله بعدی فرآیند طراحی بیان خواهیم کرد.
خُب بریم سراغ نیازمندی های غیر عملیاتی، اینکه سیستم چگونه باید باشد. مواردی که احتمالا باقیمانده ویژگی های FURPS در آن نقش دارند.
با توجه به خصوصیت کاربرد پذیری (Usability)، سیستم باید مستقیما با کاربران تعامل داشته باشد، زیرا فضانوردان در فضا شناور هستند. چیزهایی مثل اینکه دستگاه پخش موسیقی ما باید دکمه ها واقعا بزرگی داشته باشد و یا دستورات صوتی را بپذیرد.
بریم سراغ قابلیت اطمینان (Reliability)، فضانوردان باید همیشه به موسیقی دسترسی داشته باشند، بنابراین دستگاه پخش موسیقی باید همیشه (24/7) در دسترس آنها باشد.
کارایی (Performance)، دستگاه پخش موسیقی ما برای کار کردن به قدرت زیادی احتیاج ندارد. این خصوصیت بر سایر سیستم های مهم موجود در فضاپیما تأثیر می گذارد. بنابراین، یک کارآیی خوب برای سیستم کم مصرف بودن آن خواهد بود. الته ما باید آستانه ای را برای تعریف کم مصرف بودن، تعیین کنیم.
و در آخر برای قابلیت پشتیبانی (Supportability)، دستگاه پخش موسیقی باید کتابخانه موسیقی قابل بروزرسانی داشته باشد تا فضانوردان بتوانند موسیقی های جدید را گوش دهند.

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


قسمت قبلی : آموزش اصول برنامه نویسی شی گرا : نیازمندی ها + FURPS

قسمت بعدی : آموزش اصول برنامه نویسی شی گرا : موارد استفاده (Use cases)