Powered By Blogger

miércoles, 3 de agosto de 2011

Redes Informaticas

 La teoría de las redes informáticas no es algo reciente. 
La necesidad de compartir recursos e intercambiar información fue una inquietud permanente desde los primeros tiempos de la informática. Los comienzos de las redes de datos se remontan a los años ’60 ,  en los cuales perseguían exclusivamente fines militares o de defensa.
Paulatinamente se fueron adoptando para fines comerciales.
Obviamente en esa época no existían las PCs , por lo cual los entornos de trabajo resultaban centralizados y lo común para cualquier red era que el procesamiento quedara delegado a una única computadora central o mainframe Los usuarios accedieran a la misma mediante terminales “bobas” consistentes en sólo un monitor y un teclado.
Los tiempos han cambiado y ya prácticamente todos los usuarios acceden a los recursos desde PCs. Sin embargo, la teoría, los principios básicos, los protocolos han mantenido vigencia y si bien es cierto, se va produciendo obsolecencia de parte de ellos, es muy conveniente partir de los principios y de la teoría básica.     Resulta dificultoso comprender las redes actuales si no se conocen los fundamentos de la teoría de redes.        
En nuestro estudio partiremos de X.25; un sistema tardicional, que trabaja sobre redes analógicas, es decir líneas telefónicas dedicadas. Hoy en día tiene pocas aplicaciones, como ser cajeros automáticos, validación de tarjetas de crédito, etc;  pero su robustez, seguridad y confiabilidad han hecho mantenerlo como un estándar para las redes públicas y privadas durante una gran cantidad de años. Además sus principios, su teoría de funcionamiento aporta conceptos sumamente importantes que nos ayudarán a comprender los siguientes.
Frame Relay es una mejora de X.25 . Se trata de un sistema mucho más simple y eficiente, el cual tiene plena vigencia hoy en día en redes de área amplia. Trabaja sobre enlaces digitales generalmente punto a punto.
Posteriormente veremos las tecnologías LAN y por último culminaremos con el de mayor auge en nuestros días, base indispensable del funcionamiento de Internet: TCP/IP.  


 

 CONCEPTOS BÁSICOS ASOCIADOS A REDES

  • RED : Una RED es un conjunto de computadoras o terminales conectados mediante una o más vías de transmisión y con determinadas reglas para comunicarse.
  • HOST : Aunque en general este término suele relacionarse con Servidores, en un sentido amplio llamaremos HOST a cualquier equipo que se conecta a una red.
  • PROTOCOLO: Conjunto de comandos establecido por convención que deben conocer tanto emisor como receptor para poder establecer una comunicación en un red de datos. Constituyen el software de la red.
  • DTE: Data Terminal Equipement es el equipo terminal de datos, la computadora o terminal que es el extremo final de la red.
  • DCE: Data Communication Equipement es el equipo de comunicación. Generalmente un modem u algún otro dispositivo que establece el enlace físico y lógico con la red. 
  • INTERNET: aunque todos sabemos lo que es Internet, aquí lo utilizaremos también en otro sentido. Una Internet es un conjunto de dos o más redes que se interconectan mediante los medios adecuados.
  
Redes orientadas a la conexión vs. no orientadas a la conexión

Se dice que una red es Orientada a la Conexión cuando se establece un único camino para la transferencia de la información. Los datos viajarán uno tras otro por dicho camino.  No hay más de un camino simultáneamente.
 Requieren obligatoriamente de 3 fases:
  • Establecimiento
  • Transferencia
  • Desconexión
Son el caso de X.25 , Frame Relay, ATM y TCP.      
Las redes No Orientadas a la Conexión (connectionless) no utilizan un único camino, sino que los datos se fraccionan y toman por distintas vías simultáneamente para llegar a destino. Se la conoce también como Servicio de Datagramas y los casos típicos son IP y UDP.
  

 Circuitos Virtuales Conmutados vs. Circuitos Virtuales Permanentes

   

Las redes Orientadas a la Conexión pueden constituir 2 tipos de circuitos o caminos para establecer la comunicación:
  • Circuitos Virtuales Conmutados (SVC´s) establecen un camino de comunicación a través de la red que no es siempre el mismo. La conexión se establece por un camino al necesitar intercambiar datos y se libera al finalizar. Al establecerse una nueva conexión el camino a través de la red puede ser diferente. X.25 trabaja de esta forma.
  • Circuitos Virtuales Permanentes (PVC´s) son similares a una línea punto a punto , están siempre fijos y no alternan entre caminos diferentes. La conexión se establece por única vez por un único medio físico al contratar el servicio y se mantiene inalterable hasta la baja del mismo. Frame Relay suele trabajar de esta forma aunque soporta también conmutados.
    
