Interesting Reading 

Software Development Life Cycle Models and Methodologies

Introduction

 

The software industry includes many different processes, for example, analysis, development, maintenance and publication of software. This industry also includes software services, such as training, documentation, and consulting.

 

Our focus here about software development life cycle (SDLC). So, due to that different types of projects have different requirements. Therefore, it may be required to choose the SDLC phases according to the specific needs of the project. These different requirements and needs give us various software development approaches to choose from during software implementation.

 

Types of Software developing life cycles (SDLC)

 

·      Waterfall Model

·      V-Shaped Model

·      Evolutionary Prototyping Model

·      Spiral Method (SDM)

·      Iterative and Incremental Method

·      Extreme programming (Agile development)

 

Waterfall Model

Description

 

The waterfall Model is a linear sequential flow. In which progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete. The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement. The waterfall approach is the earliest approach that was used for software development.

The usage

Projects did not focus on changing requirements, for example, responses for request for proposals (RFPs)

 

Advantages and Disadvantages

Advantages

Disadvantages

·      Easy to explain to the user· Structures approach.· Stages and activities arewell defined· Helps to plan and schedule the project· Verification at each stage ensures early detection of errors / misunderstanding· Each phase has specific deliverables

·      Assumes that the requirements of a system can be frozen· Very difficult to go back to any stage after it finished.· Little flexibility and adjusting scope is difficult and expensive.· Costly and required more time, in addition to detailed plan

 

V-Shaped Model

Description

 

It is an extension for waterfall model, Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The major difference between v-shaped model and waterfall model is the early test planning in v-shaped model.

 

 

The usage

·      Software requirements clearly defined and known

·      Software development technologies and tools is well-known

 

Advantages and Disadvantages

Advantages

Disadvantages

·      Simple and easy to use.· Each phase has specific deliverables.· Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.· Works well for where requirements are easily understood.

·      Very inflexible, like the waterfall model.

·      Little flexibility and adjusting scope is difficult and expensive.· Software is developed during the implementation phase, so no early prototypes of the software are produced.· Model doesn’t provide a clear path for problems found during testing phases.· Costly and required more time, in addition to detailed plan

 

Evolutionary Prototyping Model

Description

 

It refers to the activity of creating prototypes of software applications, for example, incomplete versions of the software program being developed. It is an activity that can occur in software development. It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations may occur in waterfall approach and hard to be implemented due to inflexibility of the waterfall approach. So, when the final prototype is developed, the requirement is considered to be frozen.

It has some types, such as:

 

·      Throwaway prototyping: Prototypes that are eventually discarded rather than becoming a part of the finally delivered software

 

 

·      Evolutionary prototyping: prototypes that evolve into the final system through iterative incorporation of user feedback.

·      Incremental prototyping: The final product is built as separate prototypes. At the end the separate prototypes are merged in an overall design.

 

·      Extreme prototyping: used at web applications mainly. Basically, it breaks down web development into three phases, each one based on the preceding one. The first phase is a static prototype that consists mainly of HTML pages. In the second phase, the screens are programmed and fully functional using a simulated services layer. In the third phase the services are implemented

 

The usage

This process can be used with any software developing life cycle model. While this shall be focused with systems needs more user interactions. So, the system do not have user interactions, such as, system does some calculations shall not have prototypes.

 

Advantages and Disadvantages

Advantages

Disadvantages

·      Reduced time and costs, but this can be disadvantage if the developer lose time in developing the prototypes· Improved and increased user involvement

·      Insufficient analysis· User confusion of prototype and finished system· Developer misunderstanding of user objectives· Excessive development time of the prototype· Expense of implementing prototyping

 

Spiral Method (SDM)

Description

 

It is combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. This model of development combines the features of the prototyping model and the waterfall model. The spiral model is favored for large, expensive, and complicated projects. This model uses many of the same phases as the waterfall model, in essentially the same order, separated by planning, risk assessment, and the building of prototypes and simulations.

 

The usage

It is used in shrink-wrap application and large system which built-in small phases or segments.

 

Advantages and Disadvantages

Advantages

Disadvantages

·      Estimates (i.e. budget, schedule, etc.) become more realistic as work progresses, because important issues are discovered earlier.· Early involvement of developers· Manages risks and develops system into phases

·      High cost and time to reach the final product.· Needs special skills to evaluate the risks and assumptions· Highly customized limiting re-usability

 

