Handbook of Software Engineering (eBook)
XIV, 524 Seiten
Springer International Publishing (Verlag)
978-3-030-00262-6 (ISBN)
Sungdeok (Steve) Cha is a Professor at Korea University in Seoul, Korea and a former professor at Korea Advanced Institute of Science and Technology (KAIST) in Daejeon. Prior to joining KAIST, he was a member of technical staff at the Aerospace Corporation and the Hughes Aircraft Company working on various software engineering and computer security projects. His main research topics include software safety, requirements engineering, and computer security. He is also a member of editorial boards for several software engineering journals.Richard N. Taylor is a Professor Emeritus of Information and Computer Sciences at the University of California, Irvine, USA. His research interests are centered on design and software architectures, especially focusing on decentralized systems. In 2017 he received the ACM SIGSOFT Impact Paper Award (with Roy Fielding). In 2009 he was recognized with the ACM SIGSOFT Outstanding Research Award, in 2008 the ICSE Most Influential Paper award, and in 2005 the ACM SIGSOFT Distinguished Service Award. In 1998 he was named an ACM Fellow for his contributions to research in software engineering and software environments.Kyochul Kang is an Executive Vice President at Samsung Electronics as well as a Professor Emeritus at POSTECH in Korea. Prior to joining POSTECH, he conducted software engineering research at Bell Communications Research, Bell Labs, and SEI. His research career in software engineering began in the 1970s as a member of the PSL/PSA team, which developed the first-ever requirements modelling and analysis technology. He is well known for his FODA (Feature-Oriented Domain Analysis) work at SEI and is an expert on software reuse and product line engineering.
Preface 5
Acknowledgment 7
Contents 8
Editors and Contributors 11
About the Editors 11
Contributors 12
Process and Workflow 13
1 Background, Goals, and Motivation 13
1.1 Goals and Benefits of Process 14
1.1.1 Communication 14
1.1.2 Coordination 15
1.1.3 Training 15
1.1.4 Understanding 15
1.1.5 Improvement 16
1.1.6 Guidance and Control 16
2 History and Seminal Work 17
3 Some Definitions, Unifying Assumptions, and Characterizations 21
3.1 Processes and Workflows 21
3.2 Process Performances 21
3.3 Process Specifications 21
3.4 Activities 22
3.5 Process Artifacts 22
3.6 Process Agents 23
4 Conceptual Framework 23
4.1 Process Specification Approaches 24
4.1.1 Process Specification Evaluation Criteria 24
4.1.2 Example Process Specification Approaches 24
4.2 Process Acquisition 28
4.3 Process Analysis Facilities and Results 30
4.3.1 Dynamic Analysis of Process Specifications 30
4.3.2 Static Analysis of Process Specifications 31
4.4 Process Evolution 35
5 Specific Processes, Frameworks, and Architectures 35
5.1 The Rational Unified Process 36
5.2 The Spiral Model/Incremental Commitment Model 37
5.3 Agile Methods 38
5.4 Extreme Programming 39
5.5 Scrum Development 41
5.6 Adaptive Case Management 42
5.7 Summary and Analysis 43
5.7.1 Communication 43
5.7.2 Coordination 44
5.7.3 Training 44
5.7.4 Understanding 45
5.7.5 Improvement 45
5.7.6 Guidance and Control 47
6 Future Directions 47
6.1 Current Unmet Challenges 48
6.1.1 Specification Language Issues 48
6.2 Learning and Improvement Through Analysis 51
6.2.1 Learning from Big Data 51
6.2.2 Learning from Analysis 52
6.3 Progress Toward Standardized (Yet Flexible) Processes 53
6.4 Human/Computer Collaboration and Human Guidance Direction 55
6.5 Application to New Domains 56
6.6 Merging Process and Workflow Communities and Technologies 57
7 Conclusions 58
References 59
Requirements Engineering 62
1 Introduction 62
2 Concepts and Principles 64
2.1 Fundamentals: The World and the Machine 64
2.2 Qualities 66
2.3 Processes 67
3 Organised Tour: Genealogy and Seminal Works 70
3.1 Elicitation 71
3.1.1 Data Gathering 71
3.1.2 Collaborative 72
3.1.3 Cognitive 73
3.1.4 Contextual 73
3.1.5 Creativity 74
3.1.6 Choosing and Combining Elicitation Techniques 74
3.2 Modelling and Analysis 74
3.2.1 Natural Language 75
3.2.2 Structural Modelling 76
3.2.3 Behavioural Modelling 79
3.2.4 Goal Modelling 80
3.2.5 Choosing and Combining Modelling Techniques 83
3.3 Assurance 84
3.3.1 Validation 84
3.3.2 Verification 85
3.4 Management and Evolution 87
3.4.1 Negotiation and Prioritisation 87
3.4.2 Agile Methods 88
3.4.3 Reuse 89
3.4.4 Adaptation 90
3.4.5 Traceability 91
3.5 RE for Cross-Cutting Properties 92
4 Future Challenges 94
4.1 Sustainability and Global Societal Challenges 95
4.2 Artificial Intelligence 96
4.3 Exemplars and Artefacts 96
5 Conclusion 97
References 97
Software Architecture and Design 104
1 Introduction 104
2 An Organized Tour: Genealogy and Seminal Papers 106
2.1 Domain-Independent Design 107
2.1.1 Early Design Approaches and Module Interconnection Languages 107
2.1.2 Initial Articulations of “Software Architecture” 110
2.1.3 Styles and Patterns 110
2.1.4 Architecture Description Languages (ADLs) 111
2.1.5 Analysis: Early Value from Representations 112
2.1.6 Connectors: The Distinctive Characteristic of Software Architecture Descriptions 114
2.1.7 Adaptation 115
2.2 Domain-Informed Design 115
2.2.1 Focus on a Single Domain 115
2.2.2 Design by Simulation: Object Oriented Design 116
2.2.3 Domain-Specific Software Engineering and Product Families 117
2.2.4 Ecosystems 118
3 Concepts and Principles: Summarizing the Key Points 119
3.1 Software Architecture: A Mature Definition 119
3.1.1 Illustrations 120
3.2 Key Definitions 122
3.3 Key Principles and Practices 124
3.3.1 Designing Architectures 124
3.3.2 Maintaining Conceptual Integrity 126
3.3.3 Cost-Benefit Analysis 127
4 Future Directions 128
4.1 Modeling 128
4.2 Knowledge Capture 129
4.3 Evolution 129
4.4 Ecosystems 130
5 Conclusions 130
References 131
Software Testing 134
1 Introduction 135
2 Concepts and Principles 136
3 Organized Tour: Genealogy and Seminal Works 141
3.1 Analyzing Tests 141
3.1.1 Structural Testing 142
3.1.2 Logical Coverage Criteria 145
3.1.3 Dataflow Testing 146
3.1.4 Mutation Testing 148
3.1.5 Coverage Criteria for Concurrent Programs 150
3.1.6 Coverage Criteria for Graphical User Interfaces 151
3.2 Generating Tests 152
3.2.1 Random Testing 152
3.3 Fuzz Testing 155
3.3.1 Black Box Techniques 155
3.3.2 White Box Techniques 166
3.3.3 Concurrency Testing Techniques 176
3.4 Executing Tests 176
3.4.1 Automated Test Execution 177
3.4.2 Test Suite Minimization 178
3.4.3 Regression Test Selection 180
3.4.4 Test Case Prioritization 182
3.4.5 Testing Embedded Software 184
3.5 Current Trends in Testing Research 184
3.5.1 Model-Based Testing 185
3.5.2 Automated Test Generation 186
3.5.3 Test Analysis 186
3.6 Current Trends in Software Testing Practice 187
3.6.1 Developers Are Testers 187
3.6.2 Test Automation 187
3.6.3 Trending Application Domains 188
4 Future Challenges 189
4.1 Test Analysis 189
4.2 Automated Testing 190
4.3 Test Oracles 190
4.4 Flaky Tests 192
4.5 Legacy Tests 193
4.6 Nonfunctional Testing 193
4.7 Testing Domain-Specific Software 194
4.8 The Academia-Industry Gap 194
5 Conclusions 195
References 196
Formal Methods 204
1 Introduction 204
2 Historical Perspective 206
3 Grand Tour of Formal Methods 210
3.1 Modeling: Concepts and Principles 210
3.2 Formal Specification 213
3.2.1 Linear Temporal Logic 214
3.2.2 Using Finite Automata on Infinite Words as a Specification Formalism 214
3.2.3 Branching Modeling and Specification 216
3.2.4 Process Algebra 217
3.3 Model Checking 219
3.3.1 Symbolic Model Checking 220
3.3.2 Partial Order Reduction 221
3.3.3 Abstraction 222
3.3.4 Bounded Model Checking 223
3.4 Formal Verification 224
3.5 Runtime Verification 227
4 Future Challenges 228
References 230
Software Evolution 234
1 Introduction 234
2 Concepts and Principles 236
2.1 Corrective Change 236
2.2 Adaptive Change 237
2.3 Perfective Change 237
2.4 Preventive Change 237
3 An Organized Tour of Seminal Papers: Applying Changes 238
3.1 Corrective Change 238
3.1.1 Empirical Studies of Bug Fixes 239
3.1.2 Rule-Based Bug Detection and Fixing Approaches 240
3.1.3 Automated Repair 241
3.2 Adaptive Change 242
3.2.1 Cross-System Porting 242
3.2.2 Cross-Language Migration 243
3.2.3 Library Upgrade and API Evolution 244
3.3 Perfective Change 245
3.3.1 Techniques for Locating Crosscutting Concerns 246
3.3.2 Language Support for Crosscutting Concerns 246
3.4 Preventive Change 247
3.4.1 Definition of Refactoring Operations 247
3.4.2 Empirical Studies of Refactoring 248
3.4.3 Automated Refactoring 249
3.4.4 Real-World Refactoring Practices 250
3.4.5 Quantitative Assessment of Refactoring Impact 251
3.4.6 Code Smells Detection 252
3.5 Automatic Change Application 254
3.5.1 Source Transformation and Languages and Tools 254
3.5.2 Programming by Demonstration 256
4 An Organized Tour of Seminal Papers: Inspecting Changes 258
4.1 Software Inspection and Modern Code Review Practices 258
4.1.1 Commercial Code Review Tools 261
4.1.2 Change Decomposition 262
4.1.3 Refactoring Aware Code Review 263
4.1.4 Change Conflicts, Interference, and Relevance 265
4.1.5 Detecting and Preventing Inconsistent Changes to Clones 266
4.2 Program Differencing 267
4.2.1 String and Lexical Matching 268
4.2.2 Syntax Tree Matching 269
4.2.3 Control Flow Graph Matching 270
4.2.4 Program Dependence Graph Matching 270
4.2.5 Related Topics: Model Differencing and Clone Detection 272
4.3 Recording Changes: Edit Capture and Replay 272
5 An Organized Tour of Seminal Papers: Change Validation 273
5.1 Change Impact Analysis 274
5.2 Debugging Changes 275
5.3 Refactoring Validation 278
6 Future Directions and Open Problems 279
6.1 Change Comprehension 279
6.2 Change Suggestion 280
6.3 Change Validation 281
Appendix 282
Key References 283
References 284
Empirical Software Engineering 296
1 Introduction 297
2 Concepts and Principles 298
2.1 Justification 298
2.2 General Concepts 299
2.3 Empirical Research Methods 301
2.4 Empirical Research Methods: Supporting Concepts 303
2.5 Empirical Research Techniques 304
3 Genealogy and Seminal Papers 305
3.1 Landmark Articles 306
3.1.1 Timeline 306
3.1.2 Methods 309
3.2 Landmark Books 311
3.3 Landmark Venues 312
3.4 Other Landmarks 313
4 Challenges 314
4.1 Size of the Studies 315
4.2 Recruiting Students 315
4.3 Recruiting Professional Developers 317
4.4 Theories in ESE 318
4.5 Publication of Negative Results 319
4.5.1 Antinomy Between Doing Research and Empirical Studies 320
4.5.2 Seemingly Uselessness of Empirical Studies 320
4.5.3 What Is and What Should Be 321
4.6 Data Sharing 321
4.7 Comparisons of Software Artefacts 322
5 Future Directions 323
5.1 Idioms for Empirical Studies 324
Pattern Name ``Tool Comparison'' 324
5.2 Patterns for Empirical Studies 324
Pattern Name ``Prima Facie Evidence'' 324
Pattern Name ``Idea Inspired by Experience'' 325
5.3 Styles of Empirical Studies 326
Pattern Name ``Mixed-Method Style'' 326
6 Conclusion 327
References 327
Software Reuse and Product Line Engineering 332
1 Introduction 332
2 Concepts and Principles 333
2.1 Software Reuse Benefits 336
2.2 The Obstacles 338
2.3 The Basic Features 340
3 Organized Tour: Genealogy and Seminal Papers 340
3.1 The Roots 341
3.2 Libraries and Repository Systems 342
3.3 Generative Reuse 343
3.4 Metrics and Economic Models 345
3.5 Reuse Models 346
3.6 Software Reuse Methods and Processes 347
3.7 Software Reuse: The Past Future 351
4 Software Product Lines (SPL): An Effective Reuse Approach 352
4.1 Software Product Line Essential Activities 352
4.2 Commonalities and Variabilities in SPL 353
4.3 Future Directions in SPL and Software Reuse 354
5 Conclusion 356
References 357
Key Software Engineering Paradigms and Modeling Methods 360
1 Introduction 360
2 Organized Tour: Genealogy and Seminal Works 361
2.1 A Brief History of Software Engineering 362
2.2 Paradigms 363
2.2.1 Structure Paradigm 364
2.2.2 Object Orientation Paradigm 365
2.3 Product vs Process 366
2.4 Modeling Methods 368
2.4.1 Model-Driven Engineering 369
2.4.2 Graph Representation of Models 371
2.4.3 Classification of Graph-Structured Models 372
2.4.4 Relation with Other Models 378
3 Future Challenges 379
3.1 Endogenous or Exogenous 379
3.2 Technological Singularity and the Fourth Paradigm 380
3.3 The Next Software Engineering Paradigm 381
4 Conclusions 382
References 383
Coordination Technologies 386
1 Introduction 386
2 Organized Tour of Coordination Technologies 388
3 The Coordination Pyramid 389
3.1 Layer 1: Basic Functional Support 391
3.2 Layer 2: Structured Processes 394
3.3 Layer 3: Information Discovery 396
3.4 Layer 4: Contextualized Information Provision 399
3.5 Layer 5: Seamless 402
4 Conclusion and Future Work 402
Key References 405
References 405
Software Engineering of Self-adaptive Systems 410
1 Introduction 410
2 Concepts and Principles 412
2.1 Basic Principles of Self-adaptation 412
2.2 Conceptual Model of a Self-adaptive System 414
3 An Organised Tour in Six Waves 417
3.1 Wave I: Automating Tasks 418
3.2 Wave II: Architecture-Based Adaptation 422
3.3 Wave III: Models at Runtime 428
3.4 Wave IV: Goal-Driven Adaptation 431
3.5 Wave V: Guarantees Under Uncertainties 435
3.6 Wave VI: Control-Based Approaches 440
4 Future Challenges 443
4.1 Analysis of the Maturity of the Field 443
4.2 Challenges 445
4.2.1 Challenges Within the Current Waves 445
4.2.2 Challenges Beyond the Current Waves 447
5 Conclusions 450
References 450
Security and Software Engineering 455
1 Introduction 456
2 Concepts and Principles 457
3 Organized Tour: Genealogy and Seminal Works 463
3.1 Illustrative Example for Program Analysis 463
3.2 Static Analysis 465
3.2.1 Foundations of Static Analysis 465
3.2.2 Static Analysis in Practice 468
3.3 Dynamic Analysis 471
3.3.1 Dynamic Taint Analysis 471
3.3.2 Dynamic Symbolic Execution 472
3.3.3 Automatic Exploit Generation 473
3.3.4 Fuzzing 475
3.4 Formal Methods 476
3.4.1 Model Checking 476
3.4.2 Theorem Proving 478
3.4.3 Bounded Verification 480
3.5 Adaptive Mechanisms 482
3.5.1 Illustrative Example 482
3.5.2 Self-protecting Software Reference Architecture 484
3.5.3 Architecture-Based Self-protection 485
3.5.4 Protective Wrapper Pattern 486
3.5.5 Software Rejuvenation Pattern 488
4 Future Challenges 490
4.1 Static Analysis 490
4.2 Dynamic Analysis 491
4.3 Formal Methods 492
4.4 Adaptive Mechanisms 493
5 Conclusions 494
References 495
Software Engineering in the Cloud 500
1 Introduction 500
1.1 Example 501
2 Key Concepts 502
2.1 Virtualization 502
2.1.1 Virtual Computing 502
2.1.2 Virtual Storage 504
2.1.3 Virtual Networking 504
2.1.4 Example 505
2.2 The Three-Layer “as-a-Service” Model of Cloud Computing 506
2.2.1 Infrastructure-as-a-Service (IaaS) 506
2.2.2 Platform-as-a-Service (PaaS) 509
2.2.3 Software-as-a-Service (SaaS) 511
3 The Software Economics of Clouds 514
3.1 Private Clouds 515
4 Software Development and Deployment in the Cloud 516
4.1 Example 518
5 Seminal Papers and Genealogy 518
5.1 Foundations of Cloud Computing 518
5.2 Precursors to Cloud Computing 519
5.3 Cloud Computing 520
5.4 Related Concepts 520
6 Conclusions 521
6.1 Key Challenges 521
6.2 Future Directions 523
References 523
Index 526
Erscheint lt. Verlag | 11.2.2019 |
---|---|
Zusatzinfo | XIV, 524 p. 110 illus., 57 illus. in color. |
Verlagsort | Cham |
Sprache | englisch |
Themenwelt | Informatik ► Netzwerke ► Sicherheit / Firewall |
Mathematik / Informatik ► Informatik ► Software Entwicklung | |
Mathematik / Informatik ► Mathematik | |
Wirtschaft ► Betriebswirtschaft / Management ► Wirtschaftsinformatik | |
Schlagworte | Cloud Computing • empirical software engineering • formal methods • Requirements Engineering • software architecture • software development process management • Software Product Lines • Software Testing • Software Verification and Validation |
ISBN-10 | 3-030-00262-4 / 3030002624 |
ISBN-13 | 978-3-030-00262-6 / 9783030002626 |
Haben Sie eine Frage zum Produkt? |
![PDF](/img/icon_pdf_big.jpg)
Größe: 11,0 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich