In simple terms it means developing a software program. In somewhat technical terms it is “Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks resulting in a software product.”

In Software Development includes all the stages and processes starting from the ideation till the final rollout. That is all the stages from the stage when it is conceptualized through the stage of requirement gathering through design and development passing the testing cycles and reaching to the target audiences. Everything that comes in between is part of Software Development.

At UpLift we follow various traditional methodologies like Waterfall, Prototyping, Iterative, Spiral, RAD. We are also well versed with more flexible and agile methodologies like Scrum, Agile. Based on the requirement and needs proper development model is selected and implemented.

Terminology ↴

Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.

The sequential phases in Waterfall model are:

  • Requirement Gathering and analysis
  • System Design
  • Implementation
  • Integration and Testing
  • Deployment of system
  • Maintenance

V - Model is an extension of the waterfall model and is based on association of a testing phase for each corresponding development stage. This means that for every single phase in the development cycle there is a directly associated testing phase. This is a highly disciplined model and next phase starts only after completion of the previous phase.

Following are the Verification phases in V-Model:

  • Business Requirement Analysis
  • System Design
  • Architectural Design
  • Module Design

Iterative process starts with a simple implementation of a subset of the software requirements and iteratively enhances the evolving versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are added. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).

Like other SDLC models, Iterative and incremental development has some specific applications in the software industry. This model is most often used in the following scenarios:

  • Requirements of the complete system are clearly defined and understood
  • Major requirements must be defined; however, some functionalities or requested enhancements may evolve with time.
  • There is a time to the market constraint.
  • A new technology is being used and is being learnt by the development team while working on the project.
  • Resources with needed skill set are not available and are planned to be used on contract basis for specific iterations.
  • There are some high risk features and goals which may change in the future.

The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model.

Spiral model is a combination of iterative development process model and sequential linear development model i.e. waterfall model with very high emphasis on risk analysis.

It allows for incremental releases of the product, or incremental refinement through each iteration around the spiral.

  • Identification
  • Design
  • Construct or Build
  • Evaluation and Risk Analysis

Agile SDLC model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product.

Agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In agile the tasks are divided to time boxes (small time frames) to deliver specific features for a release.

Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.

  • Individuals and interactions
  • Working software
  • Customer collaboration
  • Responding to change

Rapid application development (RAD) is a software development methodology that uses minimal planning in favor of rapid prototyping. A prototype is a working model that is functionally equivalent to a component of the product.

In RAD model the functional modules are developed in parallel as prototypes and are integrated to make the complete product for faster product delivery.

The most important aspect for this model to be successful is to make sure that the prototypes developed are reusable.

RAD model distributes the analysis, design, build, and test phases into a series of short, iterative development cycles. Following are the phases of RAD Model:

  • Business Modeling
  • Data Modeling
  • Process Modeling
  • Application Generation
  • Testing and Turnover