domingo, 16 de febrero de 2014

Leyes de Lehman

Introducción:

En la Ingeniería de Software, las Leyes de la Evolución del Software, son una serie de leyes que Meir Lehman formuló en 1974.
Las leyes describen un balance entre fuerzas que ayudan al desarrollo de los sistemas de software, y de otras que realentizan el proceso.
Debido a que casi todo el software está destinado a cambiar durante el curso de su existencia, Lehman determinó ocho leyes que deben cumplirse si se quiere que el software sobreviva.
En un artículo publicado en 1980, Lehman distinguió tres categorías de software:
Un programa-S de "Specification" está escrito según a una especificación exacta sobre lo que el programa puede hacer.
Un programa-P de "Procedures" está escrito para implementar ciertos procedimientos que determinan completamente lo que el programa puede hacer.
Un programa-E de "Enviroment" está escrito para llevar a cabo actividades en el mundo real, sus funciones deben de estar intrínsecamente ligadas al entorno al que está implementado, por lo tanto debe adaptarse a las circunstancias de su entorno y a cualquier cambio.
Lehman señaló que las Leyes de la Evolución del Software se aplican solo a la tercera categoría, los programas-E.

Desarrollo:

Las leyes son:
  1. Cambio continuo: Un programa que se usa en un entorno real necesariamente debe cambiar o se volverá progresivamente menos útil y menos satisfactorio para el usuario.
  2. Complejidad creciente: A medida que un programa en evolución cambia, su estructura tiende a ser cada vez más compleja. Se deben dedicar recursos extras para preservar y simplificar su estructura.
  3. Autoregulacion La evolución de los programas es un proceso autoregulado. Los atributos de los sistemas, tales como tamaño, tiempo entre entregas y la cantidad de errores documentados son aproximadamente invariantes para cada entrega del sistema.
  4. Estabilidad organizacional: Durante el tiempo de vida de un programa, su velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados al desarrollo del sistema.
  5. Conservación de la familiaridad: A medida que un sistema evoluciona todo lo que está asociado con ello, como los desarrolladores, personal de ventas, y usuarios por ejemplo, deben mantener un conocimiento total de su contenido y su comportamiento para lograr una evolución satisfactoria. Un crecimiento exagerado disminuye esta capacidad. Por tanto este incremento promedio debe mantenerse.
  6. Crecimiento continuado: La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para mantener la satisfacción de los usuarios.
  7. Decremento de la calidad: La calidad de los sistemas software comenzará a disminuir a menos que dichos sistemas se adapten a los cambios de su entorno de funcionamiento.
  8. Realimentación del sistema: Los procesos de evolución incorporan sistemas de realimentación multiagente y multibucle y estos deben ser tratados como sistemas de realimentación para lograr una mejora significativa del producto.

Conclusión:

Es interesante que desde los años setentas se hallan establecido leyes que describen la evolución del software de entorno, y que además sigan vigentes hasta nuestros días. Dichas leyes deben considerarse y aplicarse en el mantenimiento de los programas-E si se desea que sigan cubriendo los requerimientos para los que fueron creados y los nuevos que vallan surgiendo, ya que el mundo es un lugar que está en constante cambio y no es posible crear un sistema que sea eterno e inmutable.

lunes, 3 de febrero de 2014

Mantenimiento de Software

Introducción:

El mantenimiento de software es una etapa del ciclo de vida del desarrollo de sistemas, el cual consiste en un desarrolloa pequeña escala, de carácter evolutivo. Empieza una vez que se ha realizado la implementación, se hace para corregir errores, mejorar el rendimiento, añadir requerimientos, actualizar bases de datos u otra clase de cambios que son pequeños en comparación con la etapa de desarrollo.
Se piensa que el mantenimiento de software es en su mayoría corrección de defectos, pero un estudio hecho en 1997 reveló que alrededor del ochenta por ciento del trabajo de mantenimiento son mejoras al sistema.
El mantenimiento del software y la evolución de los sistemas fue abordada por primera vez por Meir M. Lehman en 1969, quien descubrió que los sistemas evolucionan en complejidad, acercándose cada vez más a la perfección.

Desarrollo:

El mantenimiento puede ser clasificado en varias clases.
El mantenimiento preventivo se realiza para aumentar la fiabilidad del software, y con ello minimizar la posibilidad de que llegara a fallar.
En el mantenimiento correctivo se diagnostican y se corrigen errores que no fueron encontrados durante la etapa de pruebas, entonces es muy probable que tales errores hallan sido encontrados por los fallos que reportaron los usuarios del sistema.
En el mantenimiento adaptativo se realizan modificaciones al software para hacer frente a cambios en el ambiente del software, osea que se adapta el software a nuevas necesidades exteriores, como el uso de una nueva tecnología. El mantenimiento adaptativo se realiza cuando el costo beneficio de modificar el software para adaptarlo a nuevas condiciones, es menor al costo de desarrollar un nuevo sistema desde cero.

