rol del analista y tipos de sistemas

Anuncio
SISTEMAS DE INFORMACIÓN
DATO
El dato es una representación simbólica (numérica, alfabética, algorítmica etc.),
un atributo o una característica de una entidad. El dato no tiene valor semántico
(sentido) en sí mismo, pero si recibe un tratamiento (procesamiento) apropiado,
se puede utilizar en la realización de cálculos o toma de decisiones. Es de
empleo muy común en el ámbito informático y, en general, prácticamente en
cualquier disciplina científica.
INFORMACIÓN
En sentido general, la información es un conjunto organizado de datos
procesados, que constituyen un mensaje que cambia el estado de
conocimiento del sujeto o sistema que recibe dicho mensaje.
SISTEMA
Un sistema es un conjunto de partes o elementos organizados y relacionados
que interactúan entre sí para lograr un objetivo.
SISTEMA DE INFORMACIÓN
Un sistema de información (SI) es un conjunto de elementos orientados al
tratamiento y administración de datos e información, organizados y listos para
su posterior uso, generados para cubrir una necesidad (objetivo). Dichos
elementos formarán parte de alguna de estas categorías:





Elementos de un sistema de información.
Personas.
Datos.
Actividades o técnicas de trabajo.
Recursos materiales en general (típicamente recursos informáticos y de
comunicación, aunque no tienen por qué ser de este tipo
obligatoriamente).
Todos estos elementos interactúan entre sí para procesar los datos (incluyendo
procesos manuales y automáticos) dando lugar a información más elaborada y
distribuyéndola de la manera más adecuada posible en una determinada
organización en función de sus objetivos.
Un sistema de información realiza cuatro actividades básicas: entrada,
almacenamiento, procesamiento y salida de información.
Entrada de Información: Es el proceso mediante el cual el Sistema de
Información toma los datos que requiere para procesar la información. Las
entradas pueden ser manuales o automáticas. Las manuales son aquellas que
se proporcionan en forma directa por el usuario, mientras que las automáticas
son datos o información que provienen o son tomados de otros sistemas o
módulos. Esto último se denomina interfaces automáticas.
Las unidades típicas de entrada de datos a las computadoras son las
terminales, los códigos de barras, los escáneres, la voz, los monitores
sensibles al tacto, el teclado y el mouse, entre otras.
Almacenamiento de información: El almacenamiento es una de las
actividades o capacidades más importantes que tiene una computadora, ya que
a través de esta propiedad el sistema puede recordar la información guardada
en la sección o proceso anterior. Esta información suele ser almacenada en
estructuras de información denominadas archivos. La unidad típica de
almacenamiento son los discos magnéticos o discos duros y los discos
compactos (CD-ROM).
Procesamiento de Información: Es la capacidad del Sistema de Información
para efectuar cálculos de acuerdo con una secuencia de operaciones
preestablecida. Estos cálculos pueden efectuarse con datos introducidos
recientemente en el sistema o bien con datos que están almacenados. Esta
característica de los sistemas permite la transformación de datos fuente en
información que puede ser utilizada para la toma de decisiones, lo que hace
posible, entre otras cosas, que un tomador de decisiones genere una
proyección financiera a partir de los datos que contiene un estado de
resultados o un balance general de un año base.
Salida de Información: La salida es la capacidad de un Sistema de
Información para sacar la información procesada o bien datos de entrada al
exterior. Las unidades típicas de salida son las impresoras, la voz, los
graficadores y los plotters, entre otros. Es importante aclarar que la salida de
un Sistema de Información puede constituir la entrada a otro Sistema de
Información o módulo. En este caso, también existe una interfase automática
de salida. Por ejemplo, el Sistema de Control de Clientes tiene una interfase
automática de salida con el Sistema de Contabilidad, ya que genera las pólizas
contables de los movimientos procesales de los clientes.
VENTAJAS DE LOS SISTEMAS DE INFORMACIÓN
Durante los próximos años, los Sistemas de Información cumplirán tres
objetivos básicos dentro de las organizaciones:
1.
Automatización de procesos operativos.
2.
Proporcionar información que sirva de apoyo al proceso de toma de
decisiones.
3. Lograr ventajas competitivas a través de su implantación y uso.
DESVENTAJAS DE LOS SISTEMAS DE INFORMACIÓN




