Зарегистрироваться
Восстановить пароль
FAQ по входу

Alam A., Padenga T. Application Software Reengineering

  • Файл формата pdf
  • размером 2,05 МБ
  • Добавлен пользователем
  • Описание отредактировано
Alam A., Padenga T. Application Software Reengineering
New York: Pearson, 2010. — 256 p.
Application Software Reengineering
Copyright
Foreword
About the Authors
Chapter Software Evolution
Introduction to Software Evolution
Evolution Models and Theories
Historical Background
Empirical Studies of Software Evolution
Studies of the Laws of Software Evolution
Other Empirical Studies of Software Evolution
Keywords
Exercises
Chapter Software Evolution Process
The Software Evolution Process
Program Types
S-type Programs ("Specifiable")
E-type Programs ("Embedded")
P-type Programs ("Problem-solving")
E-type and S-type Program Classification
The Laws of Software Evolution
Practical Implications of the Laws
First Law: Continuing Change: E-type Systems must be Regularly Adapted else they Become Progressively Less Satisfactory in Use
Second Law: Growing Complexity: As an E-type System is Evolved its Complexity Increases Unless Work is Done to Maintain or Reduce it
Third Law: Self-regulation – Global E-type System Evolution Processes are Self-regulating
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
Fifth Law: Conservation of Familiarity – In General the Incremental Growth and Long-term Growth Rate of E-type Systems Tend to Decline
Sixth Law: Continuing Growth –The Functional Capability of E-type Systems Must be Continually Increased to Maintain User Satisfaction Over the System Lifetime
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
Eighth Law: Feedback System – E-type Evolution Processes are Multi-level Multi-loop Multi-agent Feedback Systems
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
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
Evolutionary Patterns in Open Source Software
Types of Entities for Studying F/OSS Evolution
F/OSS Releases
F/OSS Systems
F/OSS Applications
F/OSS Process
Models of F/OSS Process
Keywords
Exercises
Chapter Patterns in Open Software Evolution Studies
Patterns in Open Source Software Evolution Studies
Software Models
Top-down and Bottom-up Software Evolution
The Need for a Dual Approach
Using the Requirements as a Model
Requirement-driven Software Evolution
Conclusions
The Future of Software Evolution
Keywords
Exercises
Chapter Taxonomy of Software Evolution
Taxonomy of Software Evolution
Dimensions of Software Evolution (Taxonomy)
Temporal Properties (When)
Object of Change (Where)
System Properties (What)
Change Support (How)
Dimensions as Characterizing Factors
Dimensions as Influencing Factors
Models for Software Evolution
The Staged Model
Keywords
Exercises
Chapter Software Evolution in Software Design and Software Evaluation Techniques
Software Evolution in Software Design and Software Evaluation Techniques
The Unified Process
Software Architecture and Synthesis Process
Scenario-based Evaluation Techniques
Design Pattern and Styles
Challenges in Software Evolution
Classification of Challenges
Enumeration of Challenges
Preserving and Improving Software Quality
A Common Software Evolution Platform
Supporting Model Evolution
Supporting Co-evolution
Formal Support for Evolution
Evolution as a Language Construct
Support for Multilanguage Systems
Integrating Change in the Software Lifecycle
Increasing Managerial Awareness
Need for Better Versioning Systems
Integrating Data from Various Sources
Analysing Huge Amounts of Data
Empirical Research
Need for Improved Predictive Models
Evolution Benchmark
Teaching Software Evolution
A Theory of Software Evolution
Postdeployment Run-time Evolution
Keywords
Exercises
Chapter The Software Maintenance Process
The Software Maintenance Process
Software Redocumentation
Software Renovation
Technologies and Architectures
Measurable Benefits
Keywords
Exercises
Chapter Program Comprehension
Concepts and Terminology
Theories of Program Comprehension
Cognitive Models
Knowledge Base
Mental Model
Assimilation and Knowledge Acquisition
Top-down Comprehension
Bottom-up Comprehension
Opportunistic and Systematic Strategies
Impact of Program Characteristics
Influence of Individual Programmer Differences
Effects of Task Variability in Program Comprehension
Discussion: Implications for Tool Research
Key Theories in Program Comprehension
Brooks Cognition Model
Shneiderman and Mayer Cognition Model
Letovsky Cognition Model
Littman et al Cognition Model
Soloway Adelson Ehrlich and Letovsky
Basili and Mills
Conclusions
Current Theories and Tool Support
Cognitive Models and Tool Implications
Tool Requirements Explicitly Identified
Discussion
Tool Research
Methods for Evaluating Comprehension Tools
Programmer and Program Trends
Programmer Characteristics
Agile Developers
Program Characteristics
Higher Levels of Abstraction
Dynamically Configured Systems
Aspect-oriented Programming
Future Methods Theories and Tools
Theories
Tools
Discussion: Back to the Future
Keywords
Exercises
Chapter Legacy Systems
Legacy Systems
Background
Legacy System Life Cycle
Legacy System Assessment
Assessment Activities
Instantiation
Keywords
Exercises
Chapter Reverse Engineering
Reverse Engineering
Reverse Engineering Procedure
Clean-room Reverse-engineering
Dirty-room/Clean-room Reverse-engineering
Strictly Clean-room Reverse-engineering
Reverse Engineering Patterns
Background: Object Evolution
Pattern: Prototype a First-pass Design
Pattern: Expand the Initial Prototype
Pattern: Consolidate the Program to Support Evolution and Reuse
Pattern: Evolve Aggregations from Inheritance Hierarchies
Pattern: Create Abstract Superclass
Keywords
Exercises
Chapter Forward Engineering
Forward Engineering
Re-engineering Approaches
Big Bang Approach
Incremental Approach
Evolutionary Approach
Organizational Patterns for Moving Forward
Background
Pattern #: Develop a Shared Platform
Pattern #: Maintain Reuse Platform Identity
Pattern #: Integrate Reuse and Tie to the Bottom Line
Pattern #: Reuse More than Just Code
Pattern #: Treat Reusable Components like Products
Pattern #: Merge after Cloning
Keywords
Exercises
Chapter Software Reengineering
Reengineering
What is Reengineering?
Reengineering Objectives
Reengineering Concepts
Software Development Levels of Abstraction
General Model for Software Reengineering
Software Reliability Methods
Nature of Faults
Dealing with Software Reliability
Fault Avoidance
Fault Detection
Fault Tolerance
Input Sequence Workarounds
Development of Operational Profiles
Conclusions
Reengineering Phases and Tasks
Reengineering Team Formation
Project Feasibility Analysis
Analysis and Planning
Reengineering Implementation
Testing and Transition
Hybrid Reengineering
Hybrid Reengineering Tracks
Keywords
Exercises
Chapter Code Slicing
Code Slicing
A Brief History
Static Slicing
Dynamic Slicing
Is Dynamic Always Better than Static Slicing?
Conditioned Slicing
Forward Slicing
Backward Slicing
Amorphous Slicing
Applications of Program Slicing
Debugging
Cohesion Measurement
Functional Cohesion
Program Comprehension
Differencing Techniques
Program Integration
Software Maintenance
Testing
Software Quality Assurance
Reverse Engineering
Slicing Sequential Programs
Example (Slicing Without Procedures)
Example (Slicing With Procedures)
Slicing Concurrent Programs
Example (Slicing Concurrent Programs)
Example
Keywords
Exercises
Chapter Code Refactoring
Code Refactoring
Refactoring
Definition of Refactoring
Dependencies between Refactorings
Eliminating Analysis with Post Conditions
Why Developers are Reluctant to Refactor Their Programs?
Dynamic Refactoring
Using Runtime Information for Refactoring
Definition of Correctness
Dynamic Analysis vs Static Analysis
The Feasibility of Dynamic Refactoring
Refactoring Tools
The Refactoring Browser
Technical Criteria for a Refactoring Tool
Program Database
Abstract Syntax Trees (ASTs)
Accuracy
Practical Criteria to Refactoring a Tool
Speed
Undo
Integrated with the Environment
Understanding How and Where to Refactor
Refactoring to Achieve Near-term Benefits
Reducing Refactoring Overhead
Refactoring Safely
Implications Regarding Software Reuse and Technology Transfer
Keywords
Exercise
Abbreviations
  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.
  • Регистрация