Paul Ammann http://cs.gmu.edu/~pammann/ The Agile Heresy: What Drives Traditional Software Engineering, and Why Agile Turns it Upside Down Paul Ammann.

Slides:



Advertisements
Similar presentations
Basic SDLC Models.
Advertisements

Unified process(UP) UP is an OO system development methodology offered by Rational(Rational Rose) s/w, now a part of IBM Developed by Booach,Rambaugh,Jacobson--
Chapter 05: Evolutionary Requirements Definition : Requirements  “Requirements are capabilities and conditions to which the system, and more broadly.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Agile Development.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
Chapter 1 The Systems Development Environment Modern Systems Analysis and Design Sixth Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich.
Chapter 1 The Systems Development Environment
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 1 The Systems Development Environment
Agile Programming Principles.
Chapter 1 The Systems Development Environment Modern Systems Analysis and Design Sixth Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Integrating Usability Engineering and Agile Software Development: A Literature Review 陳振炎教授 楊哲豪
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Engineering  Turning ideas into reality  Creating something useful from other things using science and math.
Agile Software Development By Kshitij Limaye CSC 532.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Introduction to Software Testing (2nd edition) Chapter 4 Putting Testing First Paul Ammann & Jeff Offutt August.
Lectures 2 & 3: Software Process Models Neelam Gupta.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Software Design and Development Development Methodoligies Computing Science.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Introduction to Agile Development Advanced Software Engineering Dr. Nuha El-Khalili.
CS 389 – Software Engineering Lecture 2 – Part 2 Chapter 2 – Software Processes Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.
The successful features in game developing
Advanced Software Engineering Dr. Cheng
CS223: Software Engineering
Software Development.
Software Development Overview
Paul Ammann & Jeff Offutt
Appendix B Agile Methodologies
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
8.4 Management of Postdelivery Maintenance
Chapter 1 The Systems Development Environment
Where Agile Business Meets Agile Development
Chapter 18 Maintaining Information Systems
Putting Testing First CS 4501 / 6501 Software Testing
Paul Ammann & Jeff Offutt
IEEE Std 1074: Standard for Software Lifecycle
CS701 SOFTWARE ENGINEERING
Software Engineering PPT By :Dr. R. Mall.
Chapter 1 The Systems Development Environment
Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Introduction to Software Engineering
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Paul Ammann & Jeff Offutt
Chapter 2 Software Processes
Software Engineering Lecture 18.
ICSM and Extreme Programming(XP)
Chapter 2 – Software Processes
Putting Testing First CS 4501 / 6501 Software Testing
Yes, we need hundreds of methodologies!!!
Overview: Software and Software Engineering
Process Models Coming up: Prescriptive Models.
Software Testing and Maintenance Maintenance and Evolution Overview
Introducing ISTQB Agile Foundation Extending the ISTQB Program’s Support Further Presented by Rex Black, CTAL Copyright © 2014 ASTQB 1.
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Software Engineering: A Practitioner’s Approach, 6/e Chapter 3 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Appendix B Agile Methodologies
Extreme Programming.
Agile software development
The New Methodology Martin Fowler Paper Presented by Vyshali Belagodu
Software Engineering: A Practitioner’s Approach, 6/e Chapter 3 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
What is Software Engineering?
Software Development Overview
Presentation transcript:

Paul Ammann http://cs.gmu.edu/~pammann/ The Agile Heresy: What Drives Traditional Software Engineering, and Why Agile Turns it Upside Down Paul Ammann http://cs.gmu.edu/~pammann/

The Caricature It’s Fun To Spin, But Let’s Look A Little Deeper 11/14/2018

Overview Déjà vu all over again. Traditional Evolutionary Design circa 1970 A Disaster! Planned Design Managing The Cost Curve Through Upfront Analysis The Heart of Modern Software Engineering Agile Approaches The Return Of Evolution Managing The Cost Curve Through Testing Post Development Design This Presentation Draws Heavily on Fowler and Ambler Is Design Dead?, The New Methodology Examining the Agile Cost of Change Curve Déjà vu all over again. 11/14/2018

Traditional Evolutionary Design Successful In Other Engineering Disciplines Each Successive Widget Is an Improvement In the Beginning, Programmers Just Programmed Result Was Ad Hoc Structure Eventually Hard – Impossible, Actually - To Maintain The tendency towards irreducible number of errors In a suitably complex system, any attempt to fix observed errors tends to result in the introduction of other errors - Brooks Key is managing complexity Why Software Engineering Developed as a Field 11/14/2018

Planned Design Introduction of Traditional Development Phases Requirements, System Design, Detailed Design, etc. Heavy Reliance on Upfront Analysis The big errors are made at the beginning and rarely recognized. If caught at all, it is usually after fielding. The lesser errors surface as soon as coding begins and shout out when the first real user tests a prototype - Brooks Early Life Cycle Effort Has Huge Potential ROI Anticipate Change, and Plan for it Identify Defects Early Success Defined As “On Time and On Budget” 11/14/2018

Traditional Cost of Change Curve Standard Motivation For Up Front Design Techniques 11/14/2018

Is Software Engineering Really Like Other Engineering Separation of Design and Construction Design is hard to predict; Construction is easy to predict But software engineering is all design! The Unpredictability of Requirements No stable requirements means no predictable plan But everyone recognizes that software requirements are soft! Controlling Unpredictable Processes with Iteration Working versions introduce reality – always a good thing. The Adaptive Customer Business value is hard to articulate precisely in advance Perhaps Software Engineering is Different 11/14/2018

Agile: The Return of Evolution The Problem With Traditional Design: The Track Record of Anticipating Change is Pretty Lousy Extremely Difficult To Maintain Non Executable Documents How Relevant Is Your UML After Six Months? What Does It Mean If Your Design Needs To Change? Failure In Prior Design Process? (Traditional) vs Normal First Class Problem In Software Engineering? (Agile) How Often Are You Running Your Tests? Key Gap: Making Mistakes vs. Finding Mistakes Key Gap: Divergence Between Different Development Teams Software Evolves Whether We Like It or Not 11/14/2018

Defect Discovery: Agile vs. Traditional It’s All About The Deltas 11/14/2018

A Different Approach To Managing The Cost Curve The Test Harness As Guardian (Near) Instant Feedback on Changes (or Mistakes) An Hour? Ten Minutes? Less? Implies Something Is Executable From The Very Beginning The Role of Continuous Integration Effective Communication Mechanism De-Emphasize Non Executable Artifacts If It Doesn’t Execute, It’s Not Checkable Hence, It Rots… Avoid Anticipating Future Needs YAGNI: You Ain’t Gonna Need It The Heresy: Counter To Decades of Design Philosophy 11/14/2018

Agile Cost of Change Curve A Good Agile Project Builds Something Different and Better Than The Original Design 11/14/2018

Refactoring – The New Design Design Still Matters Agile Distributes Design Effort Focus is on Needed, Rather Than Anticipated, Functionality Refactoring Requires Recognizing Defective Designs And Replacing Them with Functionally Equivalent Designs Requires Basic Training in Code Smells Maintenance vs. Green Fields Development After First 15 Minutes All Projects Are Maintenance Projects Design as a Post Development Activity 11/14/2018