4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 253

Index

■A planning, 73 A & D modeling recapping, 74 need for updating diagrams rapidly, 232 refactoring values, 73 actors requirements analysis, 73 overview, 43 website, 6 using interaction design to identify, 196 Agile Modeling. See AM AD (Agile Database Techniques), 18 agile planning, 67 adaptive planning adaptive planning, 176 agile projects and, 10 estimating, 177–178 estimating, 177–178 Gantt charts, 181–182 Gantt charts, 181–182 prioritizing requirements, 176 prioritizing requirements, 176 release planning, 178 release planning, 178 timeboxing, 180–181 timeboxing, 180–181 tracing requirements back to goals, 181 tracing requirements back to goals, 181 tracking project velocity, 179 tracking project velocity, 179 fitting iterative and incremental planning together, adaptive planning, 176 175 Adaptive Software Development, 18 phases AddHotels() method analysis and design, 183 AOI class, 161 construction, 184 ADF (Application Developer Framework), 100, 114 inception, 183 aggregation relationships, 135 planning for agility, 176 aggressive testing, 66 principles, 184 Agile Database Techniques, 18 costing and benefits of incremental development, Agile ICONIX 187 See also ICONIX Process. costing changes, 187 and TDD, 227 feedback, 185 compared to other agile methods, 174 release sizes, 187 core subset of agile practices, 61 release types, 186 agile practices, 64–69 software rot, 186 agile values, 69–71 types of plan, 184 ICONIX Process practices, 63 reasons for, 173 introduction, 61 flexibility and perception, 173 why define, 61 tracking defects and feature requests, 174 driving the code from the model, 146 terminology, 175 introduction, 4 agile practices, 64 mapplet project, 87 aggressive testing, 66 ArcGIS Server, 99 agile planning, 67 architecture, 96 domain analysis, 65 first release plan, 98 frequent integration, 67 goals, 92 frequent small releases, 67 introduction, 89–90 interaction design, 66 JumpStart workshop, 95 optimizing team communication, 68 requirements, 92 prefactoring/model-driven refactoring, 66 use case modeling, 97 requirements analysis and disambiguation, 65 overview, 21 responsible ownership/collective responsibility, 68 synchronizing source code and model, 123 short iterations, 69 Agile Manifesto synchronizing model and code, 67 core subset of agile practices, based on, 62 Agile Software Development goals, 62 Cockburn, Alistair, 31–32 refactoring agile values, 71 agile values contract negotiation, 72 communication, 70 documentation, 72 early feedback, 70 need for flexible processes and tools, 72 judgement and balance, 71 simplicity, 70

253 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 254

254 ■INDEX

agility ■B Agile Manifesto website, 6 BCE (Boundary-Control-Entity) as philosophy of software development, 27 robustness analysis stereotypes, 49 challenges, 11–13 behavioral requirements, defining, 47 change and change management, 78 Belbin, Dr. R. Meredith custumor and contract-related issues, 79 team-player classification, 31 definitions of agile projects, 8–11 Better Software Faster goals, 6 Carmichael, Andy and Haywood, Dan, 178 importance of, 7 Big Design Up Front introduction, 3 and TDD, 227 methodologies, 13 Boehm, Barry Adoptive Software Development, 18 Get Ready for Agile Methods, with Care, 25 Agile Database Techniques, 18 Booch method Agile Modeling, 16–17 Grady Booch, 40 Crystal Methodologies, 18–19 Booking class DSDM (Dynamic Systems Development Method), creating, 214 19 getID() method, 216 FDD (Feature-Driven Development), 20–21 toString() method, 216 Scrum, 19 updating for test, 216 TDD (Test-Driven Development), 16 bookingListsByCustomer HashMap XP (), 14–16 adding to BookingManager class, 219 modeling and documentation, 75–78 BookingManager class myths and misconceptions, 22 adding bookingListsByCustomer HashMap, 219 planning and design, 83–85 as Singleton, 215 software agility, 5 clearAll method, 215 hacking, 5 createBooking method, 214 high ceremony, 5 findBooking() method, 217, 220 low levels of communication, 5 modifying, 216 requirement gathering and design, 5 numBookings() method, 218 transparency, 5 placeBooking method, 214 working practices, 80–82 updating for test, 216 AM (Agile Modeling), 203 BookingManagerDOA class communication and team work, 9 persisting data, 223 design review, 123 BookingManagerTest class overview, 16 testing for bookings for more than one customer, 219 practices, 17 testing for nothingness, 212 traveling light, 146 boundary types when to keep code and model tightly interwoven, as nouns on robustness diagrams, 231 146 Display Rollover Information use case, 129 analysis and design robustness analysis stereotypes, 49 bridging gap between, 54 Boundary-Control-Entity, 49 analysis modeling practices Browse by US Map use case, 153, 156 description, 57 build by feature, 21 analysis-level modeling, 40 BuildRolloverInfo() method AOI class HotelCluster class, 143 AddHotels() method, 161 Application Developer Framework. 100, 114 ■C ArcGIS Server, 104 CalcNewExtent method achitectecture, 96 MapViewer object, 116 ArcObjects, 96 Carmichael, Andy and Haywood, Dan figuring out new release of, 103 Better Software Faster, 178 installing, 114 change management, 11–12, 78 introduction, 90 changing software requirements leveraging out-of-the-box functionality, 92 reducing exposure to, 10 terminology, 100 checkCustomerNameUnique() method web controls, 114 Customer class, 244 ArcGIS Software Developer Kit, 99 class diagrams, 41 ArcObjects, 91, 96 designing Release 2, 159 AreaOfInterestViewer class, 118 feeding changes back into, 143 ASD (Adaptive Software Development), 18 product of analysis and design level refactorings, 136 Astels, David refactored class diagram, 146 Test-Driven Development colon A Practical Guide, 227 clearAll method automated tests BookingManager class, 215 agile development and, 80 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 255

