Agile Software Development


Published on

1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Agile Software Development

  1. 1. Introduction to Agile Software Management Presented by Jim Murray Based on work done by Dottie Acton of LM Mission Systems 301-897-6458 [email_address]
  2. 2. Topics <ul><li>Introduction </li></ul><ul><li>Terminology </li></ul><ul><li>The Agile Manifesto </li></ul><ul><li>Some Agile Methodologies </li></ul><ul><li>Summary </li></ul><ul><li>References </li></ul>
  3. 3. Terminology <ul><li>Agility </li></ul><ul><ul><li>The ability to both create and respond to change in order to profit in a turbulent business environment </li></ul></ul><ul><ul><ul><li>Companies need to determine the amount of agility they need to be competitive </li></ul></ul></ul><ul><li>Chaordic </li></ul><ul><ul><li>Exhibiting properties of both cha os and ord er </li></ul></ul><ul><ul><ul><li>The blend of chaos and order inherent in the external environment and in people themselves, argues against the prevailing wisdom about predictability and planning </li></ul></ul></ul><ul><ul><ul><ul><li>Things get done because people adapt, not because they slavishly follow processes </li></ul></ul></ul></ul><ul><ul><li>An agile view is a chaordic view </li></ul></ul><ul><ul><ul><li>“ Balanced between chaos and order, perched on the precipice at the edge of chaos.” </li></ul></ul></ul><ul><ul><ul><li>Some people are not comfortable in this environment; others thrive on it </li></ul></ul></ul>
  4. 4. Program Management Evolution <ul><li>Program management is an evolving science </li></ul>Continuing to seek efficient methods to address new development methods
  5. 5. Current Problem in PM & SW development <ul><li>31.1% of projects will be canceled before they ever get completed … 52.7% of projects will cost 189% of their original estimates . – The Standish Group </li></ul><ul><li>Plus project complexity is increasing </li></ul><ul><ul><li>Demand for quicker delivery of useful systems </li></ul></ul><ul><ul><li>Increasingly vague, volatile requirements </li></ul></ul><ul><ul><li>Greater uncertainty/risk from limited knowledge of: </li></ul></ul><ul><ul><ul><li>Underlying technologies </li></ul></ul></ul><ul><ul><ul><li>Off-the-shelf (OTS) components used </li></ul></ul></ul>Are conventional development/management practices addressing the problem?
  6. 6. What is the core challenge? <ul><li>What is the nature of system/software development? </li></ul><ul><li>Well-understood, static problems, demanding definable, predictable process, like </li></ul><ul><ul><li>Manufacturing a widget </li></ul></ul><ul><ul><li>Constructing a building </li></ul></ul><ul><ul><li>Shooting zeppelins with cannons* </li></ul></ul><ul><li>OR </li></ul><ul><li>Exploration of many evolving unknowns, demanding a fluid, social learning process, like </li></ul><ul><ul><li>Mountain climbing </li></ul></ul><ul><ul><li>Jazz jam session </li></ul></ul><ul><ul><li>Tracking jet fighters with self-guiding missiles* </li></ul></ul>* Phillip Armour. “Zeppelins and Jet Planes: A Metaphor for Modern Software Projects” Communications of the ACM, October 2001. Team = Product Process = Product — McCarthy
  7. 7. Agile Manifesto <ul><li>Developed by 17 of the leaders in agile methodologies in Feb 2001. </li></ul><ul><ul><li>“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value </li></ul></ul><ul><ul><ul><li>Individuals and interactions over processes and tools </li></ul></ul></ul><ul><ul><ul><li>Working software over comprehensive documentation </li></ul></ul></ul><ul><ul><ul><li>Customer collaboration over contract negotiation </li></ul></ul></ul><ul><ul><ul><li>Responding to change over following a plan </li></ul></ul></ul><ul><ul><li>That is, while there is value on the items on the right, we value the items on the left more.” </li></ul></ul>
  8. 8. Supporting Agile “Sentences” <ul><li>Our highest priority is to satisfy the customer through early and frequent delivery of valuable software. </li></ul><ul><li>Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter time scale. </li></ul><ul><li>Working software/product is the primary measure of progress. </li></ul><ul><li>Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. </li></ul><ul><li>Business people and developers work together daily throughout the project. </li></ul><ul><li>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. </li></ul>
  9. 9. Questions for Reflection <ul><li>The first step in looking at any Agile method is to ask the following questions: </li></ul><ul><ul><li>How close are your customer’s views and values to the views and values expressed in the Agile Manifesto? </li></ul></ul><ul><ul><li>How close are your program’s views and values to the views and values expressed in the Agile Manifesto? </li></ul></ul><ul><ul><li>How close are your organization’s views and values to the views and values expressed in the Agile Manifesto? </li></ul></ul><ul><ul><li>How close are your personal views and values to the views and values of the Agile Manifesto? </li></ul></ul>Adopting Agile Methods where they do not fit with the value system will not be successful.
  10. 10. When to Apply Agile Methodologies <ul><li>Problems characterized by change, speed, and turbulence are best solved by agility. </li></ul><ul><ul><li>Accelerated time schedule combined with significant risk and uncertainty that generate constant change during the project. </li></ul></ul><ul><li>Is your project more like drilling for oil or like managing a production line? </li></ul><ul><ul><li>Oil exploration projects need Agile processes. </li></ul></ul><ul><ul><li>Production-line projects are often well-served by rigorous methodologies. </li></ul></ul>“ On projects with more than 250 people, methodology will have almost no impact on success or failure – politics will dominate.” Jim Highsmith
  11. 11. Some Agile Methodologies <ul><li>Extreme Programming (XP) </li></ul><ul><li>Scrum </li></ul><ul><li>Feature-Driven Development (FDD) </li></ul><ul><li>Adaptive Software Process </li></ul><ul><li>Crystal Light Methodologies </li></ul><ul><li>Dynamic Systems Development Method (DSDM) </li></ul><ul><li>Lean Development </li></ul>
  12. 12. Summary of Agile Characteristics <ul><li>Adaptability rather than predictability </li></ul><ul><li>People rather than development process </li></ul><ul><ul><li>Being agile means accepting that outcomes are not predictable and that processes are not repeatable </li></ul></ul><ul><li>Collaborative values and principles </li></ul><ul><li>A barely sufficient methodology </li></ul><ul><ul><li>“the conventions we agree to” </li></ul></ul><ul><ul><li>Processes are described in manuals; practices are what happen in reality </li></ul></ul>
  13. 13. Agile PM issues to facilitate SW development <ul><li>Need a cohesive culture able to support and facilitate a variety of management and development methods </li></ul><ul><li>Management needs a defined Info. Tech. framework </li></ul><ul><ul><li>Management processes </li></ul></ul><ul><ul><li>Management tools/tool suite </li></ul></ul><ul><li>Management needs to be supportive of the development team </li></ul><ul><ul><li>Interfaces to other functions offloaded </li></ul></ul><ul><ul><li>Training occurs up front and in-depth </li></ul></ul><ul><ul><li>Experienced core of the team </li></ul></ul><ul><ul><li>Variety of communication and collaboration tools (available for use) </li></ul></ul>
  14. 14. Agile Program Management Issues <ul><li>Promote teambuilding and trust, keep politics out of the effort </li></ul><ul><li>Set an open tone with the customer(s) organizations </li></ul><ul><li>Interpret and translate risks for overall program integration and a common view. </li></ul><ul><li>Have a robust, flexible, and adaptable configuration and data management system </li></ul><ul><li>Integrated Product Teams to some extent </li></ul><ul><ul><li>(need immediate value) </li></ul></ul>
  15. 15. <ul><li>Extraordinarily robust test program through out the development process </li></ul><ul><li>Anticipate the development and test needs developing test data and cases in advance </li></ul>Agile Program Management Issues Cont’d Involves Testing For: Pre-Conditions Post-Conditions Class Invariants
  16. 16. Agile Program Management Issues <ul><li>Storyboard the development and assign story actors to live the role </li></ul><ul><li>Use automated tools for organizational and summary tasks </li></ul>
  17. 17. Develop a Componentized Architecture <ul><li>Principles </li></ul><ul><ul><li>We do the simplest thing that could possibly work making future changes or additions easier </li></ul></ul><ul><ul><li>The right design at the right time, no more </li></ul></ul><ul><ul><ul><li>up-front high-level system architecture </li></ul></ul></ul><ul><ul><ul><li>up-front high-level component architecture </li></ul></ul></ul><ul><ul><ul><li>up-front high-level data model </li></ul></ul></ul><ul><ul><ul><li>details are determined when the time comes for functionality to be built </li></ul></ul></ul><ul><li>Benefits </li></ul><ul><ul><li>Less is faster, cheaper, and leads to “better” </li></ul></ul><ul><ul><li>Flexibility minimizes the cost of change </li></ul></ul>
  18. 18. Product Build Philosophy <ul><li>Principles </li></ul><ul><ul><li>Build the complete product, all the time </li></ul></ul><ul><ul><li>One button builds everything, including </li></ul></ul><ul><ul><ul><ul><li>Product executables </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Installation materials </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Test harness and test components </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Generated documentation </li></ul></ul></ul></ul><ul><ul><li>Build can be accomplished from the command line </li></ul></ul><ul><ul><li>The same build process is used by everyone </li></ul></ul><ul><li>Benefits </li></ul><ul><ul><li>Easy to manage; easy to add new team members </li></ul></ul><ul><ul><li>Integrates well with testing environment </li></ul></ul>
  19. 19. Testing <ul><li>Principles </li></ul><ul><ul><li>All code must have tests, with the test created first </li></ul></ul><ul><ul><li>Unit tests are executed daily during the automated build </li></ul></ul><ul><ul><li>When a bug is found, new tests are created </li></ul></ul><ul><ul><li>All unit tests must pass before code can be released </li></ul></ul><ul><li>Benefits </li></ul><ul><ul><li>Provides constant visibility into areas of the system at risk </li></ul></ul><ul><ul><li>The result is rapid progress and a system that always works better than it did the day before </li></ul></ul>
  20. 20. Testing Meeting Configuration Management <ul><li>Test code maintained alongside project code </li></ul><ul><li>Tests can be run from the command line </li></ul><ul><li>Coverage statistics tell you how thorough the testing is </li></ul>
  21. 21. References <ul><li>Agile Software Development Ecosystems, Jim Highsmith </li></ul><ul><li>Agile Software Development, Alistair Cockburn </li></ul><ul><li>Agile Modeling: Effective Practices for Extreme Programming and the Unified Process, Scott Ambler </li></ul><ul><li>Agile Development, Rich McCabe, May 2003 </li></ul><ul><li>Agile Software Development with Scrum, Ken Schwaber and Mike Beedle </li></ul><ul><li>Extreme Programming Explained: Embrace Change, Kent Beck </li></ul><ul><li>Refactoring: Improving the Design of Existing Code, Martin Fowler </li></ul><ul><li>Adaptive Software Development, A Collaborative Approach to Managing Complex Systems, Jim Highsmith </li></ul><ul><li>A Practical Guide to Feature-Driven Development, Stephen Palmer and John Felsing </li></ul><ul><li>Foundations of Lean Development: The Lean Development Manager’s Guide, Vol 2, Robert Charette </li></ul><ul><li>Agile Software Development, Dottie Acton, Lockheed Martin Mission Systems Oct, 2002 (Unpublished </li></ul>