Application Software Reengineering.
Material type:
- 9788131742143
- 23rd 005.1
Item type | Current library | Call number | Materials specified | Status | Barcode | |
---|---|---|---|---|---|---|
![]() |
Digital Library Digital Library | 005.1 ALA-A | Online access | Available | E0153 |
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.
The book is about reorganizing and modifying existing software systems to make them more maintainable and user friendly. It also powerfully dwells on the aspects of general Application Software Reengineering across various fields.
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2018. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.