Our Development Process
Innolance uses Agile Development Process methodology for rapid delivery of high quality software at an affordable cost.
What is Agile?
Agile methodology follows an iterative approach in the development of the software. This helps to minimize the overall risk, and allows the project to adapt to changes quickly and does not require a requirements freeze upfront. Work is carried out in iterations, which typically last one to six weeks.
Agile development methods emphasize effective communication over written documents. The Project requirements are well documented upfront. Then, depending upon business priority, these features are assigned to releases, which are tied to iterations. Each agile team will contain a customer representative.
Agile development methods emphasize working software as the primary measure of progress. There are several popular agile methodologies like Scrum and Extreme Programming (XP). One of the fundamental ideas of XP is that not one process fits every project, but rather, practices should be tailored to the needs of individual projects. Almost all agile methods are suitable for method tailoring. We create a customized process for each client, taking his specific needs into account. We understand the importance of customization when it comes to client requirements.
As of 2009, the waterfall model is still in common use. Progress is generally measured in terms of deliverable artifacts: requirement specifications, design documents, test plans, code reviews and the like.
The main problem with the waterfall model is the inflexible division of a project into separate stages, so that commitments are made early on, and it is difficult to adapt to changes in requirements. This means that the waterfall model is likely to be unsuitable if requirements are not well understood or are likely to change in the course of the project. The waterfall model is bureaucratic, slow, demeaning, and inconsistent with the ways that software developers actually perform effective work.
Agile development methods produce completely developed and tested features of a small subset of the project once in every few weeks. The emphasis in Agile methodology is on obtaining the smallest workable piece of functionality to deliver business value early, and continually improving it and adding further functionality throughout the life of the project.
Why other methodologies fail:
- Lack of end-user (customer) involvement
- Poor requirements
- Unrealistic schedules
- Lack of change management
- Lack of testing
- Inflexible and bloated processes
Why is Agile successful?
- The web-based model allows companies to launch a bare bones version of the product first, get feedback from end-users and then incrementally add new features based on that feedback.
- Products have to be developed with the latest technologies in a short time frame incorporating the need to changes so that the product is not outdated by the time of launch.
- Agile may not address every software development problem, but it is a very profound step in the right direction.
It makes a serious attempt at addressing many of the key problems with current software development processes by empowering and respecting the people who are part of the process and by taking a pragmatic and realistic approach to the software development business. In this respect, agile critics may assert that these features are not placed in context of the overall project, concluding that, if the sponsors of the project are concerned about completing certain goals with a defined timeline or budget, agile may not be appropriate. Proponents of agile development counter that, adaptations of Scrum show how agile methods are augmented to produce and continuously improve a strategic plan.
What is SCRUM?
Scrum is an iterative incremental process of software development commonly used with agile software development. It is the default process we use. Scrum can be implemented at the beginning of a project or in the middle of a project or product development effort that is in trouble -often within thirty days.
Scrum is a set of interrelated practices and rules that optimize the development environment, reduce organizational overhead, and closely synchronize market requirements with iterative prototypes. Based on modern process control theory, Scrum causes the best possible software to be constructed given the available resources, acceptable quality, and required release dates. Useful product functionality is delivered every thirty days as requirements, architecture, and design.
A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want. Scrum accepts the fact that no problem can be fully understood or defined and hence focuses on maximizing the team's ability to deliver quickly and respond to emerging requirements. One of Scrum's biggest advantages is that it is very easy to learn and requires little effort to start using.