ده پیش بینی برای توسعه نرم افزار در سال 2018

در این مقاله به این مساله می پردازیم که چگونه فناوری های blockchain، NLP، ابزارهای AI-driven، یادگیری ماشینی، کامپیوتینگ بدون سرور و خلاقیت های devpos زندگی در سال 2018 را تغییر خواهند داد.
توسعه دهندگان با فرصت های پیشرو در سال 2018 به هیجان خواهند آمد. محصولات و ابزارهای فناوری هایی همچون چت بات ها،
blockchain، عملکردهای بدون سرور و یادگیری ماشینی تکامل می یابند. درعین حال دغدغه بسیاری از توسعه دهندگان تحویل سریع  کدها و عملکرد درست بی نقص امنیت و کارایی خواهد بود.
برای توسعه دهندگان سال 2018 سالی پر از تنش برای قاپیدن فرصت های جدید و قابل تغییر است درحالیکه باید فشار ناشی از انجام پروژه های بیشتر و با کیفیت تر را تحمل کنند. در ادامه به ده پیش بینی درخصوص نقش این فناوری ها در سال پیشرو اشاره میشود.

 

بلاک چین((Block chain

امنیت، اعتماد پذیری و بازدهی حاصل از تعاملات مجهز به بلاک چین(blockchain) به مرور در حال شناخته شدن است. توسعه دهندگان در سال جدید از بلاک چین های بسیاری در سرویس های مالی استفاده کرده و به تولید زنجیره های ساپلای می پردازند. بلاک چین فناوری است که درمیان ارگان هایی که به یکدیگر کاملا اعتماد ندارند معاملاتی موثر، ایمن، پابرجا و قابل اطمینان بوجود آورده و موجب حذف تمامی واسطه ها میشود.
یک کمپانی را در نظر بگیرید که به تولید کننده های خارجی(آفشور) سفارش کالا میدهد. حمل و نقل این کالاها از طریق یک کمپانی ترابری انجام شده به گمرک رسیده سپس از طریق یک کمپانی ترابری دیگر بدست خریدار می رسد. امروزه تعامل و تایید تمام مراحل از طریق ایمیل و
spreadsheet ها انجام شده و افراد زیادی در این پروسه شرکت دارند. فناوری بلاک چین تمام پروسه هایی که بصورت دستی انجام میشود را حذف کرده و معامله از طریق ثبت آپدیت های تغییر ناپذیر در دفتر ثبت بلاک چین و هنگامیکه حداقل نفرات طرفین اعلام کنند، "بله این قسمت از معامله انجام شد" صورت می گیرد.
سرویس های ابری بلاک چین به سیستم های مدیریت تجاری امنیت، برگشت پذیری، مقیاس پذیری و یکپارچگی پیش ساخته بخشیده و بدین ترتیب تمرکز روی تجارت برای توسعه دهندگان آسانتر میشود.

 

چت بات ها و امکان مکالمه با مشتریان و کارمندان

نیاز به چندین اپلیکیشن موبایل برای انجام یک کار مشابه، کاربران را کلافه کرده است. مثلا سه اپلیکیشن سرویس هواپیمایی مختلف برای انجام ثبت ورود و رزرو بلیط. بهترین روش استفاده از پرکاربرد ترین اپلیکیش در phone massaging است. مسیجینگ سه المان گیرا و پایدار دارد: فوری، رسا و محاوره ای. به لطف پیشرفت در هوش مصنوعی و پردازش زبان طبیعی استفاده از پیام رسان فیسبوک، Slack، ویچت، واتساپ یا دستیارهای صوتی مانند آمازون الکسا یا گوگل هوم سوال پرسیدن و جواب گرفتن از بات های هوشمند درمیان کاربران رواج یافته است.
توسعه دهندگان با استفاده از سرویس های ابری جدید
bot building هوشمند می توانند بسرعت از مهارت این بات ها در درک اهداف مشتریان بهره برده حالت محاوره ای را حفظ کرده ودرحالیکه براحتی با سیستم های back end ادغام میشوند بطور هوشمند پاسخگوی مشتریان باشند. تصور کنید از لباسی که در فیلم دیده بودید عکس گرفته اید و این عکس را به بات فروشگاه لباس فروشی مورد علاقه خود می فرستید این بات تصویر را شناسایی کرده و هوش مصنوعی لباسی مشابه را به شما پیشنهاد میدهد. کارمندان نیز می توانند از بات ها برای انجام کارهایی همچون پرسیدن درباره ی مرخصی های باقی مانده و یا سفارش لپ تاپ جایگزین استفاده کنند.

 

حذف باتن ها: هوش مصنوعی جایگزین واسط اپلیکیشن

هوش مصنوعی به واسط کاربری مبدل میشود بعبارت دیگر مدل تقاضا-پاسخ همزمان با استفاده از اپلیکیشن ها و سرویس ها بتدریج ظاهر میشوند. گوشی های هوشمند(اسمارت فون ها) هنوز هوش پایینی دارند چراکه این شما هستید که باید اپلیکیشن را باز کرده و برای انجام کاری درخواست داده و درنهایت پاسخ آنرا دریافت کنید. نسل جدید اپلیکیشن های هوشمند تعاملات را از طریق پوش نوتیفیکیشن ها آغاز میکنند. در گام بعدی و با پیشرفت تکنولوژی اپلیکیشن ها، بات ها یا دستیارهای شخصی مجازی با استفاده از هوش مصنوعی می توانند تشخیص دهند چه کاری را چه وقت، چرا، کجا و چگونه انجام دهند. به دو مثال زیر دقت کنید:
اپلیکیشن تایید هزینه گزارش های تایید هزینه شما را رصد کرده و از آن یک الگو تهیه میکند سپس بطور خودکار 99 درصد از گزارش های هزینه را تایید کرده و صرفا معدود گزارش هایی که باید با آنها توجه کنید را به شما یادآور میشود.
اپلیکیشن تحلیلی داده های اصلی، پرسش هایی که توسط کاربر تجاری پرسیده شده، سوال های پرسیده شده ی مشابه توسط کاربران دیگر در کمپانی را دریافت کرده و هر روز یک نگرش و دیدگاه جدید از آنها تهیه میکند. با جمع آوری داده های بیشتر هوش مصنوعی به ما کمک میکند تا دریابیم چه سوال هایی از دیتا بپرسیم.

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

 

یادگیری ماشینی

یادگیری ماشینی از قلمروی مبهم داده های علمی درحال ورود به مسیر توسعه ی اپلیکیشن می باشد. این روند به دو دلیل عمده در حال انجام است نخست بدلیل دسترسی مودال های پیش ساخته در پلتفرم های محبوب و دوم بدلیل کارایی بالای آن بهنگام آنالیز مجموعه داده های عظیم هیستوریکال. با استفاده از یادگیری ماشینی با ارزش ترین دیدگاه همراه با کانتکست می آید: آنچه قبلا انجام داده اید، پرسش هایی که پرسیده اید، آنچه سایر افراد انجام میدهند، اکتیویتی نرمال در برابر فعالیت غیرعادی.
اما برای تاثیرگذاری بیشتر یادگیری ماشینی باید  در یک محیط
domain specific آموزش داده شود بطوریکه مجموعه داده های آنالیز شده و سوال ها نیز پاسخ داده شوند. بعنوان مثال اپلیکیشن های یادگیری ماشینی که بمنظور تحلیل امنیت برای تشخیص رفتار غیرعادی کاربران طراحی شده اند از اپلیکیشن هایی که برای بهینه سازی عملکردهای ربات کارخانه ای طراحی شده اند کاملا متفاوت است.
توسعه دهندگان باید در زمینه موارداستفاده
domain specific آگاهی و آموزش بیشتری کسب کنند تا درخصوص داده هایی که باید جمع آوری کنند، نوع الگوریتم های یادگیری ماشینی که باید استفاده کنند و سوال هایی که باید بپرسند اشتباه نکنند. آنها همچنین باید اپلیکیشن ها یا domain specific SaaS که برای هر پروژه مناسب هستند را ارزیابی کنند.
توسعه دهندگان با استفاده از یادگیری ماشینی می توانند برای ارائه توصیه های مناسب، پیش بینی درآمدها یا خودکار کردن تصمیم گیری ها اپلیکیشن هایی هوشمند بسازند.

 

حرکت  DevOpsبه سمت NoOps

همگی ما در این مورد که devops(ترکیب توسعه و عملکرد) برای کمک به توسعه دهندگان برای ساخت اپلیکیشن های جدید و فیچرهای سریع نقشی مهم دارند توافق داریم. اما مشکل devops این است که توسعه دهندگان می بایست 60 درصد از زمان خود را صرف عملکردهای((ops معادله کنند که درنتیجه زمان کمتری به توسعه اختصاص می یابد. توسعه دهندگان باید یکپارچه سازی های مداوم و مختلف و همچنین ابزارهای دلیوری پیوسته (CICD) را تکمیل کرده، آن یکپارچه سازی ها را حفظ کرده و زنجیره ابزار CI/CD را همچون فناوری های جدید همواره بروزرسانی کنند. همه کس می تواند CI انجام دهد اما افراد اندکی می توانند CD انجام دهند. توسعه دهندگان در سال 2018 برای بازگشت به سمت dev و اختصاص زمان بیشتر به این حوزه روی سرویس های ابری متمرکز خواهند شد. درنتیجه به اتوماسیون بیشتری برای CICD واقعی نیاز است.
بمنظور انجام دپلویمنت های(
deployments) سریع، Docker به شما امکان پکیجینگ و portability(قابلیت انتقال) میدهد. برای اینکه جزیی از چرخه حیات Docker باشید به CD نیاز دارید. بعنوان مثال درصورت استفاده از container ها بمحض تغییر یک کد به Git محصول ساخته شده ی پیش فرض باید یک تصویر داکر با ورژن جدید کد باشد. سپس این تصویر بصورت خودکار به رجیستری داکر رفته و container بدست امده از این تصویر به محیط تست dev میرود. بعد از انجام تست QA و دپلویمنت محصول هماهنگی، امنیت و مقیاس پذیری container ها باید مراقبت شوند. صاحبان مشاغل به توسعه دهندگان فشار می آورند تا نوآوری های جدید را هرچه سریعتر آماده کنند اما آنها برای انجام چنین کاری به زمان آزاد بیشتری نیاز دارند.

 

Open source

مدل اپن source یکی از بهترین موتورهای نوآوری می باشد اما تکمیل و نگهداری آن نوآوری اغلب بسیار پیچیده است. بعنوان مثال:
برای استریمینگ دیتا/پلتفرم مدیریت رویداد باید از
Kafka استفاده کنید. بمنظور تقویت تاثیرگذاری کافکا باید node های اضافی کافکا را راه اندازی کرده و کلاسترهای آنرا بارگذاری کرد. آپدیت این کلاسترها بعنوان خروجی های جدید از کافکا حاصل آمده و سپس این سرویس را بهمراه باقی مانده محیط تکمیل میکند.
اگر
Cassandra برای دیتابیس های NoSQL را می خواهید باید بک آپ، patching، کلاسترینگ، scaling و دسترسی بالای کلاستر کاساندرا توسط پلتفرم مدیریت شود.
توسعه دهندگان برای تحویل سریع نوآوری های حاصل از اپن
source بدنبال سرویس های ابری رفته و در عین حال به جنبه های مدیریتی و عملکردی این فناوری های نیز توجه خواهندداشت.

 

افزایش معماری های بدون سرور

نیاز به معماری های بدون سرور کاملا واضح است. هنگامیکه برای کدنویسی براساس یک رویداد خاص درخواست وجود دارد، کدنویس تنها تا زمانی مسئول است که کدهای آن اجرا میشوند. فرض کنید می خواهید برای رزرو/کنسل پروازها، هتل ها و ماشین های کرایه ای یک فانکشن ثبت مسافرت بسازید. هریک از این اکشن ها را می توان بعنوان یک فانکشن بدون سرورکه به زبان های مختلف مانند جاوا، روبی، جاوا اسکریپت و Python نوشته میشود ساخت. برای اجرای کدها به سرور اپلیکیشن نیاز نبوده و فانکشن ها بهنگام نیاز در زیرساز اجرا میشوند.
مرتبط کردن این فانکشن ها به یکدیگر بمنظور اجرای فعل و انفعالات پیچیده چالش جدیدی برای توسعه دهندگان خواهد بود. بنابراین آنها برای مدیریت آسان برنامه ریزی، ترکیب، اشکال زدایی، چرخه حیات مدیریت فانکشن های بدون سرور، گسترش و تست آنها روی لپتاپ به سرویس های ابری و ابزارهای اپن
source مانند FN project روی می آورند.

 

افزایش استفاده از Container ها

در سال جدید container ها در توسعه و تست بصورت پیش فرض درآمده و استفاده از آنها در تولید اپلیکیشن ها افزایش می یابد. بنابراین باید انظار داشت که در سال جدید بهبود امنیت، قابلیت مدیریت، هماهنگی، مانیتورینگ و اشکال زدایی در نوآوری های اپن source و استانداردهای این صنعت ادامه یابد. بسیاری از توسعه های مدرن از جمله معماری میکروسرویس ها، اپ های cloud-native، فانکشن های بدون سرور و devops از سوی container ها با بلاک های ساختاری ربرو خواهند شد.
استفاده ازاین
container در هرجایی منطقی نخواد بود بعنوان مثال هنگامیکه به یک پلتفرم ابری پرسپکتیو مانند PaaS یا موبایل PaaS نیاز دارید استفاده از آنها منطقی نیست چرا که این سرویس های ابری که سطح بالاتری دارند خود بر روی این container اجرا میشوند.
بعلاوه مدل های تاییدیه نرم افزار برای ارزش بالاتر و نرم افزار
on premises می بایست گسترش و وسعت پذیرش container را بپذیرند. با افزایش پذیرش containerها مدل های قیمت گذاری برای نرم افزار باید تاییدیه "روشن" و "خاموش" را پشتیبانی کنند.

 

تنظیم خودکار، خود درمانی، خود مدیریتی سیستم ها و نرم افزار

توسعه دهندگان و تیم های اجرایی در حال غرق شدن در دیتای log ها، مانیتورینگ عملکرد وب/اپ/دیتابیس، مانیتورینگ تجربه کاربری و پیکربندی هستند. بعلاوه این داده های مختلف باید اشکال زدایی شوند که برای این کار به افراد زیادی نیاز است. مساله دیگر انتقال دانش است: توسعه دهندگان زمان زیادی را صرف توضیح ورودی ها و خروجی های اپلیکیشن و غیره میکنند.
متمرکز کردن تمام این داده ها در یک مخزن واحد موجب میشود تا متریک های عملکرد، تجربه کاربری، پیکربندی، استفاده از ظرفیت محاسبه، یادگیری ماشینی، الگوریتم های هدفمند، سرویس های مدیریت سیستم های ابری آسان تر شود.
این سرویس های ابری از طریق نظارت بر فعل و انفعالات برای ورودی یک بیس لاین تعین کرده و توپولوژی سرور همراه با تراکنش ها بطور خودکار را درک میکنند. با استفاده از ردیابی یا تشخیص غیرمتعارف دربرابر این بیس لاین ها، سرویس های مدیریت سیستم ها بطور اتوماتیک می توانند درصورت وجود هرگونه رفتار نامتعارف آنرا به توسعه دهنده اطلاع داده و ریشه مشکلات را نشان دهند.
توسعه دهندگان باید هنگام نوشتن اپلیکیشن های خود و بمنظور ساخت اپلیکیشن های خود مدیریتی درباره ی نحوه ی نفوذ و تاثیرگذاری این اتوماسیون خوب فکر کنند.

 

امنیت بالا و خودکار

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

 

 


 

ده پیش بینی برای توسعه نرم افزار در سال 2018
چهارشنبه 20 دی 1396 - 14:16:02 529 آخرین بازدید : سه شنبه 29 خرداد 1397 - 02:57:12 0
*
*