■INDEX 255

clearCustomers() method customer-visible production release Database class, 247 incremental planning, 186 Cockburn, Alistair CustomerDetailsPage JSP page Agile Software Development, 31–32 sequence diagram, 238 Crystal Methodologies website, 18 CustomerDetailsValidatorTest class Writing Effective Use Cases, 195 creating, 234 code and design running test, 236–237 converging or diverging, 160 CustomerManager class coding by intention, 141 making class do something, 211 coding standards CustomerManagerTest class XP (Extreme Programming), 16 testing for nothingness, 206–208 collective ownership CustomerNotFoundTest XP (Extreme Programming), 15 passing test in JUnit TestRunner, 212 communication, 70 customers involvement in design, 12 as aspect of software development process, 27 completeness check ■D essential role of robustness analysis, 54 Database class Composite pattern clearCustomers() method, 247 Display Rollover Information, using, 135 implementing, 245 object discovery, 127 defects, Severity assigned, 174 composition relationships, 135 deliverables, Release 1, 103 concepts, proving in code as working software, 77 design continuous integration bridging gap between analysis and design, 54 XP (Extreme Programming), 15 by feature, 21 contract negotiation enhancing agility through, 8–9 gaining customer collaboration, 72 ICONIX Process compared to TDD, 203 control objects refactoring, 83–84 robustness analysis stereotypes, 49 simplicity of and XP (Extreme Programming), 15 controller code upfront design, 84 benefit of separation from presentation model in design modeling practices, 57 TDD, 205 design review controllers as verbs, 231 as code and design review, 123 cookbook-style process, 130 class diagram, 136 Create a Hotel Booking for a Customer use case, 229 Display Rollover Information use case use case diagram, 230 robustness diagram, 125–130 Create a New Customer use case sequence diagram, 130–135 revising text, 231 fine-tuning diagram, 128 robustness diagram, 230 nouns, 127 corrected version, 232 detailed design class modeling, 40 sequence diagram, 233 detailed release plan Create New Customer use case, 228 principles of agile planning, 185 createBooking method development tools BookingManager class, 214 agile development and, 76 CreateCustomerDetails controller class disambiguation, 41, 63, 65 modifying, 244 bridging gap between analysis and design, 54 unit testing, 239–242 description, 56 CreateCustomerDetailsTest class domain model, 53 setUp() method, 247 robustness analysis, 54 unit testing, 243–245 use cases, 48 critical design review, 51 Display Rollover Information use case, 111 Crystal Methodologies, 18-19 Composite pattern, 135 Alistair Cockburn’s website, 18 renaming as Show Hotel Info Pop-up, 127 customer acceptance testing, 10 robustness diagram, 112 customer and contract-related issues decluttering diagram, 125 agile development and, 79 disambiguating diagram, 126 Customer class final version, 129 adding properties, 235 fine-tuning diagram, 128 checkCustomerNameUnique() method, 244 revisiting, 125 customer collaboration sequence diagram, 112 gaining through contract negotiation, 72 first refactoring, 131-132 customer feedback, Release 1, 149 revisiting, 130 customer-visible investigative release second refactoring, 133 incremental planning, 186 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 256