Gran capital - costos
Tiempo de implementación
Incremento en la dependencia del mantenimiento y reparación.
Resistencia de los usuarios finales
TIPOS DE SISTEMAS DE INFORMACIÓN
Debido a que el principal uso que se da a los SI es el de optimizar el desarrollo
de las actividades de una organización con el fin de ser más productivos y
obtener ventajas competitivas, en primer término, se puede clasificar a los
sistemas de información en:
Sistemas Competitivos
Sistemas Cooperativos
Sistemas que modifican el estilo de operación del negocio
Esta clasificación es muy genérica, y en la práctica no obedece a una
diferenciación real de sistemas de información reales, ya que en la práctica
podríamos encontrar alguno que cumpla varias (dos o las tres) de las
características anteriores. En los subapartados siguientes se hacen unas
clasificaciones más concretas (y reales) de sistemas de información.
A continuación se mencionan las principales características de estos tipos de
Sistemas de Información.
Sistemas Transaccionales. Sus principales características son:

A través de éstos suelen lograrse ahorros significativos de mano de
obra, debido a que automatizan tareas operativas de la organización.

Con frecuencia son el primer tipo de Sistemas de Información que se
implanta en las organizaciones. Se empieza apoyando las tareas a nivel
operativo de la organización.

Son intensivos en entrada y salid de información; sus cálculos y
procesos suelen ser simples y poco sofisticados.

Tienen la propiedad de ser recolectores de información, es decir, a
través de estos sistemas se cargan las grandes bases de información para
su explotación posterior.

Son fáciles de justificar ante la dirección general, ya que sus beneficios
son visibles y palpables.
Sistemas de Apoyo de las Decisiones. Las principales características de
estos son:


Suelen introducirse después de haber implantado los Sistemas
Transaccionales más relevantes de la empresa, ya que estos últimos
constituyen su plataforma de información.
La información que generan sirve de apoyo a los mandos intermedios y
a la alta administración en el proceso de toma de decisiones.

Suelen ser intensivos en cálculos y escasos en entradas y salidas de
información. Así, por ejemplo, un modelo de planeación financiera requiere
poca información de entrada, genera poca información como resultado, pero
puede realizar muchos cálculos durante su proceso.

No suelen ahorrar mano de obra. Debido a ello, la justificación
económica para el desarrollo de estos sistemas es difícil, ya que no se
conocen los ingresos del proyecto de inversión.

Suelen ser Sistemas de Información interactivos y amigables, con altos
estándares de diseño gráfico y visual, ya que están dirigidos al usuario final.

Apoyan la toma de decisiones que, por su misma naturaleza son
repetitivos y de decisiones no estructuradas que no suelen repetirse. Por
ejemplo, un Sistema de Compra de Materiales que indique cuándo debe
hacerse un pedido al proveedor o un Sistema de Simulación de Negocios
que apoye la decisión de introducir un nuevo producto al mercado.

Estos sistemas pueden ser desarrollados directamente por el usuario
final sin la participación operativa de los analistas y programadores del área
de informática.
Este tipo de sistemas puede incluir la programación de la producción, compra
de materiales, flujo de fondos, proyecciones financieras, modelos de simulación
de negocios, modelos de inventarios, etc.
Sistemas Estratégicos. Sus principales características son:

Su función primordial no es apoyar la automatización de procesos
operativos ni proporcionar información para apoyar la toma de decisiones.

Suelen desarrollarse in house, es decir, dentro de la organización, por lo
tanto no pueden adaptarse fácilmente a paquetes disponibles en el
mercado.

Típicamente su forma de desarrollo es a base de incrementos y a través
de su evolución dentro de la organización. Se inicia con un proceso o
función en particular y a partir de ahí se van agregando nuevas funciones o
procesos.

Su función es lograr ventajas que los competidores no posean, tales
como ventajas en costos y servicios diferenciados con clientes y
proveedores. En este contexto, los Sistema Estratégicos son creadores de
barreras de entrada al negocio. Por ejemplo, el uso de cajeros automáticos
en los bancos en un Sistema Estratégico, ya que brinda ventaja sobre un
banco que no posee tal servicio. Si un banco nuevo decide abrir sus puertas
al público, tendrá que dar este servicio para tener un nivel similar al de sus
competidores.

