Article Preview
Top1. Introduction
Mobile applications are software systems that run on hand-held devices such as smart-phones, iPads and tablet PCs. A number of programming languages are used in developing these applications such as Java, which is used in Android applications, C which is used in iOS, and C#, which is used in Windows. Every company or sales clerk provides a place or a channel through which to distribute their applications such as “Google Play” for Android applications or “App Store” for iOS devices. According to Minelli and Lanza (2010) mobile application markets are rapidly increasing to the point that billions of dollars is now spent on these applications.
Mobile applications, like any other software, have become more complex and need to be constantly evolved in order to: fix bugs, add or remove functions, enhance user interface, etc. The increase in complexity and size of the software is affected by various quality factors like understandability, reliability, testability and maintainability. The maintenance operation is very time consuming and requires a great deal of effort. One of the main problems facing the maintenance process is that software engineers may not have a good understanding of the source code. A study carried out by Nazir, et.al (2010) shows that the maintenance process can cost 60-77% of the total cost of a system, and 50% of the software engineer’s time may be taken up by trying to understand the code. The understandability of the software system is very important and the maintenance team will not produce any new bugs if they understand the code properly. Sometimes the maintenance programmers do not write the source code, so they need to spend time reading and understanding the software and other documentation. Any misunderstanding in the software may cause a failure to deliver a qualified product. Reto (2012) states that since Android is an open source and anyone can modify it, there is no consistent software layout or design; however, it should at least support particular features like storage, connectivity, web browser, multi-tasking and many other features that influence Android applications software. This paper focuses on how the understandability of the Android applications is measured and what metrics and tools are related to the applications’ understandability.
Understandability of any software system is very significant in the life cycle of software development, to ensure that the software is maintainable and testable and also to minimize both cost and time. Jacob and Waldermarsson (2001) mention that the significance of understandability is obvious as we cannot maintain and evolve something if we do not understand it and how it works. The purpose of this paper is to determine the most important metrics to measure the understandability of Android applications and determine which factors are most influential in the measurement of understandability using the appropriate tools. The paper will test the following research hypothesis statements:
H0: Android software metrics are effective in measuring the understandability of Android applications.
H1: Android software metrics are not effective in measuring the understandability of Android applications.
We will reject the null hypothesis (H0) if no Android software metrics appear in the understandability index formula. To test H0, a dataset (DS) is defined that shows the values of software metrics, and regression analysis is also used to build the understandability index formula from the given values of the software metrics.
Top2. Background
At the beginning of 2005, as an aspect of its delineation, Google bought Android and everything related to it. They decided to make Android an open source, so anyone could download the Android application code and use it or add new features to it. Also, stakeholders could apply their own special features to it, which would encourage many development companies to produce an effective product in order to match the demand.
The major characteristic of the adopting Android is that it represents an integrated approach in the development of Android applications. According to Reto (2012) development companies must be able to develop their own applications that are capable of being run on all kinds of smart-phone devices.