256 ■INDEX

DisplayWindowText() method giving, 32 Hotel class, 140 neccessity of early feedback, 70 documentation test-driven requirements feedback, 33 agile development and, 75–76 Filter Hotels use case, 155 Doing The Simplest Thing That Could Possibly Work. robustness diagram, 157 See DTSTTCPW. sequence diagram, 158 domain analysis, 63, 65 findBooking() method domain model BookingManager class, 217, 220 already in place for Release 1, 101 firstName property doing first to avoid ambiguity in use cases, 53 Customer class, 235 identify real-world domain objects, 45–47 flexibility identifying gaps with robustness diagrams, 48 agile development and, 85 inception activity, 183 formalism primary purpose, 42 as philosophy of software development, 27 refining, 108 functional testing, 10 reusing domain model diagram, or not, 52 updating for Release 2, 153 ■G Domain-Driven Design: Tackling Complexity in the Gantt charts Heart of Software minimizing use of, 181–182 Evans, Eric, 65 Generate Hotel Map for AOI use case DSDM (Dynamic Systems Development Method), 19 editing by EA modeling tool, 109 timeboxing, 179 prototype source code, 113, 115 DTSTTCPW (Doing The Simplest Thing That Could release 1, 104 Possibly Work), 136 robustness diagram, 104, 111 always generates massive refactoring, 136 sequence diagram, 111 scalability reason for not using, 92 Geocoding template, 114 duplicate naming, 117 Get Ready for Agile Methods, with Care Dynamic Systems Development Method. See DSDM. Boehm, Barry, 25 GetDisplayName() method ■E HotelComposite class, 137 EA modeling tool, 103 GetHotelCount() method creating test cases in, 232 Hotel class, 140 tracking project velocity, 180 HotelCluster class, 142 elastic functionality HotelComposite class, 137 iterative planning, 185 getID() method Suscheck, Chuck, 185 Booking class, 216 elicitation, description, 56 GetRolloverInfo() method entity objects Hotel class, 138 as nouns on robustness diagrams, 231 HotelCluster class, 142 entity types HotelComposite class, 138 Display Rollover Information use case, 128 GetZipCodeExtent method robustness analysis stereotypes, 49 prototype source code, 116 entropy, 12 GIS applications ESRI Map Server ArcGIS Server is platform for building, 90 IEnvelope interface, 118 GIS server, 100 ESRI mapplet project Goldilocks and the Three Software Processes, 25 Release 1, 101 grammatical inspection technique, 46 Evans, Eric growing software incrementally, 151 Domain-Driven Design: Tackling Complexity in the GUI application Heart of Software, 65 robustness analysis stereotypes, 49 external behavior GUI prototype interaction scenario, 150 dangers of, 189 Extreme Programming. See XP. nouns and design review, 127 Gummi Bears ■F tracking project velocity, 179 FDD (Feature-Driven Development), 20 practices, 20-21 ■H feature driven hacking first mapplet project release plan, 99 as philosophy of software development, 27 feature requests Haywood, Dan and Carmichael, Andy Priority could be assigned, 174 Better Software Faster, 178 Feature-Driven Development. See FDD. Hibernate feedback persisting data, 222 as principle of agile planning, 185 high ceremony driving development on, 33 agility software requirement, 5 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 257

■INDEX 257

