Agile Fundamentals

Agile Overview:

Agile project management is based on an incremental, iterative approach. Instead of in-depth planning at the beginning of the project, Agile methodologies are open to changing requirements over time and encourages constant feedback from the end users. The goal of each iteration is to produce a working product. Agile refers to any process that aligns with the concepts of the Agile Manifesto. In 2001, 17 software developers met to discuss lightweight development methods. They published the Manifesto for Agile Software Development, which covered how they found “better ways of developing software by doing it and helping others do it.





What is an Agile Process?

Any agile software process is characterized in a manner that addresses a number of key assumptions about the majority of software projects

1) It is difficult to predict in advance which software requirements will persist and which will change.

2) For many types of software, design and construction are interleaved. That is, both activities should be performed in tandem so that design models are proven as they are created. It is difficult to predict how much design is necessary before construction is used to prove the design.

3) Analysis, design, construction, and testing are not as predictable (from a planning point of view) as we might like. An agile process, therefore, must be adaptable.

Agile Principles:

The Agile Alliance defines 12 agility principles for those who want to achieve agility: 

1) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 

2)Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 

3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 

4) Business people and developers must work together daily throughout the project. 

5) Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 

6) The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. 

7) Working software is the primary measure of progress.

8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9) Continuous attention to technical excellence and good design enhances agility. 

10) Simplicity—the art of maximizing the amount of work not done—is essential. 

11) The best architectures, requirements, and designs emerge from self organizing teams. 

12)  At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. 


Agile Development Cycle:

The phases in the Agile development cycle may not happen in succession; they are flexible and always evolving, with many happening in parallel.

Planning: Once an idea is deemed viable, the project team comes together to identify features, prioritize each feature, and assign them to an iteration. 

Requirements analysis: Key stakeholders and users meet to identify business requirements that are quantifiable, relevant, and detailed.

Design: The design is prepared from the requirements identified and the team considers what the product or solution will look like, deciding on a test strategy or plan to proceed.

Implementation, coding or development: Coding or developing features, and scheduling iterations for deployment.

Testing: Test the code against the requirements to make sure the product is actually solving customer needs. This phase includes unit testing, integration testing, system testing, and acceptance testing.

Deployment: Deliver the product to customers. Once customers start using the product, they may run into new problems that the project team will need to address in future iterations.


Pros and Cons of Agile :

Here are some of the top advantages of Agile:

Change is embraced: With shorter planning cycles, there’s always opportunity to refine and reprioritize the backlog to accommodate changes throughout the project.

Faster, high-quality delivery: Breaking down the project into iterations allows the team to focus on high-quality development, testing, and collaboration. Conducting testing during each iteration means that bugs get identified and solved more quickly.

Customers are heard: Customers have many opportunities to see the work being delivered, share their input, and have an impact on the end product. 

Continuous improvement: Feedback is encouraged from users and team members throughout the project, so lessons learned are used to improve future iterations.


Disadvantages:

Team must be knowledgeable: Agile teams are usually small, so team members must be highly skilled in a variety of areas and understand Agile methodology.  

Planning can be less concrete: Because project managers are often reprioritizing tasks, it’s possible some items scheduled for delivery may not be complete in time. And, additional sprints may be added at any time in the project, adding to the overall timeline.

Time commitment from developers: Active involvement and collaboration is required throughout the Agile process, which is more time consuming than a traditional approach.





Comments