Software Engineering Reengineering

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

  • 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?

  • 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?

<p>It consists of instructions that depend on the value of a variable. (C)</p> Signup and view all the answers

What question does control flow analysis fail to answer?

<p>Which program statements are affected by a specific assignment statement? (C)</p> Signup and view all the answers

What is the primary objective of the renovation project mentioned?

<p>To re-code the system from Fortran to C (D)</p> Signup and view all the answers

Which strategy is NOT mentioned as a replacement strategy for recording?

<p>Simulation-based migration (B)</p> Signup and view all the answers

What is the main purpose of the redocumentation phase?

<p>To rewrite, update, and replace documentation for the target system (D)</p> Signup and view all the answers

During target system testing, what is primarily evaluated?

<p>Faults introduced during reengineering (C)</p> Signup and view all the answers

What testing strategy is applied to ensure the new system meets the same requirements as the existing system?

<p>Applying existing system-level test cases to both systems (A)</p> Signup and view all the answers

What should be established at the beginning of a project for acceptance testing?

<p>Acceptance criteria (D)</p> Signup and view all the answers

Which of the following tasks is NOT part of the redocumentation phase?

<p>Developing new system features (C)</p> Signup and view all the answers

What is the role of the target system test plan during reengineering?

<p>It ensures that faults are detected in the target system. (C)</p> Signup and view all the answers

What are the four kinds of elements in the Source Code Reengineering Reference Model?

<p>Function, documentation, repository database, and metrication (D)</p> Signup and view all the answers

Which phase in the Phase Reengineering Model focuses on the characteristics of the new system to be produced?

<p>Analysis and planning (B)</p> Signup and view all the answers

What is the primary focus of the renovation phase in the software reengineering process?

<p>Modification of the operational system into the target system (D)</p> Signup and view all the answers

What does data reengineering refer to in the renovation phase?

<p>Reengineering the external data such as databases and data files (D)</p> Signup and view all the answers

Which of the following is NOT a technical issue addressed in the analysis phase?

<p>Management of the project budget (C)</p> Signup and view all the answers

In the context of the Phase Reengineering Model, what is typically involved in the target system testing phase?

<p>Verifying that the new system meets its requirements and specifications (C)</p> Signup and view all the answers

What role does metrication play in the Source Code Reengineering Reference Model?

<p>Analyzing software performance metrics (A)</p> Signup and view all the answers

Which of the following is a main aspect considered during the renovation phase?

<p>Representation of the system (D)</p> Signup and view all the answers

What is the primary purpose of Data Reverse Engineering (DRE)?

<p>To recover and reconstitute valuable data assets (D)</p> Signup and view all the answers

What are the two main phases of the reverse engineering process?

<p>Data structure extraction and data structure conceptualization (C)</p> Signup and view all the answers

Which phase of the forward design process gathers and formalizes user requirements?

<p>Conceptual phase (B)</p> Signup and view all the answers

What is the primary function of reverse engineering tools?

<p>To analyze software systems and store results in an information base (C)</p> Signup and view all the answers

What does the logical schema describe in the database forward design process?

<p>Data structures in concrete forms (C)</p> Signup and view all the answers

Why is human intervention necessary in reverse engineering projects?

<p>Projects require subjective judgement and interpretation (B)</p> Signup and view all the answers

How does the Data Reverse Engineering (DRE) process benefit software assessment?

<p>Through documentation and knowledge acquisition (C)</p> Signup and view all the answers

Which component is used to produce alternative views of the system in reverse engineering?

<p>Information base (A)</p> Signup and view all the answers

What is the significance of the physical schema in database engineering?

<p>It describes the implementation details of logical schemas (D)</p> Signup and view all the answers

What distinguishes data structure extraction from data structure conceptualization?

<p>Extraction retrieves existing structures, whereas conceptualization describes the underlying semantics. (B)</p> Signup and view all the answers

Which of the following is NOT a purpose of Data Reverse Engineering (DRE)?

<p>User interface design (D)</p> Signup and view all the answers

What defines the conceptual schema in the context of database reverse engineering?

<p>An abstract, implementation-independent description of stored data (A)</p> Signup and view all the answers

What is the main focus of database reverse engineering (DBRE)?

<p>Understanding and redocumenting an application’s database and files (C)</p> Signup and view all the answers

What does Depth of Inheritance Tree (DIT) measure?

<p>The length of the longest path from a class to the root (A)</p> Signup and view all the answers

Which is a function of a decompiler?

<p>To produce readable high-level language source code from binary files (B)</p> Signup and view all the answers

What is a major limitation of decompilation?

<p>It does not include original programmers’ annotations (C)</p> Signup and view all the answers

Which of the following is NOT a recommended application of decompilation?

<p>Trademarking original software (C)</p> Signup and view all the answers

What is the role of a disassembler?

<p>To create text files containing assembly language code from binaries (C)</p> Signup and view all the answers

What must be examined from a legal perspective when using decompilers?

<p>Patent and copyright infringement issues (B)</p> Signup and view all the answers

Which statement accurately describes traditional reverse engineering?

<p>It involves recognizing 'goals' or 'plans' in advance (D)</p> Signup and view all the answers

In the context of software engineering, what is NOT a characteristic of decompilation?

<p>It converts high-level code to binary code (A)</p> Signup and view all the answers

Flashcards

String

A sequence of characters, typically enclosed in quotation marks.

Data Flow Analysis

The process of analyzing program data flow to identify anomalies and understand how data is used and manipulated.

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

