Agile Software Development

Agile software development

What is Agile methodology?

With Agile development, teams build software and systems incrementally. This is accomplished by working in short time boxes called iterations of 1-4 weeks. At the end of the iteration the team produces a shippable product increment that has been designed, developed, tested and demonstrated during the iteration. There are many freeware tools that support Agile methodology development; there are some that offer tools for x amount of free users. To name the example, I worked in Agile environment using Rally software, which is Project management, test/defect management, requirements management, product management and development management tool.

Agile Release planning

Agile teams deliver new product features to the customer in just a few months, as compared to a year or more with traditional waterfall processes. Releases are series of iterations

Iteration Planning

Iteration is time box in which a delivery team plans, delivers and receives feedback on a product increment. Goal of the iteration is to deliver working product increment in 1 to 4 weeks. Each iteration focuses on completing tasks deriving from requirements

Agile estimating

Agile uses Points to estimate story size. During estimates the team uses their capacity to determine how much work they can take on as individuals during the iteration. Each member adds their availability in hours for the iteration so that when they self assign tasks, they can see if they are exceeding their capacity. Team can adjust the amount of points for time they had originally allocated based upon past velocity for the iteration.

After iteration scheduling is done, team adds tasks to each story, estimate the effort required to complete each task and assign owners.

Agile quality

In Agile environment everyone is responsible for quality. Agile teams are cross-functional and share a common goal of delivering a high quality product that drives business value. Programmers, testers, product owners and managers work together towards this common goal.

Agile Programmers

Agile teams usually adopt to Test Driven Development (TDD – or Test driven Design) practices. TDD design approaches as opposed to the traditional validation functions of testing. They are more useful producing higher quality and more reusable and maintainable code. With TDD, programmers write code for tiny bit of functionality, if fails, write the code that makes it pass. And then moves to next tiny bit of the functionality.

Agile programmers are responsible for Unit Testing. Unit tests are smallest pieces of testable code isolated from the rest of the system and determined if the results are as expected. With unit testing, the code that reaches testing phase is much higher quality.

Agile testing

Agile teams deliver working, fully tested software every 1 to 4 weeks. Testing in the iteration starts with the requirements. Every requirement has acceptance criteria. Testers ask questions that elicit examples and clarification. Acceptance criteria are business oriented tests that tell if implementation meets client expectations.

Testing and coding occurs same time in the iterations. While Programmers are coding, testers preparing acceptance tests. Also, Testers work on defining test data, designing test approaches and scenarios, evaluating risks, etc. Testers, programmers and product owners continue to clarify story requirements, brainstorm testability approaches and collaborate as a team. Tester starts exploratory testing once tiny bit of code is developed.

Automation

Automation shortens the time between implementation and feedback. Unit test serve as the base of the regression suite. Quality unit tests free testers to do exploratory testing, instead they help automate acceptance test and test nun-functional requirements. It lowers cost of change.

Functional testing

There are lots of commercial, open source tools that integrate with agile development. GUI test tools are used to do smoke tests that validate the basic functionality of the system. They explore the system from end to end, they are not as exhaustive as manual tests, but are capable to find major problems.

Agile Reports

Agile tools provide standard agile development reports such as iteration and release burndown, burnup flow diagrams and capabilities to track teams’ progress. Reports and metrics can be easily shared with all stakeholders using email and common electronic formats.

If you want to see the quick demo on Scrum, refer to my other post HERE.

About the author

p has written 30 articles for popkha.com

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>