|
Contents |
5 |
|
|
1 Introduction |
11 |
|
|
1.1 Why This Book? |
11 |
|
|
1.2 A Bit of History |
11 |
|
|
1.3 What Is Agile Software Development? |
12 |
|
|
1.4 Why Be Agile? |
13 |
|
|
1.5 What This Book Is About? |
13 |
|
|
1.6 Implementation Languages |
13 |
|
|
1.7 The Structure of the Book |
14 |
|
|
1.8 Where to Get More Information? |
16 |
|
|
1.9 Where to Go Online? |
16 |
|
|
2 Agile Methods and the Agile Manifesto |
18 |
|
|
2.1 Introduction |
18 |
|
|
2.2 What Is Agile? |
18 |
|
|
2.3 The Agile Manifesto |
19 |
|
|
2.4 What Are Agile Methods? |
21 |
|
|
2.5 Agile Modelling |
23 |
|
|
2.6 XP: eXtreme Programming |
25 |
|
|
2.7 DSDM |
30 |
|
|
2.8 SCRUM |
34 |
|
|
2.9 Summary |
39 |
|
|
3 Agile Modelling |
40 |
|
|
3.1 Introduction |
40 |
|
|
3.2 Modelling Misconceptions |
40 |
|
|
3.3 Agile Modelling |
44 |
|
|
3.4 What Sort of Models? |
49 |
|
|
3.5 Tool Misconceptions |
50 |
|
|
3.6 Updating Agile Models |
51 |
|
|
3.7 Summary |
52 |
|
|
4 How to Become an Agile Modeller |
53 |
|
|
4.1 Introduction |
53 |
|
|
4.2 Agile Modelling Practices |
53 |
|
|
4.3 Adopt the Core Agile Modelling Practices |
57 |
|
|
4.4 Consider the Supplementary Practices |
64 |
|
|
4.5 Maximise Your Modelling Potential |
69 |
|
|
4.6 Agile Modelling Sessions |
71 |
|
|
4.7 Agile Models |
73 |
|
|
4.8 Agile Documentation |
73 |
|
|
4.9 Summary |
75 |
|
|
5 Extreme Programming (XP) |
76 |
|
|
5.1 Introduction |
76 |
|
|
5.2 Core XP Values |
77 |
|
|
5.3 User Stories |
80 |
|
|
5.4 The Twelve XP Practises |
80 |
|
|
5.5 What Is So Extreme About Extreme Programming? |
93 |
|
|
5.6 Review |
93 |
|
|
6 Putting XP into Practise |
95 |
|
|
6.1 Introduction |
95 |
|
|
6.2 Planning XP Projects |
96 |
|
|
6.3 Test First Coding |
106 |
|
|
6.4 Making Pair Programming Work |
115 |
|
|
6.5 Refactoring |
119 |
|
|
6.6 Keeping on Track |
122 |
|
|
6.7 Summary |
129 |
|
|
7 Agile Modelling and XP |
130 |
|
|
7.1 Introduction |
130 |
|
|
7.2 The Fit |
130 |
|
|
7.3 Common Practises |
131 |
|
|
7.4 Modelling Specific Practises |
132 |
|
|
7.5 XP Objections to Agile Modelling |
136 |
|
|
7.6 Agile Modelling and Planning XP Projects |
137 |
|
|
7.7 XP Implementation Phase |
139 |
|
|
7.8 Focus on XP |
146 |
|
|
8 Agile Modelling and XP Reviewed |
148 |
|
|
8.1 Introduction |
148 |
|
|
8.2 Review of XP/AM Practices |
148 |
|
|
8.3 Other Factors |
156 |
|
|
8.4 Architecture |
157 |
|
|
8.5 XP on Large Projects |
162 |
|
|
8.6 Where XP Works Best |
164 |
|
|
8.7 Summary |
164 |
|
|
9 Feature-Driven Development |
166 |
|
|
9.1 Introduction |
166 |
|
|
9.2 Incremental Software Development |
168 |
|
|
9.3 Regaining Control: The Motivation Behind FDD |
169 |
|
|
9.4 Planning an Iterative Project |
173 |
|
|
9.5 Architecture Centric |
180 |
|
|
9.6 FDD and XP |
183 |
|
|
9.7 Summary |
185 |
|
|
10 Planning a Sample FDD Project |
187 |
|
|
10.1 Introduction |
187 |
|
|
10.2 Initiating the Project |
187 |
|
|
10.3 The Overall Project Plan |
188 |
|
|
10.4 Planning the First Iteration |
190 |
|
|
10.5 Post Delivery |
196 |
|
|
10.6 Summary |
196 |
|
|
11 Agile Methods with RUP and PRINCE2 |
197 |
|
|
11.1 Introduction |
197 |
|
|
11.2 Agile Modelling and RUP |
198 |
|
|
11.3 FDD and RUP |
208 |
|
|
11.4 Agile Methods and Prince2 |
209 |
|
|
11.5 Summary |
213 |
|
|
12 Introducing Agile Methods into Your Organisation |
214 |
|
|
12.1 Introduction |
214 |
|
|
12.2 Selling Agile Methods |
214 |
|
|
12.3 Identifying a Suitable First Project |
215 |
|
|
12.4 Promoting an Agile Culture |
216 |
|
|
12.5 Building an Agile Team |
217 |
|
|
12.6 Adopting Agile Processes One at a Time |
217 |
|
|
12.7 Managing Existing Processes |
218 |
|
|
12.8 Working with Distributed Teams |
219 |
|
|
12.9 Get Some Experience |
219 |
|
|
13 Tools to Help with Agile Development |
220 |
|
|
13.1 Introduction |
220 |
|
|
13.2 What Tools Do You Need? |
220 |
|
|
13.3 Eclipse: An Agile IDE |
221 |
|
|
13.4 Lightweight Modelling within Eclipse |
224 |
|
|
13.5 Building Applications with ANT |
226 |
|
|
13.6 Version Control with CVS |
229 |
|
|
13.7 Testing with JUnit |
230 |
|
|
13.8 Online References |
240 |
|
|
14 Obstacles to Agile Software Development |
241 |
|
|
14.1 Introduction |
241 |
|
|
14.2 Management Intransigence |
241 |
|
|
14.3 The Failed Project Syndrome |
242 |
|
|
14.4 Developer Resistance |
243 |
|
|
14.5 Customer Opposition |
244 |
|
|
14.6 Contractual Difficulties |
245 |
|
|
14.7 Familiarity with Agility |
247 |
|
|
References |
249 |
|
|
Index |
252 |
|