domingo, 19 de marzo de 2017

Reeingeniería del ejemplo en Flanagan

Introducción


Para poder aplicar la Reeingeniería en un software es importante conocer todos los factores que esto implica, de misma manera, saber lo que realmente la reeingeniería de un software nos proporciona.

Recordando rápidamente, tenemos que la reeingeniería de un software en términos coloquiales es un proceso en el cuál teniendo un programa analizamos sus funciones generales que lo constituyen, así como su código fuente para saber cómo está constituido, cómo funciona y para qué sirve.

Teniendo esto en cuenta también se debe saber que este proceso cuenta que una serie de pasos para poder ser realizarlo, los cuáles son:

  • Análisis de Inventario
  • Restructuración de documentos
  • Ingeniería Inversa
  • Restructuración de código
  • Restructuración de datos

  • Ingeniería directa

ANÁLISIS DE DATOS


Clase Alumno: Esta clase se utiliza para dar de alta, modificar o eliminar alumnos en el                      sistema. Cada alumno posee los datos de año, apellidos de la persona,                                         procedencia del alumno, C.P, dirección, etc.

Clase Asignatura: En esta clase se realiza  una consulta a la base de datos para poder                         traer de esta lo siguiente: Nombre de la asignatura, tipo, cuatrimestre,                                                     créditos prácticos y créditos teóricos, esto lo imprime en un html.

Clase Matrículas: En esta clase únicamente se realiza cuna consulta a la base de datos                     correspondiente de donde trae las matrículas correspondientes de los                                                      alumnos y docentes, seguidamente los imprime.

Clase Persona: Esta clase se encarga del funcionamiento de agregar, eliminar y                                   consultar todas las personas que se encuentran registradas en el sistema.

REESTRUCTURCIÓN DE DATOS

Modulo Persona: Datos que se requieren par registrar una persona.

  • Nombre                     
  • Apellidos
  • Dirección
  • C.P
  • localidad
  • sexo
  • Provincia
  • teléfono
  • email
  • lugar de nacimiento
  • fecha de nacimiento
  • nacionalidad
Datos que requiere la persona en el sistema:
  • Acción a realizar
  • Identificador de Persona
  • número de registro

Modulo Alumno: Además de los datos como persona, en este módulo tendrá que tener los datos siguientes. 

  • Usuario
  • Contraseña 
  • Identificador de Persona
  • Pertenece a familia numerosa
  • Centro de Procedencia
  • Nota de Acceso

Modulo Asignaturas: En este módulo de deberán ingresar los siguientes datos.

  • Nombre de la Asignatura
  • Tipo de Asignatura
  • Créditos Prácticos
  • Créditos Teóricos
  • Constancia

Modulo Matrículas: Datos necesarios para este módulo.

  • Matrícula 
  • Tipos de matrícula
  • Fecha de matriculación
  • Curso
  • Alumno
  • Fecha de Pago
  • Identificador de la persona
  • Cantidad




Podemos concluir que para poder llevar a cabo la reeingeniería de software es de suma importancia que es saber la función principal del sistema, de cómo está hecho y con qué. Esto anterior muy importante para poder aplicarle modificaciones, quitarle algunas funciones, o cualquier modificación.

REFERENCIAS

Fco. Javier García Castellano. (2005-2006). Tutorial de Servlets y JDBC. 19/03/2017, de DECSAI Sitio web: http://flanagan.ugr.es/docencia/2005-2006/2/servlets/index.html

domingo, 12 de marzo de 2017

Reingeniería

La ingeniería se produce en dos niveles distintos de abstracción. En el nivel de negocios, la reingeniería se concentra en el proceso de negocios con la intención de efectuar cambios que mejoren la competitividad en algún aspecto de los negocios. En el nivel del software, la reingeniería examina los sistemas y aplicaciones de información con la intención de reestructurarlos o reconstruirlos de tal modo que muestren una mayor calidad.

"La reingeniería es un proceso mediante el cual se mejora un software existente haciendo uso de técnicas de ingeniería inversa y reestructuración de código."
La Reingeniería del software se puede definir como la 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.

Vivimos en un mundo en constante cambio. Las demandas de funciones de negocios y de tecnología de información que las soportan están cambiando a un ritmo que impone mucha presión competitiva en todas las organizaciones comerciales. Tanto los negocios como el software que soportan (o es) el negocio deberán diseñarse una vez más para mantener el ritmo.

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

PASOS DE LA REINGENIERIA DEL SOFTWARE

  1. Análisis de Inventario: 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.
  2. Restructuración de documentos: 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.
  3. Ingeniería Inversa: 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.
  4. Restructuración de código: 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.
  5. 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.
  6. 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.
REFERENCIAS
Ariel Vargas. (jueves, 9 de diciembre de 2010). Ingenieria del Software. 12 de marzo del 2017 , de Con la tecnología de Blogger. Sitio web: https://www.blogger.com/blogger.g?blogID=2721371569767035034&pli=1#editor/target=post;postID=4715231428378438049

Sin nombre. (28 abril, 2011). Reingeniería de la Ingeniería del Software. 12 de marzo del 2017, de WordPress.com Sitio web: https://isoftwareunesum.wordpress.com

Ana Toro. (26 de abr. de 2012). Ingeniería Inversa y Reingeniería. 12 de marzo del 2017, de SlideShare Sitio web: https://es.slideshare.net/moimedinaq/ingeniera-inversa-y-reingeniera-de-software?next_slideshow=1


martes, 7 de marzo de 2017

Casa Telmex

El grupo 6IM7 el día 16 de febrero del presente año se realizó una salida a Casa Telmex, donde uno puede tomar cursos para actualizarse en área de informática o programación.

En la salida se nos dieron dos tipos de cursos, donde en cada uno de ellos nos explicaban componentes, experiencias y funcionalidades de algunas cosas de programación. En una de las sesiones en mi caso (ya que al grupo nos repartieron en dos grupos) primeramente realizamos un programa en Scratch, el cuál nos indicaron que podríamos hacer un juego de gato o un buscaminas, nos explicaron como funcionaba cada uno de los juegos y después procedimos a llevarlo a cabo.

En la segunda sesión, que cabe destacar fue una de mis partes favoritas no hablaron sobre la seguridad informática, donde tuvimos una plática con el guía donde nos explicaba que tan importante es la seguridad en los programas y como nos pueden llegar a perjudicar personas externas en nuestro proyectos, según parece la idea original era llevar a cabo una práctica en cmd pero fue tanta emoción por parte del guía, del profesor que nos acompañaba y nosotros lo alumnnos que terminamos en una intensa y muy interesante plática de seguridad informática.

Al final del día compañeros con el último guía realizaron mil y un preguntas sobre seguridad informática y en la despedida los guías nos invitaron a tomar cursos gratuitos a Casa Telmex.