highlighter test ICONIX+TDD process robustness diagram, 130 design feedback stage compared to ICONIX Process, Hotel class 233 feeding changes back into model, 144 summarizing, 248 source code for refactored design, 138 IEnvelope interface HotelCluster class defined by ESRI Map Server, 118 feeding changes back into model, 144 incremental planning source code for refactored design, 142 costing and benefits of, 187 HotelComposite class first mapplet project release plan, 99 feeding changes back into model, 143 fitting together with iterative planning, 175, 179 source code for refactored design, 137 release types, 186 HotelFilter class initial scoping plan refactoring after use case modeling, 165 principles of agile planning, 184 human factors in software development integration choosing right team, 31 agile development and, 80 communication, 32–34 frequency of, 67 discussion, 34–38 interaction design, 63, 66, 189 levels of ability, 32 caution on complexity, 196 motivation, 31 extending ICONIX Process, 190 team buy-in, 31 using to identify actors and use cases, 196 using to identify alternate systems, 195 ■I using to identify alternative scenarios, 195 ICONIX Process interaction scenarios See also Agile ICONIX. compared to ICONIX-style use case, 150 benefits of using, 41 extending ICONIX Process, 190 changes to use case during release increment, 158 persona analysis, 150 combining with TDD, 203 using to describe new features, 193 cookbook-style process, 130 writing to validate existing system, 192 core analysis modeling practices, 57 internal behavior core design modeling practices, 57 interaction scenario, 150 core subset of UML, 61 internal release defines core UML subset, 40 incremental planning, 186 design feedback INVEST acronym compared to ICONIX+TDD process, 233 properties of user stories, 206 designing with, 203 iteration planning difference in practices, 21 short iterations recommended, 69 early prototyping, 102 XP (Extreme Programming), 14 goals, 57 iterative planning history, 40 elastic functionality, 185 introduction, 3 first mapplet project release plan, 99 key points, 56 fitting together with incremental planning, 175, 179 logical process, 28 modeling, 101 ■J analysis and design, 183 Jacobson, Ivar common errors, 105 Objectory method, 40 first pass, 103 Java persona analysis, 189 options for adding a persisting data, 222 planning for agility, 176 using for vanilla TDD example, 205 practices, 63 JumpStart workshop, 95 reviewing misunderstandings, 33 JUnit TestRunner steps in process, 44 passing real Alice test, 211 allocating behavior to objects, 50 testing for nothingness, 207 defining behavioral requirements, 47 finishing static model, 51–52 ■K identify real-world domain objects, 45 Kantor, Jeff robustness analysis, 48–49 Use Case Driven Testing, 249 system and user-acceptance testing, 52 write or generate code, 52 ■L TDD (Test-Driven Development), 227 lastName property theory, 41 Customer class, 235 actors, 43 logical process use cases, 42 as aspect of software development process, 26 UML-based logical process, 26 requirements for good agile logical process, 28–30 low ceremony, 8 low levels of communication, 5 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 258

258 ■INDEX

■M Objectory method managing change, 11–12, 78 Jacobson, Ivar, 40 managing risk, 12 oral communication, 77–78 Map Viewer template, 114 mapplet project ■P agile scorecard, 168 pair programming architecture, 96 XP (Extreme Programming), 15 first release plan, 98 persisting data goals, 92 Hibernate, 222 growing software incrementally, 151 raw SQL via handwoven DOAs, 222 JumpStart class, 95 vanilla TDD example, 221 persona analysis persona analysis, 189 identifying requirements, 150 building UI around target user, 192 when to apply, 151 extending ICONIX Process, 190 requirements, 92 identifying requirements for Release 2, 150 use case modeling, 97 interaction design MapViewer object caution on complexity, 196 CalcNewExtent method, 116 finished use case, 197 milestones using to identify actors and use cases, 196 critical design review, 51 using to identify alternate systems, 195 delivery, 52 interaction scenarios preliminary design review, 48 using to describe new features, 193 requirements review, 47 writing to validate existing system, 192 mock objects, 247 when to apply to projects, 151 model driven placeBooking method first mapplet project release plan, 99 BookingManager class, 214 refactoring, 63, 66 planning testing, 249 agile projects and, 10, 84, 176 model refactoring and change, 73 description, 56 and phasing strategy, 26 overview, 56 iteration, definition, 175 Model-View-Controller, 49 pooled server object, 100 modeling prefactoring, 41, 56, 63, 66 changes to use case during release increment, 158 preliminary design common errors, 105 essential role of robustness analysis, 54 mapplet, 101 review, 48 need for refactoring, 136 presentation model synchronizing model and code, 67 benefit of separation from controller code in TDD, tightening up model 205 Display Rollover Information use case, 111 Priority, feature requests, 174 Generate Hotel Map for AOI use case, 109 problem domain modeling, 40 tightening up model, 108 project management use of UML and other modeling techniques, 77 agile projects and, 10 when to keep code and model tightly interwoven, project velocity, tracking, 179 146 prototypes motivation, 31 agile development and, 81–82 MultHotelCluster class behavioral requirements, 101 object discovery, 127 sequence diagrams, 101 MVC (Model-View-Controller) robustness analysis stereotypes, 49 ■R , 5 ■N refactoring nonpooled server object, 100 code-level refactoring, 130 nouns and design reviews, 127 Display Rollover Information sequence diagram, numBookings() method 131–135 BookingManager class, 218 GetZipCodeExtent method, 119 prototype source code for Generate Hotel Map for ■O AOI use case, 117 object discovery source code for refactored design, 137–146 description, 56 stopping software rot, 186 essential role of robustness analysis, 54 synchronizing code with design model, 124 MultHotelCluster class, 127 use case-driven modeling and, 82 Object Modeling Technique XP (Extreme Programming), 15 Rumbaugh, Jim, 40 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 259

