lunes, 27 de noviembre de 2017

Cifrado Hash


La tecnología relacionada e la seguridad web es uno de los pambitos más importantes y estudiados del desarrollo de software, pues  la cantidad de información que se mueve cada día por la web es mucha. Por ello se han desarrollado métodos que aseguran la calidad cada vez más complejos y eficaces. Uno de los más utilizados es la función criptográfica hash, el cual es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud.

A partir de un hash o huella digital, no podemos recuperar el conjunto de datos originales. Los más conocidos son el MD5 y el SHA-1. Cifrar una huella digital se conoce como firma digital. Una función hash es un algoritmo matemático que nos da un resultado B al aplicarlo a un valor inicial A.

Propiedades que debe cumplir un hash Sea cual sea la longitud del texto base A, la longitud de su hash resultante B siempre va a ser la misma. Para cada entrada A, la función generará una salida B única. Dado un texto base, es fácil y rápido (para un ordenador) calcular su número resumen. Es imposible reconstruir el texto base a partir del número resumen.

Ejemplo:

public class Empleado {
    int        IDempleado;
    String     nombre;
    Departamento dept;

    // Métodos de la Clase 

    @Override
    public int hashCode() {
        int hash = 1;
        hash = hash * 17 + IDempleado;
        hash = hash * 31 + nombre.hashCode();
        hash = hash * 13 + ((dept == null) ? 0 : dept.hashCode());
        return hash;
    }
}

La encriptación hash supone un gran avance en la materia de seguridad web debido a su fácil implementación y ejecución, ademas de ser un método seguro a la hora de realizar transacciones por internet, ya sea recuperando una contraseña o pagando por un producto en una tienda virtual.

Referencias:

Anónimo. (2017). Función Hash. 27/11/2017, de Wikipedia Sitio web: https://es.wikipedia.org/wiki/Funci%C3%B3n_hash

Donohue, B.. (2014). ¿Qué Es Un Hash Y Cómo Funciona?. 27/11/2017, de Kaspersky Sitio web: https://latam.kaspersky.com/blog/que-es-un-hash-y-como-funciona/2806/

sábado, 25 de noviembre de 2017

JUnit


JUnit es un marco de pruebas unitarias para el lenguaje de programación Java. Juega un papel crucial en el desarrollo impulsado por pruebas, y es una familia de marcos de pruebas unitarias conocidas colectivamente como xUnit.

JUnit promueve la idea de "primero probar y luego codificar", que hace hincapié en la configuración de los datos de prueba para una pieza de código que se puede probar primero y luego implementar. Este enfoque es como "prueba un poco, codifica un poco, prueba un poco, codifica un poco". Aumenta la productividad del programador y la estabilidad del código del programa, lo que a su vez reduce el estrés en el programador y el tiempo dedicado a la depuración.

Para su implementación se dará como ejemplo el siguiente código.
Las pruebas de software son uno de los procesos y actividades más importantes a la hora de desarrollar proyectos relacionados con la ingeniería de software, pues de estas depende la calidad que el proyecto posea. Por tanto, la utilización de métodos que faciliten, optimicen y sobretodo automatice dicho proceso de pruebas supone una gran mejoría en el desarrollo del proyecto y su calidad final.

Crear un nuevo archivo llamado Calculator.java
public class Calculator {
public int evaluate(String expression) {
int sum = 0;
for (String summand: expression.split("\\+"))
sum += Integer.valueOf(summand);
return sum;
}
}
Crear una prueba:
import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class CalculatorTest {
  @Test
  public void evaluatesExpression() {
    Calculator calculator = new Calculator();
    int sum = calculator.evaluate("1+2+3");
    assertEquals(6, sum);
  }
}
Ejecutar con la siguiente línea:
javac -cp .;junit-4.XX.jar;hamcrest-core-1.3.jar CalculatorTest.java

Es necesario hacer múltiples pruebas en las que incluyan resultados fallidos.


Las pruebas de software son uno de los procesos y actividades más importantes a la hora de desarrollar proyectos relacionados con la ingeniería de software, pues de estas depende la calidad que el proyecto posea. Por tanto, la utilización de métodos que faciliten, optimicen y sobretodo automatice dicho proceso de pruebas supone una gran mejoría en el desarrollo del proyecto y su calidad final.

