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);
    }
}