Software Engineering: Challenges and their Solution in Mobile App Development

Mobile app development is increasing rapidly due to the popularity of smartphones. With billions of apps downloads, the Apple App Store and Google Play Store succeeded to overcome mobile devices. Throughout last 10 years, the amount of smartphones and mobile applications has been perpetually growing. Android and iOS are two mobile platforms that cowl most smartphones within the world in 2017. However, this success challenges app developers to publish high-quality apps to stay attracting and satisfying end-users. Developing a mobile app involves first to select the platforms the app can run, so to develop specific solutions (i.e., native apps). During application development a developer come across multiple challenges. In this paper, we have tried to find out challenges faced by developer during their development life cycle with their possible solution. Keywords—Android; IOS; mobile apps; software quality; survey research; user requirements


I. INTRODUCTION
The popularity of smart phone has gain the attention of developers. Smartphones are mobile devices that run software applications such as games, social network and banking apps. There are almost 4.77 billion mobile phone users in 2017.Mobile applications are software applications developed for use on mobile devices [9]. Total number of apps worldwide are hard to come by. There is no statistics on web appsexist too many ways to develop and get them, so it"s almost incredible to count these apps. But we can try to count mobile apps, which are represented on App Store (for apps that work on Apple devices) and Google Play (for apps that work on Android devices). Recent estimations indicate that by 2017 says that there are almost 2,800,000 apps on Google Play, 2.200,000 on Apple Store, 669,000 on window Store, 600,000 on Amazon Store and 234,500 on BlackBerry World [1].
However, programming languages and tools for developing mobile apps are platform-specific, like, Android applications are created in Java via the Android studio, whereas Apple iOS applications are developed either using Objective-C or Swift via the XCode tool.
[7]As a result, to develop and maintain native apps for multiple platforms is a biggest challenge poignant the mobile development community.
Most of the work in the contest of mobile effort estimation has been concerned with the study of the issue that developer face not on their solution. But in this paper we are also providing with proper solution.

A. Online Quotes Analysis
During the first phase, we found the online quotes made available by companies on the web, with the purpose of extracting an initial set of issue with solution. The context of the study consisted of every company having a website and providing an online form for requesting a quote about the development of a mobile apps. We used an automatic search tool, named GOOGLE-SCRAPER1, which is publicly available and open source.

B. Survey with Experts
The goal of this step of the study was to conduct an interview and semi-structured survey by experts having a good knowledge of mobile apps development. The purpose was to exploit the involved experts in order to identify issues and their possible solution. The context of the study was composed by 20 developers with more than 4 years of experience in mobile development and effort estimation.
The selection of the types of participants involved in the study was not random. In fact, the selected project managers are responsible for leading the projects in their companies, in addition to managing the people, resources and the effort needed to complete the project. Some of them work for large companies, while the other work in local companies. The goal is bringing together the opinions of the participants and providing a joint solution.
Based on the idea rising from the interview part, we tend to design a semi-structured survey, as another supply of knowledge. Before publishing the survey, we tend to asked 3 mobile app developers to review the survey, so if there need any improvement or not.

C. Participant Demographics
The participants involve in the interview and survey were 20 in number from different countries and companies .Some of them are IOS developer and remaining were android developer. We interviewed 10 developers from different companies and from remaining 10 we filled out the survey due to location issue. During each interview we write down their answer for www.ijacsa.thesai.org analysis. Table I represent each interviewer role with the mobile platforms in which they have expertise in and their work experience in mobile development.
Our survey was absolutely completed by 10 respondents. We conduct this survey on Aug 3, 2017 to a mobile development groups. They respondents belong to different countries and different age groups.

