مدتهاست که پیشرفت گوشیهای هوشمند عرصه را برکامپیوترهای خانگی تنگ کرده و بارواج استفاده از موبایل و تولید اپلیکیشنها و بازیهای مختلف برای این ابزار هوشمند روزبهروز از محبوبیت PCها کاسته شده است.به این ترتیب گذشت زمان انتظارات ما را از اسمارتفونها بالاتر برده به طوری که تمام آنچه را که روزی از کامپیوترهای خود انتظار داشتیم، امروز از گوشیهای خود طلب میکنیم.
این سطح از توقع، لزوم پیشرفت در این صنعت را دو چندان میکند و طراحی و تولید اپلیکیشنها نیز به عنوان بخشی از این پروسه از اهمیت خاصی برخوردار میشود، با توجه به گستردگی استفاده از اپلیکیشنها و برنامههای مختلف، توسعهدهندگان زیادی در این بخش فعالیت و تلاش میکنند تا با ارایه خدمات مناسب تجربه کاربری خوبی برای مصرفکنندگان به وجود آورند. اما گاهی توسعهدهندگان به مرحله تولید بسنده کرده و تست اپلیکیشنهای طراحیشده را جدی نمیگیرند. در صورتی که تمامی برنامهها صرفنظر از روشی که برای نوشتن آنها به کار رفته است، باید از این مرحله مهم سربلند بیرون آیند. اهمیت این موضوع تا حدی است که میتوان آن را شاخهای از مهندسی نرمافزار دانست و کتابها در این رابطه نگاشت اما برخی از توسعهدهندگان به محض این که اپلیکیشن مورد نظر درچند ابزار اندرویدی محدود از جمله گوشی خودشان اجرا شد، دست به انتشار آن میزنند! در صورتی که سازگاری این برنامهها با سیستمهای مختلف مساله مهمی است که بیشتر مواقع به آن توجه نمیشود. برای اثبات این ادعا فقط کافی است نگاهی به نظرات کاربران در گوگلپلی بیندازیم تا با تجربه ناموفق تعداد زیادی از آنها در استفاده از اپلیکیشنهای مختلف در دستگاه خود روبهرو شویم.
عباراتی چون “پس از دانلود اپلیکیشن … روی گوشی با کاهش سرعت سیستمعامل مواجه شدهام” و یا “پس از نصب اپلیکیشن … و اجرای آن مشکل کرش گوشی پیش آمده” را در نظر بگیرید. در این مواقع فقط کافی است که نام یک گوشی از یک کمپانی معروف چند بار تکرار شود، تا در بررسی گوشیها این نکته به عنوان نقص دستگاه در نظر گرفته شده و عنوان شود که “گوشی هوشمند … توانایی اجرای اپلیکیشن … را ندارد” در حالی که واقعیت چیز دیگری است و بیشتر مواقع ریشه این مشکل در اپلیکیشنی خاص است و نه در گوشی!
این مشکلات ناشی از تنوع زیاد و تعدد نسخههای مختلف به ویژه در سیستمعامل اندروید به وجود میآید. در حقیقت تنوع جزیی از اکوسیستم این پلتفرم به حساب میآید. همانطور که در بازار کامپیوتر نیز با انواع اندازهها، سطوح عملکرد متفاوت، کارخانههای تولیدکننده CPU و GPU مختلف روبهرو هستیم در اکوسیستم اندروید نیز گوشیهای دو، چهار و هشت هستهای، صفحات نمایش با رزولوشنهای گوناگون، حافظه رم با ظرفیتهای مختلف وجود دارند. در دنیای اندروید برخی از گوشیها از OpenGL ES 2.0 (open source graphic library) پشتیبانی میکنند و برخی دیگر از OpenGL ES 3.0.
در بین سیستمعاملهای موبایل، اندروید به دلیل گستردگی در استفاده، سلطه خود را در این بخش به اثبات رسانده و نسخههای متعدد آن مانند ۴٫۲، ۴٫۴ و ۵٫۰ در گوشیهای مختلف مورد استفاده قرار میگیرد. حتی Amazon’s Fire OS، Cyanogenmod و MIUI به دلیل برخورداری از هسته اندرویدی زیرمجموعهای از این پلتفرم هستند.
اما نکته امیدبخش در ابزارهای اندرویدی موجود در بازار این است که بیشتر آنها از پردازنده مرکزی با معماری مشابه استفاده میکنند و این موضوع کار را برای توسعهدهندگان اندکی آسانتر میکند چرا که بخش زیادی از این دستگاهها به دلیل وجه اشتراک موجود در ساختار پردازندهها از دایره آزمون خارج میشوند.
با وجود پشتیبانی این سیستمعامل از معماریهای Intel و MIPS در CPU، چینش ARM سهم بیشتری از کاربرد را به خود اختصاص داده به طوری که اگر اپ مورد نظر در پردازندههای مبتنی بر معماری ARM تست نشود، گویا از هیچ آزمونی سربلند بیرون نیامده است. دلیل اصلی اقبال این معماری قابلیت استفاده از آن در هر دو بخش بازار، یعنی گوشیهای بالارده و پایینرده است. به عنوان مثال سامسونگ در گلکسیS6 از پردازنده هشت هستهای و ۶۴ بیتیExnon 7420 مبتنی برمعماریARM استفاده کرده و گوگل نیز در برنامه اندروید وان که هدف آن قرار دادن گوشی هوشمند در دسترس همگان با نازلترین قیمت بود، همین معماری را برگزید. اگرچه هسته Cortex-A7 به کار رفته در اندروید وان سهبرابر کندتر از هسته Cortex-A57 به کار رفته در S6 است اما به دلیل قیمت پایین برای پروژه اندروید وان مناسب بوده وانعطافپذیری معماری بر پایه ARM را به اثبات میرساند.
طبق اعلام گارتنر، تولید موبایل در فصل اول سال جاری با افزایشی ۱۹ درصدی روبهرو شده که بخش نوظهور و ارزانقیمت بازار سهمی۷۳ درصدی در این رشد داشته است با توجه به استقبال از این چینش در بخش پایینرده و میانرده، لزوم تست اپلیکیشنها در ساختار کمپانیها از اهمیت زیادی برخوردار است. برای تست اپلیکیشنهای جدید علاوه بر پرچمداران کمپانیها باید گوشیهای قدیمیتر نیز مد نظر قرار گیرند. آمار ارایه شده از طرف یونیتیتریدی، نشان میدهد که میزان استفاده از گوشیهای دو هستهای نیز همچنان سهم زیادی را به خود اختصاص دادهاند، طبق آمار موجود در مرکز اطلاعات یونیتی، ۴۰ درصد مخاطبان این شرکت از گوشیهای دوهستهای، بیش از نیمی از آنها از گوشیهای چهار هستهای و تنها ۸ درصد آنها از گوشیهای هشت هستهای استفاده میکنند. همچنین این آمار نشان میدهد که ۴۰ درصد گوشیهای مورد استفاده کمتر از یک گیگابایت رم دارند. بنابراین با توجه به این که تقریبا همه گوشیهای اندرویدی دو هستهای بوده و بیش از نیمی از آنها چهار هستهای هستند، برای افزایش عملکرد اپلیکیشنها باید خاصیت Multi-Threading یا چند نخی را نیز مورد توجه قرارداد. در این تکنولوژی برنامه در یک Thread (نخ) به طور پیشفرض اجرا میشود و برای افزایش سرعت و کارایی میتوان چندThread دیگر به موازاتThread اصلی ایجاد کرد تا دستوراتی که قابلیت اجرای همزمان را دارند با سرعت بیشتری اجرا شوند. بدیهی است که در صورت وجود یک هسته، دستورات به صورت ترتیبی اجرا میشوند. با توجه به تعداد هستهها در ابزار اندرویدی، تنظیم اپلیکیشنها به گونهای که بتوانند از تمامیهستهها استفاده کنند امری کاملا منطقی است. ایجاد این برنامهها در اندروید کار دشواری نیست و اندروید و گوگل اطلاعات و نمونههای خوبی در این رابطه در اختیار علاقهمندان قرار دادهاند. با وجود این برخی از برنامههای چندنخی از پیچیدگیهای خاصی برخوردارند و عملکرد آنها تحت تاثیر تعداد هستهها و روش کار برنامهریز در بهکارگیری Threadها، تفاوتهایی از خود نشان میدهند و این گواه دیگری بر لزوم تست اپلیکیشنها در ابزارهای اندرویدی مختلف قبل از انتشار است.
برای تست اپلیکیشنها، حالت ایدهآل نصب و اجرای آن در گوشیها و تبلتهای اندرویدی گوناگون است اما به دلیل محدودیت زمان و امکانات بهتر است تعدادی از این محصولات را بر حسب خصوصیات مشترک مانند معماری پردازنده، نسخه اندروید به کار رفته در گوشی، رزولوشن صفحهنمایش CPU، GPU،ABI و SIMD طبقهبندی کرده و در حین آزمایش معیارهایی برای ابزار متناسب با اپلیکیشنها در نظر گرفته شود.
در بخش تستCPU بهتر است از کارآمدی این برنامه در محصولات پایینرده اطمینان حاصل کرد و فقط نتیجه را به بالاردهها و میانردهها محدود نکرد.
لازم به یادآوری است که عدم سازگاری اپلیکیشنها با سیستمعامل و بروز مشکلات ناشی از نصب برنامه خاص، تا حدود زیادی به سیستمعامل اندروید و ماهیت آن مربوط میشود. همانطور که میدانید سیستمعامل اندروید یک سیستمعامل متنباز است و پایه و اساس آن توسط شرکت گوگل تحت عنوان پروژه AOSP توسعه یافته است.
متنباز بودن سیستمعامل اندروید باعث شده است تا بسیاری از توسعهدهندگان بتوانند به فایلهای اساسی و سیستمی اندروید دسترسی داشته باشند و قادر باشند تغییرات کوچک و بزرگی در آن اعمال کرده و آن را به نوعی شخصیسازی کنند و نتیجه آن ظهور سیستمعاملهایی بر پایه اندروید و با ظاهری متفاوت است، اما ممکن است بخشی از برنامههایی که روی اندروید نصب میشوند متنبسته باشند و تنها امکان شخصیسازی بخشی از سیستمعامل را در اختیار کاربر قرار دهند.
با توجه به مشکلات ایجاد شده، روشی که اپل برای ارایه اپلیکیشنهای قابل نصب بر آیفونهای خود در پیش گرفته با وجود تمام محدودیتهای اعمال شده، توجیهپذیر است. سیستمعامل متنبسته iOS به شدت از هسته کدهای خود محافظت میکند و کاربران و توسعهدهندگان نمیتوانند مشتق جدیدی از سیستمعامل این شرکت گرفته و سیستمعامل اختصاصی خود بر پایهiOS را طراحی کنند.
جمعبندی
بر کسی پوشیده نیست که برطرف کردن باگهای موجود در یک نرمافزار پس از انتشار آن بسیار پرهزینهتر از زمان قبل از انتشار است، چرا که هزینههای اضافی چون پرداخت دستمزد مهندسان برای برطرف کردن معایب، مدیریت پروسه اعمال تغییرات، ساخت، تولید و انتشار نسخه اصلاحشده را به کمپانی تحمیل کرده و از آن مهمتر به اعتبار شرکت و اپلیکیشن مورد نظر آسیب میرساند. ثبت امتیاز منفی و اظهارنظرهای مخالف از مضرات دیگر اصلاح بعد از انتشار است. گذشته از آن ممکن است برخی به دلیل عدم آگاهی از باگ موجود در برنامه، مشکل پیش آمده را به گوشی خود نسبت دهند و کمپانی سازنده گوشی را به سهلانگاری متهم کنند.
به هر حال تا زمان رفع کامل آنچه به عهده شرکتهاست، بهترین راهحل موجود برای اجتناب از مشکلات ناشی از نصب برنامههای غیر معتبر، تست برنامهها و طبقهبندی آنها بر اساس اولویت و سازگاری آنهاست. قبل از نصب هر نوع اپلیکیشنی، صرف اندکی وقت برای شناسایی امکانات مورد نیاز این برنامه، میزان دسترسی آن و تاثیرات احتمالی آن بر سیستمعامل عاقلانه به نظر میرسد.
در نهایت این که لطفا قبل از نصب، سری به اینترنت نیز بزنید و ببینید دارندگان گوشیهای مشابه شما بعد از نصب اپلیکیشن
نظرات کاربران