A portion of a program containing instructions and predicates that depend on the value of a variable at a specific point in the code.

Signup and view all the flashcards

Control Flow Analysis

The process of analyzing the structure and flow of control in a program to understand how the program executes.

Signup and view all the flashcards

Software Reengineering

A structured approach to transforming legacy software systems into more maintainable and modern versions without altering functionality.

Signup and view all the flashcards

Source Code Reengineering Reference Model

A model that guides software reengineering by organizing elements related to functionality, documentation, database, and metrics.

Signup and view all the flashcards

Phase Reengineering Model

A set of distinct phases that constitute the reengineering process, including planning, analysis, renovation, testing, and transition.

Signup and view all the flashcards

Analysis & Planning

The initial phase of software reengineering where the current system is analyzed, potential issues are identified, and requirements for the new system are defined.

Signup and view all the flashcards

Renovation

The core phase of software reengineering where the legacy software is transformed (renovated) into the desired target system.

Signup and view all the flashcards

Representation of the System

Involves transforming the source code, design model, and/or requirement specification of the existing system into a more maintainable format.

Signup and view all the flashcards

Representation of External Data

Deals with the transformation of the database and/or data files used by the system, often referred to as data reengineering.

Signup and view all the flashcards

System Testing

Emphasizes ensuring the reengineered system meets the planned requirements and functions correctly.

Signup and view all the flashcards

Reverse Engineering

This phase involves analyzing and understanding the legacy source code. The goal is to extract key design components and requirements, preparing the system for transformation.

Signup and view all the flashcards

Source-to-Source Translation

This involves transforming the legacy system's code into a new, more suitable programming language while preserving its functionalities. This significantly improves the maintainability and efficiency of the system.

Signup and view all the flashcards

Target System Testing

This phase addresses the challenges of detecting and fixing issues introduced during the reengineering process due to code modifications. It ensures the reengineered system meets its intended requirements and functionality.

Signup and view all the flashcards

Redocumentation

This involves updating, revising, and/or creating new documentation for the reengineered system to reflect the changes made to the code and design. It ensures system clarity and maintainability.

Signup and view all the flashcards

Acceptance and System Transition

This is the final stage where the completed reengineered system is assessed against predefined acceptance criteria to ensure it meets the desired standards and functionality.

Signup and view all the flashcards

System Deployment

This involves replacing the original system with the reengineered system and deploying it to production. It smoothly transitions the users to the upgraded version.

Signup and view all the flashcards

Data Structure Extraction

Extracting the current structure of data from its original format (like code or a database). Imagine taking apart a Lego model and listing all the bricks and how they're connected.

Signup and view all the flashcards

Data Structure Conceptualization

Creating a high-level description of what the data means, like defining the concepts and relationships. Imagine drawing a diagram that shows how the Lego bricks relate to each other.

Signup and view all the flashcards

Code Reverse Engineering

Analyzing the source code to understand its structure, flow, and logic. Imagine dissecting a program to understand how it works on the inside.

Signup and view all the flashcards

Data Reverse Engineering

Analyzing the database or data files to understand their structure and content. Imagine exploring the storage of a program's data.

Signup and view all the flashcards

Data Reverse Engineering (DRE)

The process of analyzing existing data assets in a system to understand their structure, relationships, and dependencies, with the goal of improving their usability and value.

Signup and view all the flashcards

What is the purpose of Data Reverse Engineering (DRE)?

The recovery and reconstruction of data assets from an existing system, enabling their use in a new or improved system.

Signup and view all the flashcards

Database Reverse Engineering (DBRE)

A specific type of DRE that focuses on understanding and redocumenting an application's database and files.

Signup and view all the flashcards

Conceptual Schema

An abstract, implementation-independent representation of the data stored in a database, describing the entities, attributes, and relationships.

Signup and view all the flashcards

Logical Schema

A concrete representation of the data structures used in a database, reflecting how the data is stored and managed.

Signup and view all the flashcards

Physical Schema

A specific implementation of the logical schema, defining how the data is physically stored on the database system.

Signup and view all the flashcards

Forward Design Process of a Database

The process of translating a conceptual schema into a logical schema, then into a physical schema for implementation.

Signup and view all the flashcards

Reverse Engineering of a Database

The process of analyzing an existing database system to extract its conceptual schema, logical schema, and physical schema.

Signup and view all the flashcards

Decompilation

The process of transforming executable binary code (machine-readable) back into readable high-level source code (like C++ or Java). This is like reverse engineering, but focuses specifically on the code.

Signup and view all the flashcards

Decompiler

A program that takes an executable file and attempts to produce understandable source code. The output might not be identical to the original, and might not even be in the same programming language.

Signup and view all the flashcards

Disassembler

A program that takes an executable file as input and generates assembly language code.

Signup and view all the flashcards

Reverse Engineering from Source Code

A reverse engineering technique that aims to create a higher-level representation of a system (like source code or design diagrams) from its lower-level representation (like executable code).

Signup and view all the flashcards

Compilation

The act of converting high-level source code into executable binary code, which is what computers can understand.

Signup and view all the flashcards

Recovering Lost Source Code

A potential application of decompilation where you can recover lost source code, potentially saving time and effort.

Signup and view all the flashcards

Error Correction

Decompilers can help spot and fix errors within a software system, particularly those hidden within compiled code.

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.

Quiz Team

Related Documents

More Like This

Software Reengineering and Cases
3 questions
Software Reengineering Quiz
47 questions
Use Quizgecko on...
Browser
Browser