RapidSoft Systems Home
RapidSoft Systems Home
Agile Development Process

Agile Software Development Process

Rapidsoft systems is an early adapters of Agile Software Development. And, those organizations that are using internal agile methods will find us very much in sync with their internal models.

We believe that without integrating quality processes with the development processes, no software worth use can be written. Any software is only as good as the people who wrote and the processes they followed during development. Our project managers are trained on various QoS processes such as ISO 9000, and SEI CMM and have managed large software engineering teams for Fortune 500 corporations in the USA.

Understanding Agile Development

Agile methods break tasks into small increments with minimal planning, and doesn't directly involve long-term planning. Iterations are short time frames ("timeboxes") that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders. This helps minimize overall risk, and lets the project adapt to changes quickly. Stakeholders produce documentation as required. An iteration may not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. Multiple iterations may be required to release a product or new features.

Agile Principles

Agile methods are a family of development processes, not a single approach to software development. The Agile Manifesto states:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

Agile Software Development
Scrum Reiterative Development method

That is, while there is value in the items on the right, Agile folowers value the items on the left more.

Some of the principles behind the Agile Manifesto are:

- Customer satisfaction by rapid, continuous delivery of useful software
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Even late changes in requirements are welcomed
- Close, daily cooperation between business people and developers
- Face-to-face conversation is the best form of communication (co-location)
- Projects are built around motivated individuals, who should be trusted
- Continuous attention to technical excellence and good design
- Simplicity
- Self-organizing teams
- Regular adaptation to changing circumstances

The manifesto spawned a movement in the software industry known as agile software development.

Scrum Development

Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development.

Scrum is a "process skeleton," which contains sets of practices and predefined roles. The main roles in Scrum are:

The "ScrumMaster": who maintains the processes (typically in lieu of a project manager);

The "Product Owner": who represents the stakeholders;

The "Team": a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.

Scrum Software Development
Scrum Reiterative Development method

During each "sprint", typically a two to four week period (with the length being decided by the team), the team creates a potentially shippable product increment (for example, working and tested software). The set of features that go into a sprint come from the product "backlog," which is a prioritized set of high level requirements of work to be done. Which backlog items go into the sprint is determined during the sprint planning meeting. During this meeting, the Product Owner informs the team of the items in the product backlog that he or she wants completed. The team then determines how much of this they can commit to complete during the next sprint. During a sprint, no one is allowed to change the sprint backlog, which means that the requirements are frozen for that sprint. After a sprint is completed, the team demonstrates the use of the software.

Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication across all team members and disciplines that are involved in the project.

A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach—accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements.

Suitability of agile methods

There are teams and management that swears by agile software development, and there are people and management that consider Agile Software development  a recipe for disaster. We believe that both camps have their points and Rapidsoft Systems is willing to work with both teams.   Without taking any positions our views is that it is important to understand what types of software projects are best suited for the agile approach. Many large organizations have difficulty bridging the gap between the traditional waterfall method and an agile one. At Rapidsoft, we know the differences and can help you reconcile your processes as appropriate. We will tell you when to use Agile and when to use proven, time tested Waterfall Development method.

Large scale agile software development remains an active research area. Agile development has been widely documented as working well for small (10 developers or less) co-located teams.

Some things that can negatively impact the success of an agile project are:

Rapidsoft Systems Benefits for Agile Software Development

Working with our experienced team of developers offers the following advantages:

We are dedicated to providing innovative and professional services that will exceed your expectations. Please contact us to explore the broad range of solutions we can provide to empower your company to conduct business on the web.

Why Rapidsoft Systems:

With over 350+ software projects executed, you can simply count on our expertise, experience in giving you the right solution at absolutely lowest possible cost. If you would like more information, or want us to submit an estimate or a "no-obligation" quote for your project, contact us for more information.

iPhone developer