Chapter III_Agile Software Development
Agile Method
Agile project management
Intro
Rapid development and delivery is the most important requirement
Specification, design and implementation are inter-leaved
System is developed as series of versions with stakeholders involved
User interfaces are often developed using an IDE
Focus on the code rather than design
Base on iterative approach to software development
Deliver working software quickly so that meet changing requirement
Reduce overheads in the software process
Manifesto page 10
Problems
Difficult to keep the interest of customers who are involved in the process
Team members maybe unsuited to the intense involvement
Prioritising changes can be difficult
Maintaining requires extra work
Contract maybe a problem
Problems may arise if original development team cannot maintain
Plan-driven & Agile development
Plan-driven
Output is to be produced at each of stages planned in advance
Not necessarily waterfall model
Iteration occurs within activities
Agile
Specification, design, implementation and testing are inter-leaved
Output from the development process are decided through a process of negotiation during software development process
Balancing
What type of system is being developed?
What is expected system lifetime?
What technologies are available to support system development?
How is the development team organized?
Are there cultural or organizational issues that affect the system development?
How good is the development team?
Agile requires better skill
Traditional engineering prefer plan-based
Long life prefer plan-driven
Complex system prefer plan-driven
Agile rely on good tools
Extreme programming
Intro
New version maybe built several times per day
Deliver to customer every 2 weeks
All tests must be run for every build
Principles
Small, frequent system releases
Full-time customer engagement with the team
Pair programming
Changes supported through regular system releases
Maintain simplicity through constant refactoring of code
practices
Incremental planning
Requirement are recorded on story cards and will be determined by time available and priority
Small release
Releases of the system are frequent and incrementally add fuctionality
Simple design
Enough design to meet current requirement
Test first development
Write tests for a new piece of functionality before it's implemented
Refactoring
Refactor the code continuously as soon as possible
Pair programming
Developers work in pairs, checking each other's work
Collective ownership
Developers work on all areas of the system and take responsibility for all of the code
Continuous integration
Integrate new work as soon as possible
Sustainable pace
On-site customer
Testing
Test-first development
Writing tests before code clarifies the requirements
Tests are written as program so that can be executed automatically
All previous and new tests are run automatically when new functionality is added
Customer Involvement
Customer help develop acceptance tests
Customer clarify what they need through their tests
Customer may not work full-time with the development team
Difficulties
Programmers take short cuts when writing tests
Some tests can be difficult to write incrementally
Test set may not provide complete coverage
Intro
Managers have to manage project so that the software is delivered on time
Agile project management require approach, which is adapted to incremental development
Scrum
Focus on managing iterative development rather than specific agile practices
3 phases
Initial phase
Out line planning
Establish the general objectives for the project and design software architecture
Sprint cycle
Each cycle develops an increment of the system
Project closure
Wrap up the project
Complete required documentation
Scrum process page 44
Benefits
The product is broken down into a set of manageable and understandable chunks
Unstable requirements do not hold up process
The whole team have visibility of everything
Improve team communication
On-time delivery and gain feedback
Trust between customer and developers is established