Agile Software Engineering
A Presentation by: Austin Riddle
Overview
Agile Methodology
Concepts and Ideology Origins Applicable Domains
Case Studies Process Example Adoption Detractors Agile vs. Plan Driven Processes Future Headings
What is Agile Software Development?
Easily moved, light, nimble, active software processes Fitting the process to the project Avoidance of things that waste time
References: [1], [10]
Agile Software Development Ecosystem
Chaordic Perspective Collaborative Values and Principles Streamlined Methodology
Reference: [10]
Agile Software Development Ideals
Individuals and interactions over process and tools Working Software over comprehensive documentation
Rework vs. Reuse
Customer collaboration over contract negotiation
Solutions vs. Products
Responding to change over following a plan
References: [4], [10]
Substantive Definition
the continual readiness of an entity to rapidly or inherently, proactively or reactively, embrace change, through high quality, simplistic, economical components and relationships with its environment.
Reference: [6]
Origins and Foundations
Scrum
Crystal Fam.
XP Adaptive SD Agile Agile Modelling
PP
References: [1] (image), [6], [10]
Applicable Domains
Multi-Sized Corporations
Multi-team environments using overlapping cross-team communities
Government Contracts Most effective for extreme projects Projects that do not work well in rigorous plan-driven processes
References: [2], [5], [8], [10], [14]
Case Studies
Daimler-Chrysler Embedded Software CaribouLake.com Database Nuclear Control Systems Manufacturer
References: [9], [12], [15]
Daimler-Chrysler Case Study
Problem: Customer specific add-ons a hassle
Reasons
1. Rising workload 2. Frequent late changes 3. Difficult time and quality constraints 4. Late delivery
Solutions
1. 2. 3. 4.
Image From: [15]
Implement highest initial value item first Identify discrepancies of Work Products to Specifications as automated as possible Identify discrepancies of Work Products to Specifications as soon as possible Fix discrepancies of Work Products to Specifications as soon as possible
Daimler-Chrysler Case Study Results
Overall Solution: Combination of classical and agile practices
Test First practices Unit Testing
Challenges
No external support Test cases were difficult to scope Developer transitions
implement->document->test test->implement->document
Effects
Substantial increase in flexibility, quality and timeliness Greater acceptance of agile practices
CaribouLake.com Case Study
Problem: Database design during short development iterations Reasons
Traditional up-front database development impractical
Late requirements changes Database changes more costly than application changes
CaribouLake.com Case Study Results
Solution: Collaborative schema evolution
Formalized Refactoring Test Suites Database coding standards
Effects
Distributed knowledge of database design Faster development Leaner database schema
Nuclear Control Systems Manufacturer Case Study
Problem: Difficulty replacing old control software
Heavyweight waterfall process too inflexible
Solution: Independent research and wholesale adoption of agile processes
No upfront training of team Absence of common working area, workstation configurations and an integration and build environment
Results
Five development iterations produced < 20% projected business value Agile process approach canned Team was demoralized
Example Process Comparison
Image From: [13]
Adoption Detractors
Inconsistent and diverse definitions Lack of theoretical grounding Different way of thinking
Role changes Situational customization
Solid people skills required Short iterations inhibit long-term perspective Risks
Harder to manage feature creep and customer expectations Difficult to quantify cost, time, quality.
References: [1], [3], [6], [7], [13], [16]
Agile vs. Plan Driven Processes
1.
2.
3.
4.
5.
Small products and teams; scalability limited Untested on safetycritical products Good for dynamic, but expensive for stable environments. Require experienced Agile personnel throughout Personnel thrive on freedom and chaos
1. Large products and
2.
3.
4.
5.
teams; hard to scale down Handles highly critical products; hard to scale down Good for stable, but expensive for dynamic environments Require experienced personnel only at start if stable environment Personnel thrive on structure and order
Reference: [5]
Use of Agile and Plan Driven Processes
Each have appropriate roles in software development Most use Agile-Plan Driven Hybrid
When should each be used?
References: [5] (image), [7], [12]
My Agile Synopsis
No such thing as Agile hybrid. Agility is about flexibility and leanness. Agility != Lack of Structure Change of process control from Top-Down to Bottom-Up
An Eye on the Future
Volatility and uncertainty in project environments
Increased demand for more adaptive processes
More theoretical research in Agile Methods Combined methods emerging (Agile RUP) Expanded fields of use (anywhere design is present)
References: [1], [3], [5], [6], [7], [11]
References
1) 2)
3) 4) 5)
6)
7)
8)
9)
Abrahamsson, P. et al. New Directions on Agile Methods: A Comparative Analysis. In Proceedings of the 25th International Conference on Software Engineering. IEEE 244-256, Portland, Oregon, May 2003. May be found at: http://csdl.computer.org/comp/proceedings/icse/2003/1877/00/18770244abs.htm Alleman, G. B. and Henderson, M. Making Agile Development Work in a Government Contracting Environment. In Proceedings of the Agile Development Conference (ADC03). IEEE 114-120, Salt Lake City, Utah, June 2003. May be found at: http://csdl.computer.org/comp/proceedings/adc/2003/2013/00/20130114abs.htm Armitage, J. Are Agile Methods Good for Design? Interactions. ACM 14-23. 11,1 January 2004. May be found at: http://portal.acm.org/citation.cfm?id=962342.962352 Beck, K. et al. Manifesto for Agile Software Development. Last Access: 02-7-2005. May be found at: http://www.agilemanifesto.org/ Boehm, B. and Turner, R. Using Risk to Balance Agile and Plan-Driven Methods. IEEE Computer. IEEE 57-66, 36,6, June 2003. May be found at: http://csdl.computer.org/comp/mags/co/2003/06/r6057abs.htm Conboy, K. and Fitzgerald, B. Toward a Conceptual Framework of Agile Methods: A Study of Agility in Different Disciplines. In Proceedings of the 2004 ACM Workshop on Interdisciplinary Software Engineering Research. ACM 37-44, Newport Beach, CA. November 2004. May be found at: http://portal.acm.org/citation.cfm?id=1029997.1030005 Derbier, G. Agile Development in the Old Economy. In Proceedings of the Agile Development Conference (ADC03). IEEE 125-132, Salt Lake City, tah, June 2003. May be found at: http://csdl.computer.org/comp/proceedings/adc/2003/2013/00/20130125abs.htm Green, B. Agile Methods Applied to Embedded Firmware Development. In Proceedings of the Agile Development Conference (ADC04). IEEE 71-77, Salt Lake City, Utah, June 2004. May be found at: http://csdl.computer.org/comp/proceedings/adc/2004/2248/00/22480071abs.htm Harriman, A., Hodgetts, P. and Leo, M. Emergent Database Design: Liberating Database Development with Agile Practices. In Proceedings of the Agile Development Conference (ADC04). IEEE 100-105, Salt Lake City, Utah, June 2004. May be found at: http://csdl.computer.org/comp/proceedings/adc/2004/2248/00/22480100abs.htm
References (Cont.)
10) 11)
12)
13)
14)
15)
16)
Highsmith, J. What is Agile Software Development? CrossTalk: The Journal of Defense Software Engineering. Oct. 2002. May be found at: http://www.stsc.hill.af.mil/crosstalk/2002/10/highsmith.html Hirsch, M. Making RUP Agile. In Practitioners Reports of the Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA 2002). ACM 1-28. Seattle, Washington, November 2002. May be found at: http://portal.acm.org/citation.cfm?id=604251.604254 Hodgetts, P. Refactoring the Development Process: Experiences with the Incremental Adoption of Agile Practices. In Proceedings of the Agile Development Conference (ADC04). IEEE 106-113, Salt Lake City, Utah, June 2004. May be found at: http://csdl.computer.org/comp/proceedings/adc/2004/2248/00/22480106abs.htm Huo, M. et. al. Software Quality and Agile Methods. In Proceedings of the 28th Annual International Computer Software and Applications Conference (COMPSAC'04). IEEE 520-525, Hong Kong. September 2004. May be found at: http://csdl.computer.org/comp/proceedings/compsac/2004/2209/01/220910520abs.htm Khknen, T. Agile Methods for Large Organizations Building Communities of Practice. In Proceedings of the Agile Development Conference (ADC04). IEEE 2-11, Salt Lake City, Utah, June 2004. May be found at: http://csdl.computer.org/comp/proceedings/adc/2004/2248/00/22480002abs.htm Manhart, P. and Schneider, K. Breaking the Ice for Agile Development of Embedded Software: An Industry Experience Report. In Proceedings of the 26th International Conference on Software Engineering (ICSE04). IEEE 378-386, Edinburgh, Scotland, UK. May 2004. May be found at: http://csdl.computer.org/comp/proceedings/icse/2004/2163/00/21630378abs.htm Schneider, J. and Johnston, L. eXtreme Programming at Universities An Educational Perspective. In Proceedings of the 25th International Conference on Software Engineering. IEEE 594-599, Portland, Oregon, May 2003. May be found at: http://csdl.computer.org/comp/proceedings/icse/2003/1877/00/18770594abs.htm
Questions?