A. Creating Universal User Interfaces/ Standard for GUI Designing of App Development
Some research is already being done for creating a universal UI for mobile devices. Every mobile platform provide a distinct way for developer to address UI requirements. A noteworthy idea for mobile User Interface development identifies with screen size and its resolution for example Apple gadgets size are restricted based on the size of the iPhone and the iPad while Android give screens of dynamic sizes and resolutions.
Thus, UI design is tough and mobile application developers tough anticipate the targeted device [2]. Shneiderman"s "8 [3] Golden Rules of Interface Design" are well received since their introduction [5]. However, these rules might not equally apply to mobile devices. Research by Gong and Tarasewich recommend that four of Shneiderman"s tips promptly translate to mobile devices, including: enabling frequent users to use shortcuts, providing informative feedback, designing dialogs to yield closure, and supporting internal locus of control.
From interview and survey the developer provides the solution of designing Universal GUI. The IOS developers say that they follow Apple UI guidelines which involves constraints, size classes and ratio to support UI for all apple mobile devices. One IOS developer says there are different ways to designs your GUI in IOS i.e. XIB, MVC. But I mostly follow storyboard, because in storyboard there is easy to handle all views and they provide us same environment like device.
On the other hand Android developers says for GUI standard they are using Material Design. One said that I follow Material Design in most of the apps as it is recommended by Google as it gives better user experience. So if all developer follow apple guidelines and material design the can develop universal GUI for IOS and Android. Units

B. Cross Platform Development Issue
A current challenge for mobile developers is to decide which platform they have to choose for his or her mobile applications. To target large number of users, companies try to develop their app in all platforms i.e. in IOS and Android [4], [5]. The aim to target multiple platform is to target more user so that company can gain more profit and also increase its impact on the market. So Companies afford the charges of developer for developing cross platform app .It"s also time consuming task. So company should hire expert developer for each platform.
A cross-platform mobile app development frame-works is Xamarin. It develop app for both Android and iOS using C#. Developers reuse their existing C# code, and share significant code across device platforms [10]. Xamarin or React-Native are cross platform Frameworks maintained by Microsoft and Facebook. In like manner, the home platform for Apportable is iOS. Developers build apps by utilizing Objective-C and the iOS SDK, and use Apportable [4]. In Fig. 1, overall operation of a cross-platform mobile app development framework, using Xamarin as a concrete example is shown. Developers build apps as they would for the Windows Phone, in C# using calls to the API of the Windows Phone SDK. This code can directly be compiled to Windows Phone apps using the Visual Studio toolchain. Xamarin allows developers to use the same code to build Android or iOS applications. Xamarin provides compatibility libraries that translate Windows SDK API calls in the code to the relevant API calls of the underlying Android and iOS SDKs.
Developers of both IOS and Android says cross platform development is a bigger issue. No doubt Xamarin and React-Native are available for cross platform development are available but their libraries and proper guidelines support are not available. So if we stuck in some point we face a lot of problem that cross platform technologies do not have much help on the internet and they have limited access to the mobiles functionality. Generally they have compatibility issue, memory leakage suitable for small apps.

We ask why software houses not develop apps on cross platform tools ?
They told us Cross platform developers are not found easily with good expertise. Moreover follow cons exist in cross platform like platform limitations, User Experience, Integration challenges so companies are afraid to try new things in terms that they would earn from that in long run or not so they avoid cross platforms.
One said us that native apps have large community and easy to develop other than cross platform. Cross Development requires additional time and effort in order to mimic the native look and feel. Then

We ask developers why they not learn and adopt new development platforms like Xamarin?
They said Some developers want to learn new things and some are not, but if their respective companies encourages and gives time to learn new technologies so they should prefer to learn new things, because time required for learning new technologies and due to burden of pending task project developer have lack of time.
One Said learning new tools depends on the requirement and work required from a developer. A good developer can learn any tool if it's required from him/her with some time but Xamarine is highly priced and there is not much help available online. But they also said with the passage of time these technologies will mostly use for development. One developer also said I don"t think cross platform development should be an issue. It"s all about basic concepts. Object Oriented Concepts remains the same no matter what language (OOP based) we use. I have tried my hand on Unity 3D engine as well and so far, I don"t seem to encounter any problem.