Referencias:
Anónimo. (2009). Unit Testing and JUnit. 25/11/2017, de Indraprastha Institute of Information Technology Sitio web: https://www.iiitd.edu.in/~jalote/jalotesebook/JaloteSEbook/tmp/UnitTesting.pdf

Augusto, F. (2012). Getting started. 25/11/2017, de GitHub Sitio web: https://github.com/junit-team/junit4/wiki/getting-started

domingo, 19 de noviembre de 2017

RMI

Existen una gran cantidad de mecanismos ofrecidos por java que simplifican y optimizan tareas en las aplicaciones en gran medida. Dentro de los sistemas distribuidos, unos de los más importantes es el Remote Method Invocation (RMI),  en el cual se puede invocar un método de manera remota. Es una manera sencilla para la comunicación de servidores de aplicaciones distribuidas que estén basados en Java.

Debido a que esta basado exclusivamente en java, su uso resulta de gran facilidad, pues proporciona el paso de objetos por referencia, el cual no esta permitido en otros métodos similares, recolección de basura distribuida y el paso de tipos arbitrarios.

El uso de RMI supone exportar un objeto el cual estará disponible en la red con un programa que permanecerá en espera en un puerto. El cliente puede invocar los métodos que tenga dicho objeto en la red de acuerdo a los siguiente pasos: encapsulamiento, invocación del método, regreso del valor de retorno en caso de que haya y por último el cliente recibe la respuesta y continúa como si la invocación hubiera sido local.

La arquitectura del RMI se divide en cuatro capas. La primera capa es la de aplicación y se corresponde con la implementación real de las aplicaciones cliente y servidor. La segunda capa es la correspondiente al proxy, interactúa con la capa de aplicación y es en donde están todas las llamadas a objetos remotos. La tercer capa es la de referencia remota y es la responsable de la semántica de las invocaciones. Por último, la capa de transporte se encarga de llevar la información de una máquina a otra mediante el protocolo JRMP. 

Es así como se lleva a cabo uno de los mecanismos más fáciles de implementar y cuyo utilidad es muy basta, pues el cliente tiene el acceso de objetos y sus métodos de un servidor, ejecutándolo como si fuera local.

domingo, 12 de noviembre de 2017

Kerberos


La expansión de las utilidades de las redes ha permitido que hayan ciertas actividades cuya ejecución resulte mucho más rápida que si se hiciera personalmente. El uso de la web para realizar pagos y transacciones es uno de los usos más importantes dentro de estas redes, sin embargo, en siempre resultaba inseguro llevarla a cabo, por esta razón se implementó el sistema de kerberos, un protocolo de autenticación de redes de ordenador creado por el MIT que permite a dos ordenadores en una red insegura demostrar su identidad mutuamente de manera segura.

El sistema de kerberos no utiliza varios servicios para autenticar por medio de usuario y contraseña, si no que implementa un cifrado asimétrico o asimétrico y a un tercero para realizar dicha tarea de autenticación. Esta petición puede ser enviada por el programa de conexión para que sea transparente al usuario o puede ser enviada por otro programa después de que el usuario se registre.

El funcionamiento es el siguiente: el cliente se autentica a sí mismo contra el AS, así demuestra al TGS que está autorizado para recibir un ticket de servicio (y lo recibe) y ya puede demostrar al SS que ha sido aprobado para hacer uso del servicio kerberizado.

Sin embargo, Kerberos se vuelve vulnerable cada vez que un usuario en la red se valida contra un servicio no kerberizado y envía una contraseña en la red en texto plano. Por lo tanto no se recomienda el uso de servicios no kerberizados. Estos servicios incluyen Telnet y FTP. Se acepta el uso de otro tipo de protocolos encriptados, tales como SSH o servicios seguros SSL, pero no es ideal.


Kerberos es uno de los sistemas más utilizados por su versatilidad y seguridad a la hora de autenticar e un usuario y darle los servicios que necesite sin que, en las mayoría de las ocasiones, sea inseguro realizar alguna transacción por Internet. Este es el objetivo de todos los sistemas parecidos a este, garantizar la seguridad de la información de aquellos que utilizan estos servicios.

domingo, 5 de noviembre de 2017

Socket Stream

El uso de sockets permite a dos programas ( ya sea entre dos o más computadoras) intercambiar un flujo de datos, constituyen el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados. 

Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto.


Un Socket Es una interfaz de entrada ­salida de datos que permite la intercomunicación entre procesos. Los procesos pueden estar ejecutándose en el mismo o en distintos sistemas, unidos mediante una red. 

