بنا به دلایل زیر داشتن نگاه شیء گرا در تولید نرم افزار همراه، کمک کننده و فراتر از آن، ضروری است.

  • زبان های برنامه نوسی متداول در نرم افزار همراه  (C#, Python, Swift, Java,  JavaScript, Dart  و به نوعی PHP) شیء گرا هستند یا از آن حمایت می کند.  
  • عناصر اصلی نرم افزار همراه، مثل HTML، CSS و script، Document Object Model و Browser Object Model با مفاهم مدل شیء مطرح می شود.
  • فناوری های مرتبط، مثل JQueryMobile, AngularJS, و Bootstrap با مفاهیم مدل شیء مطرح می شود. 
  • عناصر اصلی در نرم افزار وب و همراه، مثل سند، پنجره و حادثه با الفبای مدل شیء مطرح می شود. 
  • عملکرد بزرگان نرم افزار همراه شیئ گراست.
  • مهمتر از همه، توان مدل شیء برای کاهش پیچیدگی نرم افزار همراه (با کلاس، سلسله مراتب و ارث بری، دربرگیری، بسته) و کمک به افزایش بهره وری در تولید همراه است.

در کل، من از طرفداران به کارگیری مدل شیء هستم؛ چه در تولید نرم افزار همراه، چه در تولید هر چیزی، چه در مهندسی، چه در مدیریت و چه در زندگی. در فصل 1، در شکلی که برای مدل تولید چابک ارائه شد، رسیدن به انتخاب و رسیدن به ساختار کلان، از روند تکرار و تکامل برای اجرای پروژه جدا شده است.  اینجا می خواهم روی قابلیت استفاده نگاه شیءگرا تأکنید کنم (شکل زیر). که مدل شیء را می توان برای هر کاری (بخشی) از جمله برای رسیدن به انتخاب، تشخیص و تعیین خواسته ها و رسیدن به ساختار نیز مورد استفاده قرار داد. 

مدل شیء و نرم افزار همراه

چگونه؟

توجه داریم که روند تکرار و تکامل را دنبال می کنیم (Booch 1996) و(Booch 2009).

  • شروع با یک ایده؛ شبیه طرح اولیه از یک فیلم. مهمترین ویژگی این ایده جذابیت آن برای استفاده ی بیشتر و برای مخاطبان بیشتر است. 
  • تدارک یک سناریو از این فیلم (مکی، 2017):
    • تشخیص و تعیین صفحه (صحنه) های تعامل و عناصر هر صفحه؛ چه برای تعامل مخاطبان با کاربرد و چه برای تعامل مخاطبان با یکدیگر. 
    • تشخیص و تعیین چگونگی همکاری شیءها، برای رسیدن به رفتار برتر مورد نظر (mechanism).
  • تشخیص و تعیین نمونه هائی (شیء) از عناصری که در پروژه تأثیر گذار هستند.
    • با شروع از مخاطبان (صدیقی مشکنانی 1395)؛ چرا که وجود یا عدم وجود عناصر دیگر را موجب می شوند.
    • به عناصری که باید با، یا، بین مخاطبان مبادله شود (مثل جنسی که قرار است فروخته شود) توجه کنید. به احتمال زیاد برای این عناصر نیاز به نماد و به ویژه نیاز به داده خواهید داشت.
    • به نمادهایی که به دلیل کاربرد، به نوعی مطرح می شوند (مثل نمادهای یک بازی، یا نماد اجناس یک فروشگاه) توجه کنید.
    • به کنترل ها (مثل دکمه، جعبه وبرایش، تقویم) یا نمادهایی که خدمات را دراختیار مخاطب، قرار دهد توجه کنید.
    • به شرایط، و در واقع به وقایعی (event) که عملا مبنای تعامل شیءها با یکدیگر است، توجه کنید.
  • تعریف کلاس هایی که نمونه های فوق را در بربگیرند:
    • ابتدا کلیت کلاس ها به صورت یک جعبه؛
    • و به تدریج اضافه کردن مشخصه (attribute)؛
    • و رفتار (method/behavior)؛
    • و قابلیت رؤیت به آن ها.
  • برحسب نیاز تدارک مدل های مختلف دیگر از کاربرد؛ از جمله موارد زیر. لطفا فصل 20، زبان مدل سازی یکپارچه را هم ببینید.
    • تشخیص و تعیین روابط کلاس های فوق (مثل ارث بری و اجتماع)؛ تدارک نمودار (های) کلاس (class diagram). 
    • تشخیص و تعیین عملکردهای (functionality) کاربرد در مقابل مخاطبان؛ تدارک نمودار(های) مورد کاربرد (use-case diagram).
    • تشخیص و تعیین ترتیب بروز حوادث؛ با تدارک نمودار (های) ترتیب (sequence diagram).
    • تشخیص و تعیین چگونگی همکاری؛ با تدارک نمودار (های) همکاری (cooperation diagram)و نمودار شیء (object diagram).
    • تشخیص و تعیین حالت های مختلف عناصر؛ با تدارک نمودارهای حالت (state diagram).

 پرسش

  1. یک بازی سودوکو روی گوشی را در نظر بگیرید (می توانید با توجه به یک محصول موجود این سؤال را پاسخ دهید).
    1. این بازی شامل چند صحنه است؟ توضیح دهید.
    2. شیء های این بازی را معرفی کنید. آیا می توان گفت که بازیگر هم یک شیء است؟
    3. یک نمودار حالت، برای جدول 10 در 10 این بازی رسم کنید.
  2. با کلیک روی این آدرس، ایجاد object prototype در JavaScript را امتحان کنید.
  3. در مورد ضرورت داشتن سناریو برای تولید کاربرد همراه بحث کنید. 
  4. یکی از تلفن بانک های همراه را در نظر گرفته و در مورد نکات مثب و منفی آن بحث کنید.