Conmutación de Circuitos vs Conmutación de paquetes

Las redes pueden conmutar circuitos , como es el caso de la red telefónica o conmutar paquetes, que son una subdivisión lógica de la información.
Casi todas las tecnologías actuales : X.25 , Frame Relay , ATM , TCP/IP son de conmutación de paquetes.
   

 



Clasificación por área de cobertura
  
El universo de las redes , puede clasificarse según la extensión que abarcan.
Cada uno de los tipos requiere de tecnologías y topologías específicas.
Se distinguen en general 3 categorías:
  • REDES LAN o Local Area Networks: Son las que no exceden 1 km de extensión. Lo más habitual es que abarquen un edificio o varios dentro de una manzana o un área limitada
  • REDES MAN  o Metropolitan Area NetworkHasta 10 Km, es decir , distintos puntos dentro de una misma ciudad.
  • REDES WAN  o Wide Area NetworksMás de 10 Km.  Distintas ciudades dentro de un mismo país o distintos países. 

Clasificación por método de comunicación

Las redes pueden utilizar dos métodos de comunicación que las diferencia en: 
  • REDES DE BROADCAST:  todas las máquinas comparten un único medio de transmisión . Es decir que cuando un de ellas transmita , todas recibirán la información y solamente aquella a ala cual va dirijida la utilizará.
  • REDES PUNTO A PUNTO:  existen conexiones individuales entre pares de máquinas.
   

Importancia de las Telecomunicaciones en nuestras vidas

 Aunque las telecomunicaciones en nuestros días son de vital importancia debido a que por medio de estas podemos transmitir información a lugares lejanos en fracciones de minutos, no toda la población mundial goza de este beneficio solo él entre el 20% y el 25% según las estimaciones de la Unión Internacional de Telecomunicaciones, si bien hoy muchos de nosotros sabemos usar estos servicios, y lo vemos relativamente fácil de usar ya es algo cotidiano para nosotros, hay que recordar que cuando nosotros empezamos a utilizarlos por primera vez se nos tornó difícil de usar, atraves del tiempo de estar practicando y las enseñanzas que nos dieron, ahora lo manejamos con facilidad.

  Es tan grande e importante las telecomunicaciones en nuestros días que la Unión Internacional de Telecomunicaciones (organismo dependiente de la ONU) que declaro el 17 de Mayo como el Día Mundial de las Telecomunicaciones. Gracias a la digitalización y al internet que se incorporaron a las telecomunicaciones se creó una disciplina conocida como Telemática en donde la parte fundamental de esta disciplina son las Redes y Movilidad.

Tipos de Programacion


Los tipos o técnicas de programación son bastante variados, aunque puede que muchos de los lectores sólo conozcan una metodología para realizar programas. En la mayoría de los casos, las técnicas se centran en programación modular y programación estructurada, pero existen otros tipos de programación. Los explicaremos a lo largo del artículo. 

Programación estructurada (PE) 

La programación estructurada esta compuesta por un conjunto de técnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo.

Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores.

Esta técnica incorpora:
  • Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas.
  • Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad.
  • Estructuras básicas: existen tres tipos de estructuras básicas:
    • Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra.
    • Estructuras selectivas: en estas estructuras se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.
    • Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces.

Las principales ventajas de la programación estructurada son:
  • Los programas son mas fáciles de entender
  • Se reduce la complejidad de las pruebas
  • Aumenta la productividad del programador
  • Los programas queden mejor documentados internamente.

Un programa esta estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos.

Programación modular

En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad.

En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.
A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones.

Programación orientada a objetos (POO)

Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilización de los objetos.

El elemento principal de la programación orientada a objetos es el objeto.
El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento.

El polimorfismo y la herencia son unas de sus principales características y por ello dedicaremos más adelante un artículo exclusivamente a tratar estos dos términos.

En DesarrolloWeb.com hemos publicado anteriormente una explicación de lo que es la programación orientada a objetos.

Programación concurrente 

Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez.
Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea.
Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las acciones.

Programación funcional 

Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones.

Programación lógica 

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).

Que es un Compilador o Interprete?


Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje eslenguaje de máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.1
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable       por una computadora.
Diferencia entre un interprete y compilador
INTERPRETE: Es un programa que lee línea a línea un programa escrito en un lenguaje; en lenguaje fuente y lo va traduciendo a un código intermedio, para ejecutarlo.
COMPILADOR: Es un programa que lee totalmente un programa escrito en un lenguaje; el lenguaje fuente, y lo traduce a un programa equivalente a otro lenguaje, lenguaje objeto.
A grandes rasgos un compilador es un programa que lee un programa escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.