C. Unclear/Frequent Changing Requirements Issue
In Software Application Development if the user change its requirements in the initial stage then it's still alright to adopt the new modification in requirements. If the requirements are changing frequently however the changes are communicated well ahead and enough time is given to testing the application then it is not a problem at all. However, if the requirement change in later stage of SDLC then cost to fix is incredibly high [6].
When we ask the same question from developers: Do unclear/frequent changing requirements affect your development? They said obviously frequent changing in requirements effects the development time and the quality too because when you start developing the app and then the requirement changes you have to reconsider everything as a developer and sometimes it needs to start from the very beginning. They said it is one of the major hurdle in a developer"s task. Requirements are core for any development. If requirements are not clear or vague, it affects badly.
One says For example, if I am developing the app with particular requirements and during development the client changes his mind then I have to change the previously developed classes or modules it may be big change or small, it depends on new change. Unclear changes also waste the time of the both parties. Some developers also provide the solution of this issue they said Agile processes have slots to cope with these situations.

D. Testing Effects on Development
Testing your code is very important. Testing aim is to find more error to make your app more effect. Testing improve the quality of your project/App [5]. Basically small scale organization don"t focus too much on testing, Developer is also a tester means developer test the app which they build, as we know it"s difficult to find our mistakes so a developer can"t test its own app. One developer during interview said that their organization has little concept of testing. Some organization test application only on emulator which has limited features, lack of mobility, location services, sensors, or different gestures, so when application is launch its failed sometime and loss its popularity .
When we ask developer is testing effects your development their answer was yes its effect but in positive way, because we come to know either our app is fulfilling its requirement or not.
Major focus of every testing should be functionality, contentbased and exceptions/crashed/user-behavior.
One Developer says testing aim is to find issue and through these issues I learned new thing and make application perfect. Some says Testing is mostly automated in our company. Some www.ijacsa.thesai.org follow manually testing method .The other says their company follow smoke, Unit, regressive load, alpha and beta testing.
One says mostly we followed scrum system for app but it"s not good for small company because our project is not too big like Facebook or WhatsApp. One of them tell us that we have a QA department in our office. They manually test the apps developed. Apps are tested by running it on different devices.
Testing is compulsory to deliver fine and bug free product. Mostly we don"t get time for fixing the issues because side by side testing is not performed. They said side by side testing must need to make app more stable and after testing we may need some more changes according with better flow and by side by side testing we get time to fix bugs.

E. Technique Used for Supporting New API Features in
Old API Some new APIs have some hardware compatibility, new feature is being introduce in new API which doesn"t being supported in old, which is a big issue for developer. So we ask how they solve this, they said we Use support libraries to use new features of new API in old API. Also if some new feature is not supported by support library then find some custom library to achieve required functionality.

F. Maintenance
One issue developer face is also to maintenance of app during its life cycle which is difficult and challenging task, because sometime it"s very difficult to analyze the reason of app crash.
When app crash, some log should be mail to developer, so that developer can find the reason of crash to fix it.

IV. CONCLUSIONS
Our study has given us a better, more objective understanding of the real challenges faced by the mobile application developers today, past verbose stories with their appropriate solution.
Our outcomes uncover that dealing with various mobile platforms is a standout amongst the most difficult parts of mobile development. Since mobile platforms are moving toward fragmentation as opposed to unification, the development procedure cannot use data and information from a platform to another platform. When the "same" application is developed for multiple platforms, developers now treat the mobile app for each platform independently and manually check that the functionality is preserved across multiple platforms. We also provide solution of cross platform app development through Xamarin. Creating a reusable userinterface design for the app is also a trade-off between consistency and adhering to each platform"s standards. Our study also shows that mobile developers need better analysis tools to measure and monitor their apps. Also, testing is a huge challenge currently. Most developers test their mobile apps manually. Unit testing is not common inside the mobile community and current testing structures don't give a similar level of help for different platforms.
Also, most developers feel that present testing tools/ devices are powerless and temperamental and don"t reinforce fundamental features for mobile testing such as mobility (e.g., changing network connectivity), area administrations, location services, sensors, or different gestures and inputs. Finally, emulators appear to lack several real features of cell phones, which makes analysis and testing considerably additionally difficult.
There remain a large number of complex issues where further work is needed. In addition, there is a mobile "angle" to almost every aspect of software engineering research, where the characteristics of mobile applications and their operating environments present a new or different set of research issues.