Description

Book Synopsis
Provides students and engineers with the fundamental developments and common practices of software evolution and maintenance

Software Evolution and Maintenance: A Practitioner's Approach introduces readers to a set of well-rounded educational materials, covering the fundamental developments in software evolution and common maintenance practices in the industry. Each chapter gives a clear understanding of a particular topic in software evolution, and discusses the main ideas with detailed examples. The authors first explain the basic concepts and then drill deeper into the important aspects of software evolution. While designed as a text in an undergraduate course in software evolution and maintenance, the book is also a great resource forsoftware engineers, information technology professionals, and graduate students in software engineering.
  • Based on the IEEE SWEBOK (Software Engineering Body of Knowledge)
  • Explains two maintenance standards:

    Table of Contents

    Preface xiii

    List of Figures xvii

    List of Tables xxi

    1 Basic Concepts and Preliminaries 1

    1.1 Evolution Versus Maintenance, 1

    1.1.1 Software Evolution, 3

    1.1.2 Software Maintenance, 4

    1.2 Software Evolution Models and Processes, 6

    1.3 Reengineering, 9

    1.4 Legacy Systems, 11

    1.5 Impact Analysis, 12

    1.6 Refactoring, 13

    1.7 Program Comprehension, 14

    1.8 Software Reuse, 15

    1.9 Outline of the Book, 16

    References, 18

    Exercises, 23

    2 Taxonomy of Software Maintenance and Evolution 25

    2.1 General Idea, 25

    2.1.1 Intention-Based Classification of Software Maintenance, 26

    2.1.2 Activity-Based Classification of Software Maintenance, 28

    2.1.3 Evidence-Based Classification of Software Maintenance, 28

    2.2 Categories of Maintenance Concepts, 37

    2.2.1 Maintained Product, 37

    2.2.2 Maintenance Types, 40

    2.2.3 Maintenance Organization Processes, 41

    2.2.4 Peopleware, 43

    2.3 Evolution of Software Systems, 44

    2.3.1 SPE Taxonomy, 46

    2.3.2 Laws of Software Evolution, 49

    2.3.3 Empirical Studies, 54

    2.3.4 Practical Implications of the Laws, 56

    2.3.5 Evolution of FOSS Systems, 58

    2.4 Maintenance of Cots-Based Systems, 61

    2.4.1 Why Maintenance of CBS Is Difficult?, 62

    2.4.2 Maintenance Activities for CBSs, 65

    2.4.3 Design Properties of Component-Based Systems, 67

    2.5 Summary, 70

    Literature Review, 73

    References, 75

    Exercises, 80

    3 Evolution and Maintenance Models 83

    3.1 General Idea, 83

    3.2 Reuse-Oriented Model, 84

    3.3 The Staged Model for Closed Source Software, 87

    3.4 The Staged Model for Free, Libre, Open Source Software, 90

    3.5 Change Mini-Cycle Model, 91

    3.6 IEEE/EIA Maintenance Process, 94

    3.7 ISO/IEC 14764 Maintenance Process, 99

    3.8 Software Configuration Management, 111

    3.8.1 Brief History, 112

    3.8.2 SCM Spectrum of Functionality, 113

    3.8.3 SCM Process, 117

    3.9 CR Workflow, 119

    3.10 Summary, 125

    Literature Review, 126

    References, 129

    Exercises, 131

    4 Reengineering 133

    4.1 General Idea, 133

    4.2 Reengineering Concepts, 135

    4.3 A General Model for Software Reengineering, 137

    4.3.1 Types of Changes, 140

    4.3.2 Software Reengineering Strategies, 141

    4.3.3 Reengineering Variations, 143

    4.4 Reengineering Process, 144

    4.4.1 Reengineering Approaches, 144

    4.4.2 Source Code Reengineering Reference Model, 146

    4.4.3 Phase Reengineering Model, 150

    4.5 Code Reverse Engineering, 153

    4.6 Techniques Used for Reverse Engineering, 156

    4.6.1 Lexical Analysis, 157

    4.6.2 Syntactic Analysis, 157

    4.6.3 Control Flow Analysis, 157

    4.6.4 Data Flow Analysis, 158

    4.6.5 Program Slicing, 158

    4.6.6 Visualization, 160

    4.6.7 Program Metrics, 162

    4.7 Decompilation Versus Reverse Engineering, 164

    4.8 Data Reverse Engineering, 165

    4.8.1 Data Structure Extraction, 168

    4.8.2 Data Structure Conceptualization, 169

    4.9 Reverse Engineering Tools, 170

    4.10 Summary, 174

    Literature Review, 176

    References, 178

    Exercises, 185

    5 Legacy Information Systems 187

    5.1 General Idea, 187

    5.2 Wrapping, 189

    5.2.1 Types of Wrapping, 189

    5.2.2 Levels of Encapsulation, 191

    5.2.3 Constructing a Wrapper, 192

    5.2.4 Adapting a Program for Wrapper, 194

    5.2.5 Screen Scraping, 194

    5.3 Migration, 195

    5.4 Migration Planning, 196

    5.5 Migration Methods, 202

    5.5.1 Cold Turkey, 202

    5.5.2 Database First, 203

    5.5.3 Database Last, 204

    5.5.4 Composite Database, 205

    5.5.5 Chicken Little, 206

    5.5.6 Butterfly, 208

    5.5.7 Iterative, 212

    5.6 Summary, 217

    Literature Review, 218

    References, 219

    Exercises, 221

    6 Impact Analysis 223

    6.1 General Idea, 223

    6.2 Impact Analysis Process, 225

    6.2.1 Identifying the SIS, 228

    6.2.2 Analysis of Traceability Graph, 229

    6.2.3 Identifying the Candidate Impact Set, 231

    6.3 Dependency-Based Impact Analysis, 234

    6.3.1 Call Graph, 234

    6.3.2 Program Dependency Graph, 235

    6.4 Ripple Effect, 238

    6.4.1 Computing Ripple Effect, 238

    6.5 Change Propagation Model, 242

    6.5.1 Recall and Precision of Change Propagation Heuristics, 243

    6.5.2 Heuristics for Change Propagation, 245

    6.5.3 Empirical Studies, 246

    6.6 Summary, 247

    Literature Review, 248

    References, 249

    Exercises, 253

    7 Refactoring 255

    7.1 General Idea, 255

    7.2 Activities in a Refactoring Process, 258

    7.2.1 Identify What to Refactor, 258

    7.2.2 Determine Which Refactorings Should be Applied, 259

    7.2.3 Ensure that Refactoring Preserves the Behavior of the Software, 261

    7.2.4 Apply the Refactorings to the Chosen Entities, 262

    7.2.5 Evaluate the Impacts of the Refactorings on Quality, 263

    7.2.6 Maintain Consistency of Software Artifacts, 265

    7.3 Formalisms for Refactoring, 265

    7.3.1 Assertions, 265

    7.3.2 Graph Transformation, 266

    7.3.3 Software Metrics, 267

    7.4 More Examples of Refactorings, 271

    7.5 Initial Work on Software Restructuring, 273

    7.5.1 Factors Influencing Software Structure, 273

    7.5.2 Classification of Restructuring Approaches, 275

    7.5.3 Restructuring Techniques, 276

    7.6 Summary, 282

    Literature Review, 283

    References, 286

    Exercises, 288

    8 Program Comprehension 289

    8.1 General Idea, 289

    8.2 Basic Terms, 291

    8.2.1 Goal of Code Cognition, 291

    8.2.2 Knowledge, 291

    8.2.3 Mental Model, 293

    8.2.4 Understanding Code, 296

    8.3 Cognition Models for Program Understanding, 298

    8.3.1 Letovsky Model, 298

    8.3.2 Shneiderman and Mayer Model, 301

    8.3.3 Brooks Model, 303

    8.3.4 Soloway, Adelson, and Ehrlich Model, 308

    8.3.5 Pennington Model, 310

    8.3.6 Integrated Metamodel, 312

    8.4 Protocol Analysis, 315

    8.5 Visualization for Comprehension, 317

    8.6 Summary, 321

    Literature Review, 321

    References, 322

    Exercises, 324

    9 Reuse and Domain Engineering 325

    9.1 General Idea, 325

    9.1.1 Benefits of Reuse, 327

    9.1.2 Reuse Models, 327

    9.1.3 Factors Influencing Reuse, 328

    9.1.4 Success Factors of Reuse, 329

    9.2 Domain Engineering, 329

    9.2.1 Draco, 331

    9.2.2 DARE, 331

    9.2.3 FAST, 331

    9.2.4 FORM, 331

    9.2.5 KobrA, 332

    9.2.6 PLUS, 332

    9.2.7 PuLSE, 332

    9.2.8 Koala, 332

    9.2.9 RSEB, 332

    9.3 Reuse Capability, 333

    9.4 Maturity Models, 334

    9.4.1 Reuse Maturity Model, 334

    9.4.2 Reuse Capability Model, 336

    9.4.3 RiSE Maturity Model, 338

    9.5 Economic Models of Software Reuse, 340

    9.5.1 Cost Model of Gaffney and Durek, 346

    9.5.2 Application System Cost Model of Gaffney and Cruickshank, 348

    9.5.3 Business Model of Poulin and Caruso, 350

    9.6 Summary, 352

    Literature Review, 352

    References, 353

    Exercises, 356

    Glossary 359

    Index 379

