Posts Tagged ‘Product Maturity’
16
Jun

In this blog we are going to introduce Agile methodology of software development. We would traverse through the Principles and Processes in Agile and Outcome of “Going Agile”.

Agile Methodology

Agile involves the best practices of Waterfall, Prototyping and Spiral methodologies. It is more focused on short cycles of build and release similar to Spiral methodology and each cycle undergoes through Waterfall process of planning and analysis, design, implementation and testing. Any task unit that is developed undergoes multiple refactoring and polishing similar to Prototype methodology until it evolves into a finished product or a feature.

Agile promotes teamwork and collaboration, encourages frequent evaluation, reduces risks and promotes adaptability to new requirements and company goals. Agile methods adopt planning that is adapted to accommodate inevitable changes early on into the project as compared to predictable planning methods that resists changes and thus suffer consequences between static plans and dynamic reality.

Agile is based on the following key principles:

  • Active user involvement:

The stakeholders – for whom the system is built, are involved in the development of such a system in defining requirements and review processes.

  • Empowerment of the team

Agile team is almost independent in making decisions in terms of ownership of the task and its estimation and design including what is being delivered at the end of the iteration is also agreed upon. The onus of achieving this “commitment” lies within the team.

  • Evolution of requirements

New requirements on the project are identified based on the latest trends in the market. Various tools for automation and continuous build and integration support development processes and help control regression.

  • Shorter Delivery cycles

Due to short delivery cycles of the project, advantage of ‘Time to Market’ is available to the stakeholders. Moreover, most of the risks are identified and mitigated at quite an early stage of the project.

Agile methods usually follow the given processes:

  • Task break ups

Team picks up tasks based on priority defined by the stakeholders. The task is broken up into smaller units and each unit is estimated. The estimate includes analysis, design and approach, unit testing and acceptable criteria. Once the task estimation is done and the delivery date identified, it’s the Team’s responsibility to stick to the commitment.

  • Iterations

Usual iteration cycles for delivery range from 2 weeks to 4 weeks with usually shorter timelines preferable. Single Iteration involves a complete SDLC right from planning, analysis, design, development and testing. A feature may involve multiple iterations before it is production quality.

  • Team

Team composition in agile projects is cross-functional. The team takes up the responsibility of required functionality during delivery of tasks in the iteration. Usual size of team is 4 to 9 people to promote team communication and collaboration. Agile emphasizes on face to face communication between team members, however in case of distributed teams, communication methods like video-conferencing, voice, email, IM etc are suggested.

  • Progressive product maturity

Usually any feature or product involves multiple iterations before it is ready to be deployed into production.  Agile encourages usages of tools and techniques like early and continuous integration, team estimation, test driven design and development, code refactoring etc to improve project quality.

Outcome of “Going Agile”

  • Early ROI for stakeholders on project with all round early risk mitigation.
  • Provide a competitive edge and adaptability to new and additional requirements during project development.
  • According to the survey from Dr Dobbs Journal, Agile methodology provides far better productivity compared to other methodologies.
  • Self Organizing team with better collaboration and communication.

In summary, Agile is a Win-Win for all the parties involved in the development and execution of the project.

Well-known agile methods are:

  • DSDM
  • SCRUM
  • Extreme Programming (XP)

Look for more in this space on DSDM, Scrum and Extreme Programming.


Anand Ved
Anand Ved– Technical Lead – Cloud Computing Project

, , ,