Post on 13-Jun-2015
S.E.P. D.G.E.S.T. S.N.E.S.T.
INSTITUTO TECNOLÓGICO
de Tuxtepec
“ENSAYO
REINGENIERÍA DE SOFTWARE”CARRERA:
Ingeniería en Sistemas Computacionales
PRESENTAN:Bolaños Duran Juan CarlosPérez Antonio Julio Cesar
Vázquez Gómez GuadalupeVicente Azamar Timoteo
Zarate Castillo Celeste Yamín
ISC – 2010/01
Febrero de 2012
MATERIA:Reingeniería de software
CATEDRÁTICO:Martínez Morales Ma. de los Ángeles
Tuxtepec, Oaxaca; a 14 de Febrero de 2012.
NOMBRE DEL ALUMNO NÚMERO DE CONTROLCORREO
ELECTRÓNICOBolaños Duran Juan
Carlosscorpion_03k@hotmail.co
m 083503634
Pérez Antonio Julio Cesar
jcpat_10@hotmail.com08350355
Vázquez Gómez Guadalupe lupev_g@hotmail.com 08350380
Vicente Azamar Timoteoalkon_1_15@hotmail.com 08350384
Zarate Castillo Celeste Yamín celeste_tux@hotmail.com 08350385
RESUMEN
Éste articulo desarrolla y muestra un panorama general del estado de evolución en el
que ha estado inmerso a través del tiempo la reingeniería de software, así mismo con
su gran importancia e impacto que implico el hecho de haberse potencializado en el
mercado del desarrollo de software y de aplicaciones. No obstante el hecho de que
haya tenido un gran auge y aceptación en el mundo quiere decir que dicho proceso
siempre se ha mantenido viento en popa, mas bien existieron diversos factores que
en vez de afectar su influencia ha repercutido en los grandes beneficios que la
reingeniería ha traído consigo. Uno de los grandes beneficios que podemos ser
participes es la innovación de tienen los grandes sistemas que se han ido
desarrollando y aplicando dentro de las grandes organizaciones.
Palabras clave: Reingeniería, innovación y sistema.
ENSAYO
INTRODUCCIÓN
La reingeniería de software una disciplina de preparación para migrar un sistema
que evoluciona. El proceso aplica principios de ingeniería para un sistema existente
con el objetivo de encontrar nuevos requerimientos.
Existen múltiples referencias al concepto de reingeniería de sistema en toda la web.
En las cuales podemos mencionar algunos como Arnold, la definen como “una
actividad que mejora la comprensión del software, o bien, lo prepara o mejora para
incrementar su facilidad de mantenimiento, reutilización o evolución”. Para otros
como Chikofsky que lo define como “es el examen y la alteración de un sistema para
reconstruirlo en una nueva forma y la subsiguiente implementación de esa forma”. El
concepto de reingeniería está muy relacionado con los conceptos de reutilización,
innovación, génesis, desarrollo y así se puede comprobar en los conceptos de Perlis
y Biggerstoff en, donde se refieren a la reutilización como la reaplicación de una
variedad de tipos de conocimientos de un sistema a otro ara reducir el esfuerzo de
desarrollo y mantenimiento de ese sistema; es decir, la reutilización está enfocada a
mejorar la calidad y reducir el esfuerzo haciendo uso de parte de un sistema en un
nuevo contexto. (Tosca & Fernández)
El presente trabajo desarrolla un breve ensayo acerca de qué es la reingeniería de
software, la evolución que ha tenido, la importancia que tiene aplicar reingeniería; asi
como también la función que ésta tiene.
DESARROLLO
La reingeniería surge por la necesidad de poder realizar cambios en un sistema,
permitiendo tener como punto primordial la abstracción esencial del software, esto
permite conservar los valores esenciales del sistema
La reingeniería se divide dependiendo el punto de modificación del sistema, la
modificación puede ser desde en el código fuente o en la interfaz del sistema; es allí
donde entra la labor de reingeniar, esto implica una transformación sistemática de un
sistema existente a una forma nueva para realizar mejoras de la calidad en
operación, capacidad del sistema, funcionalidad, rendimiento o capacidad de
evolución a bajo coste, con el plan de desarrollo corto y bajo riesgo para el cliente.
Si el sistema no tiene como características el bajo costo, que no se pueda realizar en
poco tiempo o porque no tiene poco riesgo, se tiene que considerar la posibilidad de
un nuevo desarrollo.
La reingeniería que hoy conocemos y aplicamos en nuestros productos de software
ha evolucionado rápidamente; y podemos darnos cuenta ya que en tan solo una
década ha podido completar casi todas las etapas que pasan los enfoques. La
reingeniería de software ha tenido varios nombres como: modernización,
transformación, restructuración, rediseño, aunque todos tienen metas comunes:
aumentar la capacidad para competir en el mercado mediante la reducción de
costos, el incremento en la calidad y una mayor velocidad de respuesta.
La evolución y crecimiento de la reingeniería en sus inicios parte de la necesidad de
las empresas en rediseñar sus procesos internos en la década de los ochenta; luego
al inicio de los noventa, gracias al éxito que dichas empresas habían tenido al utilizar
la reingeniería en sus procesos se logra publicar y divulgar masivamente mediante la
venta del libro “Innovación de procesos: reingeniería por medio de la tecnología de la
información”. En consecuencia de dicho acto muchas mas empresas lograron
sumarse al éxito que proveía la reingeniería; pero como todo en este mundo tiene
sus limitaciones, cabe señalar que este proceso fue objeto de una fuerte crítica lo
cual mostraba a la luz las limitaciones y los factores que atentaban contra su éxito.
Esto dio partida a que muchos críticos dieran sus puntos de vistas personales que
lograron influir de manera significativa en las grandes organizaciones, ya que
muchos optaron en modificar radicalmente su entorno competitivo y dinámico en su
proceso productivo. También muchos malinterpretaron sus conceptos y esto originó
que tan solo el hecho de mencionarla causaba un gran descontento en las personas,
ya que ello implicaba una restructuración general y por consiguiente el despido del
personal.
En el plano del software tampoco podemos hacerlo a un lado ya que esa evolución
estuvo ligada a la llamada crisis del software; lo que provoco la necesidad de crear
estándares de desarrollo de software y con ello garantizar software confiable y
eficiente, aunque esto tampoco garantiza el éxito permanente de muchas
organizaciones es necesario aplicar la reingeniería de software en las categorías de
mantenimiento, modernización y remplazo, que estaría fuertemente ligado a la
relación costo beneficio.
Aplicar reingeniería a los sistemas implica, convencer a la dirección sobre el proceso
que ello tiene y la necesidad imperiosa de cambiar, creando a posterioridad un
comité de dirección destinado a hacerse cargo del proyecto de reingeniería.
Es allí donde entra a jugar un papel muy importante el término refactorización, la cual
se usa a menudo para describir la modificación del código fuente sin cambiar su
comportamiento, lo que se conoce informalmente por limpiar el código. La
refactorización es la parte del mantenimiento del código que no arregla errores ni
añade funcionalidad. El objetivo, es mejorar la facilidad de comprensión del código o
cambiar su estructura y diseño y eliminar código muerto, para facilitar el
mantenimiento en el futuro. Añadir nuevo comportamiento a un programa puede ser
difícil con la estructura dada del programa, así que un desarrollador puede
refactorizarlo primero para facilitar esta tarea y luego añadir el nuevo
comportamiento. (Serrano)
Hay autores que conciben el proceso de reingeniería de software en dos fases
fundamentales. La primera: comprender el software existente, donde el diseño del
sistema se recupera desde su código fuente con actividades como análisis de
dependencias, comprensión del programa, detección, extracción y almacenamiento
del diseño. La segunda incluye todas las actividades que se realizan para
transformar el software existente en uno más fácil de mantener, entre las cuales cabe
mencionar descomposición, restructuración, remodularización, redocumentación,
etcétera.
Existen muchas definiciones (Rodríguez, Márquez, & Toro) de mantenimiento
mediante las empresas, entra las cuales los autores señalan las siguientes dos:
ANSI /IEE: Las modificaciones de los productos software después de su entrega para
corregir fallos, mejorar rendimiento u otros atributos o adaptar el producto a un
cambio de entorno.
ISO/IEC: Un producto software soporta una modificación en el código y su
documentación asociada para la solución de un problema o por la necesidad de una
mejora. Su objetivo es mejorar el software existente manteniendo su integridad.
Muchas veces es adecuado utilizar una refactorización a nuestros productos de
software sobre todo en este ámbito y a estas alturas donde nos encontramos.
Se determina la calidad técnica y el valor de negocio de cada aplicación medular en
la empresa, con el objetivo de construir una lista de aplicaciones ordenada según sus
prioridades en el proceso de reingeniería. Se determina los costos de cada proyecto
de reingeniería que se vaya a enfrentar: si estos son superiores a los beneficios, la
reingeniería no será una opción viable y la aplicación deberá ser desarrollada de
nuevo o bien adquirirse en el mercado.
CONCLUSIÓN
Podemos concluir que la reingeniería como hoy la conocemos y aplicamos en
nuestro desarrollo de software, a través del tiempo a tenido una grande y rápida
evolución pero que esto a la vez ha tenido un gran impacto en la actualidad; ya que
si nos ponemos a pensar que seria de un programador o desarrollador de software el
hecho de producir un nuevo producto desde cero, vaya eso si seria algo sumamente
tedioso, bueno pero para esto hoy tenemos a disposición el hacer uso de la
reingeniería.
La reingeniería va mas allá de una simple ayuda para el mantenimiento. La
reingeniería es el puente desde las viejas hacia las nuevas tecnologías que las
organizaciones deben usar en la actualidad para responder al cambio de
requerimientos del negocio.
Los programas se hacen obsoletos al paso del tiempo ya que fueron escritos para
hardware y sistemas operativos que ya no existen, donde muchos están llenos de
características y parches no documentados.
Mientras más conocimiento se gestione en la organización y se aprenda de una
forma dinámica y en constante intercambio con el entorno, entonces se tendrán las
bases para saber cuándo es preciso dar un salto cualitativo.
La reingeniería de software constituye una poderosa herramienta para posibilitar que
nuestras empresas se desarrollen tan rápido como nuestras mentes y los
paradigmas tecno-informáticos.
BIBLIOGRAFÍA
Rodríguez, A., Márquez, A., & Toro, M. (s.f.). Gestión de la evolución del
software. El eterno problema de los legacy systems.
Serrano, V. C. (s.f.). Refactorización arquitectónico de software a nivel
abstracto implementando patrones de diseño.
Tosca, F. G., & Fernández, R. M. (s.f.). Reingeniería de software, ¿un camino
o el camino?