domingo, 2 de marzo de 2014

Definición de Reingeniería de Software

INTRODUCCIÓN

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.




DEFINICIÓN


 Tenga en consideración cualquier producto de tecnología que haya adquirido. Lo ve con regularidad, pero está envejeciendo. Se rompe con frecuencia, tarda en  repararse y ya no representa la última tecnología.

Si el producto es de hardware, probablemente lo tirará y se comprará uno nuevo. Pero si es un software personalizado, no dispondrá la opción de tirarlo. Necesitará reconstruirlo. Creará un producto con una funcionalidad nueva, un mejor rendimiento y fiabilidad, y un mantenimiento mejorado. Eso es lo que llamamos reingeniería.

A nivel de negocio, la reingeniería es ejercida por especialistas de negocio (frecuentemente empresas de consultoría). A nivel de software, la reingeniería es ejecutada por ingenieros del software.

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 el negocio deberán diseñarse una vez más para mantener el ritmo

           



DESAROLLO

Los pasos de la reingeniería de software son los siguientes :

1.     Definir las Metas comerciales.
2.     Identificar y evaluar los procesos de negocios existentes.
3.     Crear Procesos Comerciales revisados que mejoren las metas comerciales.



El Proceso de la Reingeniería del Software

·        Acompaña el análisis de inventarios.
·        La reestructuración de documentos.
·        La ingeniería Inversa.
·        La estructuración de Programas y datos.
·        La ingeniería directa.




Utilizando las mismas prácticas que se aplican en todos los procesos de ingeniería del software se puede saber si un software se ha desarrollado de manera adecuada y son:
Ø  Las revisiones técnicas formales.
Ø  Las revisiones especializadas.
Ø  La comprobación.







REFERENCIAS

·         Sommerville Ian,
               Ingeniería de software, 4° edición,
       Pearson Educación, Ámsterdam 2005

·         Procesos involucrados en la Reingeniería del Software
                   Recuperado el el 2 de Marzo de 2014, de                                      
                   antares.itmorelia.edu.mx/~jcolivares/courses/is11q2/is_reengineering.ppt‎
·         Técnicas del Mantenimiento de Software
                   Recuperado el 2 de Marzo de 2014, de                                      
      http://cnx.org/content/m17439/latest/
·         Mantenimiento de Software
                   Recuperado el el 2 de Marzo de 2014, de                                      

                   http://arielvargasu.blogspot.mx/2010/12/reingenieria-del-software.html

domingo, 9 de febrero de 2014

Definición de soporte de software y tipos de mantenimiento de software

INTRODUCCIÓN

En términos generales, el soporte de software es un rango de servicios que proporcionan asistencia con un determinado software desarrollado por una empresa . Basicamente, los servicios de soporte de software tratan de ayudar al usuario a resolver determinados problemas con algún producto (software terminado).


DEFINICIÓN


 El mantenimiento del software es el proceso general de cambiar un sistema después de que  éste ha sido entregado

  Existen tres tipos diferentes de mantenimiento de software:
           
 ·      Mantenimiento para reparar defectos del software. Por lo general, los errores de código son relativamente baratos de corregir; los errores de diseño son mucho más caros ya que implican reescribir varios componentes de los programas. Los errores de requerimientos son los más caros de reparar debido a que puede ser necesario un rediseño extenso del sistema.
·      Mantenimiento para adaptar el software a diferentes entornos operativos. Este tipo de mantenimiento se requiere cuando cambia algún aspecto del entorno del sistema, como por ejemplo el hardware, la plataforma del sistema operativo u otro software de soporte. El sistema de aplicaciones debe modificarse para adaptarse a estos cambios en el entorno.
·      Mantenimiento para añadir o modificar las funcionalidades del sistema. Este tipo de mantenimiento es necesario cuando los requerimientos del sistema cambian como respuesta a cambios organizacionales o del negocio. La escala de los cambios requeridos en el software es a menudo mucho mayor que en los otros tipos de mantenimiento.


 
       *Ciclo de vida de desarrollo de software

DESAROLLO

 El Servicio de mantenimiento de software es una de las actividades en la Ingeniería de Software y es el proceso de mejorar y optimizar el software desplegado (revisión del programa), así como también remediar los defectos.

