domingo, 23 de febrero de 2014

Reingeniería de Software

Reingeniería de Software es una forma de modernización para mejorar las capacidades y/o mantenibilidad de los sistemas de información heredados mediante la aplicación de  tecnologías y prácticas modernas.El proceso aplica principios de ingeniería para un sistema existente para encontrar nuevos requerimientos. 
Para Roger Pressman una definición completa de reingeniería implica: 
“La reingeniería del software abarca una serie de actividades  entre las que se incluye el análisis de inventario, la reestructuración de documentos, la ingeniería inversa, la reestructuración de programas y datos, y la ingeniería directa. El objetivo de esas actividades consiste en crear versiones de los programas existentes que  muestren una mayor calidad, y una mejor mantenibilidad.”

Los objetivos de la Reingeniería de Software son:

  • Proporcionar asistencia automatizada para el mantenimiento. 
  • Reducir los errores y costos del mantenimiento. 
  • Incrementar la intercambiabilidad del grupo de mantenimiento. 
  • Hacer sistemas fáciles de entender, cambiar y probar. 
  • Habilitar la conversión y migración de sistemas. 
  • Reforzar el apego a estándares. 
  • Mejorar la respuesta a peticiones de mantenimiento. 
  • Mejorar el estado de ánimo del grupo de mantenimiento. 
  • Proteger y extender la vida del sistema. 
  • Re-usar componentes de sistema existentes.

Ventajas y Desventajas

Hacer reingeniería de un sistema software, según Ian Sommerville, tiene dos ventajas 
clave sobre aproximaciones más radicales a la evolución del sistema: 
 
  1. Riesgo reducido. Existe un alto riesgo en volver a desarrollar software crítico para los negocios. Pueden cometerse errores en la especificación, o puede haber problemas en el desarrollo. Los retrasos en la introducción del nuevo software pueden significar pérdidas en el negocio e incurrir en costes adicionales. 
  2. Coste reducido. El coste de hacer reingeniería es significativamente menor que el coste de desarrollar nuevo software.
La principal desventaja de la reingeniería del software es que existen límites prácticos a la 
extensión del sistema que puede ser mejorada mediante reingeniería.

EL MODELO CÍCLICO 

Este modelo define [Pressman] seis actividades las cuales se muestran en la figura. En 
algunas ocasiones, estas actividades se producen de forma secuencial y lineal, pero esto no 
siempre es así.


Análisis de inventario.
Todas las organizaciones de software deberán disponer de un inventario de todas sus aplicaciones. El inventario puede que no sea más que una hoja de calculo con la información que proporciona una descripción detallada (por ejemplo: tamaño, edad, importancia para el negocio) de todas 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. 

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
El término “ingeniería inversa” tiene sus orígines 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.
El término “ingeniería inversa” tiene sus orígines 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.
La ingeniería inversa del software es algo bastante similar. Sin embargo, 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 (con frecuencia efectuado hace muchos años). Los “secretos” que hay que comprender resultan incomprensibles porque nunca se llegó a desarrollar una especificación.

Reestructuración del código. 
Para llevar a cabo esta actividad, se analiza el código fuente mediante 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. 
A diferencia de la reestructuración de código, que se produce en un nivel relativamente 
bajo de abstracción, la estructuración de datos es una actividad de reingeniería a gran escala. En la mayoria de los casos, la reestructuración de datos comienza por una actividad de ingeniería inversa. La arquitectura de datos actual se analiza minuciosamente y se 
definen los modelos de datos necesarios. 

Ingeniería directa (foward engineering). 
La ingeniería directa, que se denomina también renovación o reclamación, no solamente recupera la información de diseño de un software ya existente, sino que, además, utiliza esta información en un esfuerzo por mejorar su calidad global. En la mayoría de los casos, el software procedente de una reingeniería vuelve a implementar la funcionalidad del sistema existente, y añade además nuevas funciones y/o mejora el rendimiento global. 

___________________________________
Bibliografía
  • INGENIERÍA DEL SOFTWARE. Séptima edición, lan Sommerville. PEARSON EDUCACIÓN, S.A., Madrid, 2005. 
  • INGENIERÍA DEL SOFTWARE. Séptima edición, lan Sommerville. PEARSON EDUCACIÓN, S.A., Madrid, 2005. 




