0% found this document useful (0 votes)
75 views

Unit - 10 - Advanced Topics in Software Engineering

The document discusses reverse engineering, re-engineering, and computer-aided software engineering (CASE). 1. Reverse engineering is the process of analyzing a system to identify its components, structure, and design, in order to understand its implementation or rebuild documentation. It aims to recover information from legacy systems. 2. Re-engineering involves examining and altering a system to reconstitute it in a new form. It combines reverse engineering, forward engineering, and code reconstruction to improve maintainability. 3. CASE uses computer tools to facilitate software development and ensure high quality. It provides a structured approach and helps with documentation, diagrams, analysis, and code generation throughout the development lifecycle.

Uploaded by

b628234
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views

Unit - 10 - Advanced Topics in Software Engineering

The document discusses reverse engineering, re-engineering, and computer-aided software engineering (CASE). 1. Reverse engineering is the process of analyzing a system to identify its components, structure, and design, in order to understand its implementation or rebuild documentation. It aims to recover information from legacy systems. 2. Re-engineering involves examining and altering a system to reconstitute it in a new form. It combines reverse engineering, forward engineering, and code reconstruction to improve maintainability. 3. CASE uses computer tools to facilitate software development and ensure high quality. It provides a structured approach and helps with documentation, diagrams, analysis, and code generation throughout the development lifecycle.

Uploaded by

b628234
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

Unit: 10 – Advanced Topic in Software Engineering

1: Write a short note on Reverse engineering.

Software Reverse Engineering is a process of recovering the design, requirement specifications


and functions of a product from an analysis of its code. It builds a program database and generates
information from this.
The purpose of reverse engineering is to facilitate the maintenance work by improving the
understandability of a system and to produce the necessary documents for a legacy system.

• Reverse Engineering Goals:

Cope with Complexity.


Recover lost information.
Detect side effects.
Synthesis higher abstraction.
Facilitate Reuse.
• Steps of Software Reverse Engineering:

(1) Collection Information:


This step focuses on collecting all possible information (i.e., source design documents etc.)
about the software.

(2) Examining the information:


The information collected in step-1 as studied so as to get familiar with the system.

(3) Extracting the structure:


This step concerns with identification of program structure in the form of structure chart
where each node corresponds to some routine.

(4) Recording the functionality:


During this step processing details of each module of the structure, charts are recorded
using structured language like decision table, etc.

(5) Recording data flow:


From the information extracted in step-3 and step-4, set of data flow diagrams are derived
to show the flow of data among the processes.

(6) Recording control flow:


High level control structure of the software is recorded.

(7) Review extracted design:


Design document extracted is reviewed several times to ensure consistency and
correctness. It also ensures that the design represents the program.

(8) Generate documentation:


Finally, in this step, the complete documentation including SRS, design document, history,
overview, etc. are recorded for future use.

2: short note on Re-engineering.

Software Re-engineering is a process of software development which is done to improve


the maintainability of a software system. Re-engineering is the examination and alteration
of a system to reconstitute it in a new form. This process encompasses a combination of
sub-processes like reverse engineering, forward engineering, reconstructing etc.

• Steps involved in Re-engineering:

(1) Inventory Analysis


(2) Document Reconstruction
(3) reverse Engineering
(4) Code Reconstruction
(5) Data Reconstruction
(6) Forward Engineering

• Diagrammatic Representation:

• Advantages of Re-engineering:

Reduced Risk: As the software is already existing, the risk is less as compared to new software
development. Development problems, staffing problems and specification problems are the lots of
problems which may arise in new software development.

Reduced Cost: The cost of re-engineering is less than the costs of developing new software.
Revelation of business code: As a system is re-engineered , business rules that are embedded in
the system are rediscovered.

Better use of Existing Staff: Existing staff expertise can be maintained and extended
accommodate new skills during re-engineering.

• Disadvantages of Re-engineering:

Practical limits to the extent of re-engineering.

Major architectural changes or radical reorganizing of the systems data management has to be done
manually.

Re-engineered system is not likely to be as maintainable as a new system developed using modern
software Re-engineering methods.

3: Explain Computer Aided Software Engineering (CASE).

Computer aided software engineering (CASE) is the implementation of computer facilitated tools
and methods in software development.

CASE is used to ensure a high-quality and defect-free software.

CASE ensures a check-pointed and disciplined approach and helps designers, developers, testers,
managers and others to see the project milestones during development.

CASE can also help as a warehouse for documents related to projects, like business plans,
requirements and design specifications.