Iterative and Incremental Method

Description

 

It is developed to overcome the weaknesses of the waterfall model. It starts with an initial planning and ends with deployment with the cyclic interactions in between. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental), allowing software developers to take advantage of what was learned during development of earlier parts or versions of the system.

It consists of mini waterfalls

 

The usage

It is used in shrink-wrap application and large system which built-in small phases or segments. Also can be used in system has separated components, for example, ERP system. Which we can start with budget module as first iteration and then we can start with inventory module and so forth.

 

Advantages and Disadvantages

Advantages

Disadvantages

·      Produces business value early in the development life cycle· Better use of scarce resources through proper increment definition· Can accommodate some change requests between increments· More focused on customer value than the linear approaches· Problems can be detected earlier

·      Requires heavy documentation· Follows a defined set of processes· Defines increments based on function and feature dependencies· Requires more customer involvement than the linear approaches· Partitioning the functions and features might be problematic· Integration between iteration can be an issue if this is not considered during the development.

 

Extreme programming (Agile development)

Description

 

It is based on iterative and incremental development, where requirements and solutions evolve through collaboration between cross-functional teams.

 

The usage

It can be used with any type of the project, but it needs more involvement from customer and to be interactive. Also, it can be used when the customer needs to have some functional requirement ready in less than three weeks.

 

Advantages and Disadvantages

Advantages

Disadvantages

·      Decrease the time required to avail some system features.· Face to face communication and continuous inputs from customer representative leaves no space for guesswork.· The end result is the high quality software in least possible time duration and satisfied customer

·      Scalability· Skill of the software developers· Ability of customer to express user needs· Documentation is done at later stages· Reduce the usability of components.· Needs special skills for the team.

 

Modeling the Mobile Application Development Lifecycle


 

 

Abstract

 

Software Development Lifecycle is crucial in Desktop or web application development. Mobile applications are being developed for deployment in smart phones. Looking at the rising need of mobile applications and the associated development complexity, it is imperative to have a dedicated framework lifecycle for mobile application -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 number of 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.

 

 

I. INTRODUCTION

 

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. Waterfall model, spiral model, 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 each and every model but all the models will include planning, requirement, analysis, design etc. The waterfall model emphasizes more on the step-by­step process. The spiral model emphasizes on risk assessment while the prototyping model takes an incremental approach in each and 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 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.

 

Waterfall model, Spiral model, Iterative model and Prototyping model are some of the software development lifecycle models widely used in the industry. There is 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.

 

II. LITRATURE SURVEY

 

A. Desktop Software Application Development Process

 

Development of any desktop application involves similar phases of any SDLC irrespective of technology being used. The output of each and 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 an 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, sharing of multimedia such as music, photos, 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 few but 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 mobile application space, the life span of mobile application is less as compared to that of any desktop application.

 

Complex Functionalities 

 

Mobile application development involves complex functionality to interface to telephony, camera, GPS etc. When desktop application 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 laptop have different physical interfaces such as keyboard, mouse, touch panel and other external devices but the mobile physical interfaces are strictly restricted to 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.

 

More Number of screens for Interaction

 

The large screen on a desktop or laptop permits more functionality to be designed in one screen. With a smaller screen size being available, the mobile application requires more number of layered screens to support a 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 the 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.

 

III. MOBILE APPLICATION DEVELOPMENT LIFECYCLE MODEL (MADLC)

 

As the mobile applications have complex functionality and are different from the desktop applications, the following Mobile Application Development Lifecycle model (MADLC) is proposed to enable a systematic approach in  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 from 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 to launch a project around the idea.

 

The existing applications on any of the standards 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 platform 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 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., combination of modules which 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 Requirement 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, 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 first 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 a 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, multiple models of handsets with variable screen size. 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 the 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 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 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, performances improvements, additional functionality, 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

 

IV. PRELIMINARY RESULTS OF APPLYING THE MADLC

 

An industry-oriented application was developed using MADLC model. This application includes use of GPS locating service, telephony services like sending SMS, configuring device profile. 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 in a more effective manner.

 

V. CONCLUSION

 

A Mobile Application Development Lifecycle (MADLC) has been proposed to bring out a formal lifecycle for mobile application development. MADLC will aid the 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 number of 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 in efficiently execute projects and deliver solutions on time.

 

© Sanjay Kumar 2017