Cataloguing Strategic Innovations and Publications
Software Development Life Cycle Models and Methodologies
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 the 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 Methods
· 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 of going back to the previous phase to handle changes in requirements. 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 to requests for proposals (RFPs)
Advantages and Disadvantages
· Easy to explain to the user· Structures approach.· Stages and activities are well 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 is finished.· Little flexibility and adjusting scope is difficult and expensive.· Costly and required more time, in addition to a detailed plan
V-Shaped Model
Description
It is an extension of the waterfall model, Instead of moving down linearly, the process steps are bent upwards after the coding phase, to form the typical V shape. The major difference between the v-shaped model and the waterfall model is the early test planning in the v-shaped model.
The usage
· Software requirements are clearly defined and known
· Software development technologies and tools are well-known
Advantages and 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 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 a 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 is used to visualize some components of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations that may occur in the waterfall approach and hard to implement due to the 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. In the end, the separate prototypes are merged into an overall design.
· Extreme prototyping: used in web applications mainly. 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 on systems that need more user interactions. So, the system does not have user interactions, such as, the system does some calculations shall not have prototypes.
Advantages and Disadvantages
· Reduced time and costs, but this can be a disadvantage if the developer loses 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, to combine the 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 applications and large systems with built-in small phases or segments.
Advantages and 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 Methods
Description
It is developed to overcome the weaknesses of the waterfall model. It starts with 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 the development of earlier parts or versions of the system.
It consists of mini waterfalls
The usage
It is used in shrink-wrap applications and large systems with built-in small phases or segments. Also can be used in a system that has separated components, for example, an ERP system. We can start with the budget module as the first iteration and then we can start with the inventory module and so forth.
Advantages and 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 iterations 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 project, but it needs more involvement from customers and is interactive. Also, it can be used when the customer needs to have some functional requirement ready in less than three weeks.
Advantages and Disadvantages
· Decrease the time required to avail some system features.· Face to face communication and continuous inputs from customer representatives leaves no space for guesswork.· The result is high-quality software in the least possible time duration and a 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
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.