4.Agile Software Engineering_Part 1.pdf
Document Details
Uploaded by ModernWashington
Tags
Full Transcript
IS1204 Fundamentals of Software Engineering H N D THILINI H N D THILINI Quiz Time Password: spm@IS#1204 Agile Software Development Learning Outcomes u Define agile software development u Understand the rationale for agile software development methods and agile manifesto. u Comp...
IS1204 Fundamentals of Software Engineering H N D THILINI H N D THILINI Quiz Time Password: spm@IS#1204 Agile Software Development Learning Outcomes u Define agile software development u Understand the rationale for agile software development methods and agile manifesto. u Compare and contrast agile and plan- driven development. u Identify the key practices in extreme programming and how these relate to general practices of agile methods. u Understand Scrum, Kanban, Lean approach to agile software development. An Introduction to Agile? u Why does it exist? u Agile is a time boxed, iterative u What problems does it solve? approach to software delivery that builds software u What is it? incrementally from the start of the project, instead of trying to deliver it all at once near the end. Most software developments fail u Software developments projects being cancelled every now and then u Software projects are being considered as failures by those who initiated it. u One in every two projects exceed its budget by 200%. WHY / What is wrong? WHY? Cont.… u Do not meet the need of the user. u Deadline rush. u Less number of features delivered. u Poor interfaces. Success is not just functions anymore!!! LOT more EXPECTATIONS - Users u Speed Delivery u Accuracy u Features vs Usability What causes most of the software developments fail???????? Traditional Waterfall Method Waterfall model build-upon Assumptions u Requirements can be entirely predicted upfront. u Each phase of the lifecycle can be perfected before moving to the next. u Timeframes and budgets can be predicted up front. u The feedback from the real user is not so valuable. UNREALISTIC Causes for Failures Functions Functions Functions Functions u Risk is bundled! Functions Functions Functions Functions Functions Functions Functions Functions Functions Functions Functions Functions Causes for Failures u Poor Beginning End communication! u Feedback is obtained at the end of the project Can you meet the client requirement at this stage???? Agile methods Topics to Discuss 1. What is Agile Introduction, Why Agile came into play, History of Agile 2. Agile Manifesto 4 core values, 12 principles of agile 3. Agile Development Life Cycle How it is done, Different stages, Central activities 4. Advantages & Disadvantages of Agile 5. Agile Vs Traditional software development approaches Comarison with other approaches, What types of projects is agile suitable for Rapid software development u Rapid development and delivery is now often the most important requirement for software systems u Businesses operate in a fast–changing requirement, and it is practically impossible to produce a set of stable software requirements u Software must evolve quickly to reflect changing business needs. u Plan-driven development is essential for some types of system but does not meet these business needs. u Agile development methods emerged in the late 1990s whose aim was to radically reduce the delivery time for working software systems Agile methods u Dissatisfaction with the overheads involved in software design methods of the 1980s and 1990s led to the creation of agile methods. These methods: u Focus on the code rather than the design u Are based on an iterative approach to software development u Are intended to deliver working software quickly and evolve this quickly to meet changing requirements. u The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework. Agile manifesto cont.… u 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 u That is, while there is value in the items on the right, we value the items on the left more. 12 Agile Principles 1. Our highest priority is to satisfy the customer 7. Working software is the primary measure of through early and continuous delivery of valuable progress. software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. Agile processes harness change for development. The sponsors, developers, and users the customer's competitive advantage. should be able to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a become more effective, then tunes and adjusts its development team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer through 7. Working software is the primary measure of early and continuous delivery of valuable software. progress. 1.Early and continuous8. delivery 2. Welcome changing requirements, even late in Agile processes development. Agile processes harness change for of valuable promote sustainable development. The sponsors, developers, and users should be able software the customer's competitive advantage. to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work together 10. Simplicity--the art of maximizing the amount of work daily throughout the project. not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a development become more effective, then tunes and adjusts its team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer through 7. Working software is the primary measure of progress. early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 2. Welcome Changing Requirements 3. Deliver working software frequently, from a couple of 9. Continuous attention to technical excellence and weeks to a couple of months, with a preference to good design enhances agility. the shorter timescale. 4. Business people and developers must work together 10. Simplicity--the art of maximizing the amount of work daily throughout the project. not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a development become more effective, then tunes and adjusts its team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer through 7. Working software is the primary measure of early and continuous delivery of valuable software. progress. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 3. Deliver working software frequently 4. Business people and developers must work together 10. Simplicity--the art of maximizing the amount of work daily throughout the project. not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a development become more effective, then tunes and adjusts its team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer through 7. Working software is the primary measure of progress. early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference to good design enhances agility. the shorter timescale. 4. Business people and developers must work together 10. Simplicity--the art of maximizing the amount of work daily throughout the project. not done--is essential. 4. Business people and developers must work 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and togetheremerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a development become more effective, then tunes and adjusts its team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer 7. Working software is the primary measure of through early and continuous delivery of valuable progress. software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs 5. Build projects around motivated them the environment and support their need, and emerge from self-organizing teams. trust them to get the job done. individuals 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a become more effective, then tunes and adjusts its 12 Agile Principles 1. Our highest priority is to satisfy the customer 7. Working software is the primary measure of through early and continuous delivery of valuable progress. software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. Face-to-face conversation 6. The most efficient and effective method of conveying information to and within a 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its development team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer 7. Working software is the primary measure of software. 7. Working software to measure the through early and continuous delivery of valuable progress. 2. Welcome changing requirements, even late in progress 8. Agile processes promote sustainable development. Agile processes harness change for development. The sponsors, developers, and users the customer's competitive advantage. should be able to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a become more effective, then tunes and adjusts its 12 Agile Principles 1. Our highest priority is to satisfy the customer through 7. Working software is the primary measure of early and continuous delivery of valuable software. progress. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 8. Promote sustainable 3. Deliver working software frequently, from a couple development 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a development become more effective, then tunes and adjusts its team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer 7. Working software is the primary measure of through early and continuous delivery of valuable progress. software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 9. Technical excellence 4. Business people and developers must work and good design. 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a become more effective, then tunes and adjusts its 12 Agile Principles 1. Our highest priority is to satisfy the customer 7. Working software is the primary measure of through early and continuous delivery of valuable progress. software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. Agile processes harness change for development. The sponsors, developers, and users the customer's competitive advantage. should be able to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 10. Maximizing the amount of work not done. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a become more effective, then tunes and adjusts its 12 Agile Principles 1. Our highest priority is to satisfy the customer 7. Working software is the primary measure of through early and continuous delivery of valuable progress. software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. development. Agile processes harness change for The sponsors, developers, and users should be able the customer's competitive advantage. to maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple 9. Continuous attention to technical excellence and of weeks to a couple of months, with a preference good design enhances agility. to the shorter timescale. 4. Business people and developers must work 10. Simplicity--the art of maximizing the amount of together daily throughout the project. work not done--is essential. 5. Build projects around motivated individuals. Give 11. The best architectures, requirements, and designs 11. Self-organizing teams. them the environment and support they need, and emerge from self-organizing teams. trust them to get the job done. 6. The most efficient and effective method of 12. At regular intervals, the team reflects on how to conveying information to and within a become more effective, then tunes and adjusts its development team is face-to-face conversation. behavior accordingly. 12 Agile Principles 1. Our highest priority is to satisfy the customer through early 7. Working software is the primary measure of progress. and continuous delivery of valuable software. 2. Welcome changing requirements, even late in 8. Agile processes promote sustainable development. The development. Agile processes harness change for the sponsors, developers, and users should be able to customer's competitive advantage. maintain a constant pace indefinitely. 3. Deliver working software frequently, from a couple of 9. Continuous attention to technical excellence and good weeks to a couple of months, with a preference to the design enhances agility. shorter timescale. 4. Business people and developers must work together daily 10. Simplicity--the art of maximizing the amount of work not throughout the project. done--is essential. 5. Build projects around motivated individuals. Give them the 11. The best architectures, requirements, and designs emerge environment and support they need, and trust them to get from self-organizing teams. the job done. 6. The most efficient and effective method of conveying 12. At regular intervals, the team reflects on how to become face conversation. 12. Team reflection. information to and within a development team is face-to- more effective, then tunes and adjusts its behavior accordingly. What is Agile Software Development? Is Agile better? Time 100% Long Release 25% Short Short Short Short release release release release Feedback Point Corrections Modifications Decrease Risk Re-prioritizing Agility More Feedback Usability analysis Less confusion More Satisfaction What is Agile software development cont.… u Program specification, design and implementation are inter-leaved u The system is developed as a series of versions or increments with stakeholders involved in version specification and evaluation u Frequent delivery of new versions for evaluation u Extensive tool support (e.g. automated testing tools) used to support development. u Minimal documentation – focus on working code Plan-driven and agile development Plan-based development Requirements Requirements Design and engineering specification implementation Requirements change requests Agile development Requirements Design and engineering implementation Plan-driven and Agile development u Plan-driven development u A plan-driven approach to software engineering is based around separate development stages with the outputs to be produced at each of these stages planned in advance. u Not necessarily waterfall model – plan-driven, incremental development is possible. u Iteration occurs within activities. u Agile development u Specification, design, implementation and testing are inter-leaved and the outputs from the development process are decided through a process of negotiation during the software development process. What is Agile Software Development? u A mindset What is Agile Software Development? u An umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto. Agile Software Development - Successes u Small or medium sized product development. u Custom system development within organization u Experiments in using agile approaches for critical systems engineering. u Security, safety, and dependability analysis. u Need significant modifications before applying. Drawbacks / Difficulties u Custom representatives are subject to other pressures and cannot take full part in the software development. u Individual team members may not have suitable personalities for the intense involvement / teamwork. u Prioritizing changes can be extremely difficult when there are lot of stakeholders. u Under pressure from delivery schedules, the team may not have time to carry system simplifications. u Cultural change – team members may find it hard to change the practice (informal / defined by team itself) Plan driven vs Agile u Detailed design and specification before moving to implementation? Plan-driven approach u Incremental delivery a realistic? Agile u The system being development is large? Plan-driven approach u Real-time system with complex timing requirements? Plan-driven approach u Expected system lifetime? u Technology? u Development team organization? Plan driven vs Agile u Cultural issues that may affect the system development? u Skills of designers and developers? u Subjected to any external regulations? An Executable Software that meets the need and does useful things for the individual user or the organization. Exercise 1 u Explain why the rapid delivery and deployment of new systems is often more important to businesses than the detailed functionality of the systems. Exercise 2 u When would you recommend the use of agile for developing a software system? Exercise 3 (Homework) u Explain how the principles underlying agile methods lead to the accelerated development and deployment of software.