چکیده
در طی ده سال گذشته، فناوری دستگاههای موبایل به صورت قابل توجهی تغییر کرده است، و این دستگاهها و سیستم عاملهای آنها پیچیده تر شدند. این توسعهها به تغییرات بزرگی در اپلیکیشنهای موبایلی طراحی شده متناسب با سیستم عاملهای موبایل منجر شدند. طراحی اپلیکیشنهای موبایل به چند دلیل مانند اندازه صفحه نمایش و قدرت پردازش محدود و سایر موارد، سخت تر شده است. بنابراین، مهم است که به وضوح مشخصههای توسعه اپلیکیشن موبایل و مسائل و چالشهای مربوط به آن، و همچنین، ویژگیهای کلیدی که یک اپلیکیشن موبایل را سودمند و ارزشمند میسازد را به وضوح شناسایی کنیم. این مقاله ادبیات موضوعی موجود در مورد چالشها و بهترین شیوههای توسعه اپلیکیشن موبایل را بررسی کرده است. این مطالعه در درک مشخصههای فرایند توسعه اپلیکیشن موبایل، بررسی چالشهای واقعی که در طی این فرآیند دیده میشود و اکتشاف بهترین شیوههایی که میتوانند به صورت فعالی برای بهبود توسعه اپلیکیشنهای موبایل استفاده شوند، کمک میکند.
1. مقدمه
همانطور که دیده شده است، در دهه گذشته، صنعت ارتباطات مخابراتی سیار یکی از بخشهای دیجیتال با رشد سریع بوده است که یک محیط به شدت رقابتی، غیرقطعی و پویا را بوجود آورده است [3]. این زمینه برای سازمانهای نرم افزاری به دلیل درامد قابل توجهی که میتوانند از آن کسب کنند، به یک زمینه بسیار جالب تبدیل شده است[3].
علاوه بر گسترش آن، برای جوامع پژوهشی و صنعت نرم افزاری مسائل و نگرانیهایی را به همراه داشته است. برای نمونه، فرآیند توسعه اپلیکیشن موبایل کاملا از نرم افزار سنتی متفاوت است، چرا که کاربران نهایی ویژگیهایی مشابه با اپلیکیشنهای کامپیوترهای دسکتاپ با ویژگیهایی منحصر تلفن همراه را انتظار دارند [11].
علاوه بر این، به منظور ایجاد یک اپلیکیشن موبایلی خوب، در بر گرفتن ویژگیهای اصلی که یک اپلیکیشن موبایل خب را مشخص میکند، که اگر عملی شوند، آنها را ارزشمند و سودمند میسازد، ضروری است. بنابراین، هدف مطالعه ما کسب درک بهتر از مشخصههای توسعه اپلیکیشن موبایل و چالشهای متفاوت و مسائل مرتبط به آن است. به همین دلیل، مطالعه مروری فعلی پاسخ به دو سوال را هدف قرار داده است: (1) فرآیند توسعه اپلیکیشنهای موبایل با چه چالشها و مسائلی مواجه میشوند؟ و (2) بهترین شیوهای که معمولا برای برطرف کردن چالشهای فرآیند توسعه اپلیکیشن موبایل استفاده میکنیم کدام است؟
این مقاله تلاشی برای بررسی ادبیات موضوعی منتشر شده در مورد چالشها و بهترین شیوههایی است که میتواند در طول توسعه اپلیکیشنهای موبایل تحقق بخشیده شود. مطالعه مروری در درک بهتر مشخصههای فرآیند توسعه اپلیکیشن موبایل، بررسی چالشهای واقعی که با آنها مواجه میشوند و کشف بهترین شیوههایی که میتوانند به صورت موثری برای بهبود توسعه اپلیکیشن موبایل استفاده شوند نقش دارد.
مقاله به شرح زیر سازمان یافته است. بخش 2 یک بررسی بر مهندسی نرم افزار برای توسعه اپلیکیشنهای موبایل ارائه میدهد. بخش 3 فرآیند توسعه کلی اپلیکیشن موبایل را تشریح میکند. بخش4 مشخصههای اپلیکیشنهای موبایل را شناسایی میکند. بحش 5 مسائل و چالشهای مربوط به فرآیند توسعه اپلیکیشن موبایل را که توسعه دهندگان موبایل با آنها روبرو میشوند را دسته بندی و شناسایی میکند. سپس، بخش 6 بهترین روش توسعه اپلیکیشن موبایل را مشخص میکند. سرانجام، بخش 7 نتیجه گیری مقاله و طرحی برای کارهای آینده است.
2. مهندسی نرم افزار برای توسعه اپلیکیشنهای موبایل
در سالهای گذشته، صنعت نرم افزار شاهد رشد سریعی بوده است و تعداد بالقوه اپلیکیشنهای موبایل نامحدود شدهاند. با افزایش شهرت و تقاضا برای اپلیکیشنهای موبایل، تعداد پروژههای توسعه برای اپلیکیشن موبایل به صورت قابل توجهی افزایش یافته است [8]. در نتیجه، کیفیت و کمیت اپلیکیشنهای موبایل نگرانیهای جدیدی را در صنعت مهندسی نرم افزار بوجود آوردهاند. توسعه اپلیکیشن موبایل یک فرآیند توسعه اپلیکیشن برای دستگاههای کوچک، کم توان مانند تلفنهای سلولی است [8][9]
این اپلیکیشن میتواند یک اپلیکیشن از قبل نصب شده کارخانه ای یا قابل دانلود از فروشگاههای نرم افزاری (App-stores) یا پلت فرمهای توزیع نرم افزار موبایل باشد [8]. در حال حاضر، اپلیکیشنهای بیشماری در app stores برای کمک به زندگی بر اساس تلفن همراه، یا mLife در دسترس هستند که شامل: mEnvironment, mEducation, mTourism, mGovernment, mEntertainmen میباشد. اپلیکیشنهای موبایل میتوانند به موارد زیر دسته بندی شوند [17] [23]:
• اپلیکیشنهای بومی : این اپلیکیشنها برای یک پلت فرم اصلی با استفاده از کیتهای توسعه نرم افزار (SDK) و ابزارهای ارائه شده توسط مالک پلت فرم اجرا شده اند، و این ممکن است تعداد دستگاههای موبایلی که اپلیکیشن را اجرا میکنند را محدود کنند اما این میتواند از همه ویژگیهای پلت فرم که توسط توسعه دهندگان ارائه شده است، بهره مند شود.
• اپلیکیشنهای وب : این اپلیکیشنها با استفاده از تکنولوژیهای وب استاندارد ( مانند HTML, CSS و JavaScript ) اجرا شده اند و میتوانند از طریق مرورگر وب موبایل در دسترس قرار گیرند. این در دسترس بودن اپلیکیشن در اینترنت را برای پلت فرمهای موبایل متفاوت تضمین میکند اما این اپلیکیشنها نمیتوانند از همه قابلیتهای موبایل استفاده کنند و نمیتوانند به صورت آفلاین استفاده شوند.
• اپلیکیشنهای هیبریدی : این اپلیکیشنها مزایای اپلیکیشنهای بومی و وبی را با یکدیگر ترکیب میکند.
3. فرآیند توسعه اپلیکیشن موبایل
توسعه اپلیکیشن موبایل یک مورد خاص توسعه نرم افزار است چرا که توسعه دهندگان نیاز دارند که جنبههای متفاوتی مانند طول عمر کوتاه توسعه، قابلیتهای دستگاه موبایل، قابلیت حرکت، قابلیت دیده شدن، مشخصات دستگاه موبایل مانند اندازه صفحه نمایش، طراحی و ناوبری واسط کاربر اپلیکیشن، امنیت و حریم شخصی کاربر، ضروریت بازاریابی اپلیکیشن برای کسب شهرت بیشتر را در نظر بگیرند [7].
در کل، طول عمر توسعه اپلیکیشنهای موبایل از موارد زیر تشکیل شده است: (1) تحلیل ایده اپلیکیشن؛ (2) طراحی واسط کاربر؛ (3) توسعه اپلیکیشن با استفاده از ابزارها و زبانهای برنامه نویسی برای پلت فرم هدف؛ (4) تست اپلیکیشن در دستگاههای گوناگون؛ (5) انتشار اپلیکیشن در فروشگاه پلت فرم هدف، و در آخر (6) به روز نگهداشتن اپلیکیشن با نسخههای جدید منتشر شده در فروشگاههای اپلیکیشن [7].
ABSTRACT
Over the last ten years or so, mobile devices technology has changed significantly, with these devices and operating systems becoming more sophisticated. These developments have led to a huge variety of mobile applications designed for mobile operating systems. These mobile applications are typically harder to design and build because of several factors such as screen size and limited processing power and so forth. Therefore, it is important to clearly identify the characteristics of mobile application development and the issues and challenges related to it, as well as, the key features that characterize a great mobile application which make them valuable and useful. This paper has reviewed existing literature of the challenge and best practices of mobile application development. This study contributes towards a great understanding of the characteristics of mobile application development process, examines real challenges faced and explores the best practices that can be effectively applied to improve the development of mobile application.
1. INTRODUCTION
It has been observed, over the last decade, that mobile telecommunication industry is one of the fastest growing digital sectors which proved to be highly competitive, uncertain and dynamic environment [3]. This field has become very attractive for software organizations since it turned out to generate significant revenues [3].
Besides its expansion, it has also brought up a number of issues and gained concern in the software industry and research community. For instance, the development process of mobile application is quite different from traditional software since the end-users expect same features similar to their desktop computer applications with additional mobile exclusive functionalities [11].
Moreover, in order to build a good mobile application, it is essential to comprehend the key features that characterize a good mobile application which, if practically applied, make them valuable and useful. Therefore, the objective of our study was to gain a better understanding of the mobile application development characteristics and the different challenges and issues connected to it. For this reason, the current review study aims at answering the following two questions: (1) What are the challenges and issues that are confronted through the development process of mobile application? And (2) What are the best practices which generally embraced to soften the challenges of mobile application development process?
This paper is an endeavor to review the published literature on the challenge and best practices which can be realized during the development of mobile application. The review study contributes towards a better understanding of the characteristics of mobile application development process, examines real challenges faced and explores the best practices that can be effectively applied to improve the development of mobile application.
The paper is organized as follows. Section 2 provides an overview of software engineering for mobile application development. Section 3 describes the general development process of mobile application. Section 4 identifies the characteristics of mobile applications. Section 5 classifies and identifies the issues and challenges of the mobile application development process followed by mobile developers. Then, Section 6 specifies mobile application development best practices. Finally, Section 7 concludes the paper and outlines future work.
2. SOFTWARE ENGINEERING FOR MOBILE APPLICATION DEVELOPMENT
In the last years, the mobile industry has witnessed rapid growth, and the potential number of various mobile applications is almost unlimited. With this increasing of fame and demand for mobile applications, the number of development projects for mobile application has been significantly increased [8]. As a consequence of this, the quality and quantity of mobile applications have introduced new concerns in software engineering industry. Mobile application development is the process of developing applications for small, low-power handheld devices such as cell phones [8][9].
This application can be either factory pre-installed applications or downloadable from application stores (App-stores) or mobile software distribution platforms [8]. Currently, numerous applications are accessible in the app stores to aid for a life based on mobile, or mLife which includes; mHealth, mEnvironment, mEducation, mTourism, mGovernment, mEntertainment, etc. Mobile applications can be categorized into [17] [23]:
Native Applications: These applications are implemented for a certain platform using Software Development Kits (SDKs) and tools provided by platform owner, and this may limit the number of mobile devices running the app but it can benefit from all platform features offered for developers.
Web Applications: These applications are implemented using the standard web technologies (i.e. HTML, CSS, and JavaScript) and can be accessed through the mobile web browser. This guarantees app availability on the Internet for different mobile platforms but these apps cannot utilize all mobile capabilities nor can it be used offline.
Hybrid Applications: These applications combine the advantages of both native and web applications.
3. MOBILE APPLICATION DEVELOPMENT PROCESS
Mobile application development is a special case of the software development as the developers need to consider different aspects such as: short development lifecycle, the capabilities of mobile device, mobility, visibility, the specifications of mobile device such as screen sizes, user interface (UI) design and navigation of the application, security and user privacy, and necessity for application marketing to gain more popularity [7].
In general, mobile application development lifecycle comprises of the following: (1) Analysis of the application idea, (2) User interface design, (3) Application development by utilizing the tools and programming languages for the target platform, (4) Testing the application on various devices, (5) Publishing the application on the target platform store, and finally (6) Application maintenance in which any new updates for the application are released in successive versions of this app for the target platform store [7].
چکیده
1. مقدمه
2. مهندسی نرم افزار برای توسعه اپلیکیشنهای موبایل
3. فرآیند توسعه اپلیکیشن موبایل
4. مشخصههای اپلیکیشنهای موبایل
5. چالشهای توسعه اپلیکیشن موبایل
6. بهترین روش توسعه اپلیکیشن موبایل
6.1 برنامه ریزی
6.2 پیش نیازها
6.3 طراحی و معماری
6.4 تجربه کاربر
6.5 توسعه
6.6 تست
6.7 توسعه
6.8 نگهداری و پشتیبان
6.9 جنبههای دیگر
7. نتیجه گیری
منابع
ABSTRACT
1. INTRODUCTION
2. SOFTWARE ENGINEERING FOR MOBILE APPLICATION DEVELOPMENT
3. MOBILE APPLICATION DEVELOPMENT PROCESS
4. CHARACTERISTICS OF MOBILE APPLICATIONS
5. MOBILE APPLICATION DEVELOPMENT CHALLENGES
6. MOBILE APPLICATION DEVELOPMENT BEST PRACTICES
6.1 Planning
6.2 Requirements
6.3 Design and Architecture
6.4 User Experience
6.5 Development
6.6 Testing
6.7 Deployment
6.8 Maintenance and Support
6.9 Other Aspects
7. CONCLUSION
REFERENCES