<< 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's economic development and growth
Popoola Reply
what do you understand by Ceteris Paribus?
Gabriel Reply
explain the uses of microeconomics
Nikita Reply
uses of microeconomics
Nikita
Adam Smith's definition of economics
Sylvia Reply
what is economic deficit
Amjad
this is a situation whereby a nation's outcome or available resources are not enough to the people thereby causing scarcity
Ariel
prices of Quality demanded is equal to Quality supplied
NABUBOLO Reply
it's quantity demand and quantity supplied that's called equilibrium
Romy
no
NABUBOLO
they deal With prices
NABUBOLO
define the elasticity
NABUBOLO
explain different types of elasticity
NABUBOLO
oops 😬 you are right you talk about quality I tell about quantity
Romy
elasticity is the measurement of the percentage change of one economic variable in response to a change in another
Romy
Cross Elasticity of Demand (XED) Income Elasticity of Demand (YED) Price Elasticity of Supply (PES)
Romy
anything else?
Romy
I need to know everything about theory of consumer behavior
Grace
How does one analyze a market where both demand and supply shift?
Gabriel Reply
That's equilibrium market
Ramon
but an equlibrum can appear twice on the same market... both in Movement along the Demand/supply curve of shift in the Curve
Gabriel
I Mean on the same curve..
Gabriel
how can consumer surplus be calculated
Franklyn
How can we analyze the effect on demand or supply if multiple factors are changing at the same time—say price rises and income falls? 
Gabriel Reply
because of fall of income, less will be demanded and much will be supply as a result of price rises. Rise in price always motivate new supplier to enter into the system. But it only possible in the short run
Kweku
yeah.. I think Ceteris Paribus is applied in this case
Gabriel
that is the law of Demand is Inversely related to the law of Supply... so that mean a positive change in demand may produce a negative return to supply I think.
Gabriel
what are the difference between Wants and Needs
Gabriel Reply
When the price is above the equilibrium, explain how market forces move the market price to equilibrium. Do the same when the price is below the equilibrium.
Gabriel
economic problems
Manishankar
yeah please Explain
Gabriel
I don't know this is my question
Manishankar
no it was a mistake...😂😂 can you explain how Wants and needs differs 😌
Gabriel
wants is what human desire but might not need them, human want are mostly articles of ostentatious while need is what human must get to live e.g inferior goods
Ramon
what's equilibrium price
james
equilibrium prices is a situation whereby the price of goods supplied equates to the demand
Ariel
this whereby the prices of quality demanded is equivalent to quality demanded
NABUBOLO
wants are numerous desire man that man can do without if not purchased e.g. cosmetic while need are desires that you cannot do without e.g. food
Franklyn
equilibrium price is that level of output were quantity demanded is equal to quantity supplied
Arthur
what are the importance of studying economics
Bherla Reply
To know if the country is growing or not through the country's GDP
Ariel
to manage our resources
TOBI
compare base years GDP and the current years GDP
james
To tell whether a country is growing there are many factors to be considered not necessarily only the GDP due to weaknesses of GDP approach
james
What is the law of demand
Yaw Reply
price increase demand decrease...price decrease demand increase
Mujahid
ıf the price increase the demand decrease and if the demand increase the price decrease
MUBARAK
all other things being equal, an increase in demand causes a decrease in supply and vice versa
SETHUAH
yah
Johnson
how is the economy of usa now
Johnson
What is demand
jude Reply
Demand is the quantity of goods and services a consumer is willing and able to purchase at various prices over a given period of time.
Yaw
yea
SETHUAH
Okay congratulations I'll join you guys later .
Aj
yes
MUBARAK
demand is the quantity and quality of goods and services a consumer is willingly and able to purchase at a particular price over a given period of time.
TOBI
calculate elasticity of income exercises
HABANABAKIZE Reply
If potatoes cost Jane $1 per kilogram and she has $5 that could possibly spend on potatoes or other items. If she feels that the first kilogram of potatoes is worth $1.50, the second kilogram is worth$1.14, the third is worth $1.05 and subsequent kilograms are worth $0.30, how many kilograms of potatoes will she purchase? What if she only had $2 to spend?
Susan Reply
cause of poverty in urban
DAVY Reply
QI: (A) Asume the following cost data are for a purely competitive producer: At a product price Of $56. will this firm produce in the short run? Why Why not? If it is preferable to produce, what will be the profit-maximizing Or loss-minimizing Output? Explain. What economic profit or loss will the
Falak Reply
Got questions? Join the online conversation and get instant answers!
Jobilize.com Reply

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play




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