Software Reengineering Quiz
47 Questions
0 Views

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

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

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

<p>Syntactic Analysis. (C)</p> Signup and view all the answers

What does the term 'decompilation' refer to when compared to reverse engineering?

<p>Extracting higher-level representations from lower-level code. (C)</p> Signup and view all the answers

Which analysis technique is used to focus on the data flow within a program?

<p>Data Flow Analysis. (A)</p> Signup and view all the answers

What is one of the main outcomes expected from improving the quality of a software system during reengineering?

<p>Enhancing system performance and reliability. (B)</p> Signup and view all the answers

What is a pivotal part of the reengineering process that involves examining existing software artifacts?

<p>Analysis. (D)</p> Signup and view all the answers

What does the principle of alteration entail in the context of software reengineering?

<p>Making changes without affecting the degree of abstraction. (D)</p> Signup and view all the answers

Which activity does NOT form part of the general model for software reengineering?

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

In the context of software reengineering, what do the arrows represent?

<p>Principles of abstraction, alteration, and refinement (D)</p> Signup and view all the answers

What is the primary output of the software reengineering process?

<p>Renovated system code (D)</p> Signup and view all the answers

What does refinement in the reengineering process indicate?

<p>Increase in system information (D)</p> Signup and view all the answers

How can existing code be transformed in software reengineering?

<p>By translating the source code to a different programming language. (C)</p> Signup and view all the answers

Which principle is NOT foundational to the reengineering process?

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

What type of arrow represents abstraction in the reengineering principles?

<p>Up-arrow (C)</p> Signup and view all the answers

What is the primary purpose of abstraction in software maintenance?

<p>To hide irrelevant details while focusing on significant information (C)</p> Signup and view all the answers

Which of the following best describes the principle of refinement?

<p>It gradually replaces abstract information with more detailed information. (B)</p> Signup and view all the answers

What process is described as the downward movement from high-level abstraction to low-level implementation?

<p>Forward engineering (D)</p> Signup and view all the answers

What constitutes reverse engineering in software development?

<p>Decompiling object code to a high-level programming language (C)</p> Signup and view all the answers

Which of the following levels of abstraction comes first in software development?

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

What is the outcome of applying abstraction correctly in software maintenance?

<p>Complexity is reduced and significant aspects of the system are emphasized. (B)</p> Signup and view all the answers

What does not represent a phase in the abstraction and refinement model of software development?

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

In the context of software evolution, what step immediately follows analyzing components during reverse engineering?

<p>Representing the system at a higher level of abstraction (A)</p> Signup and view all the answers

What does the term 'respecify' encompass in software evolution?

<p>Changing the requirement characteristics of the system (C)</p> Signup and view all the answers

In what manner does rethinking a system usually manifest?

<p>By manipulating existing concepts to create a new application in a different domain (C)</p> Signup and view all the answers

Which statement best describes the rewrite strategy in software reengineering?

<p>It alters an operational system while preserving its abstraction level. (D)</p> Signup and view all the answers

What is a key characteristic of the rework strategy?

<p>It replaces unstructured control flow with structured constructs. (D)</p> Signup and view all the answers

What is the initial step in the rework strategy's approach?

<p>Generating a control-flow graph (CFG) (A)</p> Signup and view all the answers

When a system is reengineered, what is likely to happen at a fundamental level during rethinking?

<p>The system may change to operate in a different problem domain completely. (B)</p> Signup and view all the answers

Which of the following programming languages can be involved in the rewrite strategy?

<p>Fortran to C (A)</p> Signup and view all the answers

What is a primary objective of applying abstraction in the rework strategy?

<p>To generate a control-flow graph (CFG) for the system (D)</p> Signup and view all the answers

What does the element 'Δ' in the reengineering process represent?

<p>Alterations made to the original system (C)</p> Signup and view all the answers

Which of the following activities is NOT part of the reengineering process?

<p>Software decommissioning (C)</p> Signup and view all the answers

Which type of change involves altering the implementation characteristics at the source code level?

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

Which of the following is an example of a rephrasing scenario in software reengineering?

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

What characterizes the redesign process in software reengineering?

<p>Altering software design characteristics (D)</p> Signup and view all the answers

Which of the following changes implies modifying the business rules of a software system?

<p>Change in functionality (A)</p> Signup and view all the answers

What is the first step in the software reengineering process?

<p>Creation of a more abstract view through reverse engineering (B)</p> Signup and view all the answers

What are the two principles involved in the replace strategy of software reengineering?

<p>Abstraction and refinement (B)</p> Signup and view all the answers

What is created at a lower level of abstraction during the replace strategy?

<p>A suitable representation for the target system (B)</p> Signup and view all the answers

Which of the following best describes a process in the context of software reengineering?

<p>An ordered set of activities designed to perform a specific task (A)</p> Signup and view all the answers

What is a major characteristic of the Big Bang approach to reengineering?

<p>It replaces the whole system at once (C)</p> Signup and view all the answers

Which process model is mentioned as widely used in software development?

<p>Waterfall model (B)</p> Signup and view all the answers

What do process models help to do in the realm of software reengineering?

<p>Comprehend and improve processes (A)</p> Signup and view all the answers

