1 INTRODUCTION |
|
1 | |
|
|
3 | |
|
1.1.1 New Software Engineers |
|
|
3 | |
|
1.1.2 Software Team Leaders |
|
|
4 | |
|
|
6 | |
|
|
6 | |
|
1.2.2 Knowing Reasons Why |
|
|
7 | |
|
1.2.3 Developing the Developers |
|
|
8 | |
|
|
8 | |
2 REQUIREMENTS |
|
11 | |
|
2.1 Waterfall versus Agile |
|
|
12 | |
|
|
13 | |
|
2.3 Implicit Requirements |
|
|
14 | |
3 DESIGN |
|
17 | |
|
3.1 Interfaces and Implementations |
|
|
18 | |
|
3.1.1 Good Interface Design |
|
|
19 | |
|
3.1.2 Black Box Principle |
|
|
21 | |
|
3.1.3 Physical Architecture |
|
|
21 | |
|
3.2 Designing for the Future |
|
|
22 | |
|
3.2.1 Component Responsibility |
|
|
22 | |
|
3.2.2 Minimizing Special Cases |
|
|
23 | |
|
|
24 | |
|
|
26 | |
|
3.2.5 Avoiding the Cutting Edge |
|
|
27 | |
|
|
28 | |
|
|
28 | |
|
|
29 | |
|
|
31 | |
|
|
34 | |
|
3.3.5 Dynamic Software Upgrade |
|
|
36 | |
|
3.4 Communicating the Design |
|
|
39 | |
|
|
39 | |
|
|
40 | |
|
|
40 | |
4 CODE |
|
43 | |
|
|
43 | |
|
|
45 | |
|
|
46 | |
|
|
47 | |
|
|
49 | |
|
4.6 Managing the Codebase |
|
|
53 | |
|
|
53 | |
|
4.6.2 Other Tracking Systems |
|
|
55 | |
|
4.6.3 Enforcing Standards |
|
|
57 | |
|
|
57 | |
|
4.6.5 Delivering the Code |
|
|
58 | |
5 CODE REVIEW |
|
61 | |
|
5.1 Rationale: Why do code reviews? |
|
|
61 | |
|
|
61 | |
|
|
62 | |
|
|
63 | |
|
|
63 | |
|
|
63 | |
|
|
64 | |
|
5.2.3 Scenario Walkthroughs |
|
|
65 | |
|
|
65 | |
|
|
65 | |
|
|
66 | |
|
5.4 The Code Review Process |
|
|
67 | |
|
|
67 | |
|
|
69 | |
|
|
70 | |
6 TEST |
|
73 | |
|
|
73 | |
|
|
75 | |
|
6.3 Psychology of Testing |
|
|
76 | |
|
|
78 | |
|
6.5 Design for Testability |
|
|
79 | |
|
|
81 | |
7 SUPPORT |
|
83 | |
|
|
84 | |
|
|
84 | |
|
|
85 | |
|
|
86 | |
8 PLANNING A PROJECT |
|
89 | |
|
|
89 | |
|
|
90 | |
|
|
91 | |
|
|
96 | |
|
|
99 | |
|
|
101 | |
9 RUNNING A PROJECT |
|
103 | |
|
|
103 | |
|
|
103 | |
|
|
107 | |
|
|
108 | |
|
|
109 | |
|
9.3.1 Explaining Decisions |
|
|
110 | |
|
9.3.2 Make Everything Into Code |
|
|
110 | |
|
9.3.3 Tuning Development Processes |
|
|
111 | |
|
9.4 Personnel Development |
|
|
112 | |
|
9.4.1 Technical Fundamentals |
|
|
112 | |
|
|
114 | |
INDEX |
|
117 | |
COLOPHON |
|
121 | |