El mantenimiento de software es también una de las fases en el Ciclo de Vida de Desarrollo de Sistemas (SDLC ó System Development Life Cycle), que se aplica al desarrollo de software. La fase de mantenimiento es la fase que viene después del despliegue (implementación) del software en el campo.

La fase de mantenimiento de software involucra cambios al software en orden de corregir defectos y dependencias encontradas durante su uso tanto como la adición de nueva funcionalidad para mejorar la usabilidad y aplicabilidad del software

 A continuación se señalan los tipos servicio de mantenimientos existentes, y entre paréntesis el porcentaje aproximado respecto al total de operaciones de mantenimiento:
  • Perfectivo (60%): Mejora del software ( rendimiento , flexibilidad , reusabilidad ..) o implementación de nuevos requisitos. También se conoce como mantenimiento evolutivo .
  • Adaptativo (18%): Adaptación del software a cambios en su entorno tecnológico (nuevo hardware, otro sistema de gestión de bases de datos , otro sistema operativo ...)
  • Correctivo (17%): Corrección de fallos detectados durante la explotación.
  • Preventivo (5%): Facilitar el mantenimiento futuro del sistema (verificar precondiciones, mejorar legibilidad...).
El tiempo con el que se de un mantenimiento dependerá de las necesidades del usuario,y con que frecuencia utiliza su computadora,pero por lo general el mantenimiento a software se da cada semana o cada mes.




REFERENCIAS

·         Sommerville Ian,
               Ingeniería de software, 4° edición,
       Pearson Educación, Ámsterdam 2005

·         Plan de Soporte
                   Recuperado el 9 de febrero de 2014, de                                      
                   http://www.slideshare.net/slideshow/embed_code/21577456
·         Mantenimiento de Software
                   Recuperado el 9 de febrero de 2014, de                                      
                   http://www.sincows.com/sincows/index.php?option=com_content&view=article&id=70&Itemid=68

viernes, 29 de noviembre de 2013

Justificación por la cual nuestro sistema es distribuido

JUSTIFICACIÓN


Los sistemas distribuidos son sistemas cuyos componentes hardware y software, están en  ordenadores conectados en red, se comunican y coordinan sus acciones mediante el intercambio de mensajes, para lograr un  determinado objetivo. 

Tienen las siguientes caracteristicas:


Transparencia

La transparencia se define como la ocultación al usuario y al programador de aplicaciones de la separación de los componentes de un sistema distribuido, de manera que el sistema se percibe como un todo, en vez de una colección de componentes independientes. La transparencia ejerce una gran influencia en el diseño del software de sistema.

Tolerancia a Fallos

Los sistemas informáticos a veces fallan. Cuando se producen fallos en el software o en el hardware, los programas podrían producir resultados incorrectos o podrían pararse antes de terminar la computación que estaban realizando. El diseño de sistemas tolerantes a fallos se basa en dos cuestiones, complementarias entre sí: Redundancia hardware (uso de componentes redundantes) y recuperación del software (diseño de programas que sean capaces de recuperarse de los fallos).

En los sistemas distribuidos la redundancia puede plantearse en un grano mas fino que el hardware, pueden replicarse los servidores individuales que son esenciales para la operación continuada de aplicaciones criticas.

La recuperación del software tiene relación con el diseño de software que sea capaz de recuperar (roll-back) el estado de los datos permanentes antes de que se produjera el fallo.

Los sistemas distribuidos también proveen un alto grado de disponibilidad en la vertiente de fallos hardware. La disponibilidad de un sistema es una medida de la proporción de tiempo que esta disponible para su uso. Un fallo simple en una maquina multiuruario resulta en la no disponibilidad del sistema para todos los usuarios. Cuando uno de los componentes de un sistema distribuidos falla, solo se ve afectado el trabajo que estaba realizando el componente averiado. Un usuario podría desplazarse a otra estación de trabajo; un proceso servidor podría ejecutarse en otra maquina.

Escalabilidad

Los sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas diferentes. La escala más pequeña consiste en dos estaciones de trabajo y un servidor de ficheros, mientras que un sistema distribuido construido alrededor de una red de área local simple podría contener varios cientos de estaciones de trabajo, varios servidores de ficheros, servidores de impresión y otros servidores de propósito especifico. A menudo se conectan varias redes de área local para formar internetworks, y éstas podrían contener muchos miles de ordenadores que forman un único sistema distribuido, permitiendo que los recursos sean compartidos entre todos ellos.

