Software Development Lifecycle is crucial in Desktop or web application development. Mobile applications are being developed for deployment in smartphones. Looking at the rising need for mobile applications and the associated development complexity, it is imperative to have a dedicated framework lifecycle for mobile applications -Mobile Application Development Lifecycle (MADLC). The proposed lifecycle includes the following phases: Identification, Design, Development, Prototyping, Testing, and Maintenance. This lifecycle has been used for over a year in developing Android mobile applications. This lifecycle addresses some of the distinguishing characteristics of mobile applications like life span, complex functionalities, fewer physical interfaces, more screens for interaction, battery and memory usage, cross-platform development, and maintenance. The preliminary indicators are that this will benefit the mobile developers to follow the development process within MADLC to build robust and optimal control applications.
A Software development lifecycle process is a type of structure or framework used in the development of any software product. There are many different lifecycle models defined. The waterfall model, spiral model, and prototyping model are a few such models. Each model is described by a sequence of activities. The development steps or the activities may vary in every model but all the models will include planning, requirement, analysis, design, etc. The waterfall model emphasizes more on the step-bystep process. The spiral model emphasizes risk assessment while the prototyping model takes an incremental approach in every phase of the development process.
Designing the product to fulfill the requirements of the user based on the different standard development lifecycle models is a crucial aspect of the development process. A pre-defined development process is of the essence. The development lifecycle might be impacted if the development occurs incrementally. If the customer is engaged in the development process, customer requirements are better implemented by the end of the development process leading to better customer satisfaction.
The waterfall model, Spiral model, Iterative model, and Prototyping model are some of the software development lifecycle models widely used in the industry. There is a need to have a distinct mobile application development lifecycle model: mobile application development involves various complex functionality and services like telephony services, location-based services, and different connectivity modes.
A. Desktop Software Application Development Process
Development of any desktop application involves similar phases of any SDLC irrespective of the technology being used. The output of every phase in SDLC feeds into the next phase. For instance, the requirements gathered during the planning phase are analyzed in the next phase. These refined requirements are then designed in the Design Phase. The design is then implemented in the Implementation Phase. The code generated during the implementation phase is verified and tested. Customer support is provided for the designed and deployed application.
B. Mobile Application Development Process
Intel IT has created a mobile application development framework: this framework defines specific activities, tools, and resources, to support the planning, development, and deployment of mobile applications. Intel has a two-step process defined for developing a mobile application.
ü Use a pre-defined decision matrix; to verify whether the application is suitable for mobile development.
ü Determine the process to be used in delivering the application.
“Enterprise Mobile Application Lifecycle”: this process is for end-to-end mobile application development. This lifecycle has the following four different phases:
ü Discovery
ü Design
ü Development/Testing
ü Deployment
Initially, the mobile applications were only developed to implement calculator, calendar, alarm, and currency converter functionalities. With the advent of 2G and 3G mobile networks, web-based mobile applications were implemented on a variety of platforms; many of the existing web-based applications were ported to platforms on the mobile device. These web-based applications included social networking, blogging, and sharing of multimedia such as music, photos, and video over the web.
Mobile applications can be classified into five major categories [6]: Social Networking, Personal Productivity, Leisure-based, Transaction-Based, and Content Dissemination-Based.
Mobile application development has received a boost with two major developments. One development pertains to the availability of increased network bandwidth going from 2G to 3G and now to LTE. The second significant development is on the mobile device side: large screen, increased memory, and high-speed processing capability. Developers are motivated by these technological advances to create more innovative applications and services.
The differences between PC application development and mobile application development are discussed below.
Life Span
The mobile application is developed to implement one or a few limited functionality. Java, Objective-C, .net, and similar traditional development frameworks are used. Due to these factors, the number of mobile application developers is large. Given this intense competition in the mobile application space, the life span of a mobile application is less as compared to that of any desktop application.
Complex Functionalities
Mobile application development involves complex functionality to interface with telephony, camera, GPS, etc. When desktop applications are considered the development of the application is much more restricted to the desktop or the laptop device. On the other hand, mobile applications may require the implementation of telephony functionality to send/receive messages or handle voice calls; the application may also require the implementation of GPS functionality to track location by fetching latitude and longitude data.
Fewer physical interfaces
Desktop laptops have different physical interfaces such as keyboard, mouse, touch panel, and other external devices but the mobile physical interfaces are strictly restricted to the touch panel or the mobile keyboard. The size of the touch panel and keyboard is smaller than that of the laptop. These differences should be considered in the design of mobile applications to make them user-friendly despite fewer physical interfaces.
A number of screens for Interaction
The large screen on a desktop or laptop permits more functionality to be designed on one screen. With a smaller screen size being available, the mobile application requires more layered screens to support similar functionality as a single large screen. Furthermore, the mobile application developer should optimize the functionality design to maximally utilize the screen available for display.
Battery & Memory usage by the application
Optimal usage of the battery and memory is a major design consideration in developing mobile applications: the mobile phone is on all day round with many applications and services being constantly executed. The mobile applications should be designed to optimally utilize the memory available. The idle processes running on a desktop or laptop would not consume a significant percentage of the available battery or memory in a desktop or laptop as do the telephony applications on the mobile device.
Cross Platform Development
Many mobile operating system platforms share the market rather equally; developing a mobile application on one platform will not suffice in maximizing access to users. A key factor in choosing mobile application features is its portability to all major platforms. For example, the Android platform is open source making it developer-friendly. But other mobile platforms like iOS, Windows, BlackBerry are proprietary: they are closed and restrict developers’ access to internals and thereby limiting features that can be implemented on the platform. The limitation does not exist in the same magnitude in desktop and laptop application development.
Updates
With desktop or laptop applications often sold to the user on a CD, the user registration is not tied to the sale and is optional. Mobile applications are more often than not downloaded from the application store; user registration goes hand in hand with the download. Hence, it is easier to provide updates for mobile applications than for desktop or laptop applications.
MOBILE APPLICATION DEVELOPMENT LIFECYCLE MODEL (MADLC)
As mobile applications have complex functionality and are different from desktop applications, the following Mobile Application Development Lifecycle model (MADLC) is proposed to enable a systematic approach to development.
A. Identification Phase
In the first phase, ideas are collected and categorized. The main objective of this phase is to come out with a new idea or improvements to the existing application. The ideas can come from the customer or the developers.
If the customer himself comes out with the idea, the idea is further detailed and analyzed. Developers can brainstorm to generate ideas for new applications. The filtered list of ideas is discussed by the mobile application idea team comprising of the business and IT representatives for the feasibility of launching a project around the idea.
The existing applications on any of the standard platforms are searched to establish the novelty of the idea. If a similar application exists in the market, the popularity of the application and the features supported are studied and compared. The differences with the existing application(s) are documented. If no similar application exists on any mobile platform, then the idea with its core functionality should be documented. The other important task in this phase is to define the time required to develop the application. The initial requirement gathering should also be completed. The work done by the mobile application idea team should then be documented and forwarded to the design team.
Fig 1. Identification Phase
B. Design Phase
In this phase, the idea from the mobile application team is developed into an initial design of the application.
The feasibility of developing the application on all mobile platforms is determined. Alternatively, the specific target mobile platform is identified. A decision has to be made on whether the developed application is to be released as a free version or a trial version with limited features or released only as a premium version. The application functionality is broken down into modules and into prototypes i.e., a combination of modules that are to be released in the prototype fashion. The functional requirements are defined. The software architecture of the application is created. Then the prototypes and associated modules are defined. A very important part of the design phase is to create the storyboard for the user interface interaction: this storyboard describes the flow of the application. The design team’s work is documented and forwarded to the development team for coding.
Fig 2. Design Phase
C. Development Phase
In this phase, the application is coded. Coding for different modules of the same prototype can proceed in parallel. The development process can be in two stages: Coding for Functional Requirements and Coding for UI requirements. The code is developed first for the core functionalities. Parallel development can be done for modules of the same prototype that are independent of each other. Subsequently, these modules can be integrated. In the second stage, the user interface is designed so that it can be supported on as many mobile operating system platforms as possible; it is not good practice to have a different look and feel for the same application on different platforms. The minimum set of interface components present in all mobile OS platforms should be used in the design. Finally, the documentation of the development phase is then forwarded to the prototyping phase.
Fig 3. Development Phase
D. Prototyping Phase
In this phase, the functional requirements of each prototype are analyzed; the prototypes are tested and sent to the client for feedback. After feedback is received from the client, the required changes are implemented through
the development phase. When the second prototype is ready, it is integrated with the prototype, tested, and then sent to the client. The development, prototyping, and testing phases are repeated until the final prototype is ready. The final prototype is sent to the client for final feedback. The work done in this prototyping phase is documented and then forwarded to the testing phase.
Fig 4. Prototyping Phase
E. Testing Phase
Testing is one of the most important phases of any development lifecycle model. The testing of the prototype types is performed on an emulator/simulator followed by testing on the real device. The emulator/simulator is often provided in the SDK. The testing on the real device, for example in the case of Android operating system development, should be performed on multiple operating system versions, and multiple models of handsets with variable screen sizes. The test cases are documented and forwarded to the client for feedback.
Fig 5. Testing Phase
F. Deployment Phase
Deployment is the final phase of the development process. After the testing is completed and the final feedback is obtained from the client, the application is ready for deployment. The application is uploaded to the appropriate application store/market for user consumption. Before the application is deployed, the following steps are to be checked.
- Register as a developer on the respective application developer’s website by paying the annual fee, if necessary, for the respective OS.
- Check the rules and regulations of the application store for the deployment of an application.
- Refine the application, for example, by removing all the log files and comments.
- Design the icon and wallpaper to be used on the application store.
- Create the file format required on the operating system platform.
Fig 6. Deployment Phase
G. Maintenance Phase
The maintenance is the final phase of this model and this maintenance is a continuous process. Feedback is collected from users and required changes are made in the form of bug fixes or improvements. Appropriate security patches, performance improvements, additional functionality, and new user interfaces should be provided at regular intervals in the form of updates to the application. The maintenance phase also includes the marketing of the application: advertising and highlighting its unique features. If any application requires a backend server: this server and related operating.
Fig 7. Maintainance Phase
PRELIMINARY RESULTS OF APPLYING THE MADLC
An industry-oriented application was developed using the MADLC model. This application includes the use of GPS locating service, and telephony services like sending SMS and configuring device profiles. The development of this application development provided a test case for the proposed MADLC. All the functional requirements of the application were divided into various modules and delivered in a prototype fashion to the organization at various intervals. The outcome of the development process is that this model helped the developers to plan and execute the application involving various features more effectively.
A Mobile Application Development Lifecycle (MADLC) has been proposed to bring out a formal lifecycle for mobile application development. MADLC will aid mobile application developers in developing high-end apps. This lifecycle includes the following phases: Identification,
Design, Development, Prototyping, Testing, and Maintenance. The different tasks and activities in the various phases of MADLC have been discussed. This lifecycle also addresses some of the distinguishing characteristics of mobile applications like life span, complex functionalities, fewer physical interfaces, more screens for interaction, battery and memory usage, cross-platform development, and maintenance. Preliminary testing of the MADLC indicates that this lifecycle will help developers and project managers efficiently execute projects and deliver solutions on time.