domingo, 16 de febrero de 2014

Leyes de Lehman

La dinámica de la evolución de los programas fue muy estudiado desde los años 70, este trabajo continuó en los 90's cuando Lehman y otros investigaron la importancia de la realimentación en los procesos de evolución.
Gracias a esto propusieron un conjunto de leyes concernientes a los cambios que sufren los sistemas. Señalan que son invariantes y ampliamente aplicables. 

1. Cambio continuado
Un programa que se usa en un entorno real necesariamente debe de cambiar o se volverá progresivamente menos útil en ese entorno. El mantenimiento es un proceso inevitable, a medida que el entorno del proceso cambia los requerimientos también, por lo que se entra en un momento donde el proceso de evolución se recicla. 
2. Complejidad creciente
A medida que el programa cambia va perdiendo su estructura original, ésta se va degradando y tiende a ser más compleja. La única forma de que esto no suceda es que se invierta en el mantenimiento preventivo. Obviamente esto implica más tiempo y más recursos de los que se habían contemplado en el presupuesto inicial. 
3. Evolución prolongada del programa
Los grandes sistemas tienen su propia dinámica que se establece en una etapa temprana del desarrollo. Esto determina las tendencias generales del proceso de mantenimiento y limita el número de cambios posibles en el sistema. 
4. Estabilidad organizacional 
El tiempo de vida de un programa, su velocidad de desarrollo es aproximadamente constante e independiente de los recurso que se le dediquen. A esto se le denomina estado saturado que significa que si existe un cambio en el personal o en los recursos asignados al sistema, éste tiene modificaciones imperceptibles en su evolución a largo plazo. 
5. Conservación de la familiaridad
Durante el tiempo de vida del sistema, el cambio incrementar es constante. Al añadir una nueva funcionalidad se le encontrarán nuevos defectos por lo que se sugiere que a los cambios que se la hagan se tengan contemplados los arreglos para los defectos que se podrían encontrar. 
6. Crecimiento continuado
La funcionalidad ofrecida por el sistema cambia constantemente (tiene que crecer) para mantener la satisfacción de los usuarios. 
7. Decremento de calidad
La calidad de los sistemas comenzará a disminuir a menos que dichos sistemas se adapten a los cambios que sufre su entorno. 
8. Realimentación del sistema
Los procesos de evolución incorporan sistemas de realimentación multiagente y multibucle y éstos deben de ser tratados como sistemas de realimentación para lograr una mejora significativa del producto. 

Las primeras cinco leyes fueron propuestas inicialmente, y la demás de agregaron con trabajos posteriores en donde se llega a la conclusión de que llegará un momento en que los usuarios estarán descontentos con el sistema que se analice si este no se adapta a las necesidades que vayan surgiendo en el entorno. 
______________________
  • Somerville I. (2005). Ingeniería de Software. Madrid, España: Pearson Educación S.A. 

lunes, 3 de febrero de 2014

Mantenimiento de Software


El mantenimiento del Software forma parte del ciclo de vida del desarrollo de un proyecto de Software siendo una de las partes más importantes y en las que se invierte un mayor tiempo y esfuerzo. 
Existen diferentes tipos de mantenimiento: Preventivo, Correctivo, Adaptativo y Perfectivo. 

Mantenimiento Preventivo
El mantenimiento preventivo es el proceso por el cual se mejora y optimiza el sistema que se ha instalado, este mantenimiento se realiza para la prevención de posibles problemas que puedan llegar a surgir a medida que se utiliza el sistema.

Mantenimiento Correctivo
El mantenimiento correctivo de un Sistema se realiza para solucionar fallas que se puedan encontrar al momento de su uso.

Mantenimiento Adaptativo
El mantenimiento Adaptativo de un Sistema es la modificación del mismo que se realiza después de la entrega para permitir que éste pueda seguirse utilizando al adaptarse a los nuevos sistemas operativos o nuevo hadware disponible. 

