WHITE PAPER
Transcription
WHITE PAPER
“Use case for Agile Software Development Methodology in an Oil and Gas Exploration environment.” WHITE PAPER We bring your vision to code. Agile Software Development Introduction No matter what business you are in, there are critical systems, processes, and work flows controlled by computer software. The users have a wish list about how the software could be improved to help them do their jobs faster, cheaper, or more accurately. Often the wishes are complex or conflicting, and the present setup is not well documented. You would like a methodology, exploratory in nature, that allows you to discover a path towards better software without wasting time on arduous documentation. You would like a methodology as flexible as the team you employ, the very team generating these use cases. You would like a methodology for getting these modifications into production. You would like a methodology as nimble as you are. What you need is Agile. Agile Primer Agile software development represents a sequence of iterative steps that leverage the collaboration of interdisciplinary “self-organizing” teams to develop requirements and incrementally arrive at solutions. A common description of Agile is that it promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle. To better understand Agile, let’s first take a brief look at the more classic waterfall method. The Waterfall (Classic) Method The Waterfall method has been around since the early days of software design. A borrowed methodology from manufacturing and distribution, it takes a linear approach to development. This classic method involves gathering every possible requirement up front and proceeding stepwise through design and implementation. The basic steps of the Waterfall Method are:1 • • • • • • • 1 Requirements specification Design Coding Integration Testing and debugging Installation Maintenance Royce, Winston W. Article published in 1970, “Managing the Development of Large Software Systems” Copyright © 2011 Bluware, Inc. Agile Software Development Lessons learned through development are documented, not integrated into the current iteration, and used to inform subsequent redesigns. This approach focuses on delivering a fixed work scope while limiting scope creep, and there are situations in which it functions quite well. Waterfall development is well suited to projects where there is limited complexity, the requirements are well known at the outset, and the software is not highly integrated with other business processes. Imagine a development project to design a system for recording grades for an elementary school. Waterfall can be a great method for delivering this type of project on a predictable cost and schedule. Waterfall Characteristics • • • • • • • Requirements & Tasks are well defined at outset. Methodology is highly document driven. Project roles are highly structured and well defined. Communication is through PM and Sponsor. Development cycles are typically long. Project moves forward only after current step is perfected. Progression always moves forward, never backward The Cone of Uncertainty Estimate Variability Before we explore Agile software development methodology, we must first understand how knowledge unfolds during the course of a project. Project Management frameworks look at this knowledge expansion inversely as a diminishing uncertainty. At the time of project conception, we know little and uncertainty is high. As we move 4x through the period of definition and requirements gathering, we begin to know more. The process of design and coding gives us more information, further diminishing uncertainty. By the 1.0x time of project completion we have reduced uncertainty almost completely. This process can be represented by a Cone of Uncertainty. 0x Initial Concept Requirements Complete Approved Product Definition Time User Interface Design Complete Software Complete Detailed Design Complete Copyright © 2011 Bluware, Inc. You can see that the Waterfall method drives the bulk of project decisions at the time when uncertainty is greatest, which for a project of any complexity is a risky approach. Given the level of project complexity in explora- Agile Software Development tion software, the rapidly changing science and technology in this area, and our inability to know everything before the start of a project, how can we develop software for this industry that hits the mark, contains costs, and benefits from the increasing knowledge gleaned over the project life? Enter Agile. The Agile Manifesto 2 In 2001 seventeen software developers with a history of working in lightweight project management environments met to “talk, ski, relax, and try to find common ground.” The result of that meeting was the Manifesto for Agile Software Development which describes best practices in their field. “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 process and tools Working product over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan While there is value in the items on the right, we value the items on the left more.” Shared Vision Agile software development depends heavily on a cohesive vision shared by the customer and the development team. Working closely together, the team can iterate quickly through project cycles. Roles under a Bluware Agile project look generally like this: • Upper management: the financial buyer who decides to invest budget in development • Customer: person at client with the problem to be solved • Product Owner: the single business voice available daily to make all business decisions. This role replaces the documentation of more traditional methods • Scrum Master: consulting project manager, working side by side with Product Owner • Scrum Team: self-directed development team which may be a mix of Bluware and client employees with cross-functional skills that divide the work in accordance with their abilities Together, following the shared vision, the team goes through the Agile process. Agile Process The process and terms below describe the Agile method referred to as Scrum, the most common methodology Bluware employs for software development. Any meetings are public and include the Product Owner, Scrum Master and Team to foster transparent communication. User stories capture the ideas and use cases presented by end users in everyday business language. They are generally short and capture the idea of a problem and the benefit from solving it. 2 The Agile Manifesto; http://agilemanifesto.org/ Copyright © 2011 Bluware, Inc. Agile Software Development They generally follow a format of “As a [role], I want [solution] so I can [benefit].” These user stories help the customer decide which features reach the product backlog. Product backlog contains the user stories the customer is considering for development into the software. Features chosen for development in a project move to the Release Plan. The Release Plan contains the user stories approved for development in the current project, along with acceptance criteria for each story to clarify how the team will test whether the software is working. The Sprint Planning Meeting is the forum for deciding which items and features from the Release Plan are going into the next development cycle, or sprint. The features for the next cycle are put into the Sprint Backlog. Each Sprint is 1-4 weeks long with daily, face-to-face Scrum Meetings to discuss what each person did the previous day, what they plan to do today, any roadblocks, and an estimate of time remaining. These meetings run less than 15 minutes, and provide both direct feedback into the current sprint and indirect feedback to the product backlog, helping determine which features move to the next in the sprint backlog. At the end of each sprint delivery of working software defines success. The team conducts a sprint review to demonstrate the software, to learn from successes and mistakes and to incorporate that learning into the next sprint planning meeting. Each step of the process works together to give the customer control of the whole project - not just the very beginning of it. Indirect Feedback 24 Daily Scrum Meeting urs ho eks we 2- 4 User Stories Product Backlog Sprint Planning Sprint Review Sprint Backlog Direct Feedback Process Improvement Customer Experience Working Software Developer Experience Copyright © 2011 Bluware, Inc. Agile Software Development Agile Values The writers of the Agile Manifesto developed several principles summed up in the following values: • Communication. Collaborate and talk face-to-face. Proximity matters. • Simplicity. Do the simplest thing that will work. “Simple rules lead to complex behavior. Complex rules lead to [simple] behavior.” - Dee Hock, founder and former CEO of VISA • Respect. Care about each other. Care about the project. • Courage. Honesty results in effective action, fear of bad news results in paralysis. • Feedback. The sooner we know about something, the sooner we can adapt and improve. Agile Illustration Agile is the perfect development methodology for creative projects, mission critical projects, new technology introductions, new process designs, and projects with poorly defined goals. Science moves at such a rapid pace that it is almost impossible to know everything you need to know before the start of a project. Compounding this factor, science and technology often change in the middle of a project. In a waterfall project you must include any innovations at the start or wait until launch of the next project. With Agile, however, you can adapt to innovations comparatively on the fly — gaining the advantage of new technology when you need it most. Bluware’s work in the following case illustrates Agile on a real project. The project: Spectral decomposition plug-in component The team: 6 people; both full and part time Sprint duration: four weeks (variable to coordinate with release dates of other software). Number of sprints: 12 Project duration: 12 months Project description: The project goal was to develop a software component that performed spectral decomposition on seismic data. The software used single trace for selecting algorithm and parameters, with rapid computation speed, and then performed computation for an entire event to do quality control over the entire surface. Finally, spectral decomposition was done over an entire volume. This stepwise progression meant less time wasted processing volumes with the wrong algorithms. The customer’s research group had developed multiple specialized algorithms to allow for different types of spectral decomposition. Bluware converted these research computations from MATLAB to industrial strength C++ for use outside of the research environment. The team developed a full, interactive user interface with substantial graphics to allow users to select appropriate algorithm and associated parameters, and to visualize quality control results. Special challenges: • This was the customer’s first Agile project, especially for Product Owner. Moving to a new development methodology created some fear of project failure for the client. This fear was overcome Copyright © 2011 Bluware, Inc. Agile Software Development by a significant education process, longer sprints tending toward 4 weeks rather than 1, and ultimately successful delivery. • The Product Owner doubted that Agile would work and was concerned about a loss of control. Issues were resolved through a highly responsive development team and the delivery of functional software at the end of each sprint to allow the Product Owner to offer feedback on the adjustment of algorithms and the user interface. In a traditional waterfall method, this input would not have been possible until project end. • Scalability from 1 to 2 to 3 dimensional computed regions result in associated performance degradation. The multiple, short sprints inherent to Agile resolved the dimensional scale issue. The Product Owner was able to discover the issues during development and optimize algorithms and multi-threading application in later sprints after key functionality was delivered. • The software component needed to plug-in to multiple versions of product. Bluware resolved this issue by working closely with other product development teams, and maintaining a flexible architecture. • Requirements like the choice of algorithms, stability issues and performance were not fully understood and were still being worked out during the early phases of the project. Agile methodology resolved this issue with the team significantly altering the third and fourth sprints to focus around these customer issues, allowing new features to be put in front of other planned features from the backlog. The Agile method was responsible for both uncovering and resolving this challenge. Agile Benefits For complex projects Agile methodology offers numerous benefits to the software development team and the customer commissioning the creation of the software. Improved control • • • • • • Users create wish lists of requests that Customer gathers and high grades. Customer directs what features are put into development. Customer prioritizes feature enhancements. Customer adds or deletes features from product backlog as priorities change. Customer participates in daily scrum to monitor progress, obstacles, risks, and changes. Customer receives working product at end of each sprint to inspect and deploy. Faster results • • • • • Working software results from every sprint. The most critical features are delivered first. Numerous, small, reversible decisions are made quickly, keeping team moving forward. Pushing back the unknown is iterative: latest possible moment when more information is needed. Short cycles keep the development effort from going down costly “rabbit holes.” Copyright © 2011 Bluware, Inc. Agile Software Development Higher quality • Quality is incorporated at each iteration, not bolted on at the end. • Feedback is closer to real-time Less waste • • • • • Unnecessary features are eliminated early. Less time is wasted finding people and information. Scope creep is replaced by flexible development that is responsive to ongoing changes. Reduced time is spent producing dead documents in favor of living artifacts. Release process is simplified (i.e. testing, coding, PM, release engineering, etc.) Better product • Frequent, structured communication with Product Owner means the end result is closer to customer vision. • Change is welcome, so finished product incorporates ideas that arise after development launches. • Developers are free to think creatively throughout the project, which yields better solutions. Lower risk • The process ferrets out failure early before a lot of effort is invested. • Risks are brought forward rather than delayed reducing the cost of making adjustments. • Complexity is mitigated by breaking down large efforts into simpler mini-projects called sprints. • Early and regular process improvement and course correction occurs through frequent inspection. Risk Seriousness Water fal l Inception Ite ra tiv Waterfall Integration & Test Period e Elaboration Construction Time Requirements Design Implementation Testing Reduced cost • Customer invests only in features that are valuable because the Product Owner is involved in the daily Scrum Meetings. • Quick delivery cycles allow client to capture value early to offset project cost. • Waste reduction reduces time spent on low value activities. • Fail early, fail often reduces costs of errors. Copyright © 2011 Bluware, Inc.