Book Contents

Table of Contents

Preface.
Chapter 1 What is an agile methodology?
1.1 Rapid business change – the ultimate driver.
1.2 What must agile methodologies be able to do?
1.3 Agility – what is it and how do we achieve it?
1.4 Evolving software – obstacles and possibilities.
1.5 The quality agenda.
1.6 Do we really need all this mountain of documentation?
1.7 The human factor.
1.8 Some Agile Methodologies.
1.8.1. Dynamic Systems Development Method (DSDM)
1.8.2 Feature Driven Design (FDD)
1.8.3. Crystal
1.8.4. Agile modeling
1.8.5 SCRUM
1.8.6 Summary table
1.9 Review.
Chapter 2 EXTREME PROGRAMMING outlined
2.1 Some guiding principles
2.2 The five values
2.3 The twelve basic practices of XP
2.3.1 Test first programming
2.3.2 Pair programming
2.3.3 On-site customer
2.3.4 The planning game
2.3.5 System metaphor
2.3.6 Small, frequent releases
2.3.7 Always use the SIMPLEST solution that adds business value
2.3.8 Continuous integration
2.3.9 Coding standards
2.3.10 Collective code ownership
2.3.11 Refactoring
2.3.12 Forty hour week
2.4 Review
2.5 The evidence for XP
2.5.1 Evidence for Test First
2.5.2 Evidence for pair programming
2.5.3 Evidence for XP
2.6 Preparing to XP
Chapter 3 Foundations – people and teams working together
3.1 Software engineering in teams
3.2 Personalities and team success
3.3 Observations of team behaviour in XP projects
3.4 Setting up a team
3.5 Developing team skills
3.6 Training together
3.7 Finding and keeping a client for a university based project or a small business start up
3.8 The organisational framework
3.9 Planning
3.9.1 PERT (Programme Evaluation and Review Technique)
3.9.2 Gantt Charts
3.10 Dealing with problems
3.10.1 Basic strategies
3.10.2 When things go really wrong
3.11 Risk analysis
3.12 Review
Chapter 4 Starting an XP project
4.1 Project beginnings
4.1.1 Researching the business background
4.1.2 Exploring the outline system description
4.2 The first meetings with the client
4.3 Business analysis and problem discovery
4.4 The initial stages of building a requirements document
4.5 Techniques for requirements elicitation
4.6 Putting your knowledge together
4.7 Getting technical
4.8 Developing the requirements documents
4.9 Specifying and measuring the quality attributes of the system
4.10 The formal requirements document and system metaphor
4.11 Contract negotiation
4.12 Case study – the impact of organisational politics – learning from a failed project
4.13 Review
Chapter 5 Identifying stories and preparing to build
5.1 Looking at the user stories
5.2 Collections of stories
5.2.1 Pharmacovigilence
5.2.2 Stamps system
5.2.3 DELTAH (Developing European Leadership Through Action-learning in Healthcare)
5.3 User interfaces
*5.4 Communicating clearly with the customer and building confidence
5.5 Demonstrating the non-functional requirements
5.6 Estimating resources
5.7 Review
Chapter 6 Bringing the system together as a coherent concept
6.1 What is the problem?
6.2 A simple common metaphor
6.3 Architectures and patterns
6.4 Finite state machines
6.5 Extreme modelling (XM)
6.6 Multiple stories and XXMs
*6.7 Building the architecture to suit the application – a dynamic system metaphor
6.8 Another look at estimation
6.9 Review
Chapter 7 Designing the system tests
7.1 Preparing to build functional test sets
7.1.1 Tests and testing
7.1.2 Testing from a model
7.1.3 Developing the model
7.2 Testing with the Data in mind
7.3 The full functional system testing strategy
7.4 The thinking behind the system test process
7.5 Design for test
7.6 Test documentation
7.7 Non-functional testing
7.8 Testing internet applications and web sites
7.9 Review
Chapter 8. Units and their tests.
8.1 Basic considerations
8.2 Identifying the units
8.3 Unit testing
8.4 More complex units
8.5 Automating unit tests
8.5.1 Writing Unit Tests in JUnit
8.6 Documenting unit test results
8.7 Review
Chapter 9 Evolving the system
9.1 Requirements change
9.2 Changes to basic business model and functionality
9.3 Dealing with change – refining stories
9.3.1 Changes to the underlying data model
9.3.2 Changes to the structure of the interface, perhaps the introduction of a new
9.3.3 Adding a new function
9.3.4 Changing the functionality of a function
9.4 Changing the model
9.4.1 Changing a process
9.4.2 Removing states
9.4.3 Adding states
9.4.4. Adding a complete machine
9.4.5 Adding processes
9.5 Testing for changed requirements
9.6 Refactoring the code
9.7 Estimating the cost of change
9.8 Summary
Chapter 10 Documenting and delivering the system
10.1 What is documentation for and who is going to use it?
10.2 Coding standards and documents for programmers
10.3 Coding standards for Java
10.4 Maintenance documentation
10.5 User manuals
10.6 Version control
10.6.1 The project archive
10.6.2 Naming conventions
10.7 Delivery and finalisation
10.8 Summary
Chapter 11 Reflecting on the process
11.1 Skills and lessons learnt
11.2 The XP experience
11.3 Personal and Team Assessment
11.4 Summary
11.5 Conundrums – discussion
Chapter 12 Lifestyle matters
12.1 Keeping fit
12.1.1 Correct sitting position
12.1.2 Combating RSI
12.2 General well-being
12.3 Mental preparation
12.4 Diet
12.4.1 Diet and Brain function
12.4.2 Summary of dietary information
12.5 Music and work
12.6 Conclusions and summary
References
Web sites
Index