Concurrencia

Cuando existen varios procesos en una única maquina decimos que se están ejecutando concurrentemente. Si el ordenador esta equipado con un único procesador central, la concurrencia tiene lugar entrelazando la ejecución de los distintos procesos. Si la computadora tiene N procesadores, entonces se pueden estar ejecutando estrictamente a la vez hasta N procesos.
En los sistemas distribuidos hay muchas maquinas, cada una con uno o mas procesadores centrales. Es decir, si hay M ordenadores en un sistema distribuido con un procesador central cada una entonces hasta M procesos estar ejecutándose en paralelo.

JUSTIFICACIÓN POR LA CUAL NUESTRO PROYECTO ES DISTRIBUIDO

Ya una vez entendido el concepto de sistema distribuido,se puede afirmar lo siguiente:




Nuestro proyecto es distribuido ya que se encuentra en el modelo compartición de recursos,es decir, esta conformado por un grupo de ordenadores que contienen diferentes módulos del sistema,esto tiene muchas ventajas ya que no solo permite ejecutar varias acciones al mismo tiempo sino tambien facilita la solución de fallos,ya sean físicos (hardware) o de sistema (software).

Cada ordenador es parte del sistema y al momento de ser ejecutado por un usuario,este lo percibe como un todo y no como un sistema dividido. Ademas,
es posible que mas ordenadores sean parte posteriormente del sistema para así optimizar el rendimiento del mismo y puede llegar ser tan extenso como se requiera y/o desee.

Como se muestra en el diagrama,el proyecto comparte recursos entre los ordenadores que lo componen,por lo que de este modo permite que varios usuarios accedan a este mas eficientemente.









jueves, 21 de noviembre de 2013

Juego sistemas distribuidos




//buscaminas.java

import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class buscaminas extends JFrame  implements ActionListener{

    int i=0, j=0, x=0, y=0, aux=0,aux2=0, puntaje=0;
int[] bombapos = new int[100];
int cont = 0;
String nombre="";
JButton[] boton = new JButton[375];
JLabel jugador1 = new JLabel();
JLabel puntaje1 = new JLabel();
public static ImageIcon pre = new ImageIcon("sand.jpeg");
public static ImageIcon bomba = new ImageIcon("bomba.gif");
public static ImageIcon click = new ImageIcon("gris.jpg");
Random aleatorio = new Random();
boolean sibomb2;
    public buscaminas() {
        setLayout(null);
nombre = JOptionPane.showInputDialog("Introduce tu nombre:");
for(aux=0;aux<100;aux++){//Aqui se crean las posiciones de las bombas-
bombapos[aux] = aleatorio.nextInt(375+1);
}
for(i=0;i<15;i++){
y += 30;
for(j=0;j<25;j++){
JButton tmp = new JButton();
x +=30;
tmp.setIcon(pre);
tmp.setBounds(10+(x),10+(y),30,30);
boton[cont] = tmp;
boton[cont].addActionListener(this);
add(boton[cont]);
/*for(aux=0;aux<100;aux++){//Colocar bombas al azar
if(cont == bombapos[aux]){
tmp.setIcon(bomba);
tmp.setBounds(10+(x),10+(y),30,30);
boton[cont] = tmp;
add(boton[cont]);
}
}*/
cont++;
}
x=0;
}
// jugador1.setText();
    }
    
public boolean comprobarbomba (int clickeado){//clickado es el boton al que el usuario dio click
for(int aux2=0;aux2<100;aux2++){
if(bombapos[aux2] == clickeado){//Hay una bomba en el mismo lugar
sibomb2 = true;
break;
}
else{
sibomb2 = false;
}
}
return sibomb2;
}
    public void actionPerformed(ActionEvent e) {
for(aux=0;aux<375;aux++){
if(e.getSource() == boton[aux]){
boolean sibomb = comprobarbomba(aux);
if(sibomb == true){//colocar imagen de Bomba.
boton[aux].setIcon(bomba);
add(boton[aux]);
boton[aux].setEnabled(false);
JOptionPane.showMessageDialog(null, "GAME OVER.\n Puntaje Total: "+puntaje); 
for(aux=0;aux<375;aux++)
boton[aux].setEnabled(false);
break;
}
else{
puntaje += 10;
boton[aux].setIcon(click);
add(boton[aux]);
boton[aux].setEnabled(false);
//JOptionPane.showMessageDialog(null, "NO HAY BOMBA, casilla no: "+aux); 
break;
}
}
}
    }
    
    public static void main(String[] args) {
        buscaminas buscaminas1 = new buscaminas();
        buscaminas1.setBounds(0,0,850,700);
buscaminas1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        buscaminas1.setVisible(true);
    }
}

















