Application Software Reengineering
Book information
Description
Cover Application Software Reengineering Copyright Contents Foreword Preface About the Authors Chapter 1 Software Evolution 1.0 Introduction to Software Evolution 1.1 Evolution Models and Theories 1.1.1 Historical Background 1.2 Empirical Studies of Software Evolution 1.3 Studies of the Laws of Software Evolution 1.4 Other Empirical Studies of Software Evolution Keywords Exercises Chapter 2 Software Evolution Process 2.0 The Software Evolution Process 2.1 Program Types 2.1.1 S-type Programs ("Specifiable") 2.1.2 E-type Programs ("Embedded") 2.1.3 P-type Programs ("Problem-solving") 2.2 E-type and S-type Program Classification 2.3 The Laws of Software Evolution 2.4 Practical Implications of the Laws 2.4.1 First Law: Continuing Change: E-type Systems must be Regularly Adapted else they Become Progressively Less Satisfactory in Use 2.4.2 Second Law: Growing Complexity: As an E-type System is Evolved its Complexity Increases Unless Work is Done to Maintain or Reduce it 2.4.3 Third Law: Self-regulation – Global E-type System Evolution Processes are Self-regulating 2.4.4 Fourth Law: Conservation of Organizational Stability – Unless Feedback Mechanisms are Appropriately Adjusted, Average Effective Global Activity Rate in an Evolving E-type System Tends to Remain Constant Over Product Lifetime 2.4.5 Fifth Law: Conservation of Familiarity – In General, the Incremental Growth and Long-term Growth Rate of E-type Systems Tend to Decline 2.4.6 Sixth Law: Continuing Growth –The Functional Capability of E-type Systems Must be Continually Increased to Maintain User Satisfaction Over the System Lifetime 2.4.7 Seventh Law: Declining Quality – The Quality of E-type Systems will Appear to be Declining Unless they are Rigorously Adapted, as Required, to take into Account Changes in the Operational Environment 2.4.8 Eighth Law: Feedback System – E-type Evolution Processes are Multi-level, Multi-loop, Multi-agent Feedback Systems 2.4.9 The FEAST Hypothesis – To Achieve Major Process Improvement of E-type Processes Other than the most Primitive, their Global Dynamics Must be Taken into Account 2.4.10 The Uncertainty Principle – The Real World Outcome of any E-type Software Execution is Inherently Uncertain with the Precise Area of Uncertainty also not Knowable 2.5 Evolutionary Patterns in Open Source Software 2.6 Types of Entities for Studying F/OSS Evolution 2.6.1 F/OSS Releases 2.6.2 F/OSS Systems 2.6.3 F/OSS Applications 2.6.4 F/OSS Process 2.6.5 Models of F/OSS Process Keywords Exercises Chapter 3 Patterns in Open Software Evolution Studies 3.0 Patterns in Open Source Software Evolution Studies 3.1 Software Models 3.1.1 Top-down and Bottom-up Software Evolution 3.1.2 The Need for a Dual Approach 3.1.3 Using the Requirements as a Model 3.2 Requirement-driven Software Evolution 3.3 Conclusions 3.4 The Future of Software Evolution Keywords Exercises Chapter 4 Taxonomy of Software Evolution 4.0 Taxonomy of Software Evolution 4.0.1 Introduction 4.1 Dimensions of Software Evolution (Taxonomy) 4.1.1 Temporal Properties (When) 4.1.2 Object of Change (Where) 4.1.3 System Properties (What) 4.1.4 Change Support (How) 4.2 Dimensions as Characterizing Factors 4.3 Dimensions as Influencing Factors 4.4 Models for Software Evolution 4.4.1 Introduction 4.4.2 The Staged Model Keywords Exercises Chapter 5 Software Evolution in Software Design and Software Evaluation Techniques 5.0 Software Evolution in Software Design and Software Evaluation Techniques 5.0.1 The Unified Process 5.0.2 Software Architecture and Synthesis Process 5.0.3 Scenario-based Evaluation Techniques 5.0.4 Design Pattern and Styles 5.1 Challenges in Software Evolution 5.1.1 Introduction 5.2 Classification of Challenges 5.3 Enumeration of Challenges 5.3.1 Preserving and Improving Software Quality 5.3.2 A Common Software Evolution Platform 5.3.3 Supporting Model Evolution 5.3.4 Supporting Co-evolution 5.3.5 Formal Support for Evolution 5.3.6 Evolution as a Language Construct 5.3.7 Support for Multilanguage Systems 5.3.8 Integrating Change in the Software Lifecycle 5.3.9 Increasing Managerial Awareness 5.3.10 Need for Better Versioning Systems 5.3.11 Integrating Data from Various Sources 5.3.12 Analysing Huge Amounts of Data 5.3.13 Empirical Research 5.3.14 Need for Improved Predictive Models 5.3.15 Evolution Benchmark 5.3.16 Teaching Software Evolution 5.3.17 A Theory of Software Evolution 5.3.18 Postdeployment Run-time Evolution Keywords Exercises Chapter 6 The Software Maintenance Process 6.0 The Software Maintenance Process 6.1 Software Redocumentation 6.2 Software Renovation 6.3 Technologies and Architectures 6.4 Measurable Benefits Keywords Exercises Chapter 7 Program Comprehension 7.0 Introduction 7.1 Concepts and Terminology 7.2 Theories of Program Comprehension 7.2.1 Cognitive Models 7.2.2 Knowledge Base 7.2.3 Mental Model 7.2.4 Assimilation and Knowledge Acquisition 7.2.5 Top-down Comprehension 7.2.6 Bottom-up Comprehension 7.3 Opportunistic and Systematic Strategies 7.4 Impact of Program Characteristics 7.5 Influence of Individual Programmer Differences 7.6 Effects of Task Variability in Program Comprehension 7.7 Discussion: Implications for Tool Research 7.7.1 Key Theories in Program Comprehension 7.7.2 Brooks Cognition Model 7.7.3 Shneiderman and Mayer Cognition Model 7.7.4 Letovsky Cognition Model 7.7.5 Littman et al. Cognition Model 7.7.6 Soloway, Adelson, Ehrlich and Letovsky 7.7.7 Basili and Mills 7.8 Conclusions 7.9 Current Theories and Tool Support 7.10 Cognitive Models and Tool Implications 7.11 Tool Requirements Explicitly Identified 7.12 Discussion 7.12.1 Tool Research 7.12.2 Methods for Evaluating Comprehension Tools 7.12.3 Programmer and Program Trends 7.12.4 Programmer Characteristics 7.12.5 Agile Developers 7.12.6 Program Characteristics 7.12.7 Higher Levels of Abstraction 7.12.8 Dynamically Configured Systems 7.12.9 Aspect-oriented Programming 7.13 Future Methods, Theories and Tools 7.13.1 Theories 7.14 Tools 7.15 Discussion: Back to the Future Keywords Exercises Chapter 8 Legacy Systems 8.0 Legacy Systems 8.0.1 Background 8.1 Legacy System Life Cycle 8.2 Legacy System Assessment 8.2.1 Assessment Activities 8.2.2 Instantiation Keywords Exercises Chapter 9 Reverse Engineering 9.0 Reverse Engineering 9.1 Reverse Engineering Procedure 9.2 Clean-room Reverse-engineering 9.3 Dirty-room/Clean-room Reverse-engineering 9.4 Strictly Clean-room Reverse-engineering 9.5 Reverse Engineering Patterns 9.5.1 Introduction 9.5.2 Background: Object Evolution 9.5.3 Pattern: Prototype a First-pass Design 9.5.4 Pattern: Expand the Initial Prototype 9.5.5 Pattern: Consolidate the Program to Support Evolution and Reuse 9.5.6 Pattern: Evolve Aggregations from Inheritance Hierarchies 9.5.7 Pattern: Create Abstract Superclass Keywords Exercises Chapter 10 Forward Engineering 10.0 Forward Engineering 10.0.1 Introduction 10.1 Re-engineering Approaches 10.1.1 Big Bang Approach 10.1.2 Incremental Approach 10.1.3 Evolutionary Approach 10.2 Organizational Patterns for Moving Forward 10.2.1 Background 10.2.2 Pattern #1: Develop a Shared Platform 10.2.3 Pattern #2: Maintain Reuse Platform Identity 10.2.4 Pattern #3: Integrate Reuse and Tie to the Bottom Line 10.2.5 Pattern #4: Reuse More than Just Code 10.2.6 Pattern #5: Treat Reusable Components like Products 10.2.7 Pattern #6: Merge after Cloning Keywords Exercises Chapter 11 Software Reengineering 11.0 Reengineering 11.0.1 What is Reengineering? 11.1 Reengineering Objectives 11.2 Reengineering Concepts 11.2.1 Software Development Levels of Abstraction 11.3 General Model for Software Reengineering 11.4 Software Reliability Methods 11.4.1 Nature of Faults 11.5 Dealing with Software Reliability 11.5.1 Fault Avoidance 11.5.2 Fault Detection 11.5.3 Fault Tolerance 11.5.4 Input Sequence Workarounds 11.5.5 Development of Operational Profiles 11.5.6 Conclusions 11.6 Reengineering Phases and Tasks 11.6.1 Reengineering Team Formation 11.6.2 Project Feasibility Analysis 11.6.3 Analysis and Planning 11.7 Reengineering Implementation 11.7.1 Testing and Transition 11.7.2 Hybrid Reengineering 11.7.3 Hybrid Reengineering Tracks Keywords Exercises Chapter 12 Code Slicing 12.0 Code Slicing 12.0.1 A Brief History 12.0.2 Introduction 12.1 Static Slicing 12.2 Dynamic Slicing 12.2.1 Is Dynamic Always Better than Static Slicing? 12.3 Conditioned Slicing 12.4 Forward Slicing 12.5 Backward Slicing 12.6 Amorphous Slicing 12.7 Applications of Program Slicing 12.7.1 Debugging 12.7.2 Cohesion Measurement 12.7.3 Functional Cohesion 12.7.4 Program Comprehension 12.7.5 Differencing Techniques 12.7.6 Program Integration 12.7.7 Software Maintenance 12.7.8 Testing 12.7.9 Software Quality Assurance 12.7.10 Reverse Engineering 12.8 Slicing Sequential Programs 12.8.1 Example 1 (Slicing Without Procedures) 12.8.2 Example 2 (Slicing With Procedures) 12.8.3 Slicing Concurrent Programs 12.8.4 Example 3 (Slicing Concurrent Programs) 12.8.5 Example 4 Keywords Exercises Chapter 13 Code Refactoring 13.0 Code Refactoring 13.0.1 Introduction 13.1 Refactoring 13.1.1 Definition of Refactoring 13.2 Dependencies between Refactorings 13.3 Eliminating Analysis with Post Conditions 13.4 Why Developers are Reluctant to Refactor Their Programs? 13.5 Dynamic Refactoring 13.5.1 Using Runtime Information for Refactoring 13.5.2 Definition of Correctness 13.6 Dynamic Analysis vs. Static Analysis 13.7 The Feasibility of Dynamic Refactoring 13.8 Refactoring Tools 13.8.1 The Refactoring Browser 13.8.2 Technical Criteria for a Refactoring Tool 13.8.3 Program Database 13.8.4 Abstract Syntax Trees (ASTs) 13.8.5 Accuracy 13.9 Practical Criteria to Refactoring a Tool 13.9.1 Speed 13.9.2 Undo 13.9.3 Integrated with the Environment 13.9.4 Understanding How and Where to Refactor 13.9.5 Refactoring to Achieve Near-term Benefits 13.9.6 Reducing Refactoring Overhead 13.9.7 Refactoring Safely 13.10 Summary 13.11 Implications Regarding Software Reuse and Technology Transfer Keywords Exercise Abbreviations References Index
Similar books
MySQL® Notes for Professionals book
2018 · PDF
MrExcel 2022: Boosting Excel
2022 · PDF
MrExcel 2022: Boosting Excel
2022 · PDF
Session C11: Ancient Cultural Landscapes in South Europe – their Ecological Setting and Evolution, Session C22: Gardeners from South America, Session S04: Agro-Pastoralism and Early Metallurgy Sessions, Session WS29: The Idea of Enclosure in Recent Iberian Prehistory, Session C88: Rhytmes et causalites des dynamiques de l'anthropisation en Europe entre 6500 ET 500 BC: Hypotheses socio-culturelles et/ou climatiques: Proceedings of the XV UISPP World Congress (Lisbon 4-9 September 2006) / Actes du XV Congrès Mondial (Lisbonne 4-9 Septembre 2006) Vol.36
2010 · PDF
THE BRITISH ARMY IN INDIA: ITS PRESERVATION BY AN APPROPRIATE CLOTHING, HOUSING, LOCATING, RECREATIVE EMPLOYMENT, AND HOPEFUL ENCOURAGEMENT OF THE TROOPS. with AN APPENDIX ON INDIA : THE CLIMATE OP ITS HILLS ; THE DEVELOPMENT OF ITS RESODRCBS, INDUSTRY, AND ARTS ; THE ADMINISTRATION OF JUSTICE ; THE BLACK ACT ; THE PROGRESS OF CHRISTIANITY ; THE TRAFFIC IN OPIUM ; THE VALUE OF INDIA ; PERMANENT CAUSES OF DISAFFECTION, AND OF THE RECENT REBELLION ; THE TRADITIONARY POLICY; MISGOVERNMENT BY NATIVE RULERS ; ANNEXATIONS OF THEIR TERRITORY, ETC.
1858 · PDF
Idries Shah 27 Books Collection : A Perfumed Scorpion, A Veiled Gazelle, Caravan of Dreams, Darkest England, Destination Mecca, Evenings with Idries Shah, Knowing How to Know, Learning How to Learn, Letters and Lectures of Idries Shah, Neglected aspects of Sufi study, Observations, Oriental Magic, Reflections, Seeker after Truth, Special Illumination, Special Problems in the study of Sufi ideas, Sufi thought and action, Tales of the Dervishes, The Dermis Probe, The Elephant in the Dark, The Englishman Handbook, Idries Shah Antology, The Magic Monastery, The natives are restless, wisdom of the Idiots PDF.
2022 · PDF
The travels of Capts. Lewis and Clarke from St. Louis, by way of the Missouri and Columbia rivers, to the Pacific ocean; performed in the years 1804, 1805 & 1806, by order of the government of the United States. Containing delineations of the manners, customs, religion, &c. of the Indians, comp. from various authentic sources, and original documents, and a summary of the Statistical view of the Indian nations, from the official communication of Meriwether Lewis. Illustrated with a map of the country, inhabited by the western tribes of Indians
1809 · PDF
Professional Linux kernel architecture ''Wrox programmer to programmer''--Cover. - ''What you are reading right now is the result of an evolution over more than seven years: After two years of writing, the first edition was published in German by Carl Hanser Verlag in 2003. It then described kernel 2.6.0. The test was used as a basis for the low-level design documentation for the EAL4+ security evaluation of Red Hat Enterprise Linux 5, requiring to update it to kernel 2.6.18 (if the EAL acronym does not mean anything to you, then Wikipedia is once more your friend). Hewlett-Packard sponsored the translation into English and has, thankfully, granted the rights to publish the result. Updates to kernel 2.6.24 were then performed specifically for this book''--P. ix
2008 · PDF