■INDEX 259

Release 1 highlighter test, 130 class diagram, 120 identify gaps in domain model, 48 common modeling errors, 105 nouns and design review, 127 corrected release plan, 156 primary purpose, 42 customer feedback, 149 Rumbaugh, Jim customer review meeting, 106 Object Modeling Technique, 40 deliverables, 103 RUP (Rational Unified Process), 5 ESRI mapplet project, 101 Generate Hotel Map for AOI use case, 104 ■S prototype source code, 113 sanitary check prototyping, 101 essential role of robustness analysis, 54 user interface, 102 scalability and DTSTTCPW, 92 tightening up model Scrum, 19 Display Rollover Information use case, 111 changes to use case during release increment, 158 Generate Hotel Map for AOI use case, 109 Search for a Customer use case, 229 use cases and domain model, 101 Search for a Hotel Using the Mapplet use case Release 2 finished use case, 197 analysis review, 157 using to describe new features, 194 customer feedback on Release 1, 149 writing to validate existing system, 192 designing, 158 Search template, 114 class diagrams, 159 sequence diagrams, 41 sequence diagrams, 158 allocating behavior to objects, 50 development for, 149 and TDD, 227 growing software incrementally, 151 Create a New Customer use case, 233 persona analysis, 150 Display Rollover Information use case, 112 planning, 152 revisiting, 130 high-level requirements, 152 Filter Hotels use case, 158 reviewing plan, 156 Generate Hotel Map for AOI use case, 111 uber use case, 152 primary purpose, 42 updated domain model, 153 Server Object Manager, 100 updated use case diagram, 154 server object, 100 robustness diagrams, 157 setUp() method visual acceptance test, 198 CreateCustomerDetailsTest class, 247 release planning Severity assigned to defects, 174 agile development and, 81 Show Hotel Info Pop-up use case, 127 first mapplet project release plan, 98 simple design and XP, 15 frequency of small releases recommended, 67 simplicity, neccessity of, 70 increment definition, 175 singleton principles of agile planning, 184 BookingManager class as, 215 release definition, 175 SOC (Server Object Container), 100 Release 2, 157 software development process sizes, 187 aspects of, 26 XP (Extreme Programming), 14 guiding philosophy, 27 requirements analysis, 63, 65 human-centric and communication issues, 27 refactoring agile values, 73 logical process, 26 use cases and, 43 planning and phasing strategy, 26 requirements freeze, 158 working practices, 27 requirements review, 47 human factors, 31 responsibility and ownership, collective, 68 choosing right team, 31 risk management, 12 communication, 32–34 robustness analysis feedback, 32 classifying object types, 49 levels of ability, 32 disambiguating use cases, 54 motivation, 31 essential roles, 54 team buy-in, 31 robustness diagrams, 41 solution space class modeling, 40 art or science, 55 SOM (Server Object Manager), 100 controllers, boundary and entity objects, 231 source code Create a New Customer use case, 230 for refactored design disambiguating use cases, 48 Hotel class, 138 Display Rollover Information use case HotelCluster class, 142 revisiting, 125 HotelComposite class, 137 Display Rollover Information use case, 112 knowing when to tidy up code, 163 Filter Hotels use case, 157 refactoring after use case-driven modeling, 160 Generate Hotel Map for AOI use case, 111 synchronizing with design model, 123 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 260

