Funcion y Beneficios de La Reingenieria Del Software

Embed Size (px)

Citation preview

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    1/12

    MATERIA:REINGENIERA DEL SOFTWARE

    CATEDRATICO:MARIA LUISA ACOSTA SANJUAN

    CARRERA:ING.EN SISTEMAS COMPUTACIONALES

    TRABAJO:ENSAYO SOBRE LA FUNCIN Y BENEFICIO DELA REINGENIERA DEL SOFTWARE

    PRESENTA:JESSE E. HERRERA SANTIAGO

    YONIC NIETO ZEFERINOJONATHAN GIRON DE LA CRUZJORGE LUIS MENESES GARCIA

    AARON NICOLAS MORENOGRUPO: SEMESTRE:B 8-,

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    2/12

    RESUMENComo sabemos hemos cado en la famosa crisis del software pero para elaborarlo

    debemos tener en cuenta unos puntos fundamentales para garantizar la calidad del

    software y su desarrollo, funcionamiento, y beneficios, la mayor parte de los grandes

    sistemas de informacin que estn hoy funcionando en las empresas del pas fueron

    desarrollados en los aos ochenta. La irrupcin de las tecnologas relacionadas con

    Internet, el paradigma de objetos, los componentes distribuidos y la nueva mentalidad

    empresarial que intenta ofrecer mejores servicios a sus clientes, a travs de la

    evolucin en el que se encuentra actualmente el proceso de la refactorizacin de

    aplicaciones, partiendo desde la base de una reingeniera enfocada a un nivel de

    abstraccin superior al comnmente utilizado en las aplicaciones, como lo es a nivel de

    clases, mtodos, variables entre otros el desarrollo de la etapa de reingeniera del MD y

    su incorporacin a un Sistema de Soporte de Decisin (DSS) para la localizacin de

    sensores. El objetivo de la reingeniera del mtodo es automatizar tareas que hasta

    ahora eran realizadas en forma manual por el ingeniero, a fin de optimizar tiempos y

    reducir la introduccin de errores humanos y as poder tener una alternativa tambin al

    problema El nuevo software fue testeado en el DI de una planta de sntesis de

    amoniaco. El desempeo logrado por el nuevo software fue muy satisfactorio ya que

    agiliz la labor del ingeniero, permitindole reducir significativamente los tiempos de

    anlisis y evaluacin de resultados. En base a esto, consideramos que la reingeniera

    del paquete posibilitar trabajar con problemas de media a gran escala, donde el

    nmero de variables y ecuaciones requieren un manejo de estructuras de datos de

    tamao real. De este modo, el paquete resultante podr ser incorporado a otras

    herramientas de software que requieran el uso de MD como tcnica de clasificacin de

    variables.

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    3/12

    PALABRAS CLAVES

    BUG: Es un error o un defecto del software o hardware que hace que un programa

    funcione incorrectamente.

    MD: Es una consulta

    DSS: Decisiones de soporte de sistemas

    ANTLR: Es el nombre de un sistema que utiliza una herramienta llamada LOOK#, que

    permite hacer un analizador lxico

    SGItm's: Son las siglas de un sistema que se encarga de separa la escena de los datos

    del cdigo

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    4/12

    IntroduccinComo poder ver y mejorar las visin de la calidad del software y porque su importacin

    simplemente un buen trabajo para una buena paga y satisfacer las necesidades del

    cliente. La situacin de la ingeniera del software en los aos 80 slo permita una

    arquitectura fsica y lgica restringida a lo que ofreca los grandes fabricantes de

    software y hardware (sobre todo IBM, que suministraba ambos componentes

    consiguiendo as una dependencia total del cliente). Estos sistemas son sometidos a un

    mantenimiento estresante y, normalmente, indocumentado, que desemboca en una

    degradacin de la aplicacin y, por ende, en un servicio deficiente para el usuario. Las

    necesidades de evolucin y adaptacin a los nuevos requerimientos tecnolgicos y de

    negocio empujan al sistema a una nueva situacin a la que no es posible llegar a

    travs del mantenimiento clsico. En una primera aproximacin, la solucin a estos

    problemas se puede presentar a travs de dos caminos: un nuevo desarrollo que

    incorpore nuevas tecnologas y funcionalidades o por medio de la aplicacin de

    reingeniera al legacy system. En esto hay puntos fundamentales e importantes para el

    desarrollo para una buena calidad del software y su eficiencia En la actualidad es muy

    comn encontrar gran diversidad de herramientas que apoyan la refactorizacin de

    software pero principalmente a nivel del cdigo fuente, como mtodos clases, variables

    entre otras, pero no se enfocan principalmente hacia un replanteamiento de una

    arquitectura solida, flexible y escalable con el tiempo de los nuevos y cambiantes

    requerimientos a los que es inevitable evadir. El ahondarse en este tema e intentar

    darle un enfoque a la refactorizacin a nivel de patrones de diseo con miras de

    optimizar un modelo existente es una aporte que sin duda vale la pena enfatizar tanto a

    nivel acadmico como productivo. Y en los enfoques en la refactorizacin. En muchos

    de los aportes en investigacin hechos en el tema de la refactorizacin se han aportado

    varios enfoques en la aplica labilidad y sentido de la refactorizacin en la cual se

    destacan: A. Enfocados a Crud En la cual se hace nfasis de refactorizacin en la

    persistencia de los datos B. Meta - Anlisis Se describe la dependencia del anlisis en

    la cual se identifican las relaciones de las 72 refactorizaciones en java con las siete

    categoras especificadas por de flower's C. Usando clusterings Basado en algotitmos

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    5/12

    para sistemas de clusterings como kRED, HAC y PAMRED la cual tienen como funcin

    identificar los apropiados refactorings que sern desarrollados en sistemas orientados a

    objetos. Con el tiempo tambin se empeso a hablar del MD y como consiguiente, La

    implementacin del MD surgi a partir de un prototipo, y por ende, varios aspectos

    relativos a la interaccin del MD con las restantes herramientas de software usadas

    para DI no fueron inicialmente consideradas. En particular, no fue definida una interface

    con el ModGen. Por este motivo, el ingeniero de procesos es el encargado de

    manipular la informacin las ecuaciones del proceso e ingresar los datos manualmente

    al MD.

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    6/12

    Porque la importancia de la reingeniera del software

    Ante una situacin como la descrita anteriormente, las organizaciones tienen que tomar

    una determinacin que se resume en un cambio del sistema para adecuarlo a las

    nuevas necesidades.

    Este cambio puede concretarse en una de las opciones siguientes para su mejor

    desarrollo:

    Reingeni-ar el sistema

    Abandonar el sistema y sustituirlo por otro nuevo

    Optar por una solucin hbrida entre las dos anteriores

    Reingeni-ar el sistema

    La definicin dada por el Reengineering Center del Software Engineering Institute de la

    Universidad Carnegie Mellon es Reingeniera es la transformacin sistemtica de un

    sistema existente a una nueva forma para realizar mejoras de la calidad en operacin,

    capacidad del sistema, funcionalidad, rendimiento o capacidad de evolucin a bajo

    coste, con un plan de desarrollo corto y con bajo riesgo para el cliente. En esta

    definicin se enfatiza que el hecho de que la reingeniera es la mejora de sistemas

    existentes de modo que la inversin resulte muy rentable y que, de todas formas, dicha

    mejora podra ser obtenida a travs de un nuevo desarrollo. Si la reingeniera no tiene

    un coste bajo, no est acabada en poco tiempo, no tiene poco riesgo o no ofrece un

    valor aadido para el cliente, hay

    que considerar la posibilidad de un nuevo desarrollo.

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    7/12

    Abandonar

    Un sistema se abandona cuando no es capaz de

    seguir el ritmo de las necesidades del negocio y su

    reingeniera no es posible o no se puede hacer con un

    coste efectivo. Normalmente, estos sistemas adolecen

    de documentacin, de actualizacin y de capacidad de

    expansin. El abandono de un sistema comporta

    riesgos:

    Es una actividad que consume muchos recursos y

    que implica a los mantenedores actuales del sistema.

    Estos recursos estarn ocupados en el mantenimiento del sistema y, seguramente, no

    conocern las nuevas tecnologas que van a ser aplicadas en el desarrollo del nuevo

    sistema.

    Abandonar el sistema no significa empezar un desarrollo desde cero. No se puede

    pensar que los datos que contiene el legacy van a desecharse y que los valores que

    conservan los expertos del sistema van a perderse. El abandono del sistema debe venir

    precedido por un anlisis exhaustivo que permitan decidir el mtodo que se va a utilizar

    para la migracin de la informacin del sistema actual al nuevo, incluyendo datos,

    funciones de negocio y arquitectura del sistema.

    Gestionar la evolucin

    Durante el proceso de cambio del sistema hay que prever cul va a ser la gestin de su

    evolucin posterior, sobre todo para que la situacin que se vive ahora no vuelva a

    repetirse o, por lo menos, sea menos traumtica. La gestin de la evolucin debe

    consistir en dar una respuesta rpida, preparada y eficiente a los cambios que se

    produzcan en el entorno ya sean estos de ndole tecnolgico o de gestin del propio

    negocio.

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    8/12

    Cmo!

    La evolucin de un sistema es un concepto amplio; abarca desde una simple

    modificacin para corregir un bug de un programa hasta una reimplantacin completa

    del sistema. Las actividades de evolucin que se pueden realizar sobre un sistema son

    de tres tipos: mantenimiento, reingeniera y abandono.

    Reingeniera o modernizacin

    Posterior a las tcnicas de micro evolucin del mantenimiento, que tienden a moverse a

    los niveles de abstraccin ms bajos del sistema, surge la reingeniera para cubrir la

    necesidad de una evolucin ms amplia del sistema. La reingeniera trabaja todos los

    niveles de abstraccin (desde la implementacin hasta el diseo) para conseguir

    realizar cambios ms drsticos preservando los valores de negocio del sistema.

    La reingeniera de sistemas puede clasificarse segn los niveles de conocimientos

    requeridos para llevar a cabo el proyecto. La reingeniera que requiere conocimientos a

    bajos niveles de abstraccin (cdigo fuente) se llama ingeniera inversa o

    modernizacin de caja blanca y aquella que slo requiere el conocimiento de las

    interfaces del sistema se llama reingeniera propiamente dicha o modernizacin de caja

    negra

    REINGENIERA DEL MTODO DIRECTO

    La reingeniera del Mtodo Directo forma parte de la reingeniera completa del Sistema

    de Soporte de Decisin. Resolver los puntos dbiles de la implementacin del MD

    requera una reestructuracin profunda de tamao considerable. Como alternativa a un

    mantenimiento del MD, se decidi realizar la reingeniera del paquete con el objetivo de

    mantener el algoritmo base del mtodo intacto, mientras se removan las falencias de

    su implementacin. Como primer paso de la reingeniera se trabaj con las estructuras

    de datos internas originales. El diseo original del MD es altamente procedural, esttico

    y no contempla un escenario cambiante relacionado con la magnitud de los casos de

    estudio. Adems para la

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    9/12

    implementacin de la matriz de ocurrencia se utilizaba un arreglo esttico con una

    capacidad mxima de ecuaciones y variables que poda contener. Dado que la longitud

    del arreglo que implementaba a la matriz estaba fija era imposible extenderla o

    disminuirla segn el tamao real de la matriz. Como consecuencia o bien existan casos

    de estudio que no podan desarrollarse o se produca un desperdicio de espacio de

    memoria considerable.

    Por estas razones, se propuso trabajar con las estructuras dinmicas brindadas por el

    lenguaje de programacin al que se migr en la reingeniera del DSS. Visual Studio

    .NET (Balena et. al., 2003) permite: el manejo transparente de arreglos dinmicos,

    acceso directo a los elementos del arreglo y acceso secuencial de los datos de la

    matriz. De esta manera, se extrajo informacin de las estructuras estticas

    estableciendo un marco de trabajo para el rediseo de todas las estructuras estticas,

    no solo la matriz de ocurrencia.

    HERRAMIENTAS Y TCNICAS DE DETECCIN DE REFACTORIZACIN.

    La refactorizacin se apoya en muchas tcnicas y herramientas para poder afectar en

    donde se hace necesario una refactorizacin y de esta manera ser ms efectiva y

    objetiva al momento de su implementacin en el proceso de optimizacin de software, y

    entre ellas encontramos:

    A. Aplicaciones de refactorizacin

    1) Basadas en ANTLR

    Es un sistema que utiliza una herramienta llamada LOOK#, que permite hacer unanalizador lxico que parsea el cdigo en C++. Dicho analizador construye un abstracto

    rbol sintctico para cada archivo del programa.

    2) Basadas en Visualizacin

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    10/12

    Denominado SGItm's, que separa la escena de los datos del cdigo de la aplicacin con

    el objetivo de poder manipular la informacin mediante diferentes interfaces y visualizar

    los datos de una manera diferente para cada interface.

    B. Tcnicas de refactorizacin

    1) Orientadas a caractersticas de acoplamiento y cohesin. A partir del anlisis de las

    dimensiones de acoplamiento y cohesin en que se encuentre el modelo.

    2) Anlisis de la arquitectura Definiendo la arquitectura y configurando la refactorizacin

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    11/12

    ConclusinLa gran variedad de tcnicas y tecnologas existentes para la realizacin de la

    reingeniera de software ampla el prisma de posibilidades para llevar a cabo de una

    manera correcta la refactorizacin en un software, y esto de acuerdo a cada necesidad

    y enfoque que se necesite implementar. Es muy claro que existen gran cantidad de

    herramientas y tcnicas enfocadas a la reingeniera a nivel de cdigo fuente pero muy

    pocas enfocadas a la reingeniera a un nivel ms abstracto como lo es a nivel de

    patrones de diseo en bsqueda de optimizar la arquitectura existente en una

    aplicacin. En este trabajo se present la reingeniera de software correspondiente al

    mdulo de anlisis de observabilidad, el cual forma parte de un paquete de clasificacin

    de variables para diseo de instrumentacin de plantas de procesos. El objetivo fue

    lograr un software con una mejor calidad global respecto al existente, con el fin de

    adaptarlo a casos de estudio de tamao real. Los principales cambios introducidos con

    el rejuvenecimiento del software apuntaron a optimizar el uso de memoria, a travs de

    la migracin a estructuras de datos dinmicas y reduccin del almacenamiento de datos

    temporales, mejorar la interaccin hombre-mquina y disminuir la introduccin de

    errores humanos provenientes de la manipulacin no automatizada de datos por parte

    del usuario. Como resultado se obtuvo un software superior, cuyo alcance como

    herramienta se extiende ms all del diseo de instrumentacin, siendo til a otros tipos

    de problemas que utilicen la clasificacin de variables en diferentes contextos de

    desarrollo. Dado que este desarrollo se enmarca dentro de un proyecto de reingeniera

    de un sistema de soporte de decisin, las prximas etapas de nuestras investigaciones

    consistirn en aplicar la experiencia de esta primera fase en el rediseo e

    implementacin de los mdulos de anlisis de redundancia y locacin inicial de

    sensores.

  • 8/3/2019 Funcion y Beneficios de La Reingenieria Del Software

    12/12

    BIBLIOGRAFA

    http://escolar.ittux.edu.mx/file.php/298/Lecturas-ensayo_/GestionArchivosLegacy.pdf

    http://escolar.ittux.edu.mx/file.php/298/Lecturas-ensayo_/Refactorizacion-arquitectonico-

    de-software.pdf

    http://escolar.ittux.edu.mx/file.php/298/Lecturas-ensayo_/reingenieria-de-un-paquete-

    de-software.pdf

    http://klit.startnow.com/s/?q=pdf&src=defsearch&provider=&provider_name=yahoo&pro

    vider_code=&partner_id=693&product_id=741&affiliate_id=&channel=&toolbar_id=200&toolbar_version=2.4.0&install_country=MX&install_date=20111105&user_guid=D3447C

    E7F15B4E1AB9D9FE4A3493BB78&machine_id=c66b96501dafde35ade283bed0a6e08

    1&browser=CR&os=win&os_version=6.1-x86-SP0

    *__FIN__*