Mantenimiento Perfectivo
Es la modificación del Sistema luego de su entrega para mejorar sus prestaciones o facilitar futuras actividades de mantenimiento. Puede perfeccionarse un sistema de software incorporando nuevas funcionalidades, o mejorando sus tiempos de ejecución.
Todos los Sistemas de Software tendrán su mantenimiento preventivo pero dependerá de su desarrollo para saber si podrán perfeccionarse, adaptarse o corregirse dependiendo del tiempo que se tome y del dinero que se necesite. 

viernes, 29 de noviembre de 2013

Proyecto Distribuido

Un sistema distribuido se define como una colección de computadores autónomos conectados por una red, y con el software distribuido adecuado para que el sistema sea visto por los usuarios como una única entidad capaz de proporcionar facilidades de computación.
Después de ver y analizar esta definición puedo decir porque nuestro proyecto SAP es un Sistema Distribuido. 
Lo que se espera lograr con este Sistema es que dos o más usuarios puedan usar nuestra plataforma al mismo tiempo compartiendo el software y se puedan comunicar y realizar procesos a través de una red. 

domingo, 8 de septiembre de 2013

Modelo OSI (Open System Interconnected)

El modelo de interconexión de Sistemas Abiertos (OSI) fue establecido en el año de 1980 por la Organización Internacional para la Estandarización (ISO) con el fin de tener un marco de referencia para definir la arquitectura de la interconexión de los  sistemas informáticos para enfrentar el problema de la incompatibilidad de redes entre los equipos de diferentes compañías.
El modelo está divido en siete capas:

Aplicación

Esta capa actúa como una ventana proporcionando la interfaz y servicios que soportan las aplicaciones que usa el usuario.

Presentación

El objetivo de esta capa es que sin importar la representación interna de la información, esta pueda ser interpretada en cualquier otro equipo.
También es la encargada de cifrar y comprimir los datos. El formato del paquete de datos que se crea en esta capa será el que viajará por las capas restantes, aunque se irán añadiendo elementos al paquete.

Sesión

Es la encargada de establecer el enlace de comunicación y sesión y también de finalizarlo además de que gestiona la sesión entre los nodos involucrados.
Los protocolos que operan en la capa de sesión pueden proporcionar dos tipos distintos de enfoques para que los datos vayan del emisor al receptor: la comunicación orientada a la conexión y la comunicación sin conexión.

Transporte

Es la encargada de controlar el flujo de datos entre los nodos que se están comunicando sino que deben de ser entregados sin errores y en la secuencia que procede. También se encarga de evaluar el tamaño de los paquetes con el fin de que tengan el tamaño establecido por las capas inferiores del conjunto de protocolos.

Red

En esta capa se determina la ruta por la cuan deben de seguir los paquetes de datos y verifica que su entrega sea realizada con éxito. Los routers operan en esta capa y utiliza los protocolos de encaminamiento para determinar la ruta que deben de seguir os paquetes de datos.

Enlace de datos

Al llegar a esta capa los paquetes de datos se ubican en tramas o unidades e datos que viene definidas por la arquitectura de red que se está utilizando. Se encarga de desplazar los datos por el enlace físico de comunicación hasta el nodo receptor, e identifica cada computadora incluida en la red de acuerdo con su dirección de hadware. Esta capa también se asegura de que las tramas enviadas por el enlace físico se reciben sin ningún error.

Física

En la capa física las tramas procedentes de la capa de enlace de datos se convierten en una secuencia única de bits que puede transmitirse por el entorno físico de la red. La capa física también determina los aspectos físicos sobre la forma en que el cableado esta enganchado a la NIC de la computadora.

domingo, 25 de agosto de 2013

Red

¿Qué es una red?

Una red se puede definir como una interconexión de computadoras que transmiten datos a través de un protocolo.

Tipos de red


·         LAN (Local Area Network)
Son redes de propiedad privada que se encuentran en un solo edificio o en un campus de pocos kilómetros de longitud. Se utilizan ampliamente para conectar computadoras personales y estaciones de trabajo en oficinas de una empresa y de fábricas para compartir recursos.
·        MAN (Metropolitan Area Network)
Ésta alcanza un área geográfica equivalente a una ciudd. Se caracteriza por utilizar una tecnología análoga a las redes LAN, y se basa en la utilización de dos buses de carácter unidireccional, independientes entre sí en lo que se refiere a la transmisión de datos.
·        WAN(Wide Area Network)
Estas redes se basan en la conexión de equipos informáticos ubicados en un área geográfica extensa, por ejemplo entre distintos continentes. Al comprender una distancia tan grande la transmisión de datos se realiza a una velocidad menor en relación con las redes anteriores. Sin embargo, tienen la ventaja de trasladar una cantidad de información mucho mayor. La conexión es realizada a través de fibra óptica o satélites.



