0% found this document useful (0 votes)
15 views9 pages

Summary of Chapter 1

Chapter 1 discusses the distinction between software evolution and maintenance, outlining models and processes for managing software changes. It covers reengineering, legacy systems, impact analysis, refactoring, program comprehension, and software reuse. Chapter 2 categorizes software maintenance activities and concepts, while Chapter 3 focuses on reengineering processes, techniques, and tools for improving existing software systems.

Uploaded by

dagimnega44
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views9 pages

Summary of Chapter 1

Chapter 1 discusses the distinction between software evolution and maintenance, outlining models and processes for managing software changes. It covers reengineering, legacy systems, impact analysis, refactoring, program comprehension, and software reuse. Chapter 2 categorizes software maintenance activities and concepts, while Chapter 3 focuses on reengineering processes, techniques, and tools for improving existing software systems.

Uploaded by

dagimnega44
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Summary of Chapter 1: Software Evolution and

Maintenance
1.1 Evolution vs. Maintenance
 Software Evolution: Continuous adaptation and

enhancement of software over time.


 Software Maintenance: Activities focused on fixing

defects and ensuring software stability post-delivery.


1.2 Software Evolution Models & Processes
 Models include: Staged, Iterative, and Change Mini-

cycle models.
 Standards: IEEE/EIA 1219 and ISO/IEC 14764 define

structured maintenance processes.


 Software Configuration Management (SCM):

Ensures controlled changes in software evolution.


1.3 Reengineering
 Involves reverse engineering (understanding the

system) and forward engineering (modifying it for


improvement).
 Aims to enhance outdated systems for better

efficiency.
1.4 Legacy Systems
 Old systems that are crucial for organizations but

hard to modify.
 Management strategies include freezing,
outsourcing, maintaining, redeveloping, wrapping,
or migrating.
1.5 Impact Analysis
 Evaluates the effect of software changes.

 Methods: Traceability analysis (linking

requirements, design, and code) and dependency


analysis (assessing change impact on program
components).

1.6 Refactoring
 Improves software structure without altering

functionality.
 Benefits: Easier maintenance, reduced complexity,

and enhanced code clarity.


1.7 Program Comprehension
 Understanding software through bottom-up, top-

down, or mixed approaches.


 Uses chunking and cross-referencing to build a

mental model of the system.


1.8 Software Reuse
 Reusing existing software components increases

productivity and reduces costs.


 Types: Data reuse, architectural reuse, design

reuse, and program reuse.


 Benefits: Reliability, risk reduction, faster

development, and better maintainability.


Summary of Chapter 2: Taxonomy of Software
Maintenance & Evolution
2.1 General Idea

 Software maintenance includes both pre-delivery (planning) and


post-delivery (modifications, training, help desk support)
activities.
 ISO/IEC 14764 defines maintenance as a set of cost-effective
activities ensuring long-term software support.

2.1.1 Intention-Based Classification

1. Corrective Maintenance: Fixes defects (e.g., incorrect outputs,


performance failures).
2. Adaptive Maintenance: Adapts software to environmental
changes (e.g., new hardware, system migration).
3. Perfective Maintenance: Improves software efficiency, usability,
and maintainability.
4. Preventive Maintenance: Proactively reduces future failures (e.g.,
software rejuvenation to prevent crashes).

2.1.2 Activity-Based Classification

 Corrections: Fix defects and bugs.


 Enhancements: Modify system behavior, add new features, or
improve implementation.

2.1.3 Evidence-Based Classification


 Groups maintenance activities into four categories based on
changes in:
o Entire software system

o Documentation

o Program code properties

o User-experienced functionality

2.2 Categories of Maintenance Concepts

 Maintained Product: Includes software artifacts, upgrades, and


baseline versions.
 Maintenance Types: Includes investigation, modification,
management, and quality assurance.
 Maintenance Organization Process: Manages change requests at
individual and organizational levels.
 Peopleware: Human factors such as team roles, client
interactions, and training impact maintenance.

2.3 Evolution of Software Systems

 SPE Taxonomy (Specified, Problem, Evolving): Classifies software


based on how it evolves.
 Laws of Software Evolution (Lehman’s Laws):
o Software must continuously change or become obsolete.

o Complexity increases unless actively managed.

o Evolution follows self-regulating patterns.

2.4 Maintenance of COTS-Based Systems

 Challenges: Different team structures, external dependencies, and


integration issues.
 Best Practices: Design modular components for easier updates
and maintenance
Summary of Chapter 3: Reengineering
3.1 General Idea

 Reengineering is the examination, analysis, and restructuring of


an existing software system to improve its functionality,
maintainability, and quality.
 Key objectives include:
o Enhancing maintainability

o Migrating to new technology

o Improving system quality

o Preparing for functional enhancements

3.2 Reengineering Concepts

 Abstraction and Refinement:


o Abstraction hides details to simplify understanding.

o Refinement adds details to create a complete system.

 Forward Engineering: Developing a new system from high-level


abstractions.
 Reverse Engineering: Analyzing a system to create a higher-level
representation.

3.3 A General Model for Software Reengineering

 The process involves Reverse Engineering → Redesign → Forward


Engineering.
 The Horseshoe Model represents this transformation process.
 Rehosting is modifying source code without changing its features.
3.4 Reengineering Process

 Types of changes:
o Recode: Modify implementation without changing design.

o Redesign: Change software architecture and data models.

o Respecify: Modify requirements or their scope.

o Rethink: Change fundamental concepts of the system.

 Reengineering Approaches:

1. Big Bang: Entire system is replaced at once.


2. Incremental: Gradual updates with multiple releases.
3. Partial: Only specific components are reengineered.
4. Iterative: Continuous small updates while keeping the
system operational.
5. Evolutionary: Grouping and reengineering similar functional
components.

3.5 Code Reverse Engineering

 Reverse Engineering Objectives:


o Recover lost information.

o Detect side effects.

o Improve software comprehension.

 Techniques Used:
o Lexical & Syntactic Analysis, Control/Data Flow Analysis,

Program Slicing, Visualization, Metrics.

3.6 Decompilation vs. Reverse Engineering

 Decompilation: Converts executable binaries into high-level code.


 Reverse Engineering: Extracts system structure and logic, often
without recovering full source code.

3.7 Data Reverse Engineering (DRE)

 Recovers and restructures valuable data assets.


 Used for database analysis and schema recovery.

3.8 Reverse Engineering Tools

 Popular Tools:
o IDA Pro: Disassembler & Debugger

o CodeCrawler: Software visualization

o McCabe IQ: Risk analysis & error detection

o Rigi & PBS: Software comprehension

o Reengineering Assistant (RA): High-level abstraction

representation

You might also like