Which approach to reengineering involves partial substitution of the operational system?

<p>Incremental approach (A)</p> Signup and view all the answers

What are the two aspects in which the five reengineering approaches differ?

<p>Extent of reengineering and rate of substitution (D)</p> Signup and view all the answers

Flashcards

Abstraction

Simplifying a complex system by focusing on key information and hiding unnecessary details.

Refinement

The opposite of abstraction. Adding more details and complexity to a system.

Forward Engineering

A process of moving downward from the highest level of abstraction (concepts) to the lowest (implementation).

Reverse Engineering

A process of reconstructing a system's design and components from its existing code or implementation.

Signup and view all the flashcards

Conceptual Level

A level of abstraction defined by the initial vision and goals of the system.

Signup and view all the flashcards

Requirements Level

A level of abstraction that describes what the system needs to do.

Signup and view all the flashcards

Design Level

A level of abstraction that lays out how the system will be designed and implemented.

Signup and view all the flashcards

Implementation Level

The lowest level of abstraction, where the system is turned into actual code.

Signup and view all the flashcards

Software Reengineering

The process of modifying a software system to improve its quality, performance, or maintainability while preserving its functionality.

Signup and view all the flashcards

Alterations (∆)

The act of making changes to the original software during reengineering.

Signup and view all the flashcards

Re-coding

The process of rewriting code to make it more efficient, readable, or compliant with new standards.

Signup and view all the flashcards

Re-design

The process of changing the underlying design of a software system.

Signup and view all the flashcards

Functionality Change

Changes to the software's functionality, affecting what the system does.

Signup and view all the flashcards

Implementation Technique Change

Changes to the underlying implementation of the software, affecting how it's built.

Signup and view all the flashcards

Alteration in Reengineering

A process that modifies a system representation (e.g., code, design) without changing its level of abstraction. It doesn't involve adding, removing, or changing information.

Signup and view all the flashcards

Re-designing

A primary activity in reengineering that focuses on restructuring and redesigning a system to improve its quality, performance, or maintainability.

Signup and view all the flashcards

Abstraction in Reengineering

The process of simplifying a complex system by focusing on essential information and hiding unnecessary details.

Signup and view all the flashcards

Refinement in Reengineering

The process of adding details and complexity to a system, moving from a higher level of abstraction to a lower level. This involves detailing out functionalities and elements.

Signup and view all the flashcards

Respecify

Changing the form or scope of a system's requirements. This could involve refining existing requirements or expanding the system's functionality.

Signup and view all the flashcards

Rethink

Transforming a system to work in a completely different domain by manipulating its core concepts. It involves fundamental changes to the system's design and functionality.

Signup and view all the flashcards

Rewrite Strategy

Creating a brand new system while maintaining the overall structure and abstraction level of the original. It involves a complete rewrite of the code in a different language.

Signup and view all the flashcards

Rework Strategy

Improving a system by applying structured programming principles. This often involves replacing unstructured code with more organized constructs.

Signup and view all the flashcards

Control-Flow Graph (CFG)

Analyzing the code to create a visual representation of its flow (control-flow graph).

Signup and view all the flashcards

Restructuring Algorithm

Applying algorithms to transform an unstructured control-flow graph into a structured one.

Signup and view all the flashcards

Translation

The process of converting the restructured control-flow graph back into the original programming language.

Signup and view all the flashcards

Alteration

The process of changing a system's implementation without significantly altering its design or core functionality.

Signup and view all the flashcards

Replace Strategy

A strategy that involves transforming a system by first representing it at a higher level of abstraction (simplifying) and then refining it at a lower level (adding details), often used for restructuring code to improve its understandability and maintainability.

Signup and view all the flashcards

Big Bang Approach

A reengineering approach where the entire system is replaced at once, typically used when a system can't be reengineered in parts, involves simultaneous efforts across all facets of the system.

Signup and view all the flashcards

Process

A structured set of activities designed to perform a specific task, often described by models for better understanding and communication.

Signup and view all the flashcards

Process Models

Visual representations of a process, used to analyze, evaluate, and improve the process, often describe relationships between data, roles, activities, and tools.

Signup and view all the flashcards

Reengineering Strategies

A concept that focuses on transforming a software system through different stages of abstraction. It involves representing the system initially at a high level of abstraction (removing unnecessary details), then refining it to a lower level of abstraction (adding more details) to achieve the desired changes.

Signup and view all the flashcards

Goal of Software Reengineering

The goal of reengineering is to understand the existing software system artifacts, such as specifications, design, implementation, and documentation, and then improve the functionality and quality attributes of the system.

Signup and view all the flashcards

Objectives of Software Reengineering

Improving maintainability, migrating to a new technology, improving quality, and preparing for functional enhancements.

Signup and view all the flashcards

Abstraction in Software Reengineering

The concept of representing complex things in simplified ways, like using a blueprint to understand a building.

Signup and view all the flashcards

Refinement in Software Reengineering

The process of breaking down complex software components into smaller, more manageable parts, like dividing a blueprint into separate floor plans.

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.

Quiz Team

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.

More Like This

Software Reengineering and Cases
3 questions
Software Engineering Reengineering
42 questions
Use Quizgecko on...
Browser
Browser