Tuesday, November 8, 2011

A Handbook of Software and Systems Engineering






Preface xv
List of abbreviations xvi
Chapter 1: Introduction 1
1.1 Computing as empirical science 1
1.2 From observations to laws and theories 2
1.3 The role of experiments 3
1.4 Laws as lessons learned by the profession 3
1.5 On principles, methods and tools 5
1.6 Search for theories 6
1.7 About this book 8
Chapter 2: Requirements definition, prototyping, and
modeling 10
2.1 Definitions and importance 10
2.2 General observations 13
2.3 Applicable laws and their theories 15
2.3.1 Glass’ law 16
2.3.2 Boehm’s first law 17
2.3.3 Boehm’s second law 19
2.3.4 Davis’ law 22
2.3.5 Booch’s first hypothesis 25
2.4 More on requirements definition 26
2.4.1 Vision statement 26
2.4.2 Requirements elicitation and prioritization 26
2.4.3 Knowledge acquisition and management 27
2.4.4 Feasibility study or risk analysis 27
2.4.5 Functional and non-functional requirements 28
2.4.6 Safety and security requirements 28
2.4.7 Detailed documentation of requirements 28
2.4.8 Buy-in, validation and approval of requirements 29
2.4.9 Requirements tracing and change control 30
2.5 Examples and study material 30
2.5.1 Text formatting requirements 30
2.5.2 Digital library requirements 31
Exercises 33
Chapter 3: System design and specification 34
3.1 Definitions and importance 34
3.2 General observations 35
3.3 Applicable laws and their theories 38
3.3.1 Curtis’ law 38
3.3.2 Simon’s law 40
3.3.3 Constantine’s law 43
3.3.4 Parnas’ law 45
3.3.5 Denert’s law 46
3.3.6 Fitts–Shneiderman law 48
3.3.7 Booch’s second hypothesis 50
3.3.8 Bauer–Zemanek hypothesis 50
3.3.9 Gamma’s hypothesis 53
3.4 More on system design and specification 55
3.4.1 Project goals and design criteria 55
3.4.2 Open architectures 56
3.4.3 Design quality and iterative design 56
3.4.4 Design of data structures and databases 57
3.4.5 Design for safety and security 58
3.4.6 Technology impact on system design 58
3.4.7 Documentation of design 59
3.4.8 CASE tools and design change control 59
3.4.9 Cognitive processes and group dynamics 60
3.4.10 User participation and growing of designers 60
3.5 Examples and study material 61
3.5.1 Text formatting design 61
3.5.2 Digital library design 62
3.5.3 Performance analysis 64
3.5.4 Metrics analysis 65
Exercises 67
Chapter 4: System construction and composition 68
4.1 Definitions and importance 68
4.2 General observations 69
4.3 Applicable laws and their theories 71
4.3.1 DeRemer’s law 71
4.3.2 Corbató’s law 72
4.3.3 Dijkstra–Mills–Wirth law 73
4.3.4 Lanergan’s law 76
4.3.5 McIlroy’s law 77
4.3.6 Conway’s law 81
4.3.7 Dahl–Goldberg hypothesis 83
4.3.8 Beck–Fowler hypothesis 84
4.3.9 Basili–Boehm COTS hypothesis 85
4.4 More on system construction and composition 86
4.4.1 Incremental development and integration 86
4.4.2 Implementation languages 87
4.4.3 Application generators 87
4.4.4 Visual programming languages 88
4.4.5 Programming by example 89
4.4.6 Software metrics 89
4.4.7 Configuration management and version control 90
4.4.8 Software factories 91
4.4.9 Legacy applications 93
4.5 Examples and study material 94
4.5.1 Text formatting implementation 94
4.5.2 Program size variations 95
4.5.3 Metrics application 95
Exercises 97
Chapter 5: Validation and static verification 98
5.1 Definitions and importance 98
5.2 General observations 99
5.3 Applicable laws and their theories 100
5.3.1 Fagan’s law 100
5.3.2 Porter–Votta law 103
5.3.3 Basili’s law 105
5.3.4 Hetzel–Myers law 107
5.3.5 Mills–Jones hypothesis 110
5.3.6 May’s hypothesis 110
5.3.7 Hoare’s hypothesis 112
5.4 More on validation and static verification 115
5.4.1 Formal analysis of code 115
5.4.2 Static software visualization 115
5.4.3 Model checking 117
5.5 Examples and study material 117
5.5.1 Formal specification 117
5.5.2 Design inspection 118
5.5.3 Code inspection 119
5.5.4 Static visualization 120
Exercises 122
Chapter 6: Testing or dynamic verification 123
6.1 Definitions and importance 123
6.2 General observations 125
6.3 Applicable laws and their theories 127
6.3.1 Sackman’s first law 127
6.3.2 Dijkstra’s law 128
6.3.3 Weinberg’s law 131
6.3.4 Pareto–Zipf-type laws 131
6.3.5 Gray–Serlin law 133
6.3.6 Nielsen–Norman law 134
6.3.7 Gutjahr’s hypothesis 136
6.3.8 Weyuker’s hypothesis 137
6.3.9 Endres–Glatthaar hypothesis 138
6.3.10 Hamlet’s hypothesis 139
6.4 More on testing 140
6.4.1 Compiler vaildation 140
6.4.2 Test planning and test case development 140
6.4.3 Test support and automation 141
6.4.4 Clean-room and other testing strategies 142
6.4.5 Testing of object-oriented or real-time software 143
6.4.6 Use of assertions and code-embedded test aids 144
6.4.7 Dynamic software visualization 144
6.4.8 Operational profile 145
6.5 Examples and study material 146
6.5.1 Text formatting unit test 146
6.5.2 Digital library system test 147
6.5.3 Arithmetic test suite 148
Exercises 149
Chapter 7: System manufacturing, distribution, and
installation 150
7.1 Definitions and importance 150
7.2 General observations 150
7.3 Applicable laws and their theories 151
7.3.1 Conjecture 1 151
7.3.2 Conjecture 2 152
7.3.3 Conjecture 3 153
7.3.4 Conjecture 4 154
7.4 More on system manufacturing, distribution, and installation 156
7.4.1 Software distribution methods and tools 156
7.4.2 Software installation methods and tools 157
7.4.3 User training and help services 157
7.4.4 Customizing, localizing, and conversion 157
7.4.5 Applets and servlets 158
7.5 Examples and study material 158
7.5.1 Manufacturing and distribution 158
Exercises 159
Chapter 8: System administration, evolution, and
maintenance 160
8.1 Definitions and importance 160
8.2 General observations 161
8.3 Applicable laws and their theories 163
8.3.1 Lehman’s first law 163
8.3.2 Lehman’s second law 165
8.3.3 Lehman’s third law 166
8.3.4 Basili–Möller law 167
8.3.5 McCabe’s hypothesis 168
8.3.6 Wilde’s hypothesis 170
8.3.7 Conjecture 5 171
8.3.8 Conjecture 6 172
8.4 More on system administration, evolution, and maintenance 173
8.4.1 Security strategy and control 173
8.4.2 Vendor strategies for service and maintenance 173
8.4.3 User strategies for service and maintenance 174
8.4.4 Preventative versus corrective maintemance 175
8.4.5 On-the-fly version updates 175
8.4.6 Re-engineering, re-development, and renovation 176
8.4.7 Retirement and withdrawal 177
8.5 Examples and study material 178
8.5.1 Quality tracking and prediction 178
8.5.2 Maintenance strategy 180
Exercises 183
Chapter 9: Project management and business analysis 184
9.1 Definitions and importance 184
9.2 General observations 185
9.3 Applicable laws and their theories 188
9.3.1 Sackman’s second law 188
9.3.2 Nelson–Jones law 190
9.3.3 Boehm’s third law 192
9.3.4 DeMarco–Glass law 194
9.3.5 Humphrey’s law 195
9.3.6 Brooks’ law 199
9.3.7 Baumol’s disease 199
9.3.8 Boehm’s hypothesis 201
9.4 More on project management and business analysis 203
9.4.1 Project plans and commitments 203
9.4.2 Project and process models 204
9.4.3 People assignment and skill management 204
9.4.4 Work environment and tools 205
9.4.5 Software pricing and business case 206
9.4.6 Product packaging and licensing 208
9.4.7 Intellectual property rights 209
9.4.8 The open source model 210
9.4.9 Total cost of system ownership 211
9.5 Examples and study material 212
9.5.1 Cost estimating (bottom-up approach) 212
9.5.2 Cost estimating (with COCOMO-II) 213
9.5.3 Business analysis 215
9.5.4 Project tracking 216
Exercises 218
Chapter 10: User skills, motivation, and satisfaction 219
10.1 Definitions and importance 219
10.2 General observations 220
10.3 Applicable laws and their theories 223
10.3.1 Kupfmüller’s law 223
10.3.2 Gestalt laws 224
10.3.3 Miller’s law 226
10.3.4 Krause’s law 227
10.3.5 Librarian’s law 228
10.3.6 Apprentice’s law 229
10.3.7 Maslow–Herzberg law 229
10.3.8 McGregor’s hypothesis 231
10.3.9 Hawthorne effect 232
10.3.10 Marketer’s hypothesis 233
10.4 More on user skills, motivation, and satisfaction 233
10.4.1 Conducting user studies 233
10.4.2 Special abilities and attitudes 234
10.4.3 Customer feedback and satisfaction 234
10.4.4 Social opportunities and risks 235
10.5 Examples and study material 236
10.5.1 Professional development and career planning 236
10.5.2 Customer satisfaction survey 239
Exercises 241
Chapter 11: Technology, architecture, and industry
capabilities 242
11.1 Definitions and importance 242
11.2 General observations 243
11.3 Applicable laws and their theories 244
11.3.1 Moore’s law 244
11.3.2 Hoagland’s law 247
11.3.3 Cooper’s law 249
11.3.4 Morris–Ferguson law 250
11.3.5 Metcalfe’s law 250
11.3.6 Shaw–Garlan hypothesis 252
11.3.7 Bayer’s hypothesis 252
11.3.8 Codd’s hypothesis 254
11.3.9 Engelbart’s hypothesis 254
11.4 More on technology, architecture, and industry capabilities 255
11.4.1 Technology assessment and prediction 255
11.4.2 Management of technology and innovation 256
11.4.3 Some emerging technologies and applications 257
11.4.4 Assessing industry capabilities 259
11.4.5 Developing an information systems strategy 259
11.5 Examples and study material 260
11.5.1 Information systems strategy 260
Exercises 263
Chapter 12: Measurements, experiments, and empirical
research 264
12.1 Definitions and importance 264
12.2 General observations 265
12.3 Applicable laws and their theories 267
12.3.1 Bayes’ theorem 267
12.3.2 Basili–Rombach hypothesis 268
12.3.3 Conjecture 7 269
12.3.4 Conjecture 8 269
12.3.5 Conjecture 9 270
12.3.6 Conjecture 10 271
12.3.7 Conjecture 11 272
12.3.8 Conjecture 12 273
12.4 More on measurements, experiments, and empirical research 273
12.4.1 Defining experimental goals 273
12.4.2 Deriving testable hypotheses 274
12.4.3 Designing experiments 274
12.4.4 Analysis and validation of results 275
12.4.5 Replication of experiments 276
12.4.6 Ethical issues 276
12.4.7 Limitations of the experimental approach 276
12.4.8 Nature of empirical research 277
12.5 Examples and study material 277
12.5.1 Comparative product evaluation 277
12.5.2 Evaluation of verification methods (hypothesis-based) 279
Exercises 281
Chapter 13: Conclusions and challenges 282
13.1 More on the laws and theories covered in the book 282
13.2 Frequency and quality of experiments 285
13.3 Research issues 285
13.4 Implications for education and practice 287
13.5 Future of software and systems engineering 288
13.6 Beyond observations, laws, and theories 289
Appendix 1: Summary of laws, hypotheses, and conjectures 290
Appendix 2: Biographies of pioneers and key contributors 294
Appendix 3: On-going projects/research groups 305
References 308
Index 325

Another Software Engineering Books
Download

No comments:

Post a Comment

Related Posts with Thumbnails

Put Your Ads Here!