<< Chapter < Page Chapter >> Page >
Breve descripción de la aplicación y realización de la Ingeniería Inversa de Procesos.

La primera actividad real de la ingeniería inversa comienza con un intento de comprender y posteriormente, extraer las abstracciones de procedimientos representadas por el código fuente. Para comprender las abstracciones de procedimientos, se analiza el código en distintos niveles de abstracción: sistema, programa, componente, configuración y sentencia.

Antes de iniciar el trabajo de ingeniería inversa detallado debe comprenderse totalmente la funcionalidad general de todo el sistema de aplicaciones sobre el que se esta operando. Esto es lo que establece un contexto para un análisis posterior, y proporciona ideas generales acerca de los problemas de interoperabilidad entre aplicaciones dentro del sistema. Así pues, cada uno de los programas de que consta el sistema de aplicaciones representará una abstracción funcional con un elevado nivel de detalle, creándose un diagrama de bloques como representación de la iteración entre estas abstracciones funcionales. Cada uno de los componentes de estos diagramas efectúa una subfunción, y representa una abstracción definida de procedimientos. En cada componente se crea una narrativa de procesamientos. En algunas situaciones ya existen especificaciones de sistema, programa y componente. Cuando ocurre tal cosa, se revisan las especificaciones para preciar si se ajustan al código existente, descartando posibles errores.

Todo se complica cuando se considera el código que reside en el interior del componente. El ingeniero busca las secciones del código que representan las configuraciones genéricas de procedimientos. En casi todos los componentes, existe una sección de código que prepara los datos para su procesamiento (dentro del componente), una sección diferente de código que efectúa el procesamiento y otra sección de código que prepara los resultados del procesamiento para exportarlos de ese componente. En el interior de cada una de estas secciones, se encuentran configuraciones más pequeñas. Por ejemplo, suele producirse una verificación de los datos y una comprobación de los límites dentro de la sección de código que prepara los datos para su procesamiento.

Para los sistemas grandes, la ingeniería inversa suele efectuarse mediante el uso de un enfoque semiautomatizado. Las herramientas CASE se utilizan para “analizar” la semántica del código existente. La salida de este proceso se pasa entonces a unas herramientas de reestructuración y de ingeniería directa que completarán el proceso de reingeniería.

Cuándo aplicar ingeniería inversa de procesos

Cuando la ingeniería inversa se aplica sobre código de un programa para averiguar su lógica o sobre cualquier documento de diseño para obtener documentos de análisis o de requisitos se habla de ingeniería inversa de procesos.

Habitualmente, este tipo de ingeniería inversa se usa para:

  • Entender mejor la aplicación y regenerar el código.
  • Migrar la aplicación a un nuevo sistema operativo.
  • Generar/completar la documentación.
  • Comprobar que el código cumple las especificaciones de diseño.

La información extraída son las especificaciones de diseño: se crean modelos de flujo de control, diagramas de diseño, documentos de especificación de diseño, etc. y pudiendo tomar estas especificaciones como nuevo punto de partida para aplicar ingeniería inversa y obtener información a mayor nivel de abstracción.

¿cómo hacemos la ingeniería inversa de procesos?

A la hora de realizar ingeniería inversa de procesos se suelen seguir los siguientes pasos:

  • Buscamos el programa principal.
  • Ignoramos inicializaciones de variables, etc.
  • Inspeccionamos la primera rutina llamada y la examinamos si es importante.
  • Inspeccionamos las rutinas llamadas por la primera rutina del programa principal, y examinamos aquéllas que nos parecen importantes.
  • Repetimos los pasos 3-4 a lo largo del resto del software.
  • Recopilamos esas rutinas “importantes”, que se llaman componentes funcionales.
  • Asignamos significado a cada componente funcional, esto es (a) explicamos qué hace cada componente funcional en el conjunto del sistema y (b) explicamos qué hace el sistema a partir de los diferentes componentes funcionales.

A la hora de encontrar los componentes funcionales hay que tener en cuenta que los módulos suelen estar ocupados por componentes funcionales. Además, suele haber componentes funcionales cerca de grandes zonas de comentarios y los identificadores de los componentes funcionales suelen ser largos y formados por palabras entendibles.

Una vez encontrados los posibles componentes funcionales, conviene repasar la lista teniendo en cuenta que un componente es funcional cuando Un componente es funcional cuando su ausencia impide seriamente el funcionamiento de la aplicación, dificulta la legibilidad del código, impide la comprensión de todo o de otro componente funcional o cuando hace caer a niveles muy bajos la calidad, fiabilidad, mantenibilidad, etc.

Vamos a ver cómo a partir de un código java cómo se puede realizar Ingeniería Inversa de Procesos. Tenemos dos clases (Persona y Trabajador)

class Persona {

protected String nombre;

protected int edad;

protected int seguroSocial;

protected String licenciaConducir;

public Persona(String nom, int ed, int seg, String lic) {

set(nom, ed); seguroSocial = seg; licenciaConducir = lic; }

public Persona() {

Persona(null, 0, 0, null); }

public int setNombre(String nom) {

nombre = nom; return 1; }

public int setEdad(int ed) {

edad = ed; return 1; }

public void set(String nom, int ed) {

setNombre(nom); setEdad(ed); }

public void set(int ed, String nom) {

setNombre(nom); setEdad(ed); }

}