Topologías de red.

La topología de red es la representación geométrica de la relación entre todos los enlaces y los dispositivos que los enlazan entre sí (habitualmente denominados nodos).

Bus

Una Red en forma de Bus o Canal de difusión es un camino de comunicación bidireccional con puntos de terminación bien definidos. Cuando una estación trasmite, la señal se propaga a ambos lados del emisor hacia todas las estaciones conectadas al Bus hasta llegar a las terminaciones del mismo. Así, cuando una estación trasmite su mensaje alcanza a todas las estaciones, por esto el Bus recibe el nombre de canal de difusión.


Anillo

La topología en anillo se caracteriza por un camino unidireccional cerrado que conecta todos los nodos. Dependiendo del control de acceso al medio, se dan nombres distintos a esta topología: Bucle; se utiliza para designar aquellos anillos en los que el control de acceso está centralizado (una de las estaciones se encarga de controlar el acceso a la red). Anillo; se utiliza cuando el control de acceso está distribuido por toda la red.

Estrella

La topología en estrella se caracteriza por tener todos sus nodos conectados a un controlador central. Todas las transacciones pasan a través del nodo central, siendo éste el encargado de gestionar y controlar todas las comunicaciones. Por este motivo, el fallo de un nodo en particular es fácil de detectar y no daña el resto de la red, pero un fallo en el nodo central desactiva la red completa.


Malla

Cada nodo está conectado a todos los nodos. De esta manera es posible llevar los mensajes de un nodo a otro por distintos caminos. Si la red de malla está completamente conectada, no puede existir absolutamente ninguna interrupción en las comunicaciones. Cada servidor tiene sus propias conexiones con todos los demás servidores.

Fuentes

Schwartz  M., (1984). Redes de telecomunicaciones. Estados unidos: Addison Wesley.
Tanenbaum A. S., (2003). Redes de computadoras. Cuarta Edición. Amsterdam, Holanda: Pearson Educación.

domingo, 18 de agosto de 2013

Comunicación

Se define a la comunicación como un proceso en el cual un emisor y receptor transmiten información a través de un medio.

Proceso de comunicación

El  proceso de comunicación es bidireccional, es decir, hay dos partes involucradas.
El emisor inicia el proceso de comunicación construyendo un mensaje y enviándolo a un receptor, éste a su vez analiza la información y reconstruye el mensaje. El receptor analiza y reconstruye significados y  se convierte en u emisor al responder el mensaje que le fue enviado. (Berlo, 1984).
En 1948, Shannon y Weaver lanzaron una teoría matemática de la comunicación. El modelo de Shannon se representa por un esquema compuesto por cinco elementos: una fuente, un transmisor, un canal, un receptor, un destino. Dentro de este modelo incluimos el ruido, que aporta una cierta perturbación.


Los elementos del modelo de Shannon y Weaver

a) La fuente: es el elemento emisor inicial del proceso de comunicación; produce un cierto número de palabras o signos que forman el mensaje a transmitir.
b) El transmisor: es el emisor técnico, esto es el que transforma el mensaje emitido en un conjunto de señales o códigos que serán adecuados al canal encargado de transmitirlos.
c) El canal: es el medio técnico que debe transportar las señales codificadas por el transmisor.
d) El receptor: Su función consiste entonces en decodificar el mensaje transmitido y vehiculizado por el canal, para transcribirlo en un lenguaje comprensible por el verdadero receptor, que es llamado destinatario.
d) El destinatario: constituye el verdadero receptor a quien está destinado el mensaje.
f) El ruido: es un perturbador, que parasita en diverso grado la señal durante su transmisión.

Fuentes: Berlo D.K.(1984). Redes de Comunicación, México, Ed. Norma.