domingo, 8 de septiembre de 2013

Modelo OSI

INTRODUCCIÓN

El modelo OSI surge como una búsqueda de solución al problema de incompatibilidad de las redes de los años 60. Fue desarrollado por la ISO (International Organization for Standardization) en 1977 y adoptado por UIT-T.

Consiste de una serie de niveles que contienen las normas funcionales que cada nodo debe seguir en la Red para el intercambio de información y la ínter- operabilidad de los sistemas independientemente de suplidores o sistemas.



DEFINICIÓN
El modelo de referencia OSI es el modelo principal para las comunicaciones por red. Aunque existen otros modelos, en la actualidad la mayoría de los fabricantes de redes relacionan sus productos con el modelo de referencia OSI, especialmente cuando desean enseñar a los usuarios cómo utilizar sus productos.

El modelo de referencia OSI permite que los usuarios vean las funciones de red que se producen en cada capa; es un marco que se puede utilizar para comprender cómo viaja la información a través de una red.

Se puede usar el modelo de referencia OSI para visualizar cómo la información o los paquetes de datos viajan desde los programas de aplicación (por ej., hojas de cálculo,documentos, etc.) a través de un medio de red (por ej., cables, etc.), hasta otro programa de aplicación ubicado en otro computador de la red, aún cuando el transmisor y el receptor tengan distintos tipos de medios de red.

En el modelo de referencia OSI, hay siete capas numeradas, cada una de las cuales ilustra una función de red específica. Esta división de las funciones de networking se denomina división en capas,las cuales son:




Capa 7: La capa de aplicación
Capa 6: La capa de presentación
Capa 5: La capa de sesión
Capa 4: La capa de transporte
Capa 3: La capa de red
Capa 2: La capa de enlace de datos
Capa 1: La capa física


A continuación, se presentará una breve descripción de cada capa del modelo de referencia OSI .

Capa 7 (La capa de aplicación) : Es la capa del modelo OSI más cercana al usuario; suministra servicios de red a las aplicaciones del usuario. 
Difiere de las demás capas debido a que no proporciona servicios a ninguna otra capa OSI, sino solamente a aplicaciones que se encuentran fuera del modelo OSI. Algunos ejemplos de aplicaciones son los programas de procesamiento de texto o los de las terminales bancarias.
 La capa de aplicación establece la disponibilidad de los potenciales socios de comunicación, sincroniza y establece acuerdos sobre los procedimientos de recuperación de errores y control de la integridad de los datos.




Capa 6 (La capa de presentación) : Garantiza que la información que envía la capa de aplicación de un sistema pueda ser leída por la capa de aplicación de otro. 
De ser necesario, la capa de presentación traduce entre varios formatos de datos utilizando un formato común.

Capa 5 (La capa de sesión) :Como su nombre lo indica, la capa de sesión establece, administra y finaliza las sesiones entre dos hosts que se están comunicando. La capa de sesión proporciona sus servicios a la capa de presentación. 
También sincroniza el diálogo entre las capas de presentación de los dos hosts y administra su intercambio de datos. Además de regular la sesión, la capa de sesión ofrece disposiciones para una eficiente transferencia de datos, clase de servicio y un registro de excepciones acerca de los problemas de la capa de sesión, presentación y aplicación.

Capa 4 (La capa de transporte) ::Segmenta los datos originados en el host emisor y los reensambla en una corriente de datos dentro del sistema del host receptor. El límite entre la capa de transporte y la capa de sesión puede imaginarse como el límite entre los protocolos de aplicación y los protocolos de flujo de datos.
 Mientras que las capas de aplicación, presentación y sesión están relacionadas con asuntos de aplicaciones, las cuatro capas inferiores se encargan del transporte de datos.