Existen dos tipos de sockets, por una parte, Sockets Stream, los más utilizados, hacen uso del protocolo TCP, el cual nos provee un flujo de datos bidireccional, secuenciado, sin duplicación de paquetes y libre de errores, los datos se transfieren sin encuadrarlos en registros o bloques. Si se rompe la conexión entre los procesos, éstos serán informados. A diferencia de los socket datagrama,  donde se transmiten paquetes individuales de información y no garantiza que los paquetes llegarán en alguna forma en particular.

el siguien es un ejemplo del uso de sockets stream en un servidor:


String hostName = args[0];
int portNumber = Integer.parseInt(args[1]);

try (
    Socket echoSocket = new Socket(hostName, portNumber);
    PrintWriter out =
        new PrintWriter(echoSocket.getOutputStream(), true);
    BufferedReader in =
        new BufferedReader(
            new InputStreamReader(echoSocket.getInputStream()));
    BufferedReader stdIn =
        new BufferedReader(
            new InputStreamReader(System.in))
)


Los sockets Stream y los datagrama tienen usos muy similares, mientras que uno notifica siexiste algún error a costa de mayor procesamiento, el otro es mucho más rápido y no garantiza que el destinatario reciba los paquetes.

 Cada uno de estos sockets pueden ser utilizados según las necesidades y funciones que vayan a desarrollar dentro de la red.





martes, 17 de octubre de 2017

Reporte visita INEGI

Reporte visita

El pasado viernes 13 de 2017 realizamos una visita escolar a el Instituto Nacional de Geografía y Estadística, con sede en la ciudad de Aguascalientes.

Salimos de la escuela el jueves 12 a las 11:00pm para llegar por la mañana del día siguiente. Arribamos a un lado del inmueble, autorizaron nuestra entrada, nos colocaron los gafetes de visitantes y empezó dicha visita guiada.

Primero nos llevaron a una habitación en la que se crean mapas con relieve, calentando una lámina de plástico con el mapa impreso y dándole el relieve con un molde debajo. Nos obsequiaron un mapa de la República Mexicana, con el relieve de las montañas, montes, valles, llanuras y el del océano.

Proseguimos a una exposición de seguridad web. Desafortunadamente, los expositores no estaban preparados y se notaba un cierto nerviosismo, por lo que dicha exposición no fue para nada atractiva, pero no menos importante por los temas de los que hablaron.

Tras un breve receso  tuvimos una exposición en la que un experimentado trabajador de la institución nos explicó cómo era todo lo relacionado a la informática en INEGI, tales como las herramientas de programación, las tecnologías, los procesos y algunos consejos para los que tenemos en mente trabajar en este ámbito.

Al salir del salón de usos múltiples nos llevaron hacia el edificio de informática, en donde nos mostraron, detrás de una ventana, los servidores que la institución empleaba para las enormes cantidades de información que aquí se procesa, ademas de una breve explicación de la beta de la nueva página web del INEGI y de un mapa interactivo.

Aquí concluyó la visita a la institución, devolvimos los gafetes y regresamos al camión. Comimos en un establecimientos a unos minutos de aquel lugar y partimos el viaje de regreso a la escuela.

domingo, 8 de octubre de 2017

Sockets

Hoy en día, gracias al desarrollo de la tecnología se ha podido crear métodos de comunicación cada vez más sofisticados y accesibles. Uno de los métodos más utilizados son los protocolos TCP/IP  y en menor medida UDP. Estos protocolos de comunicación han permitido que el envío y recibo de información sea mucho más rápida y eficiente que los pasados métodos, ahora obsoletos. Tanto el protocolo TCP, como el UDP tienen una característica en común, el uso de sockets.


Un socket de red es un punto de inicio o final del flujo de la información entre dos procesos regularmente desde dos computadores distintos. Estos tienen dos diferentes usos de acuerdo a su función; puede ser un socket de cliente, que busca al otro tipo de socket, el de servidor para establecer una conexión y así, permitir el flujo de la información.
Su implementación en JAVA incluye la biblioteca Java.net que proporciona tanto los sockets TCP como UDP.


Para el protocolo TCP existen dos clases: la clase Socket, la cual implementa los sockets de cliente y la ServerSocket, que implementa los sockets de servidor. Por su parte, el protocolo UDP cuenta con las clases DatagramPacket, la clase que representa un paquete datagrama y DatagramSocket, clase representa un socket para enviar y recibir paquetes datagrama.