260 ■INDEX

static model running tests regularly, 213 finishing, 51–52 testing private methods, 221 Suscheck, Chuck vanilla TDD example revisited, 234 elastic functionality, 185 writing from sequence diagrams, 234 synchronizing model and code, 67 update only when it hurts system metaphor AM (Agile Modeling), 146 XP (Extreme Programming), 15 Use Case Driven Testing Kantor, Jeff, 249 ■T use case-driven modeling TDD (Test-Driven Development) refactoring and, 82, 160 and Agile ICONIX modeling, 227 screen shots of finished product, 167 applying to non-XP projects, 16 use cases, 41 benefit of holding design workshop, 205 already in place for Release 1, 101 benefit of separation of presentation and controller and persona analysis, 192 code, 205 as too abstract, 190 combining with ICONIX Process, 203 changes to use case during release increment, 158 designing with, 203 common modeling errors, 105 overview, 204 Create a Hotel Booking for a Customer use case, 229 problems with, 203 Create New Customer use case, 228 reasons for not using on Mapplet project, 204 Display Rollover Information use case, 111 unit testing, 203 Generate Hotel Map for AOI use case, 104 with ICONIX Process, 227 initial modeling for mapplet project, 97 writing test skeletons, 233 interaction scenarios compared to, 150 XP (Extreme Programming), 14 modeling question YAGNI principle, 204 one use case or more, 131 team communication, 68 overview, 42 team structures, 34–38 primary purpose, 42 Test-Driven Development: A Practical Guide Search for a Customer use case, 229 Astels, David, 227 Search for a Hotel Using the Mapplet use case test-driven requirements feedback, 33 finished use case, 197 testability and agility software requirement, 10 using to describe new features, 194 testCheckRequiredFields() method writing to validate existing system, 192 CustomerDetailsValidatorTest class, 234 synchronizing text across diagrams, 232 testCustomerNameUnique() method unit testing, 204 CustomerDetailsValidatorTest class, 234 updating for Release 2, 154 testing aggressiveness recommended, 66 using interaction design to identify, 196 three-point estimating, 177 user interface. See UI. timeboxing user stories placing a limit on indeterminate work, 180 INVEST acronym, 206 planning in fixed iterations, 180 persisting data, 221 timeboxing, 179–180 requirements for vanilla TDD example, 205 toString() method Booking class, 216 ■V training, 12 vanilla TDD example, 205 traveling light adding a vector AM (Agile Modeling), 146 testing for something, 214 two-paragraph rule BookingManager test use cases, 43 testing for nothingness, 212 functionality left for next release, 224 ■U making CustomerManager class do something, 211 UI (User Interface) persisting data, 221 building around target user, 192 refactoring, 215 interaction scenarios repeated, using ICONIX modeling and TDD, 227 writing to validate existing system, 192 requirements, 205 prototyping, 103 retrieving a booking, 216 UML (Unified Modeling Language) summary, 225 ICONIX Process defines practical core subset of, 40 testing for bookings for more than one customer, 219 UML modeling testing for nothingness, 206–211 and TDD, 203 using Java for, 205 binding code and design, 145 vanilla TDD example revisited, 277 describing pattern, 133 Create a Hotel Booking for a Customer use case, 229 unit testing, 203 Create New Customer use case, 228 CreateCustomerDetails controller class, 239–242 design feedback, 233–247 CreateCustomerDetailsTest class, 243 implementing Create a New Customer use case, 230 description, 204 Search for a Customer use case, 229 4649_Ch13_Index_FINAL 1/17/05 9:33 AM Page 261

■INDEX 261

visual acceptance testing Release 2, 198 UI prototyping, 103 vocabulary establishing, 33 ■W web server, 100 Weinberg, Gerald quoted by Alistair Cockburn, 31 working practices agile development and, 80–82 as aspect of software development process, 27 Writing Effective Use Cases Cockburn, Alistair, 195 ■X XP (Extreme Programming), 14 collective ownership, 15 continuous integration, 15 pair programming, 15 planning games, 14, 173 refactoring, 15 small releases, 14 sustainable pace, 16 system metaphor, 15 TDD (Test-Driven Development), 203 test-driven development, 14 whole team, 14 ■Y YAGNI (You Aren't Gonna Need It), 204 goals of ICONIX Process, 58 requirements and design, 204