pseudocódigo

El pseudocódigo (o falso lenguaje) es utilizado por programadores para describir algoritmos en un lenguaje humano simplificado que no es dependiente de ningún lenguaje de programación. Por este motivo puede ser implementado en cualquiera lenguaje por cualquier programador que utilice el pseudocódigo.



Características y partes

Las principales características de este lenguaje son:
  1. Se puede ejecutar en un ordenador
  2. Es una forma de representación sencilla de utilizar y de manipular.
  3. Facilita el paso del programa al lenguaje de programación.
  4. Es independiente del lenguaje de programación que se vaya a utilizar.
  5. Es un método que facilita la programación y solución al algoritmo del programa.
Todo documento en pseudocódigo debe permitir la descripción de:
  1. Instrucciones primitivas.
  2. Instrucciones de proceso.
  3. Instrucciones de control.
  4. Instrucciones compuestas.
  5. Instrucciones de descripción.
Estructura a seguir en su realización:
  1. Cabecera.
    1. Programa.
    2. Modulo.
    3. Tipos de datos.
    4. Constantes.
    5. Variables.
  2. Cuerpo.
    1. Inicio.
    2. Instrucciones.
    3. Fin.


Definición de datos del pseudocódigo

La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente.


Funciones y operaciones

Cada autor usa su propio pseudocódigo con sus respectivas convenciones. Por ejemplo, la instrucción "reemplace el valor de la variable x por el valor de la variable y" puede ser representado como:
  • asigne a x\, el valor de y\,



   { \color{Green} \mathit{ x }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   { \color{Green} \mathit{ y }}

   { \color{Green} \mathit{ x }} \;
   { \color{Blue}  \mathit{ := }} \;
   { \color{Green} \mathit{ y }}

   { \color{Green} \mathit{ x }} \;
   { \color{Blue}  \mathit{ = }} \;
   { \color{Green} \mathit{ y }}
Las operaciones aritméticas se representan de la forma usual en matemáticas.



   { \color{Gray}  \mathit{ \{ Esto \; es \; un \; comentario \; normalmente \; matem \acute{a} tico \} }}

   { \color{Green} \mathit{ volumen }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   { \color{Plum}  \mathit{ \pi }}
   { \color{Green} \mathit{ r }} {}^2
   { \color{Green} \mathit{ h }}

   { \color{Gray}  \mathit{ // y \; este \; es \; otro \; comentario \; normalmente \; de \; texto // }}

   { \color{Green} \mathit{ hipotenusa }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   \sqrt{
      { \color{Green} \mathit{ a }} {}^2 \;
      { \color{Blue}  \mathit{ + }} \;
      { \color{Green} \mathit{ b }} {}^2 \;
   }

   { \color{Green} \mathit{ resultado }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   { \color{Tan}   \mathit{ sin }}
   (
      { \color{Green} \mathit{ a }}
   )



martes, 26 de julio de 2011

Diagrama de Flujo

Un diagrama de flujo es una representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como la programación, la economía, los procesos industriales y la psicología cognitiva. Estos diagramas utilizan símbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de término.



Características

Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término. Además, todo camino de ejecución debe permitir llegar desde el inicio hasta el término.
Las siguientes son acciones previas a la realización del diagrama de flujo:
  • Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el dueño o responsable del proceso, los dueños o responsables del proceso anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.
  • Definir qué se espera obtener del diagrama de flujo.
  • Identificar quién lo empleará y cómo.
  • Establecer el nivel de detalle requerido.
  • Determinar los límites del proceso a describir.
Los pasos a seguir para construir el diagrama de flujo son:
  • Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.
  • Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
  • Si el nivel de detalle definido incluye actividades menores, listarlas también.
  • Identificar y listar los puntos de decisión.
  • Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
  • Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.

Ventajas de los diagramas de flujo

  • Favorecen la comprensión del proceso a través de mostrarlo como un dibujo. El cerebro humano reconoce fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.
  • Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos redundantes, los flujos de los re-procesos , los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.
  • Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.
  • Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.

Tipos de diagramas de flujo

  • Formato vertical: En él el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
  • Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
  • Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.
  • Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

Simbología y significado

  • Óvalo: Inicio y término (Abre y/o cierra el diagrama).
  • Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimentos).
  • Rombo: Decisión (Formula una pregunta o cuestión).
  • Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).
  • Triangulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).
  • Triangulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).


Archivo:DiagramaFlujoLampara.svg

Fases de Creación de un Programa

El desarrollo de un programa o de un conjunto de aplicaciones se basa en un concepto llamado ciclo de vida. Son una serie de etapas o fases que hay que seguir secuencialmente.

Las fases o etapas son:
    • Análisis. • Diseño. • Codificación o construcción. • Implantación o explotación. • Mantenimiento.

ANÁLISIS 

En esta fase se establece el producto a desarrollar, siendo necesario especificar los procesos y estructuras de datos que se van a emplear. Debe existir una gran comunicación entre el usuario y el analista para poder conocer todas las necesidades que precisa la aplicación. En el caso de falta de información por parte del usuario se puede recurrir al desarrollo de prototipos para saber con más precisión sus requerimientos. 
En el análisis estructurado se pueden emplear varias técnicas como: 

Diagramas de flujo de datos: Sirven para conocer el comportamiento del sistema mediante representaciones gráficas. 

Modelos de datos: Sirven para conocer las estructuras de datos y sus características. (Entidad relación y formas normales) 

Diccionario de datos: Sirven para describir todos los objetos utilizados en los gráficos, así como las estructuras de datos. 

Definición de los interfaces de usuario: Sirven para determinar la información de entrada y salida de datos. 

Al final de esta fase tenemos que tener claro las especificaciones de la aplicación. 


DISEÑO 

En esta fase se alcanza con mayor precisión una solución optima de la aplicación, teniendo en cuenta los recursos físicos del sistema (tipo de ordenador, periféricos, comunicaciones, etc…) y los recursos lógicos. (sistema operativo., programas de utilidad, bases de datos, etc…) 
En el diseño estructurado se pueden definir estas etapas: 

Diseño externo: Se especifican los formatos de información de entrada y salida. (pantalla y listados) 

Diseño de datos: Establece las estructuras de datos de acuerdo con su soporte físico y lógico. (estructuras en memoria, ficheros y hojas de datos) 

Diseño modular: Es una técnica de representación en la que se refleja de forma descendente la división de la aplicación en módulos. Está basado en diagramas de flujo de datos obtenidos en el análisis. 

Diseño procedimental: Establece las especificaciones para cada modulo, escribiendo el algoritmo necesario que permita posteriormente una rápida codificación. Se emplean técnicas de programación estructurada, normalmente ordinogramas y pseudocódigo. 

Al final de esta etapa se obtiene el denominado cuaderno de carga. 


CODIFICACIÓN 

Consiste en traducir los resultados obtenidos a un determinado lenguaje de programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de carga. Se deben de realizar las pruebas necesarias para comprobar la calidad y estabilidad del programa. 
Las pruebas se pueden clasificar en: 

Pruebas unitarias: Sirven para comprobar que cada módulo realice bien su tarea. 

Pruebas de interconexión: Sirven para comprobar en el programa el buen funcionamiento en conjunto de todos sus módulos. 

Pruebas de integración: Sirven para comprobar el funcionamiento correcto del conjunto de programas que forman la aplicación. (el funcionamiento de todo el sistema) 


EXPLOTACIÓN 

En esta fase se realiza la implantación de la aplicación en el sistema o sistemas físicos donde van a funcionar habitualmente y su puesta en marcha para comprobar el buen funcionamiento. 

Actividades a tener en cuenta o realizar: 


    • Instalación del/los programa/s. • Pruebas de aceptación al nuevo sistema. • Conversión de la información del antiguo sistema al nuevo (si hay una aplicación antigua) • Eliminación del sistema anterior.


Al final de esta fase se debe de completar la información al usuario respecto al nuevo sistema y su uso. Así como facilitarle toda la documentación necesaria para una correcta explotación del sistema (manual de ayuda, manual de uso, guía de la aplicación, etc.) 


MANTENIMIENTO 

Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de solventar los posibles errores o deficiencias de la aplicación. Existe la posibilidad de que ciertas aplicaciones necesiten reiniciar el ciclo de vida. 

Tipos de mantenimiento: 

Mantenimiento correctivo: Consiste en corregir errores no detectados en pruebas anteriores y que aparezcan con el uso normal de la aplicación. Este mantenimiento puede estar incluido en la garantía o mantenimiento de la aplicación. 

Mantenimiento adaptativo: Consiste en modificar el programa a causa de cambio de entorno gráfico y lógico en el que estén implantados. (nuevas generaciones de ordenadores, nuevas versiones del sistema operativo, etc.) 

Mantenimiento perfectivo: Consiste en una mejora sustancial de la aplicación al recibir por parte de los usuarios propuestas sobre nuevas posibilidades y modificaciones de las existentes. 

Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida, debiendo proceder de nuevo al desarrollo de cada una de sus fases para obtener un nuevo producto.