Chapter 1 Success and Failure 1
Basic Concepts 4
Object Technology 4
Class 5
Object 5
Inheritance 6
Encapsulation 7
Polymorphism 9
Framework 9
Incremental and Iterative Development 10
Project Histories 11
Chapter 2 Project Expectations 11
ContentsForeword 11
Alfred:Success with Changing Requirements 12
Preface 13
Brooklyn Union Gas:Success Through Attentiveness 13
Ingrid:Success in Migrating to C++ 14
Manfred:Failure in Prototyping 15
Mentor Graphics:Trouble Migrating to C++ 16
Acknowledgments 17
Object Technology International:Success in Productivity and Speed 17
Reginald: Failure with Changing Rules 18
Stanley: Too Much Cutting Edge 18
Tracy: Failure Through Naiveté 19
Udall: Success by Restarting Smaller 20
Winifred: Inattentive But Persistent 21
Responsiveness to Variations on a Theme 23
Responsiveness to Change 23
Possible Benefits of Object Technology 23
Time-to-Market 24
Communication Between Developers, Users, and Executives 24
Maintainability 24
Reuse 25
Productivity 25
Window-Based User Interfaces 26
Morale 26
Automated Code Generation 27
Software Process 27
OO Desing,Encapsulation,and System Evolutlon(Tom Morgan) 28
Costs 28
Are You Underestimating? 28
Time to Get New Developers Productive 28
Establishing a Software Process 29
Business Modeling versus Software Design 29
Immaturity of the OO Industry 29
The Difficulty of Reuse 29
Hazards of C++ 29
The Cost of CASE Modeling Tools 30
Probable Costs 30
Nonobject Issues Checklists 31
Chapter 3 Selecting and Setting Up an OO Project 33
Project Suitability 34
Variations on a Theme 34
Simplified Program Structure 35
Memory Management Features 35
What Is Not Suited? 36
Project Purpose 36
Investigative 37
SWAT 37
Production 40
Full-Commit 41
Other Project Categories 41
People 42
Executive Sponsor 42
Project Manager 43
Technical Lead 44
Technical Staff 44
Users 45
Personality Types 46
Technology 47
The Selection Process 47
The Team Knows a Similar Technology 48
One Person ls Persuasive or Stubborn 48
The Technology ls Safe, Popular, or Standard 49
The Technology Is the Rational Choice 50
Programming Languages 51
Managing Smalltalk 52
Managing C++ 53
Disciplined Use of C++ (Jeremy Raw) 58
Managing OO COBOL 59
Managing Java 60
Tools 61
Upper-CASE Tools 61
Using Java (Sam Griffith) 62
The Scanner Challenge 65
Minimum CASE Tool Requirements 65
The Cutting Edge 66
Training and Getting Advice 67
What to Teach 68
Developers do not know how to think in objects. 68
Developers do not know how to make design trade-offs. 69
Developers program poorly or use tools badly. 69
Different programmers write differently, making the code hard to learn. 69
Developers create redundant classes because they do not know whatis in the class library. 70
No one knows how to document a framework well. 70
Developers do not understand their role on the project and who depends on them. 71
When to Teach 71
Getting Advice 72
Legacy Issues 72
Mainframes 72
Relational Databases 73
Project Setup (C.D.) 74
Review 75
Chapter 4 Getting Started 77
Methodology 77
Big-M Methodology 78
A Base Methodology to Tailor 81
Discussion of the Methodology 82
Roles, Skills, TechniquesTools 87
Teams 88
Ownership 89
Deliverables 89
Standards 91
Activities 92
Building Consumer Understanding of the Design (Ward Cunningham) 94
Estimates 95
Domain Classes 96
Screen Classes 96
Two Weeks per Noncommercial Class 96
Utility Classes 97
Frameworks 97
Plans 98
An Estimation and Planning Session (Alistair Cockburn) 100
Milestones 100
Measurements 102
Take the Time to Design 104
Design, and Two Smalltalk Projects (K.L) 106
Chapter 5 Making Corrections 109
A Study Project 109
Stage 0: The Usual Ignorance 109
Stage 2: Rebuild 110
Stage 1: Disaster 110
Stage 3: Improve 111
Stage 4: Functioning 111
Stage 5: Overconfidence in Scaling Up 111
Lessons From This Study Project 112
Managing Precision, Accuracy, and Scale 112
Managing Work According to Precision and Accuracy 115
Increments and Iterations 117
Increments and V-W Staging 118
Iterations 123
Combining Increments and Iterations 126
Burn some Pancakes(Luke Hohmann) 128
Project Increments 129
Increment 1 129
The Architecture Team 129
The Intentions 130
The Training Team 130
Two Stories 131
Increment 2 132
Pause and Learn 132
Move On 133
Increment N 134
User Involvement 134
Watching Users(K.L) 136
Project Teams 136
Ownership 137
Involve the Users (Jon Marshall) 138
Total-Ownership Teams 138
Matrixed Teams 138
The Domain Model 140
Hazardous Situations 140
Domain Modeling and Reuse 140
The Common Domain Model 141
Why Are There Multiple Valid Domain Models? 143
PolyBloodyHardReuse 146
Conflicting Reward Systems 148
Lack of Trust 149
I Can Write It Faster Myself 149
Further Reading 151
Chapter 6 Advice From Hindsight 153
Costs and Benefits Revisited 153
Sentences You Hope Never to Hear 154
Writing 500 Lines of Code per Day 154
Model the World,Then Code 156
Design the Screen,Then Code 157
Iterate Prototypes 157
Reuse Is Easy 158
Classes? 158
More on Iterations 159
Self-Test 160
Two Increments Delivered 160
Thirty People 160
Analysts,Programmers,and Tools 161
Learning OO From the Compiler 161
Programmers Between Projects 162
On the Cutting Edge 162
Designers and Programmers Separated 162
Six-Month Pilot Started 163
Chapter 7 Expandto Larger Projects 165
Your First Big Project 165
Communication 166
Project Charter 166
Staffing, Skill Dilution, and Project Teams 167
Methodology 168
Increments and Iterations 169
The Cutting Edge 169
Domain Modeling 169
Risk Reduction 170
PolyBloodyHarderReuse 170
Class Duplication 170
Training the Tidal Wave 171
Ten Lessons the Hard Way (Glenn House) 172
Train Fewer People 175
Train More Effectively 175
Use a Full-Time Mentor 176
Set up 6 to 10 Connected Projects 176
Set up a Full-Time Classroom Program 176
Training 50 or More People 176
Maintain Tight Standards and Review Policies 177
Rotate People 177
Productivity 177
Size 177
Staff Skill Mix 179
Team Structure 180
Even Mix 180
Progress Team/Training Team 180
Productivity Changes Over Time 181
Lines of Code per Month 182
Frameworks 183
Migrating the Organization 184
Productivity Revisited 184
Chapter 8 Rechecking: A Case Study 187
Winifred Revisited 188
Summary 188
History 188
Stage 1: Good Start, with Experience and Support 188
Stage 2: No Architecture, Almost No First Delivery 189
Stage 3: New Increment; Add Teams, Mentors, Architecture 190
Stage 4: Owner per Deliverable; New Infrastructure 191
Analysis 191
Relation to Book's Topics 192
Technology Is Only Part of the Story 197
Organizations(Jimcoplien) 198
Appendix A Collected Risk-Reduction Strategies 201
Appendix B Crib Sheet 237
Index 243