Software Evolution and Maintenance

    Product form

    £87.26

    Includes FREE delivery

    RRP £96.95 – you save £9.69 (9%)

    Order before 4pm tomorrow for delivery by Mon 6 Jul 2026.

    A Hardback by Priyadarshi Tripathy, Kshirasagar Naik

      Trusted by thousands of customers. See 2,385+ Customer Reviews

      View other formats and editions of Software Evolution and Maintenance by Priyadarshi Tripathy

      Publisher: John Wiley & Sons Inc
      Publication Date: 20/01/2015
      ISBN13: 9780470603413, 978-0470603413
      ISBN10: 0470603410

      Description

      Book Synopsis
      Provides students and engineers with the fundamental developments and common practices of software evolution and maintenance

      Software Evolution and Maintenance: A Practitioner's Approach introduces readers to a set of well-rounded educational materials, covering the fundamental developments in software evolution and common maintenance practices in the industry. Each chapter gives a clear understanding of a particular topic in software evolution, and discusses the main ideas with detailed examples. The authors first explain the basic concepts and then drill deeper into the important aspects of software evolution. While designed as a text in an undergraduate course in software evolution and maintenance, the book is also a great resource forsoftware engineers, information technology professionals, and graduate students in software engineering.
      • Based on the IEEE SWEBOK (Software Engineering Body of Knowledge)
      • Explains two maintenance standards:

        Table of Contents

        Preface xiii

        List of Figures xvii

        List of Tables xxi

        1 Basic Concepts and Preliminaries 1

        1.1 Evolution Versus Maintenance, 1

        1.1.1 Software Evolution, 3

        1.1.2 Software Maintenance, 4

        1.2 Software Evolution Models and Processes, 6

        1.3 Reengineering, 9

        1.4 Legacy Systems, 11

        1.5 Impact Analysis, 12

        1.6 Refactoring, 13

        1.7 Program Comprehension, 14

        1.8 Software Reuse, 15

        1.9 Outline of the Book, 16

        References, 18

        Exercises, 23

        2 Taxonomy of Software Maintenance and Evolution 25

        2.1 General Idea, 25

        2.1.1 Intention-Based Classification of Software Maintenance, 26

        2.1.2 Activity-Based Classification of Software Maintenance, 28

        2.1.3 Evidence-Based Classification of Software Maintenance, 28

        2.2 Categories of Maintenance Concepts, 37

        2.2.1 Maintained Product, 37

        2.2.2 Maintenance Types, 40

        2.2.3 Maintenance Organization Processes, 41

        2.2.4 Peopleware, 43

        2.3 Evolution of Software Systems, 44

        2.3.1 SPE Taxonomy, 46

        2.3.2 Laws of Software Evolution, 49

        2.3.3 Empirical Studies, 54

        2.3.4 Practical Implications of the Laws, 56

        2.3.5 Evolution of FOSS Systems, 58

        2.4 Maintenance of Cots-Based Systems, 61

        2.4.1 Why Maintenance of CBS Is Difficult?, 62

        2.4.2 Maintenance Activities for CBSs, 65

        2.4.3 Design Properties of Component-Based Systems, 67

        2.5 Summary, 70

        Literature Review, 73

        References, 75

        Exercises, 80

        3 Evolution and Maintenance Models 83

        3.1 General Idea, 83

        3.2 Reuse-Oriented Model, 84

        3.3 The Staged Model for Closed Source Software, 87

        3.4 The Staged Model for Free, Libre, Open Source Software, 90

        3.5 Change Mini-Cycle Model, 91

        3.6 IEEE/EIA Maintenance Process, 94

        3.7 ISO/IEC 14764 Maintenance Process, 99

        3.8 Software Configuration Management, 111

        3.8.1 Brief History, 112

        3.8.2 SCM Spectrum of Functionality, 113

        3.8.3 SCM Process, 117

        3.9 CR Workflow, 119

        3.10 Summary, 125

        Literature Review, 126

        References, 129

        Exercises, 131

        4 Reengineering 133

        4.1 General Idea, 133

        4.2 Reengineering Concepts, 135

        4.3 A General Model for Software Reengineering, 137

        4.3.1 Types of Changes, 140

        4.3.2 Software Reengineering Strategies, 141

        4.3.3 Reengineering Variations, 143

        4.4 Reengineering Process, 144

        4.4.1 Reengineering Approaches, 144

        4.4.2 Source Code Reengineering Reference Model, 146

        4.4.3 Phase Reengineering Model, 150

        4.5 Code Reverse Engineering, 153

        4.6 Techniques Used for Reverse Engineering, 156

        4.6.1 Lexical Analysis, 157

        4.6.2 Syntactic Analysis, 157

        4.6.3 Control Flow Analysis, 157

        4.6.4 Data Flow Analysis, 158

        4.6.5 Program Slicing, 158

        4.6.6 Visualization, 160

        4.6.7 Program Metrics, 162

        4.7 Decompilation Versus Reverse Engineering, 164

        4.8 Data Reverse Engineering, 165

        4.8.1 Data Structure Extraction, 168

        4.8.2 Data Structure Conceptualization, 169

        4.9 Reverse Engineering Tools, 170

        4.10 Summary, 174

        Literature Review, 176

        References, 178

        Exercises, 185

        5 Legacy Information Systems 187

        5.1 General Idea, 187

        5.2 Wrapping, 189

        5.2.1 Types of Wrapping, 189

        5.2.2 Levels of Encapsulation, 191

        5.2.3 Constructing a Wrapper, 192

        5.2.4 Adapting a Program for Wrapper, 194

        5.2.5 Screen Scraping, 194

        5.3 Migration, 195

        5.4 Migration Planning, 196

        5.5 Migration Methods, 202

        5.5.1 Cold Turkey, 202

        5.5.2 Database First, 203

        5.5.3 Database Last, 204

        5.5.4 Composite Database, 205

        5.5.5 Chicken Little, 206

        5.5.6 Butterfly, 208

        5.5.7 Iterative, 212

        5.6 Summary, 217

        Literature Review, 218

        References, 219

        Exercises, 221

        6 Impact Analysis 223

        6.1 General Idea, 223

        6.2 Impact Analysis Process, 225

        6.2.1 Identifying the SIS, 228

        6.2.2 Analysis of Traceability Graph, 229

        6.2.3 Identifying the Candidate Impact Set, 231

        6.3 Dependency-Based Impact Analysis, 234

        6.3.1 Call Graph, 234

        6.3.2 Program Dependency Graph, 235

        6.4 Ripple Effect, 238

        6.4.1 Computing Ripple Effect, 238

        6.5 Change Propagation Model, 242

        6.5.1 Recall and Precision of Change Propagation Heuristics, 243

        6.5.2 Heuristics for Change Propagation, 245

        6.5.3 Empirical Studies, 246

        6.6 Summary, 247

        Literature Review, 248

        References, 249

        Exercises, 253

        7 Refactoring 255

        7.1 General Idea, 255

        7.2 Activities in a Refactoring Process, 258

        7.2.1 Identify What to Refactor, 258

        7.2.2 Determine Which Refactorings Should be Applied, 259

        7.2.3 Ensure that Refactoring Preserves the Behavior of the Software, 261

        7.2.4 Apply the Refactorings to the Chosen Entities, 262

        7.2.5 Evaluate the Impacts of the Refactorings on Quality, 263

        7.2.6 Maintain Consistency of Software Artifacts, 265

        7.3 Formalisms for Refactoring, 265

        7.3.1 Assertions, 265

        7.3.2 Graph Transformation, 266

        7.3.3 Software Metrics, 267

        7.4 More Examples of Refactorings, 271

        7.5 Initial Work on Software Restructuring, 273

        7.5.1 Factors Influencing Software Structure, 273

        7.5.2 Classification of Restructuring Approaches, 275

        7.5.3 Restructuring Techniques, 276

        7.6 Summary, 282

        Literature Review, 283

        References, 286

        Exercises, 288

        8 Program Comprehension 289

        8.1 General Idea, 289

        8.2 Basic Terms, 291

        8.2.1 Goal of Code Cognition, 291

        8.2.2 Knowledge, 291

        8.2.3 Mental Model, 293

        8.2.4 Understanding Code, 296

        8.3 Cognition Models for Program Understanding, 298

        8.3.1 Letovsky Model, 298

        8.3.2 Shneiderman and Mayer Model, 301

        8.3.3 Brooks Model, 303

        8.3.4 Soloway, Adelson, and Ehrlich Model, 308

        8.3.5 Pennington Model, 310

        8.3.6 Integrated Metamodel, 312

        8.4 Protocol Analysis, 315

        8.5 Visualization for Comprehension, 317

        8.6 Summary, 321

        Literature Review, 321

        References, 322

        Exercises, 324

        9 Reuse and Domain Engineering 325

        9.1 General Idea, 325

        9.1.1 Benefits of Reuse, 327

        9.1.2 Reuse Models, 327

        9.1.3 Factors Influencing Reuse, 328

        9.1.4 Success Factors of Reuse, 329

        9.2 Domain Engineering, 329

        9.2.1 Draco, 331

        9.2.2 DARE, 331

        9.2.3 FAST, 331

        9.2.4 FORM, 331

        9.2.5 KobrA, 332

        9.2.6 PLUS, 332

        9.2.7 PuLSE, 332

        9.2.8 Koala, 332

        9.2.9 RSEB, 332

        9.3 Reuse Capability, 333

        9.4 Maturity Models, 334

        9.4.1 Reuse Maturity Model, 334

        9.4.2 Reuse Capability Model, 336

        9.4.3 RiSE Maturity Model, 338

        9.5 Economic Models of Software Reuse, 340

        9.5.1 Cost Model of Gaffney and Durek, 346

        9.5.2 Application System Cost Model of Gaffney and Cruickshank, 348

        9.5.3 Business Model of Poulin and Caruso, 350

        9.6 Summary, 352

        Literature Review, 352

        References, 353

        Exercises, 356

        Glossary 359

        Index 379

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account