Apoyan el proceso de innovación de productos y proceso dentro de la
empresa debido a que buscan ventajas respecto a los competidores y una
forma de hacerlo en innovando o creando productos y procesos.
CUADRO MATRIZ DE ANALOGÍAS Y DIFERENCIAS ENTRE LOS TIPOS DE SISTEMAS
TIPOS DE SISTEM AS DE INFORM ACIÓN
TRANSACCIONALES
DE APOYO A LAS
ESTRAT ÉGICOS
DECISIONES
Su función es lograr ventajas
Ahorro significativo de la No suelen Ahorrar mano de
o
b
r
a
.
que los competidores no
mano de obra.
posean.
Su información sirve de apoyo Su función no es ni
Son recolectores de
a mandos intermedios en
transaccional ni de apoyo a
información.
decisiones repetitivas y no
las decisiones, sin embargo
estructuradas.
puede realizar ambas tareas.
Se implantan después de los
Su forma de desarrollo es en
Normalmente son en
s
i
s
t
e
m
a
s
t
r
a
n
s
a
c
c
i
o
n
a
l
e
s
.
base a incrementos.
primer sistema
implantado en la
empresa
Son intensivos en la
entrada y salida de
información.
Su costo es fácilmente
justificable.
Adaptables a paquetes
de aplicación del
mercado.
Suelen ser intensivos en
Apoyan el proceso de
cálculos, pero no en la entrada innovación de los productos.
y salida de información.
Su justificación económica es
difícil.
Son de costos elevados.
Suelen ser interactivos y con
Suelen desarrollarse In House
altos estándares protocolarios. por lo que no son adaptables
a paquetes del mercado.
ROLES DEL ANALISTA DE SISTEMAS
EL ROL DE CONSULTOR DEL ANALISTA DE SISTEMAS
Con frecuencia, el analista de sistemas desempeña el rol de consultor para un negocio y, por
tanto, podría ser contratado de manera específica para enfrentar los problemas de sistemas de
información de una empresa. Esta contratación se puede traducir en una ventaja porque los
consultores externos tienen una perspectiva fresca de la cual carecen los demás miembros de
una organización. También se puede traducir en una desventaja porque alguien externo nunca
conocerá la verdadera cultura organizacional. En su función de consultor externo, usted
dependerá en gran medida de los métodos sistemáticos que se explican en este libro para
analizar y diseñar sistemas de información apropiados para una empresa en particular.
Además, tendrá que apoyarse en los usuarios de los sistemas de información para entender la
cultura organizacional desde la perspectiva que tienen ellos.
EL ROL DE EXPERTO EN SOPORTE TECNICO DEL ANALISTA DE SISTEMAS
Otro rol que tendrá que desempeñar es el de experto en soporte técnico dentro de la empresa
en la cual labora de manera regular. En este rol el analista recurre a su experiencia profesional
con el hardware y software de cómputo y al uso que se le da en el negocio. Con frecuencia,
este trabajo no implica un proyecto completo de sistemas, sino más bien la realización de
pequeñas modificaciones o la toma de decisiones que se circunscriben a un solo
departamento.
Como experto de soporte técnico, usted no esta a cargo del proyecto; tan solo actúa como
recurso para aquellos que si lo están. Si usted es un analista de sistemas contratado por una
empresa de manufactura o servicios, gran parte de sus actividades podrían ajustarse a este rol.
EL ROL DE AGENTE DE CAMBIO DEL ANALISTA DE SISTEMAS
El rol más completo y de mayor responsabilidad que asume el analista de sistemas es el de
agente de cambio, ya sea interno o externo para la empresa. Como analista, usted es un ajen
te de cambio si desempeña cualquiera de las actividades relacionadas con el ciclo de vida del
desarrollo de sistemas (que se explicara en la siguiente sección) y está presente en la empresa
durante un largo periodo (de dos semanas a mas de un año). Un agente de cambio se puede
definir como alguien que sirve de catalizador para el cambio, desarrolla un plan para el cambio
y coopera con los demás para facilitar el cambio.
Su presencia en el negocio inicia el cambio. Como analista de datos, usted debe estar
consciente de este hacho y utilizarlo como punto de partida para su análisis. De ahí que tenga
que interactuar con los usuarios y la administración (sino son un o solo y el mismo) desde el
principio de su proyecto. Sin su colaboración usted no podría entender lo que ocurre en una
organización y el cambio real nunca se daría.
Si el cambio (es decir, la mejora al negocio que se pueden concretar mediante los sistemas de
información) parece factible después de efectuar el análisis, el siguiente paso es desarrollar un
plan para el cambio de manera conjunta con quienes tienen la facultad de autorizarlo. Una vez
que se haya alcanzado el consejo acerca de los cambios por realizar, usted tendrá que
interactuar constantemente con quienes hayan a cambiar.
En su calidad de analista de sistema desempeñando la función de agente de cambio, debe
promover un cambio que involucre el uso de los sistemas de información. También es parte de
su tarea enseñar a los usuarios el proceso del cambio, ya que las modificaciones a un sistema
de información no sólo afectan a éste sino que provocan cambios en el resto de la
organización.
CICLO DE VIDA DE UN SISTEMA DE INFORMACION
El ciclo de vida de un sistema de información es un enfoque por fases del análisis y diseño que
sostiene que los sistemas son desarrollados de mejor manera mediante el uso de un ciclo
especifico de actividades del analista y del usuario.
Según James Senn, existen tres estrategias para el desarrollo de sistemas: el método clásico
del ciclo de vida de desarrollo de sistemas, el método de desarrollo por análisis estructurado y
el método de construcción de prototipos de sistemas. Cada una de estas estrategias tienen un
uso amplio en cada una de los diversos tipos de empresas que existen, y resultan efectivas si
son aplicadas de manera adecuada.
CICLO DE VIDA CLÁSICO DEL DESARROLLO DE SISTEMAS
El método de ciclo de vida para el desarrollo de sistemas es el conjunto de actividades que los
analistas, diseñadores y usuarios realizan para desarrollar e implantar un sistema de
información. El método del ciclo de vida para el desarrollo de sistemas consta de 6 fases:
1). Investigación Preliminar: La solicitud para recibir ayuda de un sistema de información
puede originarse por varias razones: sin importar cuales sean estas, el proceso se inicia
siempre con la petición de una persona.
2). Determinación de los requerimientos del sistema: El aspecto fundamental del análisis de
sistemas es comprender todas las facetas importantes de la parte de la empresa que se
encuentra bajo estudio. Los analistas, al trabajar con los empleados y administradores, deben
estudiar los procesos de una empresa para dar respuesta a las siguientes preguntas clave:
¿Qué es lo que hace?
¿Cómo se hace?
¿Con que frecuencia se presenta?
¿Qué tan grande es el volumen de transacciones o decisiones?
¿Cuál es el grado de eficiencia con el que se efectúan las tareas?
¿Existe algún problema? ¿Qué tan serio es? ¿Cuál es la causa que lo origina?
3). Diseño del sistema: El diseño de un sistema de información produce los detalles que
establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante
la fase de análisis. Los especialistas en sistemas se refieren, con frecuencia, a esta etapa
como diseño lógico en contraste con la del desarrollo del software, a la que denominan diseño
físico.
4). Desarrollo del software: Los encargados de desarrollar software pueden instalar software
comprobando a terceros o escribir programas diseñados a la medida del solicitante. La elección
depende del costo de cada alternativa, del tiempo disponible para escribir el software y de la
disponibilidad de los programadores.
Por lo general, los programadores que trabajan en las grandes organizaciones pertenecen a un
grupo permanente de profesionales.
5). Prueba de sistemas: Durante la prueba de sistemas, el sistema se emplea de manera
experimental para asegurarse de que el software no tenga fallas, es decir, que funciona de
acuerdo con las especificaciones y en la forma en que los usuarios esperan que lo haga.
Se alimentan como entradas conjunto de datos de prueba para su procesamiento y después se
examinan los resultados.
6). Implantación y evaluación: La implantación es el proceso de verificar e instalar nuevo
equipo, entrenar a los usuarios, instalar la aplicación y construir todos los archivos de datos
necesarios para utilizarla. Una vez instaladas, las aplicaciones se emplean durante muchos
años. Sin embargo, las organizaciones y los usuarios cambian con el paso del tiempo, incluso
el ambiente es diferente con el paso de las semanas y los meses.
Por consiguiente, es indudable que debe darse mantenimiento a las aplicaciones. La
evaluación de un sistema se lleva a cabo para identificar puntos débiles y fuertes. La
evaluación ocurre a lo largo de cualquiera de las siguientes dimensiones:
*Evaluación operacional: Valoración de la forma en que funciona el sistema, incluyendo su
facilidad de uso, tiempo de respuesta, lo adecuado de los formatos de información,
confiabilidad global y nivel de utilización.
*Impacto organizacional: Identificación y medición de los beneficios para la organización en
áreas tales como finanzas, eficiencia operacional e impacto competitivo. También se incluye el
impacto sobre el flujo de información externo e interno.
*Opinión de loa administradores: evaluación de las actividades de directivos y
administradores dentro de la organización así como de los usuarios finales.
*Desempeño del desarrollo: La evaluación de proceso de desarrollo de acuerdo con criterios
tales como tiempo y esfuerzo de desarrollo, concuerdan con presupuestos y estándares, y
otros criterios de administración de proyectos. También se incluye la valoración de los métodos
y herramientas utilizados en el desarrollo.
Herramienta CASE
Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software
Asistida por Computadora) son diversas aplicaciones informáticas destinadas a aumentar la
productividad en el desarrollo de software reduciendo el costo de las mismas en términos de
tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de
vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto,
cálculo de costos, implementación de parte del código automáticamente con el diseño dado,
compilación automática, documentación o detección de errores entre otras, que analizaba la
relación existente entre los requisitos de un problema y las necesidades que éstos generaban,
el lenguaje en cuestión se denominaba PSL (Problem Statement Language) y la aplicación que
ayudaba a buscar las necesidades de los diseñadores PSA (Problem Statement Analyzer).
Aunque ésos son los inicios de las herramientas informáticas que ayudan a crear nuevos
proyectos informáticos, la primera herramienta CASE fue Excelerator que salió a la luz en el
año 1984 y trabajaba bajo una plataforma PC.
Las herramientas CASE alcanzaron su techo a principios de los años 90. En la época en la que
IBM había conseguido una alianza con la empresa de software AD/Cycle para trabajar con sus
mainframes, estos dos gigantes trabajaban con herramientas CASE que abarcaban todo el
ciclo de vida del software. Pero poco a poco los mainframes han ido siendo menos utilizados y
actualmente el mercado de las Big CASE ha muerto completamente abriendo el mercado de
diversas herramientas más específicas para cada fase del ciclo de vida del software.
Objetivos
1.
2.
3.
4.
5.
6.
7.
8.
9.
Mejorar la productividad en el desarrollo y mantenimiento del software.
Aumentar la calidad del software.
Reducir el tiempo y coste de desarrollo y mantenimiento de los sistemas informáticos.
Mejorar la planificación de un proyecto
Aumentar la biblioteca de conocimiento informático de una empresa ayudando a la
búsqueda de soluciones para los requisitos.
Automatizar el desarrollo del software, la documentación, la generación de código, las
pruebas de errores y la gestión del proyecto.
Ayuda a la reutilización del software, portabilidad y estandarización de la
documentación
Gestión global en todas las fases de desarrollo de software con una misma
herramienta.
Facilitar el uso de las distintas metodologías propias de la ingeniería del software.
INGENIERÍA INVERSA
El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto
accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo
fue fabricado.
Hoy en día (principios del siglo XXI), los productos más comúnmente sometidos a ingeniería
inversa son los programas de computadoras y los componentes electrónicos, pero, en realidad,
cualquier producto puede ser objeto de un análisis de Ingeniería Inversa.
El método se denomina así porque avanza en dirección opuesta a las tareas habituales de
ingeniería, que consisten en utilizar datos técnicos para elaborar un producto determinado. En
general, si el producto u otro material que fue sometido a la ingeniería inversa fue obtenido en
forma apropiada, entonces el proceso es legítimo y legal. De la misma forma, pueden
fabricarse y distribuirse, legalmente, los productos genéricos creados a partir de la información
obtenida de la ingeniería inversa, como es el caso de algunos proyectos de Software libre
ampliamente conocidos.
El programa Samba es un claro ejemplo de ingeniería inversa, dado que permite a sistemas
operativos UNIX compartir archivos con sistemas Microsoft Windows. El proyecto Samba tuvo
que investigar información confidencial (no liberada al público en general por Microsoft) sobre
los aspectos técnicos relacionados con el sistema de archivos Windows. Lo mismo realiza el
proyecto WINE para el conjunto de API de Windows y OpenOffice.org con los formatos propios
de Microsoft Office, o se hace para entender la estructura del sistema de archivos NTFS y así
poder desarrollar drivers para la lectura-escritura sobre el mismo (principalmente para sistemas
basados en GNU/Linux).
La ingeniería inversa es un método de resolución. Aplicar ingeniería inversa a algo supone
profundizar en el estudio de su funcionamiento, hasta el punto de que podamos llegar a
entender, modificar y mejorar dicho modo de funcionamiento.
Pero este término no sólo se aplica al software, sino que también se considera ingeniería
inversa el estudio de todo tipo de elementos (por ejemplo, equipos electrónicos,
microcontroladores, u objeto fabril de cualquier clase). Diríamos, más bien, que la ingeniería
inversa antecede al nacimiento del software, tratándose de una posibilidad a disposición de las
empresas para la producción de bienes mediante copiado desde el mismo surgimiento de la
ingeniería.
En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa
de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se
dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las
mismas funciones. La gran mayoría del software de pago incluye en su licencia una prohibición
expresa de aplicar ingeniería inversa a su código, con el intento de evitar que se pueda
modificar su código y que así los usuarios tengan que pagar si quieren usarlo.
La ingeniería inversa nace en el transcurso de la Segunda Guerra Mundial, cuando los ejércitos
enemigos incautaban insumos de guerra como aviones u otra maquinaria de guerra para
mejorar las suyas mediante un exhaustivo análisis.
REINGENIERÍA DEL SOFTWARE
Reingeniería del software se puede definir como: “modificación de un producto software, o de
ciertos componentes, usando para el análisis del sistema existente técnicas de Ingeniería
Inversa y, para la etapa de reconstrucción, herramientas de Ingeniería Directa, de tal manera
que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento,
reutilización, comprensión o evaluación.”
Cuando una aplicación lleva siendo usada años, es fácil que esta aplicación se vuelva inestable
como fruto de las múltiples correcciones, adaptaciones o mejoras que han podido surgir a lo
largo del tiempo. Esto deriva en que cada vez que se pretende realizar un cambio se producen
efectos colaterales inesperados y hasta de gravedad, por lo que se hace necesario, si se prevé
que la aplicación seguirá siendo de utilidad, aplicar reingeniería a la misma.
Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir:


