Podcast
Questions and Answers
What is the primary goal of software reengineering?
What is the primary goal of software reengineering?
- To develop new programming languages.
- To solely improve user interface design.
- To understand and restructure existing software systems. (correct)
- To create new software from scratch.
Which of the following is NOT one of the general objectives of software reengineering?
Which of the following is NOT one of the general objectives of software reengineering?
- Migrating to a new technology.
- Improving maintainability.
- Enhancing user engagement. (correct)
- Preparing for functional enhancement.
What are the key concepts used in both software development and reengineering?
What are the key concepts used in both software development and reengineering?
- Modification and Integration.
- Analysis and Design.
- Abstraction and Refinement. (correct)
- Documentation and Testing.
Which type of analysis focuses on the structure of code during reverse engineering?
Which type of analysis focuses on the structure of code during reverse engineering?
What does the term 'decompilation' refer to when compared to reverse engineering?
What does the term 'decompilation' refer to when compared to reverse engineering?
Which analysis technique is used to focus on the data flow within a program?
Which analysis technique is used to focus on the data flow within a program?
What is one of the main outcomes expected from improving the quality of a software system during reengineering?
What is one of the main outcomes expected from improving the quality of a software system during reengineering?
What is a pivotal part of the reengineering process that involves examining existing software artifacts?
What is a pivotal part of the reengineering process that involves examining existing software artifacts?
What does the principle of alteration entail in the context of software reengineering?
What does the principle of alteration entail in the context of software reengineering?
Which activity does NOT form part of the general model for software reengineering?
Which activity does NOT form part of the general model for software reengineering?
In the context of software reengineering, what do the arrows represent?
In the context of software reengineering, what do the arrows represent?
What is the primary output of the software reengineering process?
What is the primary output of the software reengineering process?
What does refinement in the reengineering process indicate?
What does refinement in the reengineering process indicate?
How can existing code be transformed in software reengineering?
How can existing code be transformed in software reengineering?
Which principle is NOT foundational to the reengineering process?
Which principle is NOT foundational to the reengineering process?
What type of arrow represents abstraction in the reengineering principles?
What type of arrow represents abstraction in the reengineering principles?
What is the primary purpose of abstraction in software maintenance?
What is the primary purpose of abstraction in software maintenance?
Which of the following best describes the principle of refinement?
Which of the following best describes the principle of refinement?
What process is described as the downward movement from high-level abstraction to low-level implementation?
What process is described as the downward movement from high-level abstraction to low-level implementation?
What constitutes reverse engineering in software development?
What constitutes reverse engineering in software development?
Which of the following levels of abstraction comes first in software development?
Which of the following levels of abstraction comes first in software development?
What is the outcome of applying abstraction correctly in software maintenance?
What is the outcome of applying abstraction correctly in software maintenance?
What does not represent a phase in the abstraction and refinement model of software development?
What does not represent a phase in the abstraction and refinement model of software development?
In the context of software evolution, what step immediately follows analyzing components during reverse engineering?
In the context of software evolution, what step immediately follows analyzing components during reverse engineering?
What does the term 'respecify' encompass in software evolution?
What does the term 'respecify' encompass in software evolution?
In what manner does rethinking a system usually manifest?
In what manner does rethinking a system usually manifest?
Which statement best describes the rewrite strategy in software reengineering?
Which statement best describes the rewrite strategy in software reengineering?
What is a key characteristic of the rework strategy?
What is a key characteristic of the rework strategy?
What is the initial step in the rework strategy's approach?
What is the initial step in the rework strategy's approach?
When a system is reengineered, what is likely to happen at a fundamental level during rethinking?
When a system is reengineered, what is likely to happen at a fundamental level during rethinking?
Which of the following programming languages can be involved in the rewrite strategy?
Which of the following programming languages can be involved in the rewrite strategy?
What is a primary objective of applying abstraction in the rework strategy?
What is a primary objective of applying abstraction in the rework strategy?
What does the element 'Δ' in the reengineering process represent?
What does the element 'Δ' in the reengineering process represent?
Which of the following activities is NOT part of the reengineering process?
Which of the following activities is NOT part of the reengineering process?
Which type of change involves altering the implementation characteristics at the source code level?
Which type of change involves altering the implementation characteristics at the source code level?
Which of the following is an example of a rephrasing scenario in software reengineering?
Which of the following is an example of a rephrasing scenario in software reengineering?
What characterizes the redesign process in software reengineering?
What characterizes the redesign process in software reengineering?
Which of the following changes implies modifying the business rules of a software system?
Which of the following changes implies modifying the business rules of a software system?
What is the first step in the software reengineering process?
What is the first step in the software reengineering process?
What are the two principles involved in the replace strategy of software reengineering?
What are the two principles involved in the replace strategy of software reengineering?
What is created at a lower level of abstraction during the replace strategy?
What is created at a lower level of abstraction during the replace strategy?
Which of the following best describes a process in the context of software reengineering?
Which of the following best describes a process in the context of software reengineering?
What is a major characteristic of the Big Bang approach to reengineering?
What is a major characteristic of the Big Bang approach to reengineering?
Which process model is mentioned as widely used in software development?
Which process model is mentioned as widely used in software development?
What do process models help to do in the realm of software reengineering?
What do process models help to do in the realm of software reengineering?
Which approach to reengineering involves partial substitution of the operational system?
Which approach to reengineering involves partial substitution of the operational system?
What are the two aspects in which the five reengineering approaches differ?
What are the two aspects in which the five reengineering approaches differ?
Flashcards
Abstraction
Abstraction
Simplifying a complex system by focusing on key information and hiding unnecessary details.
Refinement
Refinement
The opposite of abstraction. Adding more details and complexity to a system.
Forward Engineering
Forward Engineering
A process of moving downward from the highest level of abstraction (concepts) to the lowest (implementation).
Reverse Engineering
Reverse Engineering
Signup and view all the flashcards
Conceptual Level
Conceptual Level
Signup and view all the flashcards
Requirements Level
Requirements Level
Signup and view all the flashcards
Design Level
Design Level
Signup and view all the flashcards
Implementation Level
Implementation Level
Signup and view all the flashcards
Software Reengineering
Software Reengineering
Signup and view all the flashcards
Alterations (∆)
Alterations (∆)
Signup and view all the flashcards
Re-coding
Re-coding
Signup and view all the flashcards
Re-design
Re-design
Signup and view all the flashcards
Functionality Change
Functionality Change
Signup and view all the flashcards
Implementation Technique Change
Implementation Technique Change
Signup and view all the flashcards
Alteration in Reengineering
Alteration in Reengineering
Signup and view all the flashcards
Re-designing
Re-designing
Signup and view all the flashcards
Abstraction in Reengineering
Abstraction in Reengineering
Signup and view all the flashcards
Refinement in Reengineering
Refinement in Reengineering
Signup and view all the flashcards
Respecify
Respecify
Signup and view all the flashcards
Rethink
Rethink
Signup and view all the flashcards
Rewrite Strategy
Rewrite Strategy
Signup and view all the flashcards
Rework Strategy
Rework Strategy
Signup and view all the flashcards
Control-Flow Graph (CFG)
Control-Flow Graph (CFG)
Signup and view all the flashcards
Restructuring Algorithm
Restructuring Algorithm
Signup and view all the flashcards
Translation
Translation
Signup and view all the flashcards
Alteration
Alteration
Signup and view all the flashcards
Replace Strategy
Replace Strategy
Signup and view all the flashcards
Big Bang Approach
Big Bang Approach
Signup and view all the flashcards
Process
Process
Signup and view all the flashcards
Process Models
Process Models
Signup and view all the flashcards
Reengineering Strategies
Reengineering Strategies
Signup and view all the flashcards
Goal of Software Reengineering
Goal of Software Reengineering
Signup and view all the flashcards
Objectives of Software Reengineering
Objectives of Software Reengineering
Signup and view all the flashcards
Abstraction in Software Reengineering
Abstraction in Software Reengineering
Signup and view all the flashcards
Refinement in Software Reengineering
Refinement in Software Reengineering
Signup and view all the flashcards
Study Notes
Software Evolution and Maintenance - Reengineering
- Reengineering is the examination, analysis, and restructuring of an existing software system to reconstitute it in a new form
- The goal of reengineering is to understand the existing system's artifacts (specification, design, implementation, and documentation) and improve functionality and quality attributes
- Software systems are reengineered by focusing on one or more objectives:
- Improving maintainability
- Migrating to a new technology
- Improving quality
- Preparing for functional enhancement
Reengineering Concepts
- Abstraction and Refinement are key concepts in software development and reengineering
- Abstraction reduces complexity by focusing on significant information and hiding irrelevant details
- Refinement is the reverse of abstraction, gradually decreasing the level of abstraction by adding more detail
- Forward engineering: creating a new software by moving from high-level to low-level abstraction (top-down)
- Reverse engineering: determining how a system works by moving from low-level to high level abstraction (bottom-up)
- Analyzing the software to understand components and relationships
- Representing the system at a higher abstraction level, or another form
- Decompiling object code into a higher-level program is an example
- Alteration: Modifying a system representation without changing its level of abstraction. It is non-essential
General Model for Software Reengineering
- Reengineering is a sequence of activities: reverse engineering, re-design, and forward engineering
- It's based on three principles: abstraction, alteration, and refinement
- A diagram (Figure 4.3) illustrates the model
- Shows relationships between tasks/processes in the process.
Types of Change
- Recode: Changing implementation characteristics by re-coding or translating to a different language
- Compilation, decompilation, migration, normalization, optimization, refactoring, and renovation are examples
- Redesign: Changing design characteristics by redsign
- Restructuring the architecture, modifying the data model, or replacing procedures or algorithms.
- Respecify: Changing requirement in form or scope.
- Rethink: Changing the fundamental concepts of a system, as when moving from cellular to smartphone
Software Reengineering Strategies
- Rewrite: transforming an existing operational system into a new one, while keeping the same level of abstraction
- Rework: Applying abstraction, alteration, and refinement to structure the system. Using control flow graphs
- Replace: Changing characteristics of a system by reconstructing at a higher-level of abstraction and generating a lower-level system representation using refinement
Reengineering Process
- An ordered set of activities designed for a specific task is called a process
- Processes are described by 'process models' which describe the relationships among data objects, human roles, activities, and tools
- Five reengineering process models are common:
- Big Bang
- Incremental
- Partial
- Iterative
- Evolutionary.
Code Reverse Engineering
- Reverse engineering is defined as developing specifications for a hardware or software system through orderly examination.
- Six key objectives which help understand the goals and purposes of reverse engineering include generating alternative views, recovering lost information, synthesizing higher levels of abstraction, detecting side effects, facilitating reuse, coping with complexity.
- Six key steps or steps in the reverse engineering process including partioning, describing units and relations, forming input/output, describing internal connections/relations between units, creating system representations / architecture, and creating system structure are used
- A high-level organizational framework that provides goals, models, and tools can aid and streamline the process.
- The Goals phase involves identifying the reasons and information needs, determining abstractions to make, learning of the forward engineering activities and environment, understanding inputs and the processes needed to represent the necessary information.
- The Models phase involves identifying, analyzing, and creating representation models to get abstractions
- Tools in the process are used to extract information from source code and create programs and necessary documents.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Test your knowledge on the key concepts and objectives of software reengineering. This quiz covers various aspects such as analysis techniques, goals, and processes involved in improving software systems. Perfect for students and professionals looking to enhance their understanding of software reengineering.