Podcast
Questions and Answers
What defines a variable in an assignment statement?
What defines a variable in an assignment statement?
- It appears only on the right side of the statement.
- It is referenced in other variables.
- It is mentioned in comments within the code.
- It appears on the left side of the assignment statement. (correct)
What is the purpose of data flow analysis?
What is the purpose of data flow analysis?
- Identifying potential syntax errors.
- Finding variables that are never used. (correct)
- Identifying control structures in the program.
- Determining the execution sequence of statements.
What does a backward slice provide in program slicing?
What does a backward slice provide in program slicing?
- All instructions that can be executed after a given point.
- Components directly dependent on a variable at a point.
- Instructions and predicates affecting a variable's value at a point. (correct)
- Components that might output values for a given variable.
Which of the following statements about forward slicing is true?
Which of the following statements about forward slicing is true?
What question does control flow analysis fail to answer?
What question does control flow analysis fail to answer?
What is the primary objective of the renovation project mentioned?
What is the primary objective of the renovation project mentioned?
Which strategy is NOT mentioned as a replacement strategy for recording?
Which strategy is NOT mentioned as a replacement strategy for recording?
What is the main purpose of the redocumentation phase?
What is the main purpose of the redocumentation phase?
During target system testing, what is primarily evaluated?
During target system testing, what is primarily evaluated?
What testing strategy is applied to ensure the new system meets the same requirements as the existing system?
What testing strategy is applied to ensure the new system meets the same requirements as the existing system?
What should be established at the beginning of a project for acceptance testing?
What should be established at the beginning of a project for acceptance testing?
Which of the following tasks is NOT part of the redocumentation phase?
Which of the following tasks is NOT part of the redocumentation phase?
What is the role of the target system test plan during reengineering?
What is the role of the target system test plan during reengineering?
What are the four kinds of elements in the Source Code Reengineering Reference Model?
What are the four kinds of elements in the Source Code Reengineering Reference Model?
Which phase in the Phase Reengineering Model focuses on the characteristics of the new system to be produced?
Which phase in the Phase Reengineering Model focuses on the characteristics of the new system to be produced?
What is the primary focus of the renovation phase in the software reengineering process?
What is the primary focus of the renovation phase in the software reengineering process?
What does data reengineering refer to in the renovation phase?
What does data reengineering refer to in the renovation phase?
Which of the following is NOT a technical issue addressed in the analysis phase?
Which of the following is NOT a technical issue addressed in the analysis phase?
In the context of the Phase Reengineering Model, what is typically involved in the target system testing phase?
In the context of the Phase Reengineering Model, what is typically involved in the target system testing phase?
What role does metrication play in the Source Code Reengineering Reference Model?
What role does metrication play in the Source Code Reengineering Reference Model?
Which of the following is a main aspect considered during the renovation phase?
Which of the following is a main aspect considered during the renovation phase?
What is the primary purpose of Data Reverse Engineering (DRE)?
What is the primary purpose of Data Reverse Engineering (DRE)?
What are the two main phases of the reverse engineering process?
What are the two main phases of the reverse engineering process?
Which phase of the forward design process gathers and formalizes user requirements?
Which phase of the forward design process gathers and formalizes user requirements?
What is the primary function of reverse engineering tools?
What is the primary function of reverse engineering tools?
What does the logical schema describe in the database forward design process?
What does the logical schema describe in the database forward design process?
Why is human intervention necessary in reverse engineering projects?
Why is human intervention necessary in reverse engineering projects?
How does the Data Reverse Engineering (DRE) process benefit software assessment?
How does the Data Reverse Engineering (DRE) process benefit software assessment?
Which component is used to produce alternative views of the system in reverse engineering?
Which component is used to produce alternative views of the system in reverse engineering?
What is the significance of the physical schema in database engineering?
What is the significance of the physical schema in database engineering?
What distinguishes data structure extraction from data structure conceptualization?
What distinguishes data structure extraction from data structure conceptualization?
Which of the following is NOT a purpose of Data Reverse Engineering (DRE)?
Which of the following is NOT a purpose of Data Reverse Engineering (DRE)?
What defines the conceptual schema in the context of database reverse engineering?
What defines the conceptual schema in the context of database reverse engineering?
What is the main focus of database reverse engineering (DBRE)?
What is the main focus of database reverse engineering (DBRE)?
What does Depth of Inheritance Tree (DIT) measure?
What does Depth of Inheritance Tree (DIT) measure?
Which is a function of a decompiler?
Which is a function of a decompiler?
What is a major limitation of decompilation?
What is a major limitation of decompilation?
Which of the following is NOT a recommended application of decompilation?
Which of the following is NOT a recommended application of decompilation?
What is the role of a disassembler?
What is the role of a disassembler?
What must be examined from a legal perspective when using decompilers?
What must be examined from a legal perspective when using decompilers?
Which statement accurately describes traditional reverse engineering?
Which statement accurately describes traditional reverse engineering?
In the context of software engineering, what is NOT a characteristic of decompilation?
In the context of software engineering, what is NOT a characteristic of decompilation?
Flashcards
String
String
A sequence of characters, typically enclosed in quotation marks.
Data Flow Analysis
Data Flow Analysis
The process of analyzing program data flow to identify anomalies and understand how data is used and manipulated.
Backward Slice
Backward Slice
A portion of a program containing instructions and predicates that influence the value of a variable at a specific point in the code.
Forward Slice
Forward Slice
Signup and view all the flashcards
Control Flow Analysis
Control Flow Analysis
Signup and view all the flashcards
Software Reengineering
Software Reengineering
Signup and view all the flashcards
Source Code Reengineering Reference Model
Source Code Reengineering Reference Model
Signup and view all the flashcards
Phase Reengineering Model
Phase Reengineering Model
Signup and view all the flashcards
Analysis & Planning
Analysis & Planning
Signup and view all the flashcards
Renovation
Renovation
Signup and view all the flashcards
Representation of the System
Representation of the System
Signup and view all the flashcards
Representation of External Data
Representation of External Data
Signup and view all the flashcards
System Testing
System Testing
Signup and view all the flashcards
Reverse Engineering
Reverse Engineering
Signup and view all the flashcards
Source-to-Source Translation
Source-to-Source Translation
Signup and view all the flashcards
Target System Testing
Target System Testing
Signup and view all the flashcards
Redocumentation
Redocumentation
Signup and view all the flashcards
Acceptance and System Transition
Acceptance and System Transition
Signup and view all the flashcards
System Deployment
System Deployment
Signup and view all the flashcards
Data Structure Extraction
Data Structure Extraction
Signup and view all the flashcards
Data Structure Conceptualization
Data Structure Conceptualization
Signup and view all the flashcards
Code Reverse Engineering
Code Reverse Engineering
Signup and view all the flashcards
Data Reverse Engineering
Data Reverse Engineering
Signup and view all the flashcards
Data Reverse Engineering (DRE)
Data Reverse Engineering (DRE)
Signup and view all the flashcards
What is the purpose of Data Reverse Engineering (DRE)?
What is the purpose of Data Reverse Engineering (DRE)?
Signup and view all the flashcards
Database Reverse Engineering (DBRE)
Database Reverse Engineering (DBRE)
Signup and view all the flashcards
Conceptual Schema
Conceptual Schema
Signup and view all the flashcards
Logical Schema
Logical Schema
Signup and view all the flashcards
Physical Schema
Physical Schema
Signup and view all the flashcards
Forward Design Process of a Database
Forward Design Process of a Database
Signup and view all the flashcards
Reverse Engineering of a Database
Reverse Engineering of a Database
Signup and view all the flashcards
Decompilation
Decompilation
Signup and view all the flashcards
Decompiler
Decompiler
Signup and view all the flashcards
Disassembler
Disassembler
Signup and view all the flashcards
Reverse Engineering from Source Code
Reverse Engineering from Source Code
Signup and view all the flashcards
Compilation
Compilation
Signup and view all the flashcards
Recovering Lost Source Code
Recovering Lost Source Code
Signup and view all the flashcards
Error Correction
Error Correction
Signup and view all the flashcards
Study Notes
Software Evolution and Maintenance: Reengineering
- Reengineering is a process of improving a software system without altering its external behavior.
- Source code reengineering has several stages
- A source code reengineering reference model includes: function, documentation, repository database, and metrication.
- A phase reengineering model involves five stages: analysis and planning, renovation, target system testing, redocumentation, and acceptance testing and system transition
- Analysis and planning addresses three technical and one economic issue. The first addresses the current state and properties of the system. The second identifies the needed changes. The third details the characteristics of the new system.
- Renovation modifies an existing system into a new system
- Two main aspects are considered in the Renovation phase: (i) system representation (source code, design model, requirements specification) and (ii) external data representation (databases and data files).
- There are multiple strategies for renovation such as source-to-source translation, high-level design reimplementation, and a mix of compilation/decompilation.
- Target system testing involves detecting faults introduced during reengineering, using the target system test plan on the target system. Same testing techniques as those for software development are used.
- Redocumentation rewrites, updates, or replaces documents to reflect the target system. Major tasks are analyzing the new source code and creating documentation.
- Acceptance and system transition evaluates the reengineered system through acceptance testing. Acceptance criteria are established at the beginning of the project. If the system passes, preparation for transition to the new system begins; otherwise, faults are fixed to pass tests.
- The old system is then taken offline.
- Techniques involved in Reverse Engineering: lexical analysis, syntactical analysis, control flow analysis, data flow analysis, program slicing, and visualization.
- Lexical Analysis decomposes a source code's character sequence into lexical units; typically uses a mathematical notation called regular expressions. Tools include LEX, FLEX (Fast Lex).
- Syntactic analysis is done by a parser. YACC is a commonly used tool. Two types of representations are used (parse tree, abstract syntax tree). ASTs contain only program details relevant to the program logic; removing extraneous details from a parse tree produces the AST structure for an easier analysis.
- Control Flow Analysis (CFA) shows the statement execution order within a subprogram (intraprocedural), and the calling relationships between subprograms (interprocedural).
- A control flow graph (CFG) uses basic blocks (maximal sequence of program statements) to represent the possible flow.
- Data Flow Analysis (DFA) tracks data flow throughout a program. It identifies code that never executes, and statements that may need fixing based on data flows
- Program slicing isolates program portions that contribute to a specific variable's value at a chosen point based on given criteria. Backward program slicing finds the parts of the program affecting the value of a variable while forward slicing locates parts of the program affected by a particular variable/expression.
- Visualization uses visual representations for better understanding.
- Program Metrics include: Weighted Methods per Class (WMC) for number of methods implemented; Lack of Cohesion in Methods (LCOM) for average percentage of attribute usage by methods; Coupling between Object Class (CBO) for counting coupled classes; Depth of Inheritance Tree (DIT), and Number of Children (NOC).
- Decompilation is a process that takes an executable and tries to generate source code. It is not always possible and the output may not be identical to original source and/or the same language. Disassembling is converting executable to assembly language.
- Data Reverse Engineering (DRE) is analyzing existing data to design a new system.
- Reverse engineering tools aid in analyzing, storing results, and visualizing components of a system.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.