Helps in the development of large software projects. Uses a well-known open-source software prototype system (Vesta developed at Digital and Compaq Systems Research Lab).
Author(s): Allan Heydon, Roy Levin, Timothy Mann, Yuan Yu
Series: Monographs in Computer Science
Year: 2006
Language: English
Pages: 262
Cover......Page 1
Title......Page 4
Copyright......Page 5
Preface......Page 7
Table of Contents......Page 11
Part I
Introducing Vesta......Page 17
1 Introduction......Page 19
1.1 Some Scenarios......Page 20
1.2 The Configuration Management Challenge......Page 22
1.3 The Vesta Response......Page 23
2 Essential Background......Page 26
2.1.2 Mount Points......Page 27
2.1.4 Properties of Files......Page 28
2.2 Unix Processes......Page 29
2.3 TheUnixShell......Page 30
2.4 The Unix Programming Environment......Page 31
2.5 Make......Page 33
3.1 System Components......Page 34
3.1.1 Source Management Components......Page 35
3.1.2 Build Components......Page 37
3.1.3 Storage Components......Page 40
3.1.4 Models and Modularity......Page 41
3.2 Vesta's Core Properties......Page 42
In Summary......Page 43
Part II
The User's View of Vesta......Page 44
4 Managing Sources and Versions......Page 46
4.1.1 The Source Name Space......Page 47
4.1.2 Versioning......Page 48
4.1.3 Naming Files and Packages......Page 49
4.2.1 The Outer Loop......Page 51
4.2.2 The Inner Loop......Page 52
4.2.3 Detailed Operation of the Repository Tools......Page 53
4.2.4 Version Control Alternatives......Page 55
4.2.6 Mutable Files and Directories......Page 56
4.3.1 Global Name Space......Page 57
4.3.2 A Replication Example......Page 59
4.3.3 The Replicator......Page 60
4.3.4 Cross-Repository Check-out......Page 61
4.4.1 Mutable Attributes......Page 63
4.4.2 Access Control......Page 66
4.4.3 Metadata and Replication......Page 68
In Summary......Page 69
5.1 Motivation......Page 70
5.2 Language Highlights......Page 71
5.2.1 The Environment Parameter......Page 73
5.2.2 Bindings......Page 74
5.2.3 Tool Encapsulation......Page 76
5.2.4 Closures......Page 78
5.2.5 Imports......Page 79
In Summary......Page 80
6 Building Systems in Vesta......Page 81
6.1 The Organization of System Models......Page 82
6.2 Hierarchies of System Models......Page 84
6.2.1 Bridges and the Standard Environment......Page 86
6.2.2 Library Models......Page 87
6.2.3 Application Models......Page 89
6.2.4 Putting It All Together......Page 90
6.2.5 Control Panel Models......Page 91
6.3 Customizing the Build Process......Page 94
In Summary......Page 98
Part III
Inside Vesta......Page 99
7.1.1 Derived Files and Shortids......Page 101
7.1.2 Evaluator Directories and Volatile Directories......Page 102
7.1.3 Fingerprints......Page 104
7.2.1 Directory Implementation......Page 106
7.2.2 Shortids and Files......Page 108
7.2.3 Longids......Page 109
7.2.4 Copy-on-Write......Page 111
7.2.5 NFS Interface......Page 112
7.3.1 Mastership......Page 113
7.3.2 Agreement......Page 114
7.3.3 Agreement-Preserving Primitives......Page 116
7.3.4 Propagating Attributes......Page 118
In Summary......Page 119
8.1 Overview of Function Caching......Page 120
8.2 Caching and Dynamic Dependencies......Page 122
8.3 The Function Cache Interface......Page 126
8.4.1 Representing Dependencies......Page 127
8.4.2 Caching External Tool Invocations......Page 128
8.4.3 Caching User-Defined Function Evaluations......Page 130
The Composition of Cache Keys......Page 131
The Interaction of Caching and Evaluation......Page 132
Dependency Types......Page 133
Dependency Calculation Rules......Page 134
Fine-Grained Analysis: An Example......Page 136
The Correctness Theorem......Page 137
8.4.4 Caching System Model Evaluations: A Special Case......Page 138
8.5 Error Handling......Page 139
8.6 Function Cache Implementation......Page 141
8.6.1 Cache Lookup......Page 142
8.6.2 Cache Entry Storage......Page 145
8.7.1 Scratch Build of the Standard Environment......Page 146
8.7.2 Scratch Build of the Vesta Umbrella Library......Page 149
8.7.3 Scratch and Incremental Builds of the Evaluator......Page 151
In Summary......Page 153
9 Weeder......Page 154
9.1 How Deletion is Specified......Page 155
9.2.1 The Function Call Graph......Page 156
9.2.2 Concurrent Weeding......Page 159
In Summary......Page 163
Part IV
Assessing Vesta......Page 164
10.1 Loosely Connected Configuration Management Tools......Page 166
10.1.2 CVS......Page 167
10.1.3 Make......Page 168
10.2.1 DSEE......Page 170
10.2.2 ClearCASE......Page 172
10.3 Other Systems......Page 173
11 Vesta System Performance......Page 175
11.2 Overall System Performance......Page 176
11.2.1 Performance Comparison with Make......Page 177
11.2.2 Performance Breakdown......Page 179
11.2.3 Caching Analysis......Page 181
CPU Usage......Page 182
Client Process Memory Usage......Page 183
11.3 Repository Performance......Page 184
11.3.1 Speed of File Operations......Page 185
11.3.2 Disk and Memory Consumption......Page 187
Main Memory Usage......Page 188
Scaling Projections......Page 189
11.3.3 Speed of Repository Tools......Page 190
11.3.4 Speed of Cross-Repository Tools......Page 192
11.3.5 Speed of the Replieator......Page 193
11.4.1 Server Performance......Page 194
11.4.2 Measurements of the Stable Cache......Page 195
11.4.4 Function Cache Scalability......Page 196
11.5 Weeder Performance......Page 197
11.6 Interprocess Communication......Page 198
In Summary......Page 199
12 Conclusions......Page 200
12.1 Vesta in the Real World......Page 201
12.2 Vesta in the Future......Page 202
A.I Introduction......Page 205
A.2.2 Terminals......Page 206
A.3.1
Value Space......Page 207
A.3.2 Type Declarations......Page 208
A.3.3 Evaluation Rules......Page 209
A.3.3.2 Literal......Page 210
A.3.3.4 List......Page 211
A.3.3.5 Binding......Page 214
A.3.3.6 Select......Page 215
A.3.3.7 Block......Page 216
A.3.3.9 Assign......Page 217
A.3.3.11 FuncDef......Page 218
A.3.3.12 FuncCall......Page 221
A.3.3.14 Files......Page 222
A.3.3.15 Imports......Page 226
A.3.3.16 File Name Interpretation......Page 229
A.3.4 Primitives......Page 230
A.3.4.2 Functions on Type t_tint......Page 231
A.3.4.3 Functions on Type t_text......Page 232
A.3.4.4 Functions on Type t_list......Page 234
A.3.4.5 Functions on Type t_binding......Page 236
A.3.4.6 Special Purpose Functions......Page 239
A.3.4.7 Type Manipulation Functions......Page 240
A.3.4.8 Tool Invocation Function......Page 241
A.3.4.9 Diagnostic Functions......Page 245
A.4.1 Grammar......Page 246
A.4.3 Tokens......Page 249
A.4.4 Reserved Identifiers......Page 251
B The Vesta Web Site......Page 252
References......Page 253
Index......Page 257