El siguiente es un ejemplo sencillo de la implementación de sockets y crear una conexión  mediante el protocolo TCP:

public class Conexion { private final int PUERTO = 1234; //Puerto para la conexión private final String HOST = "localhost"; //Host para la conexión protected String mensajeServidor; //Mensajes entrantes (recibidos) en el servidor protected ServerSocket ss; //Socket del servidor protected Socket cs; //Socket del cliente protected DataOutputStream salidaServidor, salidaCliente; public Conexion(String tipo) throws IOException //Constructor { if(tipo.equalsIgnoreCase("servidor")) { ss = new ServerSocket(PUERTO) cs = new Socket(); } else { cs = new Socket(HOST, PUERTO); } } }
--------------------------------------------------------------------------------------------------------------------------
Para crear una clase para el servidor se implementa el siguiente código:

public class Servidor extends Conexion { public Servidor() throws IOException{super("servidor");} public void startServer()//Método para iniciar el servidor { try { System.out.println("Esperando..."); cs = ss.accept(); System.out.println("Cliente en línea"); salidaCliente = new DataOutputStream(cs.getOutputStream()); salidaCliente.writeUTF("Petición recibida y aceptada"); BufferedReader entrada = new BufferedReader(new InputStreamReader(cs.getInputStream())); while((mensajeServidor = entrada.readLine()) != null) { //Se muestra por pantalla el mensaje recibido System.out.println(mensajeServidor); } System.out.println("Fin de la conexión"); ss.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } }

Así es como se crea una conexión simple mediante sockets con el protocolo TCP.

martes, 12 de septiembre de 2017

Ensayo: Cifrado

El uso de las redes informáticas han hecho posible que haya un gran avance en el ámbito de las redes, el transporte de información es casi instantáneo y el lugar en el que se encuentre el destinatario en el mundo ya no es un problema siempre y cuando tenga acceso a internet. Sin embargo, la información no siempre está segura, en internet, el numero de amenazas y ataques es interminable. Por ello, se han creado diversos métodos con el objetivo de que la información no se vea comprometida. Uno de los más importantes es el cifrado de los datos. El cifrado son los datos que solo se pueden leer si se tienen los recursos o una clave secreta.

Dentro del cifrado existen dos tipos: el cifrado simétrico y el asimétrico. 

El cifrado simétrico es un tipo de cifrado que usa una misma clave para cifrar y para descifrar. Quien envía el mensaje cifra con la misma llave con la que se descifra.

Por otro lado, un cifrado asimétrico es también es conocida como cable pública, emplea dos llaves diferentes en cada uno de los extremos de la comunicación. Cada usuario tendrá una clave pública y otra privada. La clave privada tendrá que ser protegida y guardada por el propio usuario, será secreta y no la deberá conocer nadie. La clave pública será accesible a todos los usuarios del sistema de comunicación.

Además, con el propósito de estandarizar los cifrados, se creó la Data Encryption Standard, una norma de encriptación de datos temprana respaldada por la Oficina Nacional de Normas de Estados Unidos (NBS, ahora el Instituto Nacional de Estándares y Tecnología). Fue eliminado a principios del siglo XXI por un estándar de cifrado más seguro, conocido como Advanced Encryption Standard (AES), que era más adecuado para asegurar transacciones comerciales a través de Internet.

domingo, 10 de septiembre de 2017

Ensayo: Proceso de Depuración

Desde que las computadores eran hechas de tubos de vació y tarjetas perforadas, los errores y fallas en un sistema han sido parte importante en cuanto al estudio y desarrollo de estos. Corregir errores de software hizo posible que haya un gran avance en el ámbito, siendo este objeto de estudio y teniendo un papel en el proceso de desarrollo de software.


El proceso de depuración o depuración de un programa es un proceso que busca identificar y corregir un error de programación en un sistema de sofrware. A este proceso se le suele llamar en inglés "debugging". El término debugging fue usado por primera vez la década de 1940, en donde las computadoras eran de tamaño de habitaciones e insectos como arácnidos o polillas eran causa de errores en el sistema, de ahí el término bug "bicho".

Los procesos de depuración pueden incluir depuración interactiva, análisis de flujo de control, pruebas unitarias, pruebas de integración, análisis de archivos de registro, supervisión a nivel de aplicación o sistema, descargas de memoria y creación de perfiles.


Corregir errores es algo que cualquier persona que estudie o se dedique al desarrollo de software tiene que saber manejar correctamente, pues estos errores son muy comunes es todo el proceso de desarrollo de software, desde las primeras líneas de código, hasta las últimas pruebas que se realizan en él. Es de gran importancia comprender y saber qué hacer en cada situación que se presente, pues después de todo un error es parte de todo.

domingo, 3 de septiembre de 2017

Ensayo: Modelo TCP/IP

Ángeles Urrutia Joel 5IM7

La red arpaned, patrocinada por el Departamento de Defensa de Estados Unidos, conectó a cientos de universidades e instalaciones del gobierno usando las líneas telefónicas. A medida que esta red fue creciendo, se añadieron a ella redes de satélites y radio, es aquí cuando los protocolos existentes tuvieron problemas para interactuar con este tipo de redes, de modo que se necesitó una arquitectura de referencia nueva. La nueva arquitectura ,capaz de conectar entre sí a múltiples redes fue uno de los principales objetivos en su diseño, esta arquitectura se popularizó después como el modelo de referencia TCP/IP.

Las siglas TCP/IP se refieren a un conjunto de protocolos para comunicaciones de datos. Este conjunto toma su nombre de dos de sus protocolos más importantes, el protocolo TCP (Transmission Control Protocol) y el protocolo IP (Internet Protocol).

El modelo TCP/IP es una arquitectura en cinco capas; los datos que son enviados a la red recorren la pila del protocolo TCP/IP desde la capa más alta de aplicación hasta la más baja de acceso a red. Cuando son recibidos, recorren la pila de protocolo en el sentido contrario. Durante estos recorridos, cada capa añade o sustrae cierta información de control a los datos para garantizar su correcta transmisión.

La primer capa es la de acceso a red. Es en esta capa donde se define cómo encapsular un datagrama IP en una trama que pueda ser transmitida por la red, siendo en una inmensa mayoría de redes LAN una trama Ethernet.

La segunda es la capa de red de internet, y es en esta capa donde se utiliza más el protocolo IP, el cual se ha diseñado para redes de paquetes conmutados no orientadas a conexión, lo cual quiere decir que cuando dos equipos quieren conectarse entre sí no intercambian información para establecer la sesión.

Por encima de la capa de internet se encuentra la capa de transporte. En esta capa se encuentran definidos el protocolo TCP y el protocolo UDP (User Datagram Protocol). TCP permite enviar los datos de un extremo a otro de la conexión con la posibilidad de detectar errores y corregirlos.

Por último, la capa de aplicación incluye las aplicaciones y procesos con los que intercambia datos la capa de transporte. TCP/IP tiene en esta capa protocolos que soportan servicios de conexión remota, correo electrónico y transferencia de archivos. 

Este modelo y muchos otros fueron creados a partir de las necesidades que en aquel tiempo de la red arpanet no podía proporcionar. Y así como rápidamente la red arpante quedó siendo obsoleta, las redes como el TCP/IP no podrán con las necesidades de la sociedad en el futuro, dando la oportunidad a nuevas ideas sobre arquitectura de red, de manera que se creen redes mucho más eficaces y rápidas que si cumplan con lo que los menesteres de las personas en el mundo del futuro.

sábado, 26 de agosto de 2017

Ensayo: Redes

Angeles Urrutia Joel 4IM7

El ingenio humano y la accesibilidad de la tecnología a la mayor parte de las personas en el planeta ha permitido crear nuevas formas de llevar a cabo las actividades de diario. Una de las más importantes son las redes. Estas redes han ido evolucionando al punto que, hoy en día, es inconcebible el hecho de pensar en tener una vida normal sin su uso, pues estas ya están entre una de las prioridades he incluso necesidades de gran parte de la sociedad. Por ello, para lograr hacer avances en el ámbito es necesario conocer y diferenciar diferentes conceptos dentro del mundo de las redes.

Una red de computadoras es un conjunto equipos (computadoras y dispositivos), conectados por medio de cables, señales, ondas o cualquier otro método de transporte de datos, para compartir información, recursos y servicios. A cada una de las computadoras conectadas a la red se le denomina un nodo. 

Entre las redes existen diferentes tipos según la cobertura que abarquen. La primera y mas pequeña de todas es la red  Personal Area Network (PAN), esta red de computadora permite la comunicación entre diferentes dispositivos de uso personal (computadoras, impresoras, celulares).

La siguiente red según su cobertura es la Local Area Network (LAN), esta es utilizada en quipos pertenecientes a una misma organización y conectados dentro de un área geográfica pequeña a través de una red, es muy común el uso del ethernet con esta red.


La segunda más grande es la llamada Metropolitan Area Network (MAN) y la función que desarrollan este tipo de red es esencialmente la de proveer a un área en donde vive y/o trabaja mucha gente una interconexión para que los habitantes de esa zona puedan compartir video y voz sobre un cable de cobre o de fibra óptica.

Por último esta la red Wide Area Network (WAN), esta es la red más grande que existe ya que puede abarcar continentes o gran parte de la tierra, esta es la que une varias redes locales de menor cobertura para así lograr la comunicación entre estas.

Por otro lado, las  redes pueden ser clasificadas según su topología. 
 Una de las más utilizadas es la red de estrella, que une varios componentes a un único punto. A su vez, la red anillo enlaza o conecta a todos los componentes formando un círculo con un único cable común.

Por otra parte existe la red bus, en la que cada estación es conectada a un circuito independiente, evitando que pase por otro componente. También existe el tipo de red jerárquica, en la que los nodos o componentes están conectados en forma de árbol y cada estación tiene un nivel jerárquico.

Es importante conocer cada una de los distintos tipos de redes, pues son estas las que han permitido maravillas de la tecnología y comunicaciones como es el Internet. Usar correctamente algún tipo de red en específico en las diferentes situaciones es esencial para que cualquier nuevo proyecto dentro de las redes sea exitoso y tenga un impacto en su ámbito.

Referencia

Prof. CM Mansilla . (2009). Redes de Computadoras. 26/08/2017, de Universidad Nacional de Loja Sitio web: http://www.fca.unl.edu.ar/informaticabasica/Redes.pdf

http://assets.mheducation.es/bcv/guide/capitulo/8448129407.pdf 

Ensayo: Ingeniería de Pruebas

Ángeles Urrutia Joel 5IM7

La ingeniería de Software se hace cada vez más imprescindible en nuestras vidas cotidianas, el simple uso de una computadora o celular ya implica usar alguna aplicación o sistema desarrollado por esta disciplina, confiando nuestra información a un programa de software. Sin embargo, esto no podría darse sin que haya algún fallo, no hay programas de software sin ningún fallo, ya sea un error del desarrollador o del hardware del dispositivo, los fallos en un sistema son imposibles de corregir al %100, es necesario realizar ciertas actividades para que no hayan errores. De esto se trata la ingeniería de pruebas, una parte de la ingeniería de software que se encarga especialmente en hacer que el programa tenga los menores fallos posibles y tenga una calidad aceptable.

