At PIT Solutions, we follow Waterfall and Agile Software Development methodologies. Most of our projects run on Agile Software Development methodology. Hence we describe it first here. Agile Software Development methodology refers to a group of software development methodologies that are based on similar principles. According to the Wikipedia, agile methodologies generally promote:
There are many agile methods available, of which we find that Extreme Programming and Scrum are the two methods that are best suited for us to provide you the maximum benefits. Any one of these methods alone has inherent drawbacks. So we have adopted a hybrid method by blending the benefits of both.
Among the different agile practices, we have adopted Test Driven Development and Continuous Integration. Again, any one of these practices alone limits the flexibility in some solution development situations. So we have gone in for the concoction that is difficult for our competitors to beat.
Scrum is the other agile software development method that we use in combination with Extreme Programming for our hybrid agile software development method. It is an iterative incremental process with clear guidelines, practices to be followed, and predefined roles. The main roles in Scrum are:
The method has incremental completion periods called sprints, the periodicity of which is decided by the team. Each sprint creates an increment of usable software. The Product Owner tells the team of the items in the product backlog during the sprint planning meeting. The team analyzes and decides how much of this backlog can be committed for the next sprint. Once the sprint is completed, we get a usable increment of software which is demonstrated to the client.
We find Scrum a beneficial method for you because of its empirical approach – accepting that the entire solution you need cannot be fully and accurately defined at the start of the project itself. Instead, the focus is on maximizing our team’s ability to deliver fast and respond quickly to your changing requirements. As the project completes, you get exactly you want now, instead of what you thought you wanted at the start of the project.
Kanban as per definition by agilealliance, is a means to design, manage, and improve flow systems for knowledge work. The method also allows organizations to start with their existing workflow and drive evolutionary change. They can do this by visualizing their flow of work, limit work in progress (WIP) and stop starting and start finishing.
Kanban can be used in any knowledge work setting, and is particularly applicable in situations where work arrives in an unpredictable fashion and/or when you want to deploy work as soon as it is ready, rather than waiting for other work items.
Extreme Programming (or XP) is an agile methodology that aims to reduce the cost of changes that are an inevitable aspect of all software projects. Your requirements are bound to change a bit even as we are in the process of building the solution for you. Extreme Programming prescribes the set of practices to be followed to tackle and incorporate ongoing changes smoothly without upsetting the rhythm of the development process. By adopting the good aspects of Extreme Programming, we stress that we understand that changes in your requirements at any stage of solution development are very important to meet your business goals. This methodology ensures that your changes get incorporated with the lowest possible cost impact.
Test Driven Development, also known as TDD, uses short development iterations based of pre-written test cases. The test cases define desired improvements or new functions. Each iteration results in code needed to pass that iteration’s tests. Preparing tests before coding aids rapid feedback changes.
A typical cycle development cycle is as shown in the chart.
Better software can be built faster by using TDD. The reason is the ability to take small steps and also ensures that all written code is covered by a test. Large numbers of tests help to limit the number of defects in the code and also to catch them early in the development cycle. This obviates the need for tedious debugging at a later stage.
Continuous Integration, or CI, is a software development practice in which the stress is on frequent integrations – usually each person in the team integrates at least daily, leading to multiple integrations per day. This is in contrast to the traditional method of integration happening only at the end stages of a project.
Verification of each integration is done by an automated build (including test) to detect and rectify integration errors as quickly as possible. We reap the full benefits of CI through keep the builds fast, automating them, maintaining a code repository, etc.
Continuous integration has many advantages:
Waterfall methodology is a linear project management approach, where customer requirements are gathered at the beginning of the project, and then a project plan is created to accommodate those requirements. The waterfall method is so named because each phase of the project goes on to a logical progression into the next, following steadily down like a waterfall.
It’s a thorough, structured methodology that is a perfect model for well defined projects. The six phases of waterfall model are Requirements gathering, Analysis, Design, Coding, Testing and Deployment.