We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 85
UNIT-2
Rise of Agile Methodologies
Today, Agile is a well-known development methodology and the approach of choice for many development teams, especially those trying to create an environment of continuous delivery. Over the past few years, development teams have focused on speeding up the time to market for new products and features to solve needs in real-time. Development teams have delivered on this goaI using Agile methods. Rise of Agile Methodologies Before Agile: A Major Problem Before Agile, development teams used the Waterfall approach, that follows a set path in which teams 1. Set project requirements and the scope of work 2. Design a product based on those pre-determined requirements. 3. Build , Test the product. 4. Fix any problems discovered during testing. 5. Launch a finished product. Rise of Agile Methodologies Before Agile: A Major Problem Waterfall model based development teams need to stick to the requirements set out at the very beginning of the project and do not make any changes or additions along the way. Waterfall prioritized bringing a complete product to market - meaning it could take years before teams finished the project. During those years, the nature of the problem would often change, planned solution may be out of date by the time it finally got to market. Rise of Agile Methodologies Before Agile: A Major Problem New products no longer had strong market fit. In many cases, it also lead to unfinished products, as teams simply abandon the work along the way rather than deliver an outdated product. As a result of these challenges, we can consider the Waterfall methodology the antagonist in the history of Agile. Rise of Agile Methodologies A Change is Underway: Agile Takes Shape software development teams began to change their approach to planning and delivering new products through out the 1990s. During this time, development methods like Scrum, Extreme Programming, DSDM, Feature-Driven Development and Pragmatic Programming are introduced. While these methods vary, the common thread among all of them is a lighter-weight model that allows for more flexibility and less overhead planning. These approaches to software development are the earliest methods in the history of Agile. Rise of Agile Methodologies A Change is Underway: Agile Takes Shape Finally in the spring of 2000, a group of 17 software developers met in Oregon to discuss how they could speed up development times in order to bring new software to market faster. They recognized two key opportunities make this make possible 1. Reduce the delay of software to users. 2. Getting feedback from users quickly to confirm the usefulness of new software and continue to improve on it accordingly. Rise of Agile Methodologies A Manifesto is Born: Agile Comes into Focus Less than a year after that Oregon meeting, the same group of 17 developers met again at Snowbird ,Utah. With in three days, the group produced the "Manifesto for Agile Software Development" (known as the Agile Manifesto). Rise of Agile Methodologies A Manifesto is Born: Agile Comes into Focus A true turning point in the history of Agile, this manifesto laid out four key values 1. Individuals and interactions over processes and tools 2. Working software over comprehensive documentation 3. Customer collaboration over contract negotiation 4. Responding to change over following a plan Agile Manifesto Agile Manifesto is a document that focuses on four core values and 12 principles for Agile software development. Four core values are the pillars of agile processes. 1. Individuals and interactions over processes and tools It is people not the tools that ultimately develop a product. Agile gives value for team collaboration over working independently and adhering to a process. Agile Manifesto 2. Working software over comprehensive documentation. Never forget that the primary goal of software development is to build quality software. Documentation is a guide for understanding how the software works but being too extensive is a road block for creating s/w what you need. Agile Manifesto 3. Customer collaboration over contract negotiation. Customers are extremely important within the Agile methodology. Focus on updating your software using constant customer feedback .Customer collaboration is more important than the finer details of contract negotiation. 4. Responding to change over following a plan. – Teams can shift their strategies and workflows without derailing an entire project. Agile principles 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. 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Agile principles 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. Agile principles 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. Agile principles 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. Benefits of the Agile development Agile promotes collaborative teamwork One of the Agile principles states that the most effective way to communicate with your team is face-to face. This principle that encourages teams to break project silos and you have a recipe for collaborative teamwork. Benefits of the Agile development Agile methods focus on customer needs One of the unique aspects of software development is that teams can focus on customer needs much more closely than other industries. With the rise of agile methods software development teams can get feedback from their actual customers quickly. Benefits of the Agile development Agile methods are adaptable One of the main benefits of using Agile processes in software development is the ability to shift strategies quickly, without disrupting the flow of a project. Because phases in the traditional waterfall method flow into one another, shifting strategies is challenging and can disrupt the rest of the project roadmap. . Benefits of the Agile development Functionality can be developed rapidly and demonstrated. Suitable for fixed or changing requirements . Delivers early partial working solutions. Little or no planning required . Agile models 1. Scrum 2.XP (Extreme Programming) 3. Crystal Methodologies 4. DSDM (Dynamic Software Development Method) 5. FDD (Feature Driven Development) 6. Lean Software Development 7. Extreme Programming (XP) Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software and respond to customer requirements. XP is a lightweight, efficient and fun way to develop a software. The general characteristics where XP is appropriate are 1. Dynamically changing software requirements 2. Risks caused by fixed time projects using new technology 3. Small development team 4. The technology you are using allows for automated unit and functional tests. Values of XP The five values of XP are communication, simplicity, feedback, courage, and respect described in more detail below. Communication XP stresses the importance of the communication – face to face discussion with the aid of a white board or other drawing mechanism. Simplicity keep the design of the system as simple as possible so that it is easier to maintain, support, and revise. Simplicity also means address only the requirements that you know about; don’t try to predict the future. Values of XP Feedback Through constant feedback about their previous efforts, teams can identify areas for improvement and revise their practices. Respect The members of your team need to respect each other in order to communicate with each other, to work together to identify simple designs and solutions. Values of XP Courage You need courage to raise organizational issues that reduce your team’s effectiveness. You need courage to stop doing something that doesn’t work and try something else. You need courage to accept and act on feedback, even when it’s difficult to accept. Extreme Programming (XP) In Extreme Programming ,requirements are gathered in terms of stories. Releases are based on the shorter cycles called Iterations with span of 14 days time period. Each iteration includes phases like coding, unit testing and system testing. Extreme Programming(XP) Extreme Programming (XP) There are 5 phases available in Agile XP method, 1. Planning In this stage, the team talks with the customer to understand the desired product, gathering user stories to form the basis of the project's goals. These stories are estimated and prioritized, then transformed into tasks. 2. Design In this stage, developers take the user stories and design the code architecture to meet the customer's expectations. This includes deciding on the programming language, environment, libraries, and frameworks to be used in software development. Extreme Programming (XP) 3. Coding Here, the development team gets to work on the actual coding of the software. The code is written iteratively, meaning that the code is written in small chunks and tested regularly. This ensures that the code is high quality and that any bugs can be addressed quickly. 4. Testing Testing is a vital part of the Extreme Programming methodology. Developers write automated tests to ensure that the code is working as expected. This helps identify any potential bugs before the software is released. Extreme Programming (XP) 5. Listening Last, the Extreme Programming development life cycle includes the listening stage. At this point, the customer is encouraged to give feedback on the software and provide input to help make it even better. This helps ensure that the software meets the customer's expectations and is of the highest quality. Scrum Model Scrum is one of the Agile development models. In the scrum model , a project is divided into small work parts called as sprints. Each sprint is typically two to four weeks long . At the end of each sprint the stakeholders and the team members need to assess the developed software increment. The stakeholders may suggest any changes and improvements to the software if necessary. Software therefore gets developed in series of sprints. Scrum Model Scrum Model The Scrum team consists of the following roles: product owner represents the customer’s perspective and Guides the team towards building the right software . product owner take the responsibility of communicating customer views to the development team. In every sprint the product owner in consultation with team members define the features of the software to be developed in the next sprint ,decides the release dates and also reprioritize the s/w features if needed. Scrum Model scrum master scrum master acts as the project manager for the project. Responsibilities include removing any barriers that project may face ,ensuring the team is fully productive by improving close cooperation among all team members. Scrum Model Team member Scrum team consists of cross functional team members with expertise in areas like quality assurance, programming, user interface design, and testing. Team is self organizing in the sense that team members distribute their responsibilities among themselves. Scrum Model Three main artefacts in scrum methodology are product backlog This document contains all the features that remain to be developed. product backlog forms the pool of features from which some of the features are chosen for development during the next sprint. sprint backlog sprint backlog lists the tasks that are identified for development of the identified features and this forms the sprint backlog. Scrum Model Sprint burndown chart During a sprint, sprint burndown chart is used as a tool to visualise the progress made and the work remaining on a daily basis. Scrum Model Three Types of meetings are mandatory during the project Sprint planning During the sprint planning meeting, the team members commit to develop and deliver certain features in the next sprint. In this meeting product owner works with the team to negotiate which product backlog items the team will work. Scrum Model Daily scrum Daily scrum is a short standup meeting conducted everyday morning to review the status of the progress achieved and major issues placed on a day-to-day basis. Each team members focuses on three issues what did he done yesterday what will he do today what are the obstacles on the way Scrum Model Sprint review meeting At the end of each sprint , review meeting is conducted and the team demonstrate the new functionality developed during the sprint to the product owner and the stakeholders. feedback is collected from the participants of the meeting. Kanban Kanban is a visual approach to Agile. Develoment Teams use Kanban board tools to represent certain tasks in the development process. Tasks are represented by job cards on a board. A column on the board represents a stage (termed as the Work stage). As team members work on tasks, they move cards from the backlog column to the column that represents the stage the task is in. This method is a good way for teams to identify roadblocks and to visualize the amount of work that's getting done. . Kanban Advantages of Kanban Empowerment of Team − Team is allowed to take decisions as and when required. Team collaboratively resolves the bottlenecks. Team has access to the relevant information. Team continually communicates with customer. Continuous Delivery − Focus on work completion. Limited requirements at any point of time. Focus on delivering value to the customer. Emphasis on whole project. Disadvantages of kanban The kanban system assumes stable, repetitive production plans. Lack of explicit iteration. Not updating the board. Over-complicated Board. Dynamic Software Development Method (DSDM) DSDM is a Rapid Application Development (RAD) approach to software development and provides an agile project delivery framework. The important aspect of DSDM is that the users are required to be involved actively, and the teams are given the power to make decisions. Frequent delivery of product becomes the active focus with DSDM. Dynamic Software Development Method (DSDM) The Eight Principles of DSDM: 1) Focus on the business need 2) Deliver on time 3) Collaborate 4) Never compromise quality 5) Build incrementally from firm foundations 6) Develop iteratively 7) Communicate continuously and clearly 8) Demonstrate control Dynamic Software Development Method (DSDM) The DSDM project consists of 7 phases 1) Pre-project 2) Feasibility Study 3) Business Study 4) Functional Model Iteration 5) Design and build Iteration 6) Implementation 7) Post-project Dynamic Software Development Method (DSDM) Advantages of DSDM 1. DSDM provides high level of customer satisfaction due to fast time to market and a high quality solution. 2. DSDM provides Development teams with a better work/life balance, with shorter hours and more time off which results in enhanced productivity and creativity. 3. DSDM facilitates better control with increased use of formal inspections. 4. DSDM requires shorter development time. 5. DSDM facilitates early definition of quality goals and processes. Feature Driven Development (FDD) It is an agile iterative and incremental model that focuses on progressing the features of the developing software. This method is focused around “designing & building” features. Unlike other Agile methods in software engineering, FDD describes short phases of work that has to be accomplished separately per feature. Feature-Driven Development (FDD) is customer- centric with the goal of delivering software often and efficiently. Feature Driven Development (FDD) How Does FDD Work? Typically five basic activities exist during FDD: 1) Develop overall model: The overall model or rough outline of the system is created by identifying the scope and context of the system. 2) Build feature list: Developers brainstorm a list of features that would be useful to users . Each feature should be in a timeframe of around two weeks. 3) Plan by feature : Features are organized by their importance to client and time required to create. Feature Driven Development (FDD) 4) Design by feature: The actual details of each feature are produced, inspected and finalized. 5) Build by feature : After the design is improved, the completed feature is added to the official build for delivery to the client. Feature Driven Development (FDD) Advantages of FDD Reporting at all levels leads to easy progress tracking. FDD provides greater accuracy in cost estimation of the project due to feature segmentation. Allows larger teams to develop products with continuous success Simple five-step process allows for more rapid development. Feature Driven Development (FDD) Disadvantages of FDD Not good for smaller projects Less written documentation, which can lead to confusion Highly dependent on lead developers or programmers. Iterative Agile Software Development Agile Methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks. Every iteration involves cross functional teams working simultaneously on various areas like - planning ,Requirements Analysis, Design, Coding Unit Testing and Acceptance Testing. At the end of the iteration, a working product is displayed to the customer and important stakeholders. Iterative Agile Software Development Iterative Agile Software Development Agile iterative approach focuses on delivering valuable s/w as fast as possible in increments, rather than all at once. An iterative approach means the software or product development process is split into multiple explicit iterations or versions, each delivering some valuable improvements or additional features. Iterative Agile Software Development Iterative methodology allows software developers to adjust, refine, and review software development processes constantly to improve their performance incrementally. The agile iterative approach creates opportunities for constant evaluation and improvement in development processes. P (Plan) - Iteration Planning In this event,the team collaborates to discuss the objectives for the next iteration. It also summarizes the work done and determines the team backlog required for the next iteration. D (Design) - Iteration Execution This is the 'do' step where the development of the software, its design and coding takes place. If it's a second or third iteration, then functiona lity testing is also conducted. The team collects user stories and prepares for the next step, which is the Iteration Review. C (Check) -Iteration Review Also known as the 'check' step,Iteration Review is carried out with the Product Owner.The team shows the tested deliverable to the Product Owner,who then reviews the completed work and ascertains whether all criteria have been met. A (Adjust) - Iteration Retrospect In this event,the team evaluates the entire process of the iteration from the first step. It essentially works on any improvements that are gathered in previorus iterations. New problems are identified along with their causes. Before the team starts the next cycle again,the team backlog is refined for future reference. Iterative Agile Software Development The Agile team implements the PDCA cycle on each iteration separately in the following manner: P(Plan) - Iteration Planning In this event, the team collaborates to discuss the objectives for the next iteration. It also summarizes the work done and determines the team backlog required for the next iteration. D (Design) - Iteration Execution This is the 'do' step where the development of the software, its design and coding takes place. If it's a second or third iteration, then functionality testing is also conducted. Iterative Agile Software Development C (Check) -Iteration Review Also known as the 'check' step,Iteration Review is carried out with the Product Owner.The team shows the tested deliverable to the Product Owner,who then reviews the completed work and ascertains whether all criteria have been met. A (Adjust) - Iteration Retrospect In this event,the team evaluates the entire process of the iteration from the first step. It essentially works on any improvements that are gathered in previous iterations. New problems are identified along with their causes. Before the team starts the next cycle again, the team backlog is refined for future reference. The iterations are repeated for optimizations and improvisations and, the lessons learned from previous cycles are applied in the next cycle. Until a fully functionalsoftware is ready to hit the market. Iterative Agile Software Development Benefits of Agile Iterative Development Customer Involvement - Agile Iterative development encourages user contribution. After each iterative cycle, customer feedback is obtained, and the product is then subjected to necessary changes based on that feedback . This aspect brings adaptabi lity into the project's framework. Favours Evolution - The planning in the Agile Iterative development process is a continuous feat,that allows space for evolving ideas,instead of extensive planning that only precedes execution and testing in Waterfall. Iterative Agile Software Development Risk Assessment - Agile iteration allows risk identification and mitigation early on in the development to avoid speed bumps later down the timeline. Rapid Delivery -The work is divided into small cycles,allowing team members to dedicate their focus and deliver on time. Moreover,testing is conducted simultaneously in coding and design in every iteration,which greatly reduces the time needed to achieve completion Iterative Agile Software Development Flexibility for making changes. The methodology allows for modification throughout the development process. Customer involvement. Developm ent teams focus on customer feedback during the Design and Adjust periods of the POCA iterative cycle. Early risk identification and response. Managing each iteration is simpler than managing the whole project at one time. The iterative approach allows development teams to tackle issues early on without requiring the team to backtrack. Iterative Agile Software Development Rapid delivery. The iterative approach requires less time spent on documenting and thus allows development teams to spend more time designing and implementing projects. Testing during iteration is easier than testing at the end of the development process. By testing early on, teams can analyze risks and modify their deliverables. Enables cognitively-diverse teams to experiment and innovate. The modifiable and cyclicalnature of the iterative approach allows teams to test new ideas for their products. Where is the agile iterative approach employed? Some requirements may evolve during the development process. The agile iterative approach allows teams to modify and enhance different aspects of a deliverable throughout the cycle,especially in the Check and Adjust phases. The cyclical and modifiable nature of the methodology gives development teams a large advantage over more rigid processes. While working on a project, a development team can quickly and 'productively' adapt to change. The POCA model of the iterative approach al lows for far more flexibil ity,adaptability,and speed compared to sequential approaches. The urgency or risk associated with project components may change. The approach provides a time and space for urgency and risk recognition and alleviation in the early stages of the process. Agile Values Agile Values refers to the set of 4 values outlined by the Agile Alliance in the Agile manifesto. This set of values encourages putting people before processes, getting software out the door fast, collaborating with customers, and adjusting plans as needed. Agile Values Individuals and Interactions Over Processes and Tools Value people more than processes or tools because it is the people who respond to business needs and drive the development process. If the process or the tools drive development, the team is less responsive to change and less likely to meet customer needs. Conformity makes teams hard to accommodate new ideas, new requirements, and new thinking. Individuals and Interactions Over Processes and Tools If the individuals are aligned and understand each other, then the team can resolve any issues with the tools or processes. But if the teams insist on blindly sticking to the processes then it might cause misunderstandings among the individuals. Individuals and Interactions Over Processes and Tools It’s always preferable to have interactions and communication among the team members rather than blindly depending on processes to guide the way forward. Allowing individuals to contribute on their own also allows them to showcase freely what they can bring to the table. When these team interactions are directed towards solving a common problem, the results can be quite powerful. Individuals and Interactions Over Processes and Tools Benefits with valuing individuals and interactions Communication is clear ,quick and effective. Teamwork becomes strong as people work together. Development teams can self-organize. Development teams have more chances to innovate. Development teams can customize processes as necessary. Development team members can take personal ownership of the project. Development team members can have deeper job satisfaction. Individuals and Interactions Over Processes and Tools Disadvantages with value for process over people: People may over-depedent on processes instead of finding the best ways to create good products. One process doesn't fit all teams - different people have different work styles. One process doesn't fit all projects. Communication can be ambiguous and time- consuming. Working software over comprehensive documentation In the past, more focus used to be on proper documentation of every aspect of the project. The team spends months to write requirements, design, analysis, and test case documents. Traditional product development processes often required extensive documentation. Under the agile philosophy, getting software in the hands of customers is the highest priority. The Agile values dictate that the first and foremost duty of the project team is completing the final deliverables as identified by the customers. Working software over comprehensive documentation Traditional project management involved comprehensive documentation which entailed a lag of months. This used to impact the project delivery negatively and the resulting delays were inevitable. Documentation created for these projects was very detailed and so many documents were created that many of them were not even referred to during the project progress. This was an unnecessary evil with which the project teams used to live with. Working software over comprehensive documentation This doesn’t imply that the documentation is not necessary. It just means that a working product is any day a better indicator of alignment to the customer needs and expectations than a document created months ago. It also implies that the teams are responsive to change as when required while showing the working software to the client when the sprint ends. Customer Collaboration Over Contract Negotiation The agile philosophy highlights the importance of customer-centric product development practices over product-centric approaches. Traditional product-centric processes allowed contracts to dictate what was delivered in the end, which left a lot of room for mismatched expectations. The agile philosophy encourage building a continuous customer feedback loop into development cycles. Contracts are the legal agreements between the supplier and the customers. Customer Collaboration Over Contract Negotiation Once the negotiation is over, there can be no discussion over it. What agile says is that instead of negotiation, go for collaboration. Collaboration implies that there is still room for discussion and the communication is ongoing. It gives a two-fold advantage – helps the team to do a course correction if required at an earlier stage, it helps the client also refine their vision and redefine their requirements if required during the course of the project. Customer Collaboration Over Contract Negotiation Traditional software development models involve the customer before the development begins and they are not involved during the project development. Agile breaks through this barrier as well by allowing for customer involvement over the whole lifecycle. This helps the agile teams align better to the customer needs. One of the ways to achieve this is through a dedicated and involved product owner who can help the team in real time for clarifications and aligning the work with the customer priorities. Responding to Change Over Following a Plan Responding to Change Over Following a Plan The standard thought process is that the changes are an expensive affair and we should avoid changes. But as experience also teaches us, changes are mostly inevitable and instead of running from it we should try to accept it and plan for it. What agile thinks is that change is not an expense, it is a welcome feedback which helps to improve the project. It should not be avoided but instead, it adds value. Responding to Change Over Following a Plan Needs and requirements change over time, and priorities shift as well. That fixed roadmap will quickly become obsolete. According to the Agile Manifesto, a software team should be able to adjust and change direction at any time with a flexible roadmap. Dynamic roadmap can change every quarter or month, and Agile teams can adapt to these changes. Responding to Change Over Following a Plan With the short sprints proposed by agile, the teams can get a quick feedback and shift priorities at a short notice. New features can be added from iteration to iteration. Agile follows the just in time approach where planning is done just enough when needed. And the plans are always open to change as the sprints progress.