- تاریخ ارسال : سه شنبه 19 شهريور 1398
- بازدید : 80
در همین ارتباط در کنفرانس بینالمللی نرمافزار که ماه می برگزار شد، 50 برنامه وب معروف نوشته شده با RoR توسط ابزار Space مورد بررسی قرار گرفتند. در این آزمایش Space موفق به شناسایی 23 آسیبپذیری کشف نشده در این برنامهها شد. جالب آنکه طولانیترین زمان خطایابی این برنامهها تنها 64 ثانیه بود. به عنوان فردی که به صورت نیمه وقت به اشکالزادیی نرمافزارها مشغول است، باید بگوییم 64 ثانیه در عمل به صفر ثانیه ترجمه میشود. ( منظور از صفر ثانیه این است که یک کارشناس حرفهای حداقل به چند ساعت زمان برای انجام این فرآیند نیاز دارد.) بهطور معمول، تجزیه و تحلیل ایستای کدها، در شرایطی که امکان اجرای واقعی نرمافزارها امکانپذیر نباشد، یک فرآیند پیچیده، سخت و زمانبر خواهد بود.
خطایابی برنامههای وب فرآیند پیچیدهای است
کارها زمانی سختتر میشود که ما صحبت خود را در ارتباط با برنامههای وب آغاز کنیم. به دلیل اینکه بخش عمدهای از کدها در پشت کتابخانه و چارچوبهایی قرار دارند که برنامههای کاربری از آنها استفاده میکنند. تیم طراحی کننده این ابزار، مشکل را اینگونه تعریف کردهاند: «حتا وظایف بسیار سادهای در برنامههای Ruby On Rails همچون تخصیص مقدار به متغیرها و تعریف کتابخانههای خارجی زمانی که با یکدیگر ترکیب شده و درون کدهای یک برنامه قرار گیرند به مجموعهای عظیم از کدها تبدیل خواهند شد.» دانیل جکسون استاد علوم کامپیوتر و مهندس کامپیوتر MIT در این ارتباط گفته است: «زمانی که برنامهای تحت فرآیند تجزیه و تحلیل قرار میگیرد به مجموعه عظیمی تبدیل میشود.» حتا اگر یک برنامه کوچک را نوشته باشید، در بالای برنامه شما عمارتی ساخته میشود که اجزاء آنرا کتابخانهها، افزونهها و چارچوبها شکل میدهند. در نتیجه زمانی که به چیزی شبیه به یک برنامه وب که با استفاده از زبانی همچون Ruby On Rails نوشته شده است، نگاه کنید و در نظر داشته باشید یک تجزیه و تحلیل ایستا روی آن انجام دهید، خود را در میان برزخی از کدها مشاهده خواهید کرد.
همین موضوع باعث میشود این چنین فرآیندی در عمل امکانپذیر نباشد. برای حل این مشکل، تیم MIT کتابخانههای RoR که خود آنها را نوشته بودند ضمیمه کردند. در این کتابخانهها انواع مختلفی از عملیات و محاسبات واقعی مورد بازنویسی قرار گرفتند. در کنار این فرآیند تیم طراحی کننده عبارات سمبلیکی را درون تعاریف اجرایی وارد کردند که توضیح میدهند عملیات مختلف دقیقا چه کاری را انجام میدهند. جو نیر، پژوهشگر فوق دکترا دانشگاه برکلی کالیفرنیا و رهبر این تیم در این ارتباط گفته است: «ما هیچ یک از کدهای قدیمی را مورد تجدید نظر قرار ندادیم. بهطوری که مجموعه توابع موجود را کنار گذاشته و کدهای جدیدی که آنها را نوشته بودیم جایگزین کدهای قدیمی کردیم. کدهایی که شما در برنامههای تحت وب از آنها استفاده میکنید. این توابع جدید به شما اجازه تحلیل کدها را میدهند. در این روش کدها به مترجم Ruby On Rails تحویل داده میشود و مترجم اقدام به ارائه توضیحات کاربردی و مفیدی برای خط به خط وظایف برنامه میکند. توضیحاتی که بسیار شفاف هستند. با استفاده از این راهکار، تجزیه و تحلیلهای ایستا به یک فرآیند معقولتر تبدیل میشوند. برای آنکه فرآیند فوق این توانایی را پیدا کند تا این وظایف را بهطور خودکار انجام دهد، Near نگاهی به طبیعت واقعی برنامههای وب داشت و راههای مختلفی که این برنامهها به کاربر اجازه میدهند به دادههای خود دسترسی داشته باشد را مورد بررسی قرار داد.
او هفت روش مختلف را تعریف کرد و برای هر روش توصیفی ارائه کرد. این تعاریف بیان میکنند که یک کاربر قادر به انجام چه عملیاتی روی دادههای خود است. با استفاده از کتابخانههای بازنویسی شده، او موفق به طراحی یک مکانیزم آزمون شد تا مشاهده کند آیا یک برنامه وب این توانایی را دارد تا به این روش واکنش نشان دهد یا خیر. زمانی که یک برنامه بر مبنای این قواعد شکسته شود، به احتمال زیاد نواقص امنیتی موجود در برنامهها خود را نشان خواهند داد. حتا بدون آنکه دسترسی کامل به کدهای مربوطه ضرورتی داشته باشد. Near موفق شد نزدیک به 50 برنامه وب را با استفاده از space مورد تجزیه و تحلیل قرار دهد. برای یک برنامهنویس آشنا به کدهای خودش ( فردی که دسترسی کامل به کدهای برنامههای خود دارد) این ابزار در کمترین زمان ممکن فرآیندهای خطایابی را انجام میدهد.
- تاریخ ارسال : سه شنبه 19 شهريور 1398
- بازدید : 79
در حال حاضر 1.6 میلیارد برنامه آندرویدی در فروشگاه گوگل وجود دارد. فروشگاهی که بیشترین تعداد برنامه کاربردی را در خود جای داده است. اما با گذشت زمان این محیط توسعه یکپارچه به تغییرات اساسی نیاز داشت. بهطوری که غول جستجوی جهان بر آن شد تا نسخه شماره دو این محیط توسعه را عرضه کند. نسخه جدیدی که به تازگی عرضه شده است، سرعت ساخت و شبیهسازی را با پشتیبانی از آخرین نسخه عرضه شده از آندروید و سرویسهای گوگل پلی افزایش داده است. آندروید استودیو نه تنها در هماهنگی کامل با پلتفرم آندروید قرار دارد، بلکه به جدیدترین توابع در زمینه طراحی برنامهها دسترسی دارد. اگر شما یک طراح آندرویدی هستید، به شما توصیه میکنیم از نسخه 2 این محیط توسعه یکپارچه استفاده کنید. این محیط هم اکنون در اختیار طراحان قرار گرفته است. اما آندروید استودیو 2.0 به چه ویژگیهای شاخصی که به طراحان در فرآیند طراحی سریعتر برنامهها کمک میکند تجهیز شده است؟ ما در این مقاله چند مورد از این ویژگیهای برتر را مورد بررسی قرار میدهیم.
Instant Run
برای هر طراحی که عاشق ساخت سریعتر برنامههای کاربردی است، ویژگی اجرای سریع واقعا جالب توجه است. پیادهسازی تغییرات و مشاهده بلادرنگ آنها در برنامههای در حال اجرا، قابلیتی است که Instant Run در اختیار توسعه دهندگان قرار داده است. با استفاده از شتابدهندههای مختلفی اعم از VM تا مبادله منابع مابین برنامهها، Instant Run بهطرز کاملا محسوسی فرآیند انتظار برای مشاهده تغییرات را کم کرده است. زمانی که روی دکمه Instant Run() کلیک میکنید این ویژگی اقدام به تحلیل تغییراتی میکند که شما آنرا پیادهسازی کردهاید. در ادامه تعیین میکند چگونه کدهای جدید به سر راستترین شکل ممکن اجرا شوند. این قابلیت باعث میشود هر زمان توسعه دهندگان تغییری در برنامه کاربردی خود پیادهسازی کردند، بدون آنکه نیازی به کامپایل یا نصب دوباره APK داشته باشند، توانایی اجرای برنامه خود را داشته باشند. گوگل در ارتباط با این ویژگی گفته است: «این ویژگی باعث سریعتر شدن سرعت ساخت، ویرایش، و اجرای برنامهها میشود.» در مورد تعدادی از تغییرات به راهاندازی دومرتبه برنامه کاربردی نیاز است، اما در مجموع چرخه تولید نرمافزار سریعتر از قبل خواهد شد. Instant Run با دستگاههای آندرویدی یا شبیهسازی که API 14 م(Ice cream sandwitch) یا بالاتر از آن را اجرا میکنند، کار میکند. گوگل از زمان عرضه پیشنمایش این ویژگی در سال گذشته تا به امروز بازخوردهای کاربران را دریافت کرده و مورد بررسی قرار داده بود. ماحصل این بازخوردها پیادهسازی یک ویژگی پایدار شده است.
Android Emulator
شبیهساز دستگاههای آندرویدی (Android device Emulator) به یکسری قابلیتهای کلیدی تجهیز شده است. پشتیبانی از پردازندههای چند هستهای باعث میشود، آزمایش برنامههای کاربردی سه برابر سریعتر از قبل شود. گوگل در ارتباط با این ویژگی گفته است: «در بیشتر مواقع، در زمان طراحی یک برنامه کاربردی، آزمایش برنامه روی یک شبیهساز آندرویدی سریعتر از یک دستگاه واقعی خواهد بود. ویژگیهای جدیدی همچون اجرای سریع به شکل بسیار مناسبی با این شبیهساز دستگاههای آندروید کار خواهد کرد.» بهرهمندی از Google Play Services دسترسی به توابع بیشتری را امکانپذیر میسازد. بهطوری که توسعهدهندگان به طیف گستردهتری از قابلیتهای جدید همچون مدیریت تماسها، باتری، شبکه، GPS و.... دسترسی خواهند داشت. همچنین برای افزایش سرعت و کارایی شبیهسازی جدید از یک رابط کاربری جدید استفاده شده است. در شبیهساز جدید توانایی کشیدن و رها کردن APKها برای نصب سریعتر، تغییر اندازه و مقیاس پنجره، به کارگیری عملیات چند لمسی و خیلی دیگر از قابلیتها در اختیار شما قرار دارد. به کارگیری شبیهساز جدید به راحتی بهروزرسانی SDK Tools به 25.1.1 یا بالاتر از آن خواهد بود. بهطوری که یک دستگاه مجازی آندرویدی جدید را در اختیار خواهید داشت.
Cloud Test Lab
یکمرتبه بنویسید و همه جا اجرا کنید. این بهترین توصیفی است که در ارتباط با این ویژگی میتوان بیان کرد. بهبود کیفیت برنامههای کاربردی با آزمایش آسان و سریع آنها روی طیف گستردهای از دستگاههای آندرویدی فیزیکی در Cloud Test Lab و جالبتر از آن از درون آندروید استودیو ارمغان این ویژگی است. قابلیت جدیدی که به توسعهدهندگان اجازه میدهد برنامههای کاربردی خود را روی طیف گستردهای از دستگاههای آندرویدی و دستگاههایی که در مقیاس کلاود پیکربندی شدهاند مورد آزمایش قرار دهند.
App indexing code Generation & Test
از این پس قابلیت جدیدی در اختیار کاربران برنامه کاربردی شما قرار خواهد گرفت تا در جستجوی گوگل (Google Search) این توانایی را داشته باشند تا سریعتر برنامه شما را پیدا کنند. اینکار از طریق توابع شاخصگذاری برنامه در اختیار توسعه دهدگان قرار دارد. آندروید استودیو 2.0 به شما کمک میکند تا ساختار URL را در کدهای برنامهتان و همچنین خصلتهایی را در فایل AndroidManifest.xml اضافه کنید. اطلاعاتی که توسط سرویس شاخصگذاری کاربردی گوگل مورد استفاده قرار میگیرد. بعد از آنکه URLها در برنامه اضافه شدند، این توانایی را دارید تا کدهای شاخصگذاری که در برنامه قرار گرفتهاند را مورد آزمایش و اعتبارسنجی قرار دهید.
GPU Debugger Preview
برای توسعهدهندگانی که در حال طراحی بازیها یا برنامههایی بر مبنای Open GL ES هستند، این ویژگی جالب توجه است. شما این توانایی را دارید تا هر فریم و وضعیت GL را درون دیباگر GPU مورد بررسی قرار دهید. تشخیص و عیبیابی مشکلات رندرینگ GL با استفاده از ضبط و تحلیل استریم GPU دستگاه آندرویدی از قابلیتهای این ویژگی جدید به شمار میرود.
IntelliJ 15 update
آندروید استودیو بر مبنای پلتفرم کلاس جهانی اینتلیج آیدیا کدینگ ساخته شده است.