 Para comenzar, una prueba, dentro de la ingeniería de software es un proceso dentro de un proyecto de software encargado específicamente en encontrar errores mediante diferentes ejecuciones de un programa es ejecutado en diferentes circunstancias.  

Para entender mejor cómo se lleva a cabo una prueba, es necesario identificar y saber diferenciar diferentes conceptos; tales como un error, una falla y un defecto y verificación y validación. 

Un error es una equivocación humana, como un programador a la hora de escribir código o un esquema lógico de una aplicación incorrecto. 

Por otra parte, un fallo es la incapacidad que tiene un sistema para realizar las tareas o funciones especificadas en los requisitos y puede ser una consecuencia de un error. Un defecto es una definición errónea de un sistema de software.

Por otro lado es importante saber que verificar no es lo mismo que validar; el primero es el proceso de determinar si se está construyendo un producto correctamente y el segundo es igualmente un proceso que determina si el producto es el correcto.

Conocer estos conceptos es de gran importancia pues son las pruebas de software quienes se encargarán que el producto de un proyecto sea el adecuado y cumpla con ciertos parámetros o especificaciones declaradas en los requisitos. Las pruebas no permitirán desarrollar productos de calidad y así poder competir en el mundo de la ingeniería de software y no solo en la programación.

domingo, 20 de agosto de 2017

Ensayo: Seguridad Informática

Angeles Urrutia Joel 5IM7

Gracias al gran avance que ha habido en el ámbito de las comunicaciones con el internet, muchas de las tareas diarias de las personas han sido optimizadas en tiempo y recursos a tal escala que ahora utilizamos el internet para casi cualquier cosa, desde platicar con alguien vía videollamada, hasta realizar una transacción bancaria. Pero así como el internet ha dado tantas oportunidades de expansión, también ha permitido a que ciertas personas lo ocupen como un medio para obtener un beneficio dañando a los demás. Es por eso que es importante tener una seguridad informática, ya sea para prevenir algún infortunio o bien, para reponerse de uno. Conocer todos sus aspectos, prevenir y saber que hacer en cualquier caso es de gran importancia para realizar nuestras actividades sin que hayan infortunios en la web.


En la informática, la seguridad se refiere a la acción de protección de la infraestructura computacional de una empresa u organización incluyendo la información contenida en esta, mediante el cumplimiento de estándares, protocolos, métodos, reglas y herramientas que buscan minimizar los posibles riesgos a la infraestructura o a la información. De esta manera se busca detectar la amenazas, las cuales son todo elemento o acción que tenga la posibilidad de atentar contra la seguridad y surgen de la vulnerabilidades que puedan ser aprovechadas. Así mismo, si estas dejan de ser una amenaza y atentan contra la seguridad, pasan a ser llamadas ataques.

