lunes, 3 de diciembre de 2012

CASE, Ing. Web, Reingenieria



Ingenieria Asistida Por Computadora(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 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. Ya en los años 70 un proyecto llamado ISDOS diseñó un lenguaje y por lo tanto un producto 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. Mejorar la productividad en el desarrollo y mantenimiento del software
  2.  Aumentar la calidad del software
  3.  Reducir el tiempo y consto de desarrollo y mantenimiento de los sistemas informáticos
  4.  Mejorar la planificación de proyectos
  5.    Aumentar la biblioteca de conocimientos informáticos de una empresa, ayundando a la busqueda de soluciones para los requisitos
  6. Aumentar al desarrollo del software, la documentación, generación de código, pruebas de errores y la gestión de proyectos.
  7. Ayuda a la reutilización del software, portabilidad y estandarización de la documentación.
  8. Gestion global en todas las fases de desarrollo del software con una misma herramienta
  9.  Facilitar el uso de las distintas metodologías propias de la ingeniería del software.


    Clasificación





Reingenieria


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.

 
Beneficios
  1. Pueden reducir los riegos evolutivos de una organización.
  2. Puede ayudar a las organizaciones a recuperar sus inversiones en software.
  3. 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.
Actividades

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.


Restructuració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.

Restructuración de código: El tipo más común de reingeniería es la restructuració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 restructuración, se indican las violaciones de las estructuras de programación estructurada, y entonces se re estructura el código (esto se puede hacer automáticamente). El código restructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido anomalías. Se actualiza la documentación interna del código.

Restructuración de datos: La restructuración de datos es una actividad de reingeniería a gran escala. En la mayoría de los casos, la restructuració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, restructurarí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.




Ingenieria Web




¿QUE ENTIENDE USTED POR INGENIERIA WEB?
R =
La ingeniería web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad.

¿QUE COMPONENTES FORMAN PARTE DE LA INGENIERIA WEB?
R = 
  1- Diseño de sitio web
             -Interfaz
             -Estetica
             -Contenido
             -Navegacion
             -Arquitectura
             -Componentes
       2- Herramientas para el diseño.
       3- Personal espcialista para cada componente.
      
4- Procesos de la ingenieria web.
¿INGENIERIA WEB ES UNA METODO UNICO O ES LA MEZCLA DE ALGUNOS METODOS YA ESTUDIADOS?
R =
Es una mezcla de metodos como son:

    1. Diseño de proesos para aplicaciones web
    2. Generacion de codigo para aplicaciones web
    3. Herramientas case para aplicaciones web
    4. Desarrollo de web
    5. Modelo conceptual de aplicaciones web
    6. Control de calidad y prueba de sistema
    7. Ingenieria de requisito
    8. Metricas
    9. Gstion de proyecto
¿CUAL ES EL PROCESO QUE DEBE SEGUIR EL EQUIPO DE INGENIERIA WEB?
R =
    1. Formulación
    2. Planificación 
    3. Análisis 
    4. Modelización 
    5. Generación de páginas 
    6. Test 
    7. Evaluación del cliente
¿QUIENES CONFORMAN EL EQUIPO DE INGENIERIA WEB?
R = 
  1.  Desarrolladores y proveedores de contenido:Generacion y copilacion de contendio abarca una amplia gama de objetos de datos. 
  2. Editores de Web:organizacion de variado contenido para poder incluirlo en la web apps,debe haber una conexion entre el equipo tecnico de diseño y los proveedores de contenido. 
  3. Ingeniero de Web:iinvolucrado en el amplio rango de actividades,obtencion de requisitos,modelo de analisis,diseo arquitectonico,de interfaz etc.. 
  4. Especialistas de soporte_apoyo continuo a las web apps dado que esta evolucionando constantemente,los especialistas de soporte es responsable de correccion,adaptacion,y mejoras del sitio,actualizando contenido e implementando procedimientos. 
  5. Administrador:tiene la responsabilidad de la operacion diaria de la apps,desarrollo e implementacion de politicas de operaciones y de procedimientos de soporte y realimentacion. 
  6. Diseño de interfaces de usuario
  7. Desarrollo y despliegue de servicios web
  8. Metodologías de diseño web
  9. Métodos, herramientas y automatización de pruebas para aplicaciones web.
    ¿INDIQUE ALGUNAS APLICACIONES QUE NOS SIRVEN DE HERRAMIENTAS PARA LA INGENIERIA WEB?
    R =
    • Team viewer
    • Wix
    • Active Web
    • Webs
    • Magicx web Designe

    ¿INDIQUE QUE APLICACIONES DE LAS QUE HACE USB,UTILIZA LA ING. WEB?
    • Ingeniería web empírica
    • Ingeniería web movil
    • Personalización y adaptación de aplicaciones web
    • Herramientas y métodos de prototipado.
    • Control de calidad y pruebas de sistemas
    • Diseño de interfaces de usuario


No hay comentarios:

Publicar un comentario