Title:
Effective software maintenance and evolution : a reuse-based approach
Personal Author:
Publication Information:
Boca Raton, FL : Auerbach Publications, 2007
ISBN:
9780849335921
Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010133973 | QA76.76.R47 J37 2007 | Open Access Book | Book | Searching... |
Searching... | 30000010207874 | QA76.76.R47 J37 2007 | Open Access Book | Book | Searching... |
Searching... | 30000003495060 | QA76.76.R47 J37 2007 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
With software maintenance costs averaging 50% of total computing costs, it is necessary to have an effective maintenance program in place. Aging legacy systems, for example, pose an especially rough challenge as veteran programmers retire and their successors are left to figure out how the systems operate. This book explores program analyzers, reverse engineering tools, and reengineering tools in-depth and explains the best ways to deploy them. It also discusses using XML-based tools, the roles of software components, object technology, and metaprogramming in improving systems maintenance, as well as how to align software with business goals through strategic maintenance.
Table of Contents
Foreword | p. xiii |
The Author | p. xvii |
Acknowledgments | p. xix |
Prologue | p. xxiii |
1 Introduction | p. 1 |
Chapter Summary | p. 1 |
1.1 Background | p. 1 |
1.2 The Problem of Software Change | p. 3 |
1.3 Software Evolution and Its Challenges | p. 5 |
1.4 About This Book | p. 8 |
References | p. 10 |
Part I Conventional Methods of Software Maintenance and Evolution | |
2 Static Program Analysis Methods | p. 15 |
Chapter Summary | p. 15 |
2.1 Introduction to Static Program Analysis | p. 15 |
2.2 Approaches to Static Program Analysis | p. 17 |
2.3 How Does an SPA Work? | p. 19 |
2.4 Source Language: Simple | p. 20 |
2.5 Program Design Abstractions for Simple | p. 22 |
2.6 Querying Programs with PQL | p. 33 |
2.7 Design of PQL and SPA | p. 39 |
2.8 Optimizing the Performance of Query Evaluation | p. 42 |
2.9 PQL for Cobol | p. 44 |
2.10 Conclusions | p. 44 |
References | p. 45 |
3 Reverse Engineering Methods | p. 47 |
Chapter Summary | p. 47 |
3.1 Review of Approaches to Reverse Engineering | p. 47 |
3.2 Incremental and Interactive Reverse Engineering Process | p. 49 |
3.3 Recovering Object Models from Code | p. 51 |
3.4 Object Recovery Heuristics | p. 53 |
3.5 Semiautomatic Recovery of Abstract Objects as Candidates for Classes | p. 53 |
3.6 A Plan for Semiautomatic Recovery of Abstract Data Types as Candidates for Classes | p. 54 |
3.7 Specifying Reverse Engineering Heuristics in PQL | p. 55 |
3.8 Specifying Object Recovery Heuristics for C Programs | p. 57 |
3.9 Generation of Recovered Design Views in Extended PQL | p. 59 |
3.10 Conclusions | p. 61 |
References | p. 61 |
4 Model-Based Design for Ease of Maintenance | p. 67 |
Chapter Summary | p. 67 |
4.1 The Role of Models in the Design of Software Tools | p. 67 |
4.2 The Concept of Model-Based Design | p. 68 |
4.3 Model-Based PQL Query Validator in SPA and REA | p. 70 |
4.4 Model-Based Design of the PQL Query Evaluator in SPA and REA | p. 72 |
4.5 Model-Based Design of a Software Project-Support Environment | p. 73 |
4.6 Conclusions | p. 91 |
References | p. 92 |
5 Evolution of Versions and Configuration Management | p. 95 |
Chapter Summary | p. 95 |
5.1 A Working Example: FRS Evolution | p. 96 |
5.2 FRS Component Architecture | p. 97 |
5.3 Evolution of FRS with CVS | p. 99 |
5.4 Reuse of Features Implemented in Past Releases When Building New System Releases | p. 101 |
5.5 Adding New Features to a System Release | p. 104 |
5.6 Selective Propagation of New Features to Past Releases | p. 105 |
5.7 The Visibility of Changes during Evolution | p. 105 |
5.8 Explosion of Variant Features and Feature Dependencies | p. 106 |
5.9 Lessons Learned | p. 107 |
5.10 Related Work | p. 107 |
5.11 Conclusions | p. 108 |
References | p. 109 |
6 Limits of Conventional Techniques | p. 111 |
Chapter Summary | p. 111 |
6.1 Software Complexity Factor | p. 112 |
6.2 Tackling Software Evolution Challenges | p. 114 |
6.3 Conclusions | p. 117 |
References | p. 118 |
Part II Reuse-Based Software Maintenance and Evolution | |
7 The Mixed-Strategy Approach: An Overview | p. 125 |
Chapter Summary | p. 125 |
7.1 Concepts of Reuse-Based Evolution | p. 126 |
7.2 Change-Design versus Design for Change | p. 127 |
7.3 Concepts of the Mixed-Strategy Approach | p. 128 |
7.4 A Preview of the Mixed-Strategy Approach: An Example | p. 131 |
7.5 The Role of Genericity in the Mixed-Strategy Approach | p. 136 |
7.6 Conclusions | p. 138 |
References | p. 138 |
8 Step-by-Step Introduction to XVCL | p. 141 |
Chapter Summary | p. 141 |
8.1 Salient Features of XVCL | p. 142 |
8.2 Flexible Composition of X-Frames | p. 144 |
8.3 Defining Compositions with XVCL | p. 146 |
8.4 Specifying Small-Granularity Changes | p. 153 |
8.5 Changes at Various Abstraction Levels | p. 156 |
8.6 Defining Generic Structures and Generators | p. 157 |
8.7 Capturing Change Traces and Similarity Patterns in Evolutionary Changes | p. 159 |
8.8 Handling Implementation Dependencies among Features | p. 161 |
8.9 Summary of XVCL Rules | p. 162 |
8.10 Conclusions | p. 176 |
References | p. 177 |
9 Software Similarities: Symptoms and Causes | p. 179 |
Chapter Summary | p. 179 |
9.1 The Problem of Software Similarities and Cloning | p. 180 |
9.2 Software Similarities and Reuse | p. 183 |
9.3 Software Similarities and Generic Design | p. 184 |
9.4 Software Similarities, Genericity, and Software Complexity | p. 185 |
9.5 Similarity Patterns in the Buffer Library: An Example | p. 189 |
9.6 Similarity Patterns and Clones in STL | p. 202 |
9.7 Similarity Patterns in Application Programs | p. 203 |
9.8 General Implications | p. 209 |
9.9 Identifying Similarity Patterns and Automated Detection of Clones | p. 210 |
9.10 Conclusions | p. 212 |
References | p. 212 |
10 The Mixed-Strategy Approach to Generic Design | p. 217 |
Chapter Summary | p. 217 |
10.1 Buffer Library in Java/XVCL Mixed-Strategy Representation | p. 218 |
10.2 Evaluation of the Mixed-Strategy Buffer Library Solution | p. 228 |
10.3 Conclusions | p. 234 |
References | p. 236 |
11 Evolution with the Mixed-Strategy Approach | p. 237 |
Chapter Summary | p. 237 |
11.1 Introduction | p. 237 |
11.2 Stages of FRS Evolution | p. 239 |
11.3 An Overview of the FRS X-Framework | p. 240 |
11.4 Development of a New System Release | p. 243 |
11.5 Specifying Changes for FRS[superscript DATE] | p. 244 |
11.6 Specifying Changes for FRS[superscript USER] and FRS[superscript DATE, USER] | p. 246 |
11.7 Specifying Changes for FRS[superscript DATE, USER, PREF] | p. 251 |
11.8 Specifying Changes for FRS[superscript DATE, USER, PAY] | p. 252 |
11.9 Specifying Changes for FRS[superscript DATE, USER, PREF, PAY] | p. 255 |
11.10 Specifying Changes for FRS[superscript DATE, USER, PAY, BR] | p. 255 |
11.11 Specifying Changes for FRS[superscript DATE, USER, PAY, BR, BRD] | p. 257 |
11.12 Specifying Changes for FRS[superscript USER, BR] | p. 257 |
11.13 Specifying Changes for FRS[superscript USER-PD, BR] | p. 258 |
11.14 Conclusions | p. 258 |
12 Scaling Up the Mixed-Strategy Approach | p. 261 |
Chapter Summary | p. 261 |
12.1 Introduction | p. 261 |
12.2 Modeling Features Arising during Evolution | p. 262 |
12.3 A Mixed-Strategy Evolution Support Environment (MESE) | p. 271 |
12.4 An FRS Architecture with Connectors | p. 273 |
12.5 Generic Connectors in the FRS X-Framework | p. 273 |
12.6 Comments on X-Framework Organization Principles | p. 275 |
12.7 An Overview of the X-Framework Customization Process | p. 278 |
12.8 Customization and Assembly Passes over an X-Framework | p. 280 |
12.9 Using the Customization Decision Tree (CDT) | p. 282 |
12.10 Using MESE to Customize and Evolve the FRS X-Framework: An Example | p. 282 |
12.11 Assembly Pass | p. 289 |
12.12 Related Work on Product Line Research | p. 291 |
12.13 Conclusions | p. 291 |
References | p. 292 |
13 The Mixed-Strategy Approach in Other Projects | p. 295 |
Chapter Summary | p. 295 |
13.1 STL in C++/XVCL | p. 296 |
13.2 DEMS in C#/XVCL | p. 296 |
13.3 Web Portal Product Line in ASP/XVCL | p. 298 |
13.4 CAP-WP in J2EE/XVCL | p. 301 |
13.5 Role-Playing Games (RPG) for Mobile Phones | p. 302 |
13.6 Conclusions | p. 304 |
References | p. 305 |
14 Other Techniques Related to XVCL | p. 307 |
Chapter Summary | p. 307 |
14.1 Frame Technology | p. 307 |
14.2 Conventional Techniques | p. 308 |
14.3 Generation Techniques | p. 311 |
14.4 Separation of Concerns and Its Relation to Generic Design | p. 312 |
14.5 Conclusions | p. 316 |
References | p. 316 |
15 Evaluation of the Mixed-Strategy Approach | p. 319 |
Chapter Summary | p. 319 |
15.1 Summary of the Mixed-Strategy Approach | p. 319 |
15.2 The Mixed-Strategy Process | p. 320 |
15.3 Trade-Offs Involved in Applying the Mixed-Strategy Approach | p. 322 |
15.4 XVCL Workbench | p. 326 |
References | p. 326 |
16 Conclusions | p. 329 |
Appendix A Summary of PQL Grammar Rules | p. 331 |
Appendix B Program Design Models for Cobol85 | p. 333 |
Appendix C XVCL Specifications - A Reference Manual | p. 339 |
Index | p. 387 |