What is Agile Development?
- A software development methodology that focuses on:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Responding to change over following the plan
- Customer Collaboration over contract negotiation
- Agility is about:
- Embracing change rather than attempting to resist it
- Focus on talent and skills of individuals and teams
Agile Development: Xtreme Programming
- A pair of Engineers collaborating on ALL their development work
- Involves real-time collaboration with other team member/s
- Inspections not required
- ODC (Orthogonal Defect Classification) Metrics Collected/Analyzed
Agile Development: SCRUM
- A Cross Functional team collaborating on ALL their development, & test work
- Involves real-time collaboration with other team member/s, including business teams/product management
- Inspections not required
- ODC Metrics Collected/Analyzed
Agile Development Essentials
- Modular Architecture, hence we can break the software into smaller pieces, and TEST each module
- Automated and repeatable development testing for each module
- The development tests cover design and interface for each module
- ODC Metrics Collected/Analyzed for development test
Agile Development Process
- Automated testing, The main reason for Agile development is to test early and often
- Find Defects at the earliest point in the lifecycle (Left Shift)
- For any software change (even one Line of code) in any module, run the full interface and design test automated suite for that module, prior to merging the module (Software Reliability Growth)
- Apply ODC to the defects to learn trends and weakness for each software module
- Code Refactoring, due to excessive testing in agile, and excessive defect fixes, Agile code bases need to be redesigned & rewritten, every 5 years or so.
- Continuous Integration/Delivery, Business realties catch up with the best of us, we have to continually adapt to business and customer input. The continuous Integration plan and cross functional team approach is best suited to adapt with changes from the business & customers
- Theory of continuous integration – “The less the time between integration’s, the more efficient the integration effort”
Agile Development vs Traditional Development
Other characteristics of Agile Development
- Just sufficient documentation – enough to develop and understand the product
- Daily Stand-up meetings – Communication mechanism where everyone literally stands during the meeting
- Daily Stand-up meetings also discuss Defects classified via ODC
- Code Inspections not required
- Phenomenal adaptation to change requests from business and customers
What contributes to Higher Productivity for Agile Development?
- Finding and Fixing defects at the earliest point in the life cycle, built in Left Shift of development process
- Automated testing and modular architecture allow for a Software Reliability Growth model to be built in the Agile process
- Risk mitigation earlier in the life cycle, applying ODC in development test
- Code Inspections not required, this saves money for high reliability systems
- Finally, speed, speed, speed, Agile can deliver twice as much functionality with higher quality than traditional development
- Speed, speed, speed, Agile can deliver twice as much functionality with higher quality than traditional development
- Finally, Agile is not a way of doing development, but the ONLY WAY TO DO SOFTWARE DEVELOPEMNT