 Los ataques son atentados contra la seguridad y pueden incluir tomar el control, desestabilizar o dañar otro sistema informático. Hay dos tipos de ataques informáticos: el pasivo y el activo.

En un ataque pasivo el atacante no modifica ni hace uso de la información, únicamente obtiene la información de la víctima ya sea con la intercepción de datos o un análisis de tráfico.

Por otro lado, un ataque activo es aquel en que se utiliza la información adquirida, modificándola o creando un flujo falso de esta.  Un ataque activo se puede perpetrar con una suplantación de identidad, réplica de mensajes o modificación de estos.

Es por la constante amenaza que se han desarrollado diferentes mecanismos de seguridad y son todos aquellos que permiten la protección de los bienes y servicios informáticos. Estos a su vez de categorizan en preventivos, detectores, correctivos y disuasivos.

Ademas, existe un servicio de seguridad y es aquel que mejora la seguridad de un sistema de información y el flujo de información de una organización. Los servicios están dirigidos a evitar los ataques de seguridad y utilizan uno o más mecanismos de seguridad para proveer el servicio.


 El gran desarrollo que ha tenido el ámbito de las comunicaciones ha permitido a gran cantidad de gente expandir sus posibilidades y hacer muchas de las tareas diarias en mucho menos tiempo; los beneficios que el internet nos ha brindado es muy grande. Sin embargo, así como el amplio desarrollo del internet nos ha dado grandes beneficios, los métodos dedicados a atentar contra la seguridad también lo han hecho. Ahora, es indispensable estar al tanto de los tipos de ataque y los mecanismos y servicios para contrarrestarlos, sobre todo a tener en cuenta que no debemos de confiar en que no vaya a ocurrir un atentado, sino a saber que hacer en el caso de sufrir uno. No tenemos porque tener miedo o pánico a los atentados de seguridad si sabemos como prevenirlos y recuperarnos después de uno.

sábado, 19 de agosto de 2017

Ensayo: Modelo Cliente-Servidor

Angeles Urrutia Joel 5IM7

En todo sistema distribuido ha de haber componentes que ejerzan algún papel para llevar acabo un proceso dentro del mismo.  A la repartición de estas tareas o responsabilidades se le llama arquitectura de sistema. Uno de los tipos de arquitectura más importantes dentro de los sistemas distribuidos es el modelo cliente-servidor y continúa siendo ampliamente utilizado.


Su forma de funcionar es muy sencilla, se trata de un cliente que realiza peticiones o solicita recursos y un servidor que proporciona dichos recursos y procesa la información solicitada por el cliente. En el modelo cliente-servidor pueden existir también servidores que realizan peticiones a otros servidores, a estas se les llaman capas. Un claro ejemplo es el de los buscadores en Internet, el cliente realiza una solicitud al servidor del buscador y a su vez este servidor a otro para acceder. En otras ocasiones la solicitud del cliente debe pasar por una capa intermedia antes de llegar al servidor. La petición es procesada por el servidor y envía la respuesta de regreso a la aplicación (capa intermedia), hasta que llega al cliente. Un ejemplo son los servidores de las bases de datos. Un cliente interactúa  con una aplicación mandando peticiones y esta a su vez a la base de datos de la cual de manda una respuesta a través de la aplicación y llega al cliente.

El modelo de cliente servidor históricamente ha sido el más importante ya que las posibilidades que hay en su uso son muchas. Es justo por eso que la mayoría de los servicios en Internet utilizan este modelo, desde las grandes compañías como Google o Microsoft hasta las más pequeñas que se encuentran en algún sitio en la red más grande que hay. La importancia de este modelo es mucha y gracias al mismo hoy tenemos y podemos gozar de la mayoría de los servicios de Internet que cada vez son más indispensables para la vida cotidiana de cualquier persona.

Referencia:
George Coulouris, Jean Dollimore, Tim Kindberg. (2001). Sistemas distribuidos: conceptos y diseño. Madrid, España: Pearson Educación.

sábado, 12 de agosto de 2017

Ensayo Sistemas Distribuidos

Ángeles Urrutia Joel 5IM7



La tecnología de la computación ha evolucionado mucho desde sus inicios y se han hecho parte importante de la vida cotidiana principalmente por dos aspectos: el desarrollo de procesadores cada vez más pequeños, potentes y económicos, y , por otro lado el desarrollo de redes de área local y comunicaciones que permiten a las computadoras dar y recibir información con una velocidad impresionante y este es el tema del cual parten los sistemas distribuidos y está presente en muchos ámbitos relacionados, como Internet y las diferentes redes.


La definición de un sistema distribuido es "...una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones; cada máquina posee sus componentes de hardware y software que el programador percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). El programador accede a los componentes de software (objetos) remotos, de la misma manera en que accedería a componentes locales, en un grupo de computadoras que usan un middleware entre los que destacan (RPC) y SOAP para conseguir un objetivo.”.  Autor anónimo. (2014). Computación Distribuida. 10/08/2017, de Wikipedia Sitio web: https://es.wikipedia.org/wiki/Computaci%C3%B3n_distribuida

Un sistema distribuido debe contar con tres características. Una es la concurrencia y permite a los agentes dentro del sistema utilizar los recursos simultáneamente. La segunda es carecer de reloj global, significa que los mensajes entre los componentes no tienen una temporización general. Y por último fallos independientes entre los componentes y quiere decir que cada agente del sistema puede fallar de manera independiente sin perjudicar la ejecución de las demás acciones.

Otra de las características principales es que los sistemas distribuidos es que "...ofrecen la posibilidad de la interacción entre todos los equipos, pudiendo conectarse el usuario desde cualquier ordenador a otros. Es mucho más rápido el acceso a la información, además de otorgar transparencia al sistema." Sin autor. (2017). Sistemas distribuidos, características y clasificación. 11/08/2017, de Universidad Internacional de Valencia Sitio web: http://www.viu.es/sistemas-distribuidos-caracteristicas-clasificacion/

Todo sistema distribuido tiene una arquitectura cliente-servidor de dos o tres capas. El primero
es quien realiza peticiones a un servidor o host quien da la respuesta y el encargado del procesamiento central.

Los sistemas distribuido tienen protocolos, que son los que rigen cierto tipo de reglas y pasos para la comunicación entre procesos al realizar una tarea. Estos requieren la especificación de la secuencia de mensajes y de su formato. Algunos ejemplos de protocolos son: protocolo de Internet (IP), protocolo de control de transmisión (TCP) o protocolo de transferencia de hipertexto (HTTP)


Las necesidades de comunicación humanas y el gran desarrollo que ha tenido la computación en las últimas décadas han permitido que estas tecnologías lleguen a todos los rincones del planeta y sea económicamente accesible a la mayoría de la sociedad. La facilidad que tienen las computadoras de enviar y recibir información desde lugares muy lejanos entre sí se le debe en cierta parte a los sistemas distribuidos, pues son los que permiten que llegue el flujo de internet a los routers o modems y estos a su vez a la computadora. Pero las oportunidades que tienen los sistemas distribuidos no llegas hasta aquí; hoy en día, la tecnología de procesamiento de los microprocesadores ha permitido que no solo las computadoras puedan realizar estas tareas, sino también electrónicos como los teléfonos móviles y algunos de los televisores más recientes ya pueden realizar las mismas tareas de un ordenador y tener el nombre de computador. Con el paso del tiempo cada vez más aparatos electrónicos terminaran por unirse a la red.