One of the major advantages of using CASE is the delivery of the final product, which is more
likely to meet real-world requirements as it ensures that customers remain part of the process.

CASE illustrates a wide set of labor-saving tools that are used in software development. It
generates a framework for organizing projects and to be helpful in enhancing productivity.

There was more interest in the concept of CASE tools years ago, but less so today, as the tools
have morphed into different functions, often in reaction to software developer needs.

The concept of CASE also received a heavy dose of criticism after its release.

• CASE Tools:
The essential idea of CASE tools is that in-built programs can help to analyze developing
systems in order to enhance quality and provide better outcomes.

Throughout the 1990, CASE tool became part of the software lexicon, and big companies like
IBM were using these kinds of tools to help create software.

Various tools are incorporated in CASE and are called CASE tools, which are used to support
different stages and milestones in a software development life cycle.

• Types of CASE Tools:

(1) Diagramming Tools:

It helps in diagrammatic and graphical representations of the data and system processes. It
represents system elements, control flow and data flow among different software
components and system structure in a pictorial form.

For example, Flow Chart Maker tool for making state-of-the-art flowcharts.

(2) Computer Display and Report Generators:

It helps in understanding the data requirements and the relationships involved.

(3) Analysis Tools:

It focuses on inconsistent, incorrect specifications involved in the diagram and data flow.
It helps in collecting requirements, automatically check for any irregularity, imprecision in
the diagrams, data redundancies or erroneous omissions.
For example,
(i) Accept 360, Accompa, CaseComplete for requirement analysis.

(ii) Visible Analyst for total analysis.

(4) Central Repository:

It provides the single point of storage for data diagrams, reports and documents related to
project management.
(5) Documentation Generators:

It helps in generating user and technical documentation as per standards. It creates


documents for technical users and end users.

For example, Doxygen, DrExplain, Adobe RoboHelp for documentation.

(6) Code Generators:

It aids in the auto generation of code, including definitions, with the help of the designs,
documents and diagrams.

• Advantages of the CASE approach:

As special emphasis is placed on redesign as well as testing, the servicing cost of a product
over its expected lifetime is considerably reduced.

The overall quality of the product is improved as an organized approach is undertaken during
the process of development.

Chances to meet real-world requirements are more likely and easier with a computer-aided
software engineering approach.

CASE indirectly provides an organization with a competitive advantage by helping ensure the
development of high-quality products.

• Disadvantages of the CASE approach

(1) Cost:

Using case tool is a very costly.

Mostly firms engaged in software development on a small scale do not invest in CASE tools
because they think that the benefit of CASE are justifiable only in the development of large
systems.

(2) Learning Curve:

In most cases, programmers productivity may fall in the initial phase of implementation ,
because user need time to learn the technology.

Many consultants offer training and on-site services that can be important to accelerate the
learning curve and to the development and use of the CASE tools.
(3) Tool Mix:

It is important to build an appropriate selection tool mix to urge cost advantage CASE
integration and data integration across all platforms is extremely important.

4:Explain Components Based Software Engineering.

Component-Based Software Engineering (CBSE) is a process that focuses on the design


and development of computer-based systems with the use of reusable software
components.

It not only identifies candidate components but also qualifies each component’s interface,
adapts components to remove architectural mismatches, assembles components into a
selected architectural style, and updates components as requirements for the system
change.

• Component-based development:

Component-based development (CBD) is a CBSE activity that occurs in parallel with


domain engineering.

Using analysis and architectural design methods, the software team refines an architectural
style that is appropriate for the analysis model created for the application to be built.

• CBSE Framework Activities:

Framework activities of Component-Based Software Engineering are as follows:

1. Component Qualification:

This activity ensures that the system architecture defines the requirements of the
components for becoming a reusable components.

Reusable components are generally identified through the traits in their interfaces.

It means “the services that are given and the means by which customers or consumers
access these services ” are defined as a part of the component interface.

2. Component Adaptation:

This activity ensures that the architecture defines the design conditions for all components
and identifies their modes of connection.
In some cases, existing reusable components may not be allowed to get used due to the
architecture’s design rules and conditions.

These components should adapt and meet the requirements of the architecture or be
refused and replaced by other, more suitable components.

3. Component Composition:

This activity ensures that the Architectural style of the system integrates the software
components and forms a working system.

By identifying the connection and coordination mechanisms of the system, the architecture
describes the composition of the end product.

4. Component Update:

This activity ensures the updation of reusable components. Sometimes, updates are
complicated due to the inclusion of third-party (the organization that developed the
reusable component may be outside the immediate control of the software engineering
organization accessing the component currently).

You might also like