Pueden reducir los riegos evolutivos de una organización.
Puede ayudar a las organizaciones a recuperar sus inversiones en software.




Puede hacer el software más fácilmente modificable
Amplía las capacidades de las herramientas CASE
Es un catalizador para la automatización del mantenimiento del software
Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial
para resolver problemas de reingeniería
La reingeniería del software involucra diferentes actividades como son:





análisis de inventarios
reestructuración de documentos
ingeniería inversa
reestructuración de programas y datos
ingeniería directa
Con la finalidad de crear versiones de programas ya existentes que sean de mejor calidad y los
mismos tengan una mayor facilidad de mantenimiento.
Análisis de Inventarios
Todas las organizaciones de software deberían tener un inventario de todas sus aplicaciones.
El inventario tal vez no sea más que un modelo en una hoja de cálculo que contenga
información que proporcione una descripción detallada (tamaño, edad, importancia para el
negocio) de las aplicaciones activas.
Los candidatos a la reingeniería aparecen cuando se ordena esta información en función de su
importancia para el negocio, longevidad, mantenibilidad actual y otros criterios localmente
importantes. Es entonces cuando es posible asignar recursos a las aplicaciones candidatas
para el trabajo de reingeniería.
Es importante señalar que el inventario deberá visitarse con regularidad, el estado de las
aplicaciones puede cambiar en función del tiempo y, como resultado, cambiarán las prioridades
para la reingeniería.
Reestructuración de documentos
La documentación débil es la marca de muchos sistemas heredados. ¿Pero que se hace
acerca de ellos? ¿Cuáles son las opciones? Crear documentación consume mucho tiempo, si
el sistema funciona vivirá con lo que tenga. La documentación debe actualizarse pero se tiene
recursos limitados. Se utiliza un enfoque de “documentar cuando se toque”. El sistema es
crucial para el negocio y debe volver a documentarse por completo incluso en este caso un
enfoque inteligente es recortar la documentación a un mínimo esencial. Cada una de estas
opciones es viable. Una organización de software debe elegir la más apropiada para cada
caso.
Ingeniería Inversa
Este término tiene sus orígenes en el mundo del hardware. Una cierta compañía desensambla
un producto de hardware competitivo en un esfuerzo por comprender los “secretos” del diseño
y fabricación de su competidor. Estos secretos se podrán comprender más fácilmente si se
obtuvieran las especificaciones de diseño y fabricación del mismo. Pero estos documentos son
privados, y no están disponibles para la compañía que efectúa la ingeniería inversa. En
esencia, una ingeniería inversa con éxito precede de una o más especificaciones de diseño y
fabricación para el producto, mediante el examen de ejemplos reales de ese producto.
La ingeniería inversa del software es algo similar. En la mayoría de los casos, el programa del
cual hay que hacer una ingeniería inversa no es el de un rival, sino, más bien, el propio trabajo
de la compañía. Los “secretos” que hay que comprender resultan incomprensibles porque
nunca se llegó a desarrollar una especificación. Consiguientemente, la ingeniería inversa del
software es el proceso de análisis de un programa con el fin de crear una representación de
programa con un nivel de abstracción más elevado que el código fuente.
La Ingeniería inversa es un proceso de recuperación de diseño. Con las herramientas de la
ingeniería inversa se extraerá del programa existente información del diseño arquitectónico y
de proceso, e información de los datos.
Reestructuración de código
El tipo más común de reingeniería es la reestructuración de código, se puede hacer con
módulos individuales que se codifican de una manera que dificultan comprenderlos, probarlos y
mantenerlos.
Llevar a cabo esta actividad requiere analizar el código fuente empleando una herramienta de
reestructuración, se indican las violaciones de las estructuras de programación estructurada, y
entonces se reestructura el código (esto se puede hacer automáticamente). El código
reestructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido
anomalías. Se actualiza la documentación interna del código.
Reestructuración de datos
La reestructuración de datos es una actividad de reingeniería a gran escala. En la mayoría de
los casos, la reestructuración de datos comienza con una actividad de ingeniería inversa. La
arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos
necesarios, se identifican los objetivos de datos y los atributos, y después se revisa la calidad
de las estructuras de datos existentes.
Cuando la estructura de datos es débil (por ejemplo, actualmente se implementan archivos
planos, cuando un enfoque relacional simplificaría muchísimo el procesamiento), se aplica una
reingeniería a los datos.
Dado que la arquitectura de datos tiene una gran influencia sobre la arquitectura del programa,
y también sobre los algoritmos que lo pueblan, los cambios en datos darán lugar
invariablemente a cambios o bien de arquitectura o bien de código.
Ingeniería directa
En un mundo ideal, las aplicaciones se reconstruyen utilizando un “motor de reingeniería”
automatizado. En el motor se insertaría el programa viejo, que lo analizaría, reestructuraría y
después regeneraría la forma de exhibir los mejores aspectos de la calidad del software.
Después de un espacio de tiempo corto, es probable que llegue a aparecer este “motor”, pero
los fabricantes de CASE han presentado herramientas que proporcionan un subconjunto
limitado de estas capacidades y que se enfrentan con dominios de aplicaciones específicos. Lo
que es más importante, estas herramientas de reingeniería cada vez son más sofisticadas.
La ingeniería directa no solo recupera la información de diseño a partir del software existente,
también utiliza esta información para alterar o reconstruir el sistema existente con la finalidad
de mejorar su calidad global. En la mayoría de los casos el software sometido a reingeniería
vuelve a implementar la función del sistema existente y también añade nuevas funciones o
mejoras.
Descargar