Conclusiones:

El mantenimiento es una tarea menos difícil que el desarrollo de software, pero es una tarea extensa, ya que se debe realizar durante todo el tiempo que el sistema esté implementado, para asegurar su correcto funcionamiento.
Cualquier trabajo que se le haga al software después de ser implementado, puede ser considerado trabajo de mantenimiento.

Fuentes:

  • Wikipedia
http://es.wikipedia.org/wiki/Mantenimiento_de_software
  • Experiencia personal adquirida durante mi carrera de técnico en programación en el CECyT 9.

jueves, 21 de noviembre de 2013

Cliente en juego de Voley Ball distribuido

Yo la hago de cliente en éste código :)!!!
La parte del servidor la tiene mi amigo Fernando.
Si alguien se lo quiere piratear, con todo gusto se lo paso, mándenme un mensaje para darles la otra parte :)


//Este código es un cliente que se conecta al servidor para empezar a jugar
//Acoltzi Santillan Fernando Acoltzi & Gian Carlo Armas Ascacio 5IM6
import java.io.*;
import java.net.*;

class Cliente {

    static final String HOST = "127.0.0.1";
    static final int Puerto = 1234;
   
    //variables del juego
    String player1 = "";//jugador que saca primero
        String player2 = "";//jugador que recibe primero
                 String tap = "";//balón tapado
         int man = 0;//balón mandado
                 int PPT1 = 0;//opción 1 del piedra papel o tijera
                 String PPT2 ="";//opción 2 del piedra papel o tijera
                 String PPTS="";
         int op1 = 0;
         int op2 = 0;
                
                String jugador1="";
                String jugador2="";
                int puntos1=0;
                int puntos2=0;
   
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    public Cliente() {
        try {
            Socket skCliente = new Socket(HOST, Puerto);
            //recibir datos recibir
            InputStream aux = skCliente.getInputStream();
            DataInputStream recibir = new DataInputStream(aux);
            System.out.println(recibir.readUTF());
            //enviar datos enviar
            OutputStream aux2 = skCliente.getOutputStream();
            DataOutputStream enviar = new DataOutputStream(aux2);
             System.out.println(recibir.readUTF());
            //Barra
            //fin barrea
           
        System.out.println("Ingrese su nombre");
        try{
        jugador1=br.readLine();
        }catch(IOException e){
        System.out.println("Error");
        }
        enviar.writeUTF(jugador1);
        System.out.println(recibir.readUTF());
        System.out.println(recibir.readUTF());
       
            for(int j=0; j<5; j++){
        System.out.println("\n "+ jugador1 +" seleccione:");
                System.out.println("Hacia donde quieres tapar el balón?");
                         System.out.println("---RED---");
                         System.out.println("*********");
                         System.out.println("****1****");
                         System.out.println("*********");
                         System.out.println("****2****");
                         System.out.println("*********");
                         System.out.println("****3****");
                         System.out.println("*********");
                         tap = br.readLine();
                         enviar.writeUTF(tap);
                       
                        System.out.println(recibir.readUTF());
                   
        System.out.println("\n "+ jugador1 +" seleccione:");
       
                System.out.println("¿Hacia donde vas a mandar el balón?");
                         System.out.println("*********");
                         System.out.println("****3****");
                         System.out.println("*********");
                         System.out.println("****2****");
                         System.out.println("*********");
                         System.out.println("****1****");
                         System.out.println("*********");
                         System.out.println("---RED---");
                tap = br.readLine();
             enviar.writeUTF(tap);
             System.out.println(recibir.readUTF());
             }
                        System.out.println(recibir.readUTF());
                        System.out.println(recibir.readUTF());
                        System.out.println(recibir.readUTF());
                        System.out.println(recibir.readUTF());
           
           
           
           
           
           
            skCliente.close();
        } catch (Exception e) {
       
            System.out.println(e.getMessage());
        }
    }

    public static void main(String[] arg) {
        new Cliente();
    }
}

domingo, 25 de agosto de 2013

Redes

Una red informática es un conjunto de computadoras y software conectados entre sí por medio de dispositivos físicos, como cables, ondas electromagnéticas o cualquier otro medio para el transporte de datos, con la finalidad de compartir información, recursos y ofrecer servicios.
Como compartir información es la definición de comunicación, en todo proceso de comunicación se requiere de un emisor, un receptor, un mensaje, un medio y un canal.
Ver trabajo de comunicación.
La estructura y el modo de funcionamiento de las redes informáticas actuales están definidos en varios estándares, siendo el más importante y extendido de todos ellos el modelo TCP/IP basado en el modelo de referencia OSI. Este último, estructura cada red en siete capas con funciones concretas pero relacionadas entre sí; en TCP/IP se reducen a cuatro capas.