Intenta suministrar un servicio de transporte de datos que aísla las capas superiores de los detalles de implementación del transporte. Específicamente, temas como la confiabilidad del transporte entre dos hosts es responsabilidad de la capa de transporte. Al proporcionar un servicio de comunicaciones, la capade transporte establece, mantiene y termina adecuadamente los circuitos virtuales. Al proporcionar un servicio confiable, se utilizan dispositivos de detección y recuperación de errores de transporte.

Capa 3 (La capa de red) :Es una capa compleja que proporciona conectividad y selección de ruta entre dos sistemas de hosts que pueden estar ubicados en redes geográficamente distintas.

Capa 2 (La capa de enlace de datos) :Proporciona tránsito de datos confiable através de un enlace físico. Al hacerlo, la capa de enlace de datos se ocupa del direccionamiento físico (comparado con el lógico) , la topología de red, el acceso a la red, la notificación de errores, entrega ordenada de tramas y control de flujo.

Capa 1 (La capa física) :Define las especificaciones eléctricas, mecánicas, de procedimiento y funcionales para activar, mantener y desactivar el enlace físico entre sistemas finales. Las características tales como niveles de voltaje, temporización de cambios de voltaje, velocidad de datos físicos, distancias de transmisión máximas, conectores físicos y otros atributos similares son definidos por las especificaciones de la capa física


DESAROLLO

Unidad de información de protocolo del modelo OSI

Para que los paquetes de datos puedan viajar desde el origen hasta su destino, cada capa del modelo OSI en el origen debe comunicarse con su capa igual en el lugar destino. Esta forma de comunicación se conoce como comunicaciones de par-a-par. Durante este proceso, cada protocolo de capa intercambia información, que se conoce como unidades de datos o información de protocolo (PDU), entre capas iguales . Cada capa de comunicación, en el computador origen, se comunica con un PDU específico de capa y con su capa igual en el computador destino.

PDU describe como la información es representada en una determinada capa. El modelo OSI tiene su propio sistemas de capas y su PDU’s respectivo. El modelo OSI se refiere a las siguientes capas con los siguientes PDU’s:

CAPAS              PDU
Aplicación         Datos
Presentación    Datos
Sesión              Datos
Transporte       Segmento
Red                  Paquete
Enlace              Marco
Físico                Bits

Los paquetes de datos de una red parten de un origen y se envían a un destino. Cada capa depende de la función de servicio de la capa OSI que se encuentra debajo de ella.  a medida que los datos se desplazan hacia abajo a través de las capas del modelo OSI, se agregan encabezados e información final adicionales. Después de que las Capas 7, 6 y 5 han agregado la información, la Capa 4 agrega más información. Este agrupamiento de datos, la PDU de Capa 4, se denomina segmento.
Por ejemplo, la capa de red presta un servicio a la capa de transporte y la capa de transporte presentadatos al subsistema de internet work. La tarea de la capa de red consiste en trasladar esos datos a través de la internet work. Ejecuta esta tarea encapsulando los datos y agregando un encabezado, con lo que crea un paquete (PDU de Capa 3). Este encabezado contiene la información necesaria para completar la transferencia, como por ejemplo, las direcciones lógicas origen y destino.

La capa de enlace de datos suministra un servicio a la capa de red. Encapsula la información de la capa de red en una trama (la PDU de Capa 2); el encabezado de la trama contiene información (por ej., direcciones físicas) que es necesaria para completar las funciones de enlace de datos. La capa de enlace de datos suministra un servicio a la capa de red encapsulando la información de la capa de red en una trama.
La capa física también suministra un servicio a la capa de enlace de datos. La capa física codifica los datos de
la trama de enlace de datos en un patrón de unos y ceros (bits) para su transmisión a través del medio (generalmente un cable) en la Capa 1. 


REFERENCIAS

·         Protocolos y modelo
                 OSI, Recuperado el 8 de septiembre de 2013, de                                                                                                                    http://www.tyr.unlu.edu.ar/TYR-publica/02-Protocolos-y-OSI.pdf
·         Definición de Modelo
                  OSI Recuperado el 25 de septiembre de 2013, de                                                                                                                   http://labv87.blogspot.mx/2011/05/modelo-osi.html
·         El modelo OSI
                  y sus caracteristicas Recuperado el 8 de septiembre de 2013, de                                                                                       http://www.exa.unicen.edu.ar/catedras/comdat1/material/ElmodeloOSI.pdf