class Trabajador extends Persona {

private String empresa;

private int salario;

public Trabajador(String emp, int sal) {

empresa = emp; salario = sal; }

public Trabajador() {

this(null,0); }

public int setEmpresa String emp) {

empresa = emp; return 1; }

public int setSalario(int sal) {

salario = sal; return 1; }

public void set(String emp, int sal) {

setEmpresa(emp); setSalario(sal); }

public void set(int sal, String emp) {

setEmpresa(emp); setSalario(sal); }

}

Si realizamos Ingeniería Inversa, el diagrama UML sería el siguiente:

Figura 1. Diagrama de clase generado a partir del código Java

Questions & Answers

What is an indifference curve?
layla Reply
different levels of utilities of a person in a given set of bundles of goods
RAM
identify and quantify five social costs and social benefits of building a school
Mokgobo Reply
identify and quantity five social costs and social benefits of building a hospital
Mokgobo
short run vs long run
Jean
state the law of diminishing return?
Ibrahim
The Law of Diminishing (Marginal) Returns simply states that at some point in time a business/operation/etc.'s increased productivity will begin to decline.
The
For example, if a small pizza shop currently has 3 workers in the kitchen at any given time,and hiring 1 more worker will increase productivity, at some number of workers hired will the business see a decrease in productivity because the capital resources that the pizza shop has is not infinite.
The
Five social benefits of building a hospital, in my opinion and depending on where it's built, would be 1) Increased care for neighboring residents, 2) Potential jobs for individuals, 3) May decrease the travel time residents need to endure in order to reach the nearest hospital
The
4) May create work-study programs for individuals who aspire to be future Doctors, Nurses, Physicians, etc. 5) Assuming there are local pharmaceutical businesses nearby, the hospital may decide to purchase supplies local, increasing the business' sales. Thus, generating more income.
The
5 costs of building a hospital would be 1) Increased noise and waste pollution from service vehicles and hospital visitors, 2) May require large amounts of space, possibly jeopardizing nearby animal habitats, 3) May see an increase in traffic and possibly car accidents from frantic individuals
The
racing to see their injured friends, family members, etc. 4) Constructing a hospital and hiring staff is very expensive 5) To use funds, private or public, to finance the construction of a hospital cannot be used to fund any other projects. (The concept of opportunity costs.)
The
what is meant by inteference with the price mechanism operation?
Mugen
We use a Supply and Demand graph to illustrate at what price level will the market for a certain good or service be at equilibrium. If the price for a good or service is set too high, consumers will be less inclined to buy that product Thus, creating a surplus.
The
This surplus will eventually drive the price back down to it's equilibrium point. Similarly, if a price for a good or service is set too low, individuals would be more inclined to buy more of a certain product, creating a shortage. This shortage will cause sellers to drive the price back up to the
The
equilibrium point.
The
is it true that the opportunity cost of unemployed labour is zero?
Wisdom Reply
no
Oigebe
give two forms of collusion
nondumiso Reply
1.Explicit Collusion: Also termed overt collusion, this occurs when two or more firms in the same industry formally agree to control the market .
Gafar
2.Implicit Collusion: Also termed tacit collusion, this occurs when two or more firms in the same industry informally agree to control the market, often through nothing more than interdependent actions. A prime example of implicit collusion is price leadership .
Gafar
explicit collusion: this occurs when two or more firms in the same industry legally agree to control the market
Panashe
implicit collusion this occurs when two or more firms in the same industry illegally agree to control the market
Panashe
what is responsible for investigating cases of collusion
nondumiso
reasons why a country maybe involved in international trade
Nde Reply
state five similarities and differences between money market and capital market
Victoria Reply
Give a Zimbabwean example of firms operating in an oligopoly market and illustrate using diagrams how a manager in such a market maximize profit
Pam Reply
what is an industry
EWAH Reply
An industry is the production of goods and related services within an economy
Prabhu
an industry is place where goods and services are produced for human consumption....
Usman
scarcity is the major course of economics problems. discuss
Abdulhameed Reply
please say about that it is interesting for us
Abayneh
what is economics
Michael Reply
economics is a social sciences that deals with the production distribution and consumption of goods and services produced.its study of behaviour between economic agents
rkesh
what is the formula for elasticity of demand
Ridwan
change in demand/change in variable variable may be price, income,
rkesh
seasonal unemployment
Enoch Reply
example agriculture
lungku
want and scarcity
Prince
why the average of revenue AR fun
Abba
What is monopoli
Gadrey Reply
What is monopoly
Gadrey
monopoly
Hanan
monipoly ..where one firm controls all the market
RAM
what is demand
Jafar Reply
demand is what one willing and enable to purchase at a given price over period of a time.
Micheal
what is marginal revenue
just
distinguish between commercialization and industrialization
Alhassan Reply
why division of labour increase economy level of production
Henry Reply
While the American heart association suggests that meditation might be used in conjunction with more traditional treatments as a way to manage hypertension
Beverly Reply
in a comparison of the stages of meiosis to the stage of mitosis, which stages are unique to meiosis and which stages have the same event in botg meiosis and mitosis
Leah Reply
Got questions? Join the online conversation and get instant answers!
Jobilize.com Reply

Get the best Algebra and trigonometry course in your pocket!





Source:  OpenStax, Técnicas de mantenimiento de software. OpenStax CNX. Jan 09, 2009 Download for free at http://cnx.org/content/col10571/1.6
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Técnicas de mantenimiento de software' conversation and receive update notifications?

Ask