1 / 40

Agile Methods

Agile Methods. CIFM03 Lecture 6. What is Agile Software Development?. late 1990's several methodologies gained increasing public attention. Theses methodologies had a combination of old and new ideas and/or transmuted old ideas. These common threads and ideas include:

toviel
Télécharger la présentation

Agile Methods

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Agile Methods CIFM03 Lecture 6

  2. What is Agile Software Development? • late 1990's several methodologies gained increasing public attention. Theses methodologies had a combination of old and new ideas and/or transmuted old ideas. These common threads and ideas include: • Close collaboration between the programmer, team and business experts • Face-to-face communication (considered to be more efficient than written documentation) • Frequent delivery of new deployable business value

  3. What is Agile Software Development? • Cohesive and self-organizing teams • Ways of crafting the code and the team such that the inevitable requirements change did not result in crises.

  4. What is Agile Software Development? • The originators and practitioners of these methodologies identified what these methodologies had in common; • They coined the word “Agile" to name the union of these methods; • And, they developed the Manifesto for Agile Software Development.

  5. The Manifesto for Agile Software Development Here is the statement of shared development values that they identified: 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 processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.

  6. Implementation of the Manifesto Principles • http://www.agilemanifesto.org/principles.html • Many new Agile projects started • some succeeded and some failed • There were successes in which business people and technical people declared there love for the project approach • This was the way they wanted software development done • And successful projects spawned enthusiasts.

  7. The Agile Alliance • The Agile Alliance was born spawned: • To satisfy the customer through early and continuous delivery of valuable software • http://www.agilealliance.org/home

  8. The Agile Alliance • The Agile Alliance exists to help more Agile projects succeed and to help the enthusiasts start Agile projects.

  9. Agile Alliance • Emphasises: • Face-to-face communication, • Visits to a users group and discusions with peers about their experiences of Agile methods • http://www.agilealliance.org/userGroups/index

  10. History • http://www.agilemanifesto.org/history.html

  11. Agile Database Techniques • Agile Data (AD) methodology (Data Driven): • define strategies that apply in a wide variety of situations so IT professionals work together effectively on the data aspects of software systems • This gives a one size does not fit all methodology • And a collection of philosophies that will enable IT professionals to work together effectively on the data aspects of software-based systems

  12. Agile Modelling • A practice-based methodology for effective modelling and documentation of software-based systems • A collection of values, principles, and practices for modelling software that can be applied on a software development project in an effective and light-weight manner (without overburdening planning and documentation) • It is proposed that Agile models are more effective than traditional models because they are just barely good enough: perfection is not necessary • Agile modelling is applicable to requirements collection and analysis, architectural design and detailed design

  13. Adaptive Software Development (ASD) • ASD practices are driven by a belief in continuous adaptation: • Using a different philosophy and a different life cycle-geared to accepting continuous change as the norm • Replacing the static plan-design-build life cycle by a dynamic Speculate-Collaborate-Learn life cycle • Applying a life cycle dedicated to continuous learning and oriented to change, re-evaluation, predicting (speculating on) an uncertain future • And, enabling an intense collaboration among developers, management, and customers

  14. Adaptive Software Development (ASD) • The Speculate-Collaborate-Learn life cycle:

  15. Speculate • Project Initiation, to set the project's mission • Establish the Time-Box for the entire project • Decide on the number of Iterations through project development and assign a time-box to each one • Develop a theme or objective for each of the Iterations • Developers and customers both assign features to each Iteration

  16. Collaborate • The Technical Team delivers working software • The Project Managers facilitate collaboration and concurrent development activities

  17. Learn • There are FOUR general categories of things to learn about at the end of each development iteration: • Resultant Quality from the customer's perspective • Resultant Quality from a technical perspective • The Functioning of the delivery team and the Practices team members are utilizing • The project's Status

  18. An ASD life cycle’s Six basic characteristics • Mission focused • Feature based • Iterative • Time-boxed • Risk driven • Change tolerant

  19. The Crystal Approach • A family of human-powered and adaptive, Ultralight, Shrink-to-fit software development methodologies: • A "Human-powered" approach - focused on achieving project success through enhancing the work of those involved (other methodologies might be process-centric, or architecture-centric, or tool-centric, but Crystal is people-centric) • A Ultralight approach - whatever the project size and priorities, a Crystal-family methodology for the project will work to reduce the paperwork, overhead and bureaucracy to the minimum that is practical for the parameters of that project • A "Shrink-to-fit- start with something seemingly small enough, and work to make it smaller and better fitting • Crystal -Non-jealous, that is, allows substitution of similar elements from other methodologies

  20. Crystal • Crystal combines a self-adapting family of Shrink-to-fit, Human-powered software development methodologies based on the understanding that: • Every project needs a different set of policies and conventions, or methodology • The workings of the project are sensitive to people issues, and improve as the people issues improve, individuals get better, and their teamwork gets better • Better communications and frequent deliveries communication reduce the need for intermediate work products

  21. Feature-Driven Development (FDD) • FDD starts with creation of a domain object model in collaboration with domain experts • Using information from modelling and from requirements activities the developers create a features list • Then a rough plan of development is drawn up and responsibilities are assigned • Then small dynamically formed teams develop the features by repeatedly performing design and build iterations that last no longer than 2 weeks

  22. At this point Dynamic Systems Development Method (DSDM) • The DSDM Lifecycle: • DSDM – is more a framework than a method • The Project Process has 7 phases, which are repeated during the life-cycle of the project (hence making DSDM an iterative and incremental method)

  23. DSDM • Pre-Project phase -- ensures that only the right projects are started and that they are set up correctly. • Feasibility Study -- assessment of whether DSDM is the right approach for the project and a definition of the problem, assessments of the costs and assessment of the technical feasibility of delivering a system.

  24. DSDM • Business Study -- the prime focus of attention is on the business processes affected and their information needs. Using a series of facilitated workshops to quickly gain consensus as to the priorities of the development. • Functional Model Iteration -- refining the business-based aspects of the system. • Design and Build Iteration -- is where the system is engineered.

  25. DSDM • Implementation -- covers the cutover from the development environment to the operational environment. • Post-Project -- this phase keeps the solution operating effectively.

  26. Underlying Principles • Clear definition of roles and responsibilities in the project • Active user involvement is imperative with 4 defined business roles • The team must be empowered to make decisions • The focus is on frequent delivery of products, which are defined in terms of purpose and quality and who's involved in the delivery

  27. Fitness for business purpose is the essential criterion for acceptance of deliverables • Iterative and incremental development is necessary to converge on an accurate business solution • All changes during development are reversible • Requirements are baselined at a high level • Testing is integrated throughout the life-cycle • Collaboration and cooperation between all stakeholders is essential • http://www.agilealliance.org/programs/roadmaps/Roadmap/dsdm/dsdm_index.htm

  28. Lean Software Development • In the last 25 years, lean thinking has • had a tremendous global economic impact • transformed how many industries operate by changing the way they think about their work and their people. • Lean works because it produces more wealth by: • eliminating waste, • enabling any given investment of people and productive resources to produce more value while providing more meaningful, fulfilling work to the participants. • Lean Software Development applies lean thinking to software development contexts.

  29. Lean • not about what a team does – practices – it is about how a team decides what to do and when to do it. • starts at the level of principles derived from Deming • The application of lean thinking principles is different in each domain and it maps differently to different software development contexts as well. • Practices appropriate to lean manufacturing or lean construction will not necessarily be appropriate to software development.

  30. Principles (adapted to the software context) are: • Eliminate Waste - If the customer does not value it or if it slows down rapid delivery to the customer, it is waste. Don't do it. • Amplify Learning - Development is about discovery and feedback. Deliver in small batches to minimize uncertainty and permit the customer to steer. • Decide as Late as Possible - Delay commitment. Keep options open as long as possible to base decisions on the best possible information.

  31. Deliver as Fast as Possible - The best measure of organizational maturity is the speed with which it can repeatedly and consistently deliver value. • Empower the Team - Teams should design their own processes. Provide the training and leadership they need. • Build Integrity In - Concurrent development enables rich communication, the essential ingredient for system integrity. • See the Whole - Decomposition leads to sub-optimization. Focus on overall results.

  32. Lean Software Development is not a development methodology but rather a way to think about whatever approach a team uses. • Lean Software Development thinking tools support team decisions about which practices are appropriate in their unique context. Agile methods, including Extreme Programming, Scrum, DSDM, and Adaptive Software Development, are all consistent with the way Lean Software Development applies lean thinking to developing software. • http://www.agilealliance.org/programs/roadmaps/Roadmap/lean/lean_index.htm

  33. Scrum • Scrum - an agile, lightweight process that can be used to manage and control software and product development. • Wrapping existing engineering practices, including Extreme Programming, Scrum generates the benefits of agile development with the advantages of a simple implementation. • Scrum significantly increases productivity while facilitating adaptive, empirical systems development.

  34. Test-Driven Development • craft of producing automated tests for production code, and using that process to drive design and programming. • For every tiny bit of functionality in the production code, you first develop a test that specifies and validates what the code will do. • You then produce exactly as much code as will enable that test to pass. Then you refactor (simplify and clarify) both the production code and the test code.

  35. In recipe format the steps of TDD are: • The first step is to quickly add a test, basically just enough code to fail. • Next you run your tests, often the complete test suite although for sake of speed you may decide to run only a subset, to ensure that the new test does in fact fail. • You then update your functional code to make it pass the new tests. • The fourth step is to run your tests again. If they fail you need to update your functional code and retest. • Now look for and remove duplication; clean up the test code (extract common setup into the fixture/setUp(); split fixtures if they become non-cohesive; etc.)

  36. The above sequence is repeated continuously throughout the programming process. • Each cycle has a duration of minutes, if you're not capable to fix a failing test within minutes, then throw away the test and the code that you wrote to satisfy the test and design a simpler test.

  37. XBreed • XBreed is the product of mixing SCRUM, XP and Alexanderian ideas. XBreed is the result of developing multiple applications and shared components as fast as humanly possible. Combining Scrum and XP is very natural: • Scrum provides a solid management framework, while XP provides a basic but complete set of engineering practices. The result is a lean but very mean (very effective) way to run software projects. In addition, Scrum practiced at the application team level, and provided a Shared Resources Team is involved, can lead to reusability. • http://www.agilealliance.org/programs/roadmaps/Roadmap/xbreed/xbreed_index.htm

  38. XP - eXtreme Programming • Extreme Programming is a discipline of software development based on values of : • simplicity, • communication, • feedback, • courage. • Brings whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation.

  39. Authors • Mike Beedle • Arie van Bennekum • Alistair Cockburn • Ward Cunningham • Martin Fowler • Jim Highsmith etc • http://agilemanifesto.org/authors.html

  40. The new methodology • Rapidly growing interest in agile (aka "lightweight") methodologies. • Alternatively characterized as an antidote to bureaucracy or a license to hack they've stirred up interest all over the software landscape. • reasons for agile methods, focusing not so much on their weight but on their adaptive nature and their people-first orientation. • summary and references to the processes in this school and consider the factors that should influence your choice of whether to go down this newly trodden path. • http://www.martinfowler.com/articles/newMethodology.html

More Related