Clasificación de redes

Por alcance

  • PAN (Personal Area Network): Red de Área personal.
  • LAN (Local Area Network): Red de Área local.
  • MAN (Metropolitan Area Network): Red de Área Metropolitana.
  • WAN (Wide Area Network): Red de Área Ancha.
  • SAN (Storage Area Network): Red de Área de Almacenamiento, es una red concebida para conectar servidores, matrices de discos y librerías de soporte, permitiendo el tránsito de datos sin afectar a las redes por las que acceden los usuarios.

Por tipo de conexión

Medios guiados:
  • El cable coaxial.
  • El cable de par trenzado.
  • La fibra óptica.
Medios no guiados:
  • Red por radiofrecuencias.
  • Red por infrarrojos.
  • Red por microondas.

Por relación funcional

  • Cliente-servidor.
  • Peer-to-peer.

Por tecnología

  • Red Point-To-Point es aquella en la que existe multitud de conexiones entre parejas individuales de máquinas. Este tipo de red requiere, en algunos casos, máquinas intermedias que establezcan rutas para que puedan transmitirse paquetes de datos. El medio electrónico habitual para la interconexión es el conmutador, o switch.
  • Red broadcast se caracteriza por transmitir datos por un sólo canal de comunicación que comparten todas las máquinas de la red. En este caso, el paquete enviado es recibido por todas las máquinas de la red pero únicamente la destinataria puede procesarlo. Las equipos unidos por un concentrador, o hub, forman redes de este tipo.

Por la direccionalidad de los datos

  • Simplex o unidireccional.
  • Half-duplex no simultáneo bidireccional.
  • Full-dúplex o dúplex,: los dos equipos involucrados en la comunicación lo pueden hacer de forma simultánea, transmitir y recibir.

Por grado de autentificación

  • Red privada.
  • Red de acceso público.

Por grado de difusión

  • Una intranet es una red de ordenadores privados que utiliza tecnología Internet para compartir dentro de una organización parte de sus sistemas de información y sistemas operacionales.
  • Internet es un conjunto descentralizado de redes de comunicación interconectadas que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial.

Por servicio o función

  • Red comercial.
  • Red educativa.
  • Red para el proceso de datos.

Topología de Redes

 
  • Red en bus: Tiene un único canal de comunicaciones al cual se conectan los diferentes dispositivos.
  • Red en anillo: Cada estación está conectada a la siguiente y la última está conectada a la primera.
  • Red en estrella: Las estaciones están conectadas directamente a un punto central y todas las comunicaciones se han de hacer necesariamente a través de éste.
  • Red en malla: Cada nodo está conectado a todos los otros.
  • Red en árbol: Los nodos están colocados en forma de árbol. Desde una visión topológica, la conexión en árbol es parecida a una serie de redes en estrella interconectadas salvo en que no tiene un nodo central.
  • Red mixta: Se da cualquier combinación de las anteriores.



 

domingo, 18 de agosto de 2013

 
COMUNICACIÓN
 
Introducción:
La comunicación es un proceso cuyo fin es el de transmitir información de una entidad a otra. Es un proceso por que para que exista la comunicación, deben realizarse una serie de pasos dependiendo del contexto. La información son datos interpretados siguiendo un código. La definición actual de comunicación usa el concepto "entidad" y no persona como se usaba tradicionalmente porque se ha demostrado que los animales pueden comunicarse y más recientemente, las computadoras, el cual es el tema de interés en este trabajo.
 
 
Desarrollo:
El proceso general de la comunicación requiere al menos 2 entidades, un emisor y un receptor. Requiere un canal, el cual es la forma en la que se codifica el mensaje. También requiere un medio, el cual es la forma en la que el mensaje viaja al receptor. Por último requiere un referente, que es la realidad a la que se refiere el mensaje, la cuál es propia del contexto en el que se encuentra.
La comunicación en las computadoras es algo muy similar, igual hay un emisor y un receptor, y ambos pueden cambiar papeles. La información es enviada codificada y es tarea de la computadora interpretarla. El medio por el cual viaja la información es varía, pudiendo ser alámbrica o inalámbricamente. El referente es algo único en las computadoras, ya que salirse del contexto en este caso sería problemático.
 
 
Conclusión:
La comunicación es de las actividades que más ha impulsado a la humanidad al nivel actual (probablemente la más importante), y actualmente aplicada a las computadoras podemos extender nuestros sentidos y comunicarnos con todo el mundo de una forma fácil y eficiente.