viernes, 30 de abril de 2010

Metodologia Clasica PROTOTIPO

La metodologia de desarrollo basada en prototipos es donde se contruyen rapidamente prototipos que muestran la funcionalidad del software al usuario, y es el usuario quien evalua el software y en base a esa retroalimentacion debemos ciclicamente generar los cambios, regresando de nuevo al diseño rapido.
Finalmente cuando el prototipo es aprobado por el usuario, se aborda el diseño formal en donde consolidamos la solucion de software.
Las fases son:
  • Recoleccion y refinamiento de requisitos
  • Diseño rapido del prototipo
  • Construccion del prototipo
  • Evaluacion del prototipo por el cliente
  • Refinamiento del prototipo(si cumple es aceptado en la evaluacion finaliza, sino regresa al diseño rapido)
  • Finalizacion del prototipo
Cuando el prototipo es aceptado, se debe consolidar el software, esto es documentarlo, implementarlo y planificar su mantenimiento.

jueves, 29 de abril de 2010

Metodologia Clasica en ESPIRAL

La metodologia en espiral es un desarrollo incremental, el cual consiste en ir haciendo ciclicamente iteraciones agregando funcionalidad al software, esta metodologia de desarrollo cuenta con 4 fases las cuales se repiten una y otra vez.
Esta metodologia no es frecuentemente utilizada dado a que existe mucha insertidumbre con respecto al numero de iteraciones necesarias para lograr funcionalidad en el software, demanda mucha experiencia debido a que es complicado tener el control del desarrollo cuando no se tiene establecido un fin claro y especifico.
La ventaja que existe es en cuanto al mantenimiento ya que esta estrechamente relacionado con el desarrollo y los problemas que van surgiendo son remediados de inmediato en la siguiente iteracion.

Sus Fases son:
  • Objetivos
  • Planificacion
  • Desarrollo y pruebas
  • Analisis de riesgo
La fase de objetivos pretende detallar y fijar los objetivos de la interacion que se va a emprender.
La fase de planificacion es donde se lleva a cabo el analisis y diseño de la iteracion.
La fase de desarrollo y purebas es donde se codifica y se prueba los cambios o el incremento del software.
La fase de analisis de riesgos se analiza nuevas soluciones y se verifican las soluciones generadas.
Nota: si en el analisis de riesgo se identifica una mejor solucion, esta pasa a ser el objetivo del siguiente ciclo iterativo.

Metodologia Clasica en CASCADA

El modelo en cascada para el desarrollo de software es una de las metodologias tradicionales, sigue una secuencia logica y cada etapa es directamente dependiente de que se culmine la etapa anterior.
Las fases son 7:
  1. Pre-analisis
  2. Analisis
  3. Diseño
  4. Desarrollo
  5. Pruebas
  6. Implementacion 
  7. Mantenimiento

La fase de Pre-analisis consiste en conocer las reglas del negocio, sus nececidades y adquirir conocimiento hacerca de las funciones propias del modelo de negocio.

La fase de Analisis es directamente abordar la coleccion de nececidades identificadas en el pre-analisis y en base a ellas proponer una solucion, tendiendo en cuenta la viabilidad tanto a nivel tecnico como a nivel administrativo.(Que vamos a hacer??)

La fase de Diseño consiste en detallar la solucion al problema que hemos identificado, es decir, debemos estrucutrar a nivel aplicacion, red y base de datos como vamos a abordar la solucion, en el diseño debemos apoyarnos de diagramas de entidad relacion para la base de datos, diagrama de clases entre otros. (Como lo vamos a hacer ???)

La fase de Desarrollo es llevar a acciones el diseño que hemos leaborado previamente, es deicr, aqui nos ayudamos de un lenguaje de programacion y de los software existentes para elaborar la aplicacion que dara solucion al problema identificado inicialmente. 

La fase de Pruebas consiste en una vez terminada la aplicacion y su base de datos, teniendo el producto terminado debemos probarlo tanto a nivel individual como a nivel integrado y de esta manera sabremos si la solucion creada soluciona las nececidades planteadas al inicio del proceso de desarrollo.

La fase de Implementacion se lleva a cabo cuando se han superado las pruebas propuestas y estamos 100% seguros de la calidad y de la estabilidad de nuestra aplicacion, en este sentido, implementamos a cada usuario y en cada equipo la aplicacion, establecemos la base de detos e insertamos los valores iniciales para que empieze a funcionar y establecemos las comunicaciones a travez de la aplicacion cliente y los servidores si ferea necesario.

La fase de Mantenimiento nace gracias a que los sistemas en general y por consecuencia los sistemas de software sufren de entropia, esto es, que tienden a desordenarse y a desajustarse con el paso del tiempo y con el uso del mismo por lo cual frecuentemente hay que dar mantenimiento a los medios de comunicacion (redes), servidores (base de datos) y a las aplicaciones en general, es importante mencionar que es parte del mantenimiento los pequeños cambios que van surgiendo con el tiempo a raiz los cambios en las reglas del negocio.

Metodologia Clasica CASE

La metodologia de desarrollo de sistemas de software llamada CASE, pertenece a las metodologias clasicas de desarrollo, esta esta enfocada en el paradigma top-down de programacion aunque su uso es extensible para otras metodologias.
La metodologia CASE consta de:

* • Estrategia
* • Analisis
* • Diseño
* • Construccion y Documentacion
* • Trancicion
* • Produccion


La Fase de estrategia: esta fase involucra conocimiento y entendimiento de la organizacion, conocer la vision, mision y objetivos del lugar a base de encuestas y entrevistas con los directivos. Debemos preguntar y conocer sobre las nececidades que afrontan, conocer el actual sistema y en base a ello generar nuestro MODELO DE REQUERIMIENTOS que debe incluir un analisis de viabilidad.

La fase de analisis: esta fase esta destinada a recolectar datos concretos y detallados del funcionamiento haciendo entrevistas, cuestionarios y visitas a los departamentos tecnicos y operativos. debemos entregar MODELO ENTIDAD-RELACION y un MODELO FUNCIONAL

La fase de diseño: en esta fase debemos tomar el modelo entidad relacion y transformarlo en el modelo concreto y final de la base de datos, el modelo funcional lo debemos transformar en diagrama de clases y modulos, debemos concretar a nivel de red, aplicacion y base de datos. En esta fase tambien debemos diseñar un plan de prueba.

La fase de construccion: es la fase encargada de codificar las APLICACIONES, desarrollo de la base de tados teniendo como resultado UNA BASE DE DATOS AFINADA y finalmente llevar a cabo las purebas, tanto a nivel individual de las aplicaciones como a nivel de la aplicacion integral teniendo como resultadoun funcionamiento estable.


La fase de documentacion: esta fase se trabaja en paralelo con la fase de construccion, pretende ir documentando teniendo como resultado final el MANUAL TECNICO Y MANUAL DE USUARIO el cual facilita en el futuro la usabilidad del sistema y el mantenimiento.

La fase de Trancicion: implica la adaptacion de los usuarios al nuevo sistema, la capacitacion de los mismos, la alimentacion de la base de datos y realizar purebas con los usuarios. debemos obtener como resutlado EL REPORTE DE PRUEBAS Y RENDIMIENTO.


La fase de produccion: es la fase donde se verifica que el sistema ayude en las actividades de la organizacion como se habia planteado inicialmente, se maximiza la confianza de los usuarios en el sistema y si hay problemas deben ser minimos, por consecuencia se deben reparar de una forma que no se afecte al usuario para no perder la confianza del sistema.

miércoles, 28 de abril de 2010

StakeHolder

Los StakeHolder son los interesados en el proyecto, estos se distinguen porque son afectados directa o indirectamente con el proyecto y por lo tanto debemos tomar en cuenta sus puntos de vista.
Por ejemplo los stakeholder internos de una empresa son:
  • Empleados
  • Gerentes
  • Propietarios

Los stakeholder externos de una empresa son:
  • Inversionistas
  • Proveedores
  • Sociedad
  • Gobierno
  • Acreedores
  • Clientes

    Modelo Entidad Relacion

    El modelo entidad relacion es conjunto de reglas que dan lugar a un paradigna de base de datos, el modelo entidad relacion es representado graficamente por el diagrama entidad relacion.
    El modelo entidad relacion consiste basicamente en analizar los requerimientos de la base de datos, por lo general todos los sustantivos son entidades o atributos y todos los verbos son relaciones.
    Las Entidades: Son objetos o cosas de las cuales nececitamos guardar informacion en la base de datos, estas entidades pueden ser concretas (persona, carro, colonia), o pueden ser entidades abstractas (puesto de trabajo, ruta de buses).
    Los Atributos: Son todas las variables que contienen la informacion de cada entidad, los atributos por ser variables tienen un tipo de dato y una longitud de dato definida, por ejemplo para una persona los atributos son (cedula, nombre, sexo, fecha_nac, direccion)
    Las Relaciones: Son la vinculacion que existe entre entidades, teoricamente podemos tener relaciones
    • uno a uno
    • muchos a uno
    • uno a muchos
    • muchos a muchos
    pero en la practica esto se reduce a relaciones de uno a muchos unicamente, las relaciones por lo general son acciones dentro del enunciado por ejemplo: Entidad=casa, Entidad=Persona, Relacion=Una casa tiene Muchas personas.

    Cuando hablamos de relaciones, surgen las llaves o restricciones:
    • Llave candidata : conjunto de variables que posiblemente identifican de forma unica a una entidad (ejemplo para la entidad presona: cedula, carne universitario, seguro social, partida de nacimiento)
    • Llave primaria : del conjunto de llaves candidatas seleccionamos la variable o las variables que identifican de fomra unica a cada instancia de la entidad (por ejemplo para la entidad persona la llave primaria es cedula).
    • Llave extranjera : esta llave es heredada entre entidades cuando se relacionan entidades, una entidad es a nivel conceptual pero a nivel practico las entidades son tablas, si tenemos una tabla A y una tabla B, con una relacion donde decimos que uno en A tiene muchos en B, para este caso la llave primaria de A pasa a ser llave extranjera en B.

    Manejo de Indices

    El manejo de indices se realiza sobre capos o datos que son consultados frecuentemente y queremos de alguna manera acceder a ellos mas rapido y facil.

    Un indice es un listado de direcciones o ubicaciones con un identificador o tema el cual se esta buscando y es por esta razon que los indices facilitan y hacen mas rapido una busqueda.

    Por ejemplo, imaginemos el caso de tener un listado de temas y su descripcion, si las busquedas se realizan frecuentemente sobre el tema, entonces siempre que queremos buscar los temas tenemos que recorrer todo el medio de almacenamiento(archivo) buscando sobre todos los temas, en ese caso, se realiza un indice sobre los temas y ahora cuando se ahgan las busquedas no se tiene que recorrer todo el medio de almacenamiento(archivo) en busqueda de ese tema, sino unicamente recorrer el indice que frecuentemente es muy pequeño por tener unicamente los encabezados, entonces. cuando se encuentra en el indice el tema buscado se lee el registro relacionado que debe ser la direccion donde se encuentra todo el contenido de ese tema.

    Podemos entender los indices asociandolo a los indices de los libros, seguramente si buscamos un tema especifico en un libro pero no tiene indices, nos tardamos mucho tiempo debido a que tenemos que hojear todo el libro, sin embargo, los libros que tienen indice facilitan esta tarea porque unicamente tenemos que buscar el tema en las hojas de indice, al momento de encontrar el tema buscado leemos el numero de hoja en que este se encuentra y directamente nos trasladamos hacia ese espacio para leer el desarrollo del contenido.

    Los indices con frecuencia son utilizados en el ambito de la informatica para acceder mas rapido a los archivos, ficheros, bases de datos, correos electronicos, bibliotecas de musica, galerias de imagenes, etc...

    Arquitectura de Base de Datos

    Las bases de datos tienen una arquitectura la cual permite esconder la complejidad de su estructura a los usuarios poco experimentados en el ambito de las bases de datos.
    Para lograr este cometido, se han creado diferentes niveles o capas de las bases de datos que son:
    • Nivel Interno
    • Nivel Conceptual
    • Nivel Externo
    • El nivel interno: es el nivel que esta asociado directamente a la forma en que se guarda la informacion en el medio de almacenamiento ficiso, es decir, como van a estar estructurados los archivos sobre el disco de almacenamiento, este nivel es apto para administradores y programadores experimentados debido a que tiene un nivel de abstraccion elevado.
    • El nivel conceptual: es el nivel que se encarga de definir las entidades (tablas) y sus relaciones, tambien es en este nivel que se trabajan los tipos de datos de las tablas y su longitud, este nivel es apto para administradores y programadores porque el nivel de abstraccion es medio.
    • El nivel Externo: es el nivel que esta compuesto de vistas, en este nivel los usuarios sin experiencia pueden ver los datos que les interesan dejando por un lado los datos que no son de su interes, en este nivel es que entran las aplicaciones que ayudan a presentar al usuario la informacion.
    Para que una base de datos sea manejada, es decir, debemos crear el nivel interno, declarar las entidades y sus relaciones con el nivel conceptual y finalmente debemos manejar el nivel de vistas o consultas, para este manejo debemos tener algun sistema o aplicacion que nos ayude con la tarea y a estos se les conoce como DBMS.

    Los DBMS son sistemas que nos ayudan a manejar la base de datos y a velar por que se cumpla la integridad de los datos, que no haya redundancia entre los datos y las peticiones de informacion, para ello existen 4 lenguajes que facilitan esta tarea los cuales son:
    • DDL (Data Definition Lenguaje) (Create, Drop, Alter)
    • DML (Data Manipulation Lenguaje) (Insert, Select, Delete, Update)
    • DCL (Data Command Lenguaje) (Commit, Rollback, Grant, Revoke)
    • PLSQL (PL / Structures Query Lenguaje) (Declare, Open, Fetch, Close)

    jueves, 22 de abril de 2010

    Modelos de Bases de Datos

    Modelos de Bases de Datos:
    a continuacion voy a detallar los modelos de bases de datos mas utilizados a lo largo de la historia de estos sitemas de almacenamiento de informacion.
    y esque, una base de datos es unicamente un sistema el cual me va a permitir guardar informacion en un medio de almacenamiento especifico, garantizandome la facilidad de consulta, modificacion, eliminacion e incercion de datos al sistema.
    las bases de datos son unicamente el archivo o los archivos fisicos que contienen la informacion con una estructura especifica basada en uno de los modelos a continuacion descritos.
    pero para poder gestionar la informacion, es decir, poder consultarla, insertar, eliminar o actualizar informacion debemos utilizar un software gestor de base de datos mas conocido como DBMS (Data Base Manager Sistem), el cual a travez de una conexion con la base de datos entra a su estructura y a su informacion para poder proveernos de estas funcionalidades de manejo de informacion.
    como bien he mencionado, las bases de datos son archivos que contienen informacion con una estructura determinada, esta estructura es el modelo del cual vamos a hablar, entonces, la informacion siempre va a estar fisicamente en esos archivos en nuestro medio de almacenamiento lo que va a variar con cada modelo es la forma en que se relaciona, se almacena y se busca esta informacion.

    Bases de datos Jerárquicas
    En las bases de datos jerarquicas se caracterizan porque su diagrama tiene la fomra de un arbol invertido, en donde existen nodos padre y nodos hijo.

    Las hojas unicamente se conectan con su padre, sin embargo el padre no puede saber de la existencia de las hojas hijas. Este problema sucede porque cada nodo tiene un indice que especifica quien es su nodo padre, sin embargo los padres no tienen conocimiento  de la cantidad de nodos que tienen en este indice. 

    Las bases de datos jerarquicas son caracterizadas por su direccionamiento directo fisicamente, no existe un nivel logico el cual abstraiga la forma de almacenamiento de la fomra de la base de datos a diferencia de las bases de datos relacionales.

    En conjunto, la estructura jerarquica de nodo pradre, nodo hijo y el direccionamiento directamente fisico hacen de la base de datos un sistema rapido en cuanto a lectura de informacion por lo cual es recomendable para volumenes grandes de datos.  

    La desventaja que cuentan estas bases de datos es el hecho que no garantizan la integridad referencial, la duplicidad de los datos ni hay forma de aplicar normas que gestionen mejor la informacion como seria la normalizacion.
    tambien, este modelo tiene como desventaja el no controlar la redundancia de los datos, es decir pueden existir dos nodos hijos exactamente iguales, pero con diferente padre lo cual por regla del modelo obliga a duplicar el nodo y asignar un nodo hijo a cada nodo padre (un hijo solo puede tener un padre).

    Bases de datos de red
    El modelo de base de datos de red es una pequeña variacion del modelo jerarquico, en este caso la variacion consiste en que un nodo hijo puede tener varios nodos padre (jerarquico dice que un nodo hijo solo puede tener un padre), lo cual ayuda a reducir la redundancia de datos.

    Las desventajas de este modelo son heredadas del modelo jerarquico, en este caso no garantizan la integridad referencial y no es posible aplicar normalizacion.

    Entre las ventajas tenemos las mismas que el modelo jerarquico, rapidez y manejo de volumenes grandes de datos debido a que el direccionamiento es directamente logico.

    Bases de datos relacionales
    modelo basado en la abstraccion y creacion de entidades(tablas) relacionadas entre si.

    El modelo incorpora un direccionamiento logico lo cual indica que no se hacen relaciones directamente al espacio fisico donde se encuentra la informacion, sino que, este modelo ha creado una capa de almacenamiento fisico y otra capa de almacenamiento logico, en donde la capa de almacenamiento logico es donde esta estructurada la forma en que se guardan los datos.

    el modelo relacional garantiza la integridad referencial, permite una mejor estructura porque se permete la aplicacion de normas sobre las tablas (normalizacion) y garantiza evitar la redundancia de datos.

    el modelo relacional gracias a las capas logicas y fisicas que ha creado de almacenamiento de datos es necesaria la utilizacion de gestor del sistema llamado DBMS(Data Base Manager Sistem). El cual es encargado de manejar la informacion utilizando lenguajes de consulta SQL para poder seleccionar, actualizar, insertar y eliminar informacion del sistema.

    Las desventajas es que tiene dificultades para manejar contenido grafico.
    La ventaja es que es de facil entendimiento ya que es abstraida de la realidad, por lo cual se realiza un esquema de la base de datos que no es mas que un dibujo o diagrama el cual muestra las tablas y sus relaciones (estructura).


    Bases de datos Orientadas a Objetos
    Son bases de datos que almacenan objetos con su estado y comportamiento, logrando alta compativilidad con los lenguajes de programacion orientados a objetos.
    Tienen todas las propiedades de el paradigma de Objetos:
    • Herencia
    • Polimorfismo
    • Encapsulamiento
    Este tipo de bases de datos facilita la utilizacion de los objetos almacenados en la base de datos por parte de las GUI, debido a que cuando tradicionalmente se accede a una base de datos relacional desde un programa orientado a objetos, el programador tiene que utilizar un objeto especial (grid, sets) para almacenar el resultado de la consulta realizada al DBMS, sin embargo el trabajo de estos objetos  especiales para utilizar bases de datos relacionales es analizar el grupo de datos que ha dadon como resultado la consulta ejecutada y adecuarlo en una estructura para que sea desplegado en la GUI.

    Esto no sucede con las bases de datos orientadas a objetos porque se guarda la informacion como un objeto y su utilizacion es como un objeto mas dentro de el lenguaje de programacion.

    Bases de datos distribuidas 
    Son bases de datos que se encuentran en mas de un equipo, los cuales se encuentran conectados en red y la informacion que se guarda esta relacionada, a cada servidor de base de datos se le conoce como nodo.

    la nececidad de las bases de datos distribuidas surgio por la demanda de servicio, entonces un sistema distribuido ayuda ya que geograficamente se cuenta con multimples servidores que responden a la peticion.

    para construir un sistema distribuido, no hace falta mas que tener en un nodo (servidor) una base de datos con su DBMS, conectarlos en red y declarar que hayan transacciones para que se garantize la atomicidad de las operaciones.

    los problemas que involucra este sistema son los interbloqueos, los cuales pueden ser detectados-prevenidos o detectados-corregidos a trevez del uso de multimples algoritmos que garantizan la exclusion mutua.

    Bases de datos multidimensionales 
    las bases de datos multidimensionales son una variacion a nivel conceptual del modelo relacional. 

    se utilizan para crear cubos de informacion  tambien llamados cubos OLAP.
    los cubos no son mas que una tabla principal la cual en usu atributos guarda metricas y guarda apuntadores a otras tablas que contienen la informacion deseada, podemos entender mejor este concepto describiendo el modelo como una figura de estrella, en donde el centro de la estrella es una tabla que guarda la informacion sobre todas sus puntas, estos serian los atributos de la tabla central.

    y cada brazo de la estrella es un dato del cual queremos guardar informacion relacionada, por ejemplo productos, ventas, compras, devoluciones, cambios, etc...

    Bases de datos transaccionales

    Bases de datos poco comunes que son destinadas a el envio y recepcion de datos, por lo cual la redundancia y la duplicacion de informacion no resulta ser un problema.

    Este modelo esta enfocado a almacenar la informacion y a compartirla o enviarla cuando asi sea necesario, por lo cual son vistas estas bases de datos como repositorios de informacion unicamente.

    viernes, 16 de abril de 2010

    Diccionario Informatico

    • Atomico: se dice que un proceso es atomico cuando esta copuesto de dos o mas subprocesos los cuales se deben completar exotosamente para que el proceso general se de por concluido, de lo contratio, si algun subproceso falla sera mejor cancelar el proceso general.
    • Concurrencia: conjunto de procesos que se ejecutan paralelamente de forma independiente.
    • Proceso: instancia de ejecucion de un programa.
    • Multiplexar: de dos o mas canales reducirlo a uno.
    • Demultiplexar: de un unico canal dividirlo a dos o mas canales.
    • Granularidad: es el nivel de detalle que se puede obtener, la granularidad de un proceso significa en cuantos sub procesos se puede dividir, la granularidad de una fotografia significa de cuantos pixeles esta compuesta.
    • Seccion Critica: area o recurso que solo puede ser  utilizado por un proceso a la vez. 
    • Exclusion mutua: sistema que garantiza que una seccion critica sea utilizada  unicamente por un proceso a la vez.
    • Esquema: Diagrama hacerca de la estructura, es el mapa que detalla la arquitectura.
    • Medatado: Es la informacion sobre la estructura, un esquema es el metadato.
    • Cardinalidad: es el numero de filas que tiene una tabla en una base de datos.
    • Grado: es el numero de columnas que tiene una tabla en una base de datos.
    • Consistencia: se ejecuta una transaccion sobre un estado consistente y se obtiene un nuevo estado consistente.
    • Aislamiento: los cambios se ven hasta que todas las operaciones que involucra la transaccion se han realizado de forma exitosa.
    http://josemariamarco.wordpress.com/glosario/
    http://www.fce.unl.edu.ar/ecommerce/diccionario.htm

      jueves, 15 de abril de 2010

      Paradigmas de Programacion

      Los paradigmas de programacion hoy en dia son diversos y cuando nos referimos a un paradigma de programacion estamos hablando de la forma en que se programa, un paradigma es un modelo opatron el cual me ayuda a asociar casos similares y a dar solucion basado en practicas anteriores.

      Es erroneo pensar que un paradigma de programacion es mejor que otro, simplemente son enfoques diferentes para diferentes situaciones. Puede ser que para un tipo de soluciones se utilize un paradigma que resulta mas conveniente que algotro paradigma que es utilizado para dar soluciones diferentes.
      Entre los paradigmas mas utilizados tenemos:
      • Estructurado
      • Modular
      • Orientado a objetos
      • Por eventos
      • Grafico
      • Concurrente
      • Para internet
      • Servicios
      Paradigma Estructurado
      Ventajas:
      • Programacion en bloques, con una secuencia logica de instrucciones.
      • Facil de entender debido a que no ejecuta una instruccion sin haber terminado de ejecutar la instruccion anterior.
      • Nececita poco mantenimiento al codigo.
      • Identificacion sensilla de errores, porque todas las instrucciones estan enlazadas.
      • Programas mas rapidos:

      Desventajas:
      • Dificulta la reusabilidad de codigo.
      • Cuando el codigo crece demasiado, se hace complicada la manupilacion de todo el codigo, para solventar esta situacion se utiliza el paradigma modular que es la evolucion del paradigma estructurado.

      Paradigma Modular:
      • La programacion modular es una evolucion del paradigma estructurado y su uso tiene lugar cuando el codigo secuencialmente estructurado se hace muy grande e impide su facil manipulacion.
      • Con la modularizacion logramos reutilizar codigo y facil hubicacion debido a que se organiza de mejor forma.
      • La modularizacion se lleva a cabo a travez de la utilizacion de procedimientos o funciones.
      • Para entender la razon por la que se organiza el codigo utilizando modularizacion se basa en el mensaje "divide y venceras", esto quiere decir que de todo el programa que involucra mucho codigo secuencial podemos analizar y dividir este codigo por PROCEDIMIENTOS bien definidos.
      • Teniendo el codigo dividido en funcionalidad bien definida podemos analizar en que situacion podemos reutilizar este codigo.
      • Las funciones o procedimientos se utilizan a travez de llamadas, enviando parametros y reciviendo parametros de solucion.
      Paradigma Orientado a Objetos:
      • El paradigma de programacion orientado a objetos es un paradigma utilizado especialmente por su capacidad de reutilizar codigo.
      • El mantenimiento puede ser facil si se cuenta con un diagrama de clases y si se realizo una abstraccion correcta al momento de crear el modelo.
      • Una clase es un conjunto de objetos que estan relacionados por tener una estructura comun.
      • Un objeto puede ser cualquier cosa de la que nececitemos utilizar en nuestro programa por ejemplo, boton, pantalla, cuadro de texto, etc.. 
       Los objetos tienen sus propiedades que son 1) Identidad  2) Estado  3) Funcionamiento.
      • la identidad de un objeto debe ser unica, descriptiva y sencillamente su nombre con el cual lo vamos a llamar.
      • El estado de un objeto esta dado a travez de variables que guardan la informacion, estas variables pueden ser para el ejemplo del objeto boton: 1) texto  2) color  3) pocicion.
      • El funcionamiento de un objeto se le llama metodo, los metodos son todas las operaciones que el objeto puede realizar por ejemplo para el objeto carro seria: 1) estacionar, 2) arrancar, 3) apagar.
      El trabajar con objetos tiene sus caracteristicas que son:
      • Herencia: los objetos no trabajan solos, sino en conjunto con otros objetos por lo cual es necesario que compartan sus metodos y atributos dando lugar a la utilizacion de polimorfismo y encapsulamiento.dicho en otras palabras la herencia es permitir a otros objetos hacer uso de los metodos de otro objeto.
      • Polimorfismo: un metodo significa funcionalidad o procesamiento de las varialbes, pero en ocaciones el mismo metodo es utilizado por diferentes objetos los cuales nececitan una respuesta a la medida, por ejemplo el metodo suma(), si los parametros son dos numeros reales el resultado es la suma aritmetica de los dos valores, mientras que si los parametros son dos cadenas de texto la suma es la union de estas dos cadenas de texto.
      • Abstraccion: la abstraccion consiste en destacar las caracteristicas especiales del objeto, la abstraccion es describir la realidad del objeto.
      • Encapsulamiento: el encapsulamiento significa que un objeto es utilizado de forma independiente, es decir, se ejecuta la llamada y se le envian parametros con los cuales sus metodos hacen la transformacion de informacion y la devuelve en variables de salida pero el funcionamiento del metodo no es visible.
      • Recolector de Basura: el recolector de basura tambien conocido como garbage collector es la propiedad que permite a la instancia de un objeto salir de memoria cuando ya no esta siendo utilizada, es decir los objetos existen pero cuando son utilizados por nuestra aplicacion son subidos a memoria sin embargo cuando deja de ser usado el objeto por nuestra aplicacion este debe de salir de memoria y a esta capacidad se le conoce como recolector de basura. algunos lenguajes incluyen el recolector de basura automatico por ejemplo java, es decir, el programador no tiene que indicar la recoleccion de basura. sin embargo hay otros lenguajes por ejemplo pascal la recoleccion de basura debe de ser programada explicitamente por el programador. 
      Paradigma Orientado a Eventos
      El paradigma de programacion orientado a eventos es aquel que basado en acciones ejecutadas por el usuario, ejecuta su programacion.

      Podemos encionar los siguientes eventos mas utilizados por los usuarios:
      1) Click
      2) Doble Click
      3) Mouse Over entre otros.
      • La programacion orientada a eventos a diferencia de la programacion estructurada o secuencial en donde el usuario no tenia opcion a ejecutar el codigo conforme a su demanda, sino que, el programa secuencial evolutivamente en el tiempo iva procesando la informacion sin opcion a cambios o a detenerse.
      • Visual Basic es un lenguaje orientado a eventos, en donde tenemos una interfaz con multiples botones los cuales esperan el EVENTO Click para ejecutar su codigo.
      • Esto otorga al usuario el control de la secuenica de ejecucion, naturalmente hay que tener cuidado y de alguna manera validar este tipo de errores por ejemplo que el usuario no pueda seleccionar una opcion 2 sin haber pasado por la opcion 1, pero en este caso son las relgas del negocio las que determinan este tipo de restricciones.
      • Las interfaces de usuario tambien conocidas como GUI (Graphic User Interface) se han popularizado gracias a este paradigma de programacion.

      Programacion Grafica:
      Los lenguajes de programacion grafica tambien llamados lenguajes visuales son aquellos que se programa unicamente con imagenes, iconos, graficas y en definitiva no se utilizan textos.

      Equivocamente algunos programadores confunden el hecho de texto en alguna interfaz grafica para decir que es una programacion visual, esto es totalmente falso.

      Los lenguajes de programacion visual son los que con ayuda del mouse insertan objetos y especifican comportamiento para que la programacion se de, por ejemplo:
      • circuit maker, arrastra los circuitos y los conecta para luego verificar el comportamiento en una simulacion.
      • blender, crea y anima objetos en 3d.
      • y muchos otros programas con los que sepueden construir rutas, juegos que unicamente insertanto objetos visuales ya se obtiene funcionalidad.
      No hay que equivocar el termino programacion visual con un ide en especifico porque en definitiva la programacion visual es un programa que se encarga de dar funcionalidad con objetos sobre una aplicacion.

      Programacion Concurrente
      La programacion concurrente o paralela se refiere a programas que estan compuestos por varios procesos los cuales se ejecutan simultaneamente, esto puede ser en un equipo que cuenta con multiples procesadores o en un equipo de un unico procesador.

      en los equipos de un unico procesador se deben utilizar algoritmos para garantizar la exclusion mutua sobre el area critica.

      En un paradigma secuencial no podemos llevar a cabo la programacion concurrente, sin embargo lenguajes orientados a objetos tienen formas de programar concurrentemente, como en el caso de java con los threads (multiples hilos).

      La programacion concurrente provee mejor aprovechamiento de los recursos del cpu, rapidez de procesamiento y es utilizada para cuando nececitamos control sobre la ejecucion, la programacion de paginas web, simulaciones.

      para garantizar la exclusion mutua esisten diferentes algoritmos entre ellos tenemos:
      1. Semaforos
      2. Monitores
      3. Mensajes

      Programacion Orientada a Servicios
      La programacion orientada a servicios es una nueva tendencia de la programacion que permite reutilizar codigo, ampliar funcionalidad, reducir costos y descentralizar los programas.

      Es tipico pensar en internet y en servicios web cuando se menciona una arquitectura orientada a servicios sin embargo aunque estas si pertenecen a la arquitectura de servicios no son las unicas que existen.

      Es un clasico ejemplo pensar que los web service son todo lo existente a una arquitectura orientada a servicios pero esto no es cierto, la arquitectura basada en servicios puede funcionar en internet y en intranet, puede incluso trabajar localmente en un ordenador sin necesidad de que exita una red aunque de esta fomra no se explotan todos sus beneficios.

      con la arquitectura basada en servicios apliamos funcionalidad debido a que utilizamos codigo existente, que esta publicado y que gratuitamente o por alguna forma de remuneracion podemos hacer uso.

      tambien reducimos costos debido a que mi empresa no tiene que gastar en un desarrollo por esa funcionalidad sino unicamente contratar el servicio que me devuelve el resultado nececitado.

      los servicios funcionan escondiendo funcionamiento, unicamente requieren de determinados parametros de entrada, en base a estos transforman la informacion de salida y la entregan en variables de salida.

      un tipico ejemplo de servicios es una pagina de comercio electronico, este tipo de paginas no tienen que programar un modulo de cobros por tarjeta de credito unicamente nececitan contratarlo.

      entonces cuando el usuario paga con tarjeta de credito en este sitio, el sitio envia en a un servicio web el monto, el numero de tarjeta y el establecimiento, con esta informacion el servicio web procesa esos datos y realiza la transferencia de fondos. finalmente las variables de salida son la aceptacion de la transferencia acompañado con un numero de transaccion o un mensaje de fondo insuficiente el cual indica que no se realizo la operacion.

      de esta manera se logra veneficio con los servicios web, reutilizando codigo. los servicios web cuentan con estandares por ejemplo el UDDI que es un directorio de web services existentes, el WSDL que es la informacion de los parametros de entrada y los parametros de salida para un web service determinado y el SOAP que es el paquete de comunicacion del servicio web.

      martes, 13 de abril de 2010

      Modelo OSI (Open System Intercommunication)

      El modelo OSI por sus siglas en ingles que significan SISTEMA ABIERTO DE INTERCONEXION, es un modelo el cual fue creado por ISO (organizacion internacional para la estandarizacion) la cual en un intento certero por estandarizar las telecomunicaciones crea este modelo estandar.

      El modelo OSI es la manera sistematica en que se comunican los dispositivos que pertenecen a una red y de esta manera se logra que cualquier dispositivo, de cualquier marca pueda compartir informacion con otros dispositivos sin errores.

      Todo dispositivo que puede participar en una red entiende del modelo OSI, sin embargo, solo utilizan el modelo OSI cuando se envia o se recibe informacion de otro dispositivo.

      El modelo OSI esta conformado de 7 capas (Aplicacion, Presentacion, Sesion, Transmision, Red, Enlace de datos y Fisica) las cuales son utilizadas de forma obligatoria y consecuente, es decir, no puedo utilizar una capa sin obtener la informacion de la capa previa, y no puede continuar el proceso de comunicacion si la capa no entrega la informacion a la capa superior.

      El modelo OSI aparte de estandarizar las comunicaciones entre dispositivos tambien garantiza que los datos enviados sean recibidos de forma correcta, protege contra errores, establece estandares de comunicacion y provee de todas las politicas necesarias para la transferencia de informacion.

      Nivel 1: Capa Fisica
      Detalle: Se encarga del medio fisico de envio de datos.
      Ejemplo: Cable coaxial, par trenzado, wireless, tarjetas de red, Hardware.
      Unidad: Bytes a travez de pulsos electricos u ondas.

      Nivel 2: Capa Enlace de Datos
      Detalle: Se encarga del direccionamiento fisico a travez de la direccion MAC
      Ejemplo: Switch, bridges.
      Unidades: Tramas

      Nivel 3: Capa de Red
      Detalle: Se encarga del direccionamiento Logico a travez de la direccion IP.
      Ejemplo: Firewall, Routers.
      Unidades: Paquetes

      Nivel 4: Capa Transporte
      Detalle: Se encarga del control de transmision, como se envian los datos (mantener flujo sin errores).
      Ejemplo: TCP o UDP.

      Nivel 5: Capa Sesion
      Detalle. Se encarga de verificar todo el contenido, mantener comunicacion entre dispositivos.
      Ejemplo: Session SQL, autenticacion Windows.

      Nivel 6: Capa Presentacion
      Detalle: Se encarga de comprimir, cifrar o estandarizar los datos.
      Ejemplo:  Mp3, Pdf, cualquier formato lo estandariza para ser enviado.

      Nivel 7: Capa Aplicacion
      Detalle: Se encarga de mostrar legiblemente la informacion al usuario.
      Ejemplo: Gestor FTP Filezila, Correo electronico POP3 en ThunderBird, HTTP.

      Vision Sistematica

      "Sistemas involucra elementos bien definidos que estan relacionados entre si, con un objetivo comun determinado"

      El todo esta determinado por la suma de sus elementos.

      Concepto: Un sistema es un conjunto de elementos relacionados unos con otros de manera ordenada para alcanzar el objetivo que se ha determinado

      Condiciones: Existen cuatro condiciones a cumplirse en todos los sistemas
      1) Objetivo sobre el sistema.
      2) Elementos deben estar relacionados
      3) Todos los elementos deben aportar valor para alcanzar el objetivo.
      4) Deben ser identificables las entradas, salidas y procesos.

      Entrada => Proceso => Salida
      Tipos de Sistemas
      • Natural: creado por la naturaleza.
      • Artificial: creado por intervencion humana
      • Compuesto: mezcla de un sistema natural, modificado o complementado con intervencion humana.

      • Sistemas Abiertos son los que permiten intercambio con el medio ambiente, son sistemas probabilisticos.
      • Sistemas Cerrados son los que no permiten intercambio con el medio ambiente, son sistemas deterministicos.

      • Homeostasis: Equilibrio entre sus elementos, los sistemas tienen la tendencia a adaptarse lo cual significa estabilidad.
      • Entropia: Tendencia de los sistemas a desordenarse, desgastarse o desintegrarse.
      • Sinergia: Es cuando dos procesos que trabajan conjuntamente en  un sistema generan mas resultados que si sumamos los resultados dos procesos trabajando individualmente.

      Elementos de un sistema
      1. Entradas
      2. Proceso
      3. Salida
      4. Retroalimentacion
      5. Ambiente


      lunes, 12 de abril de 2010

      Ultima Milla

      La ultima milla en telecomunicaciones es un concepto muy utilizado, sin embargo, en ocaciones resulta complicado entender el concepto debido a que el nombre  no es descriptivo.

      Ultima Milla no es exactamente 1 milla que queda al final, pudieran ser dos, dies o media milla porque el concepto no esta determinado por la longitud, mas bien esta determinado por la funcionalidad.

      En un sistema de telecomunicaciones facilmente podemos identificar dos entes, el primero de ellos es la empresa que presta el servicio y el segundo ente corresponde a el usuario quienes consumen el servicio.
      Estos dos entes estan interconectados por cualquier medio de comunicacion pudiendo ser:
      1. Red inalambrica
      2. Fibra Optica
      3. Cable Coaxial
      4. Par de Cobre Trenzado
      Pero la distancia de comunicacion esta dividida en dos segmentos, el primer segmento es el BackBone y el segundo segmento es la Ultima Milla (pudiendo ser mas o menos distancia).

      El backbone corresponde a una comunicacion robusta, grande y de caudal amplio para que fluyan datos rapidamente, sin embargo, el backbone distribuye servicio a muchos usuarios por lo cual es una red de donde muchos usuarios van a recibir servicio.

      La ultima milla es la distancia entre el backbone que presta servicio a todos los usuarios y un usuario especifico, lo que significa que cada  usuario tiene su segmento de ultima milla, el cual le pertenece unicamente al usuario porque lo conecta con el backbone.

      Haciendo una analogia para ejemplificar el caso de las telecomunicaciones vamos a citar el caso en que una persona quiera viajar desde Guatemala hacia España.

      En este caso los medios en que esta persona puede transportarse son barco, avion, submarino y va a depender su desicion de el tiempo en que la persona cuente para transportarse y de los recursos que este dispuesto a pagar por transportarse.

      En el caso que hubiera elejido transportarse en avion, el backbone corresponde al viaje en el avion y la ultima milla corresponde a el viaje desde el aeropuerto hacia el hotel, como lo mencionamos anteriormente, este viaje de ultima milla es especifico de cada usuario que ha sido transportado en el backbone.

      Es importante tener cuidado con la ultima milla, debido a que las empresas de telecomunicaciones cuidan mucho el backbone porque si este segmento falla, la consecuencia es que muchos usuarios quedan sin servicio por lo cual sin backbone no hay ninguna funcionalidad por parte de la entidad que presta el servicio.
      y el cuidado que debemos tener con la ultima milla es que si este segmento falla, unicamente un usuario queda sin funcionalidad entonces no va a atener el mismo nivel de importancia que si falla el backbone debido al numero de usuarios que esta en juego.

      Cuando un sistema de telecomunicaciones falla, el problema se encuentra frecuentemente en el segmento de ultima milla, debido a que este segmento por atender a un usuario final no se le presta atencion con mantenimiento no controles que aseguren que todo anda bien.

      Sin embargo no es frecuente que los fallos de los sistemas de telecomunicacion se encuentren en el backbone porque este es frecuentemente controlado y tiene un programa de mantenimiento para prevenir que ocurran fallos lo cual provocaria perdidas considerablemente grandes.

      jueves, 8 de abril de 2010

      Vision Paradigmatica

      Paradigma
      El concepto de paradigma se refiere a un modelo u un ejemplo a seguir para lograr determinado fin, contextualizado en el mundo de la informatica, existen los modelos paradigmaticos de programacion.

      los modelos paradigmaticos de programacion se refiere a la manera en que se da solucion a un problema, es decir, de las practicas que se han realizado se extraen las mejores y se convierten en modelos o ejemplos que guian en casos similares para dar solucion a problematicas similares.

      entre los modelos paradigmaticos de programacion podemos mencionar el modelo estructurado, modelo orientado a objetos, modelo orientado a servicios entre otros.

      La Vision Paradigmatica es como nosotros vamos a visualizar el problema y lo vamos a adaptar o asociar a un paradigma el cual nos ayude a generar la solucion.

      Cuando hablamos del tema vision paradigmatica estamos involucrando el concepto de la cosmovision, la cosmovision tambien llamada modelo mental es el lente de como nosotros miramos al mundo real, es decir, es el conjunto de opiniones y creencias que confirman la imagen que tenemos sobre el mundo real, esto puede ser bajo diferentes conceptos por ejemplo politica, religion, academia.

      La cosmovision esta estrechamente relacionada con la vision paradigmatica desde el punto de vista que la cosmovision es la ventana por la cual nosotros vemos al mundo real y la vision paradigmatica es la capacidad de asociar modelos (paradigmas) existentes a modelo que nosotros estamos viviendo y  basados en este modelo podemos desarrollar una solucion.

      Por ejemplo si yo soy llamado como ingeniero de software a una empresa para desarrollar un software que trabaja en equipos portatiles en un campus iniversitario, mi cosmovision sobre el tema es que debo analizar cuidadosamente los aspectos de seguridad de la informacion y los aspectos de cobertura porque es la creencia queyo tengo en base a este tema por diferentes experiencias que he vivido.

      Sin embargo, mi vision paradigmatica me permite hacer comparativas con los diferentes paradigmas existentes para analizar la solucion que voy a emprender, regresando al ejemplo, puedo mencionar que del paradigma orientado a objetos, orientado a servicios y estrtucturado que no son mas que modelos de solucion.

      Yo optaria por el paradigma de programacion orientado a servicios, basado en mi cosmovision, esto significa que el paradigma orientado a servicios es mas seguro y provee mas covertura o en el peor de los casos permite trabajar asincronamente porque los servicios no tienen estado.

      De la forma que he ejemplificado el concepto de Paradigma, podemos mencionar que existen muchos paradigmas en diferentes disiplinas y diferentes ramas, por ejemplo, tenemos paradigmas gerenciales, paradigmas de programacion, paradigmas educativos, etc.  Recordemos un paradigma no es mas que un modelo, un ejemplo, una corriente de ideas enfocadas en un objetivo.

      Resistencia al cambio

      La resistencia al cambio es una fuerza natural que nace al momento en que nace el cambio, es comun que el ser humano experimente resistencia al cambio, algunos en mayor otros en menor grado pero lo que es cierto es que todos tenemos cierta resistencia ante el cambio.

      La resistencia al cambio puede presentarse de dos formas, la primer forma es una resistencia al cambio directa la cual no es mal vista sin embargo la segunda forma de resistencia al cambio es la encubierta y esta si es problematica y hasta cierto punto, es la mayor causa del fracaso de los proyectos, explico.

      La resistencia al cambio directa es bien vista por los desarrolladores de proyectos, porque es una resistencia clara que identifica los puntos en los cuales el usuario o la persona que esta experimentando resistencia tiene algun temor, entonces, es bien vista porque identificando a la persona y los motivos de su resistencia nos impulsa a mejorar el proyecto.

      Sin embargo la resistencia al cambio encubierta es un problema para los desarrolladores de proyectos, porque estas personas que experimentan la resistencia encubierta fingen que todo esta bien, esconden el problema mas sin embargo no estan dispuestos a seguir las instrucciones indicadas.
      muchas veces los resistentes al cambio encubiertos se convierten inclusive en comunicadores del proyecto o asumen algun papel de direccion del proyecto por lo cual provocan el fracaso de este.

      La resistencia al cambio se da debido a la naturaleza del ser humano, cuando aprendemos a llevar a cabo una funcion o una actividad entramos en un punto de estabilidad, conformismo y de comodidad del cual no estamos dispuestos a salir (resistencia a cambiar) SALVO, (aqui esta la solucion) si identificamos que las nuevas condiciones representan menor costo de esfuerzo en el trabajo que a como hemos estado trabajando.
      obviamente para tener la vision de que la nueva manera de trabajo va a implicar una reduccion en mi esfuerzo tengo que estar informado de las nuevas condiciones de trabajo y tengo que entender porque se va a hacer mas facil el trabajo, de esta forma vere beneficio en vez de incomodidad e inestabilidad.

      Recordemos que cuando hablamos de mejora estamos involucrando un cambio, sin embargo cuando hablamos de cambio no precisamente estamos involucrando una mejora.

      Un ejemplo muy citado para ilustrar la relacion de cambio, mejora y resistencia al cambio.
      en una empresa se va a MEJORAR los gastos administrativos, para lo cual se pide la colaboracion a los empleados para ejecutar ciertos CAMBIOS.
      Estos cambios representan una reduccion en el personal por lo tanto significa que algunos de los empleados van a ser despedidos.
      En este caso, naturalmente va a haber resistencia al cambio por parte de los empleados porque en el cambio no hay beneficio para ellos, por el contrario van a salir perjudicados.

      Por otro lado, en una empresa se va a instalar un software para sistematizar la toma de pedidos, esto MEJORARA los tiempos en los que se toman las ordenes porque el empleado no debera estar tomando nota sino unicamente seleccionando las opciones en pantalla, este CAMBIO significa reducir trabajo a los empleados por lo cual si los empleados son informados y capacitados con el nuevo sistema no experimentaran la misma RESISTENCIA AL CAMBIO que si ignoran esta informacion, la cual obviamente involucra facilidad para elaborar su trabajo.
      En el ejemplo anterior menciono "Experimentar la MISMA resistencia al cambio", con esto quiero decir que definitivamente como hemos mencionado si va a haber sesistencia al cambio por deferentes razones entre las cuales puedo destacar "no pueden utilizar un sistema de computo", "la capacitacion es fuera de las horas de trabajo y no estan dispuestos a otorgar mas tiempo a la empresa", "les dificulta leer los pedidos" y asi podemos mencionar muchas razones, pero si es resistencia directa ayudara al proyecto porque identificando estos puntos se puede mejorar el sistema tomando politicas por ejemplo "capacitaciones dentro del horario de trabajo", "tolerancia a los errores mientras se aprende a utilizar el sistema de coputo", "mejora en los tamanos de monitor o en la presentacion de la informacion para poder leer los pedidos".

      Entonces pues, para lograr disminuir la resistencia al cambio tenemos diferentes tecnicas que ayudaran sin embargo no podemos pretender eliminar la resistencia al cambio porque es un instinto natural del ser humano al entrar en un estado de inestabilidad y de experimentacion de nuevas experiencias.

      1. Involucrar a los empleados en el cambio (escuchar y tomar en cuenta sus puntos de vista asi ellos se sienten participes del cambio, esto tambien los involucra directamente a ser responsables de los resultados por lo cual querran trabajar en pro de la mejora).
      2. Establecer sensacion de urgencia (hacer parecer a los empleados que los cambios que se estan dando son con caracter de urgencia porque se esta en riesgo, esto ayudara a presionar a los empleados a adoptar el cambio debido a que la empresa esta amenazada y si sigue teniendo perdidas corre el riesgo de entrar en crisis lo cual afectara a todos los empleados directamente con su salario o las condiciones de trabajo. esta tecnica nuevamente involucra al empleado para ayudarlo a adoptar el cambio poniendo en juego sus intereses).
      3. Identificar empleados lideres, los cuales ayuden a convencer a los demas empleados seguidores sobre las mejoras que supone el cambio.
      4. Definir bien el proyecto de mejora, los aspectos a mejorar, es decir, crear una vision clara de a donde queremos llevar la empresa y lo mas importante COMUNICAR a TODOS esta informacion, asi no hay desinformacion que es el principal motivo de el miedo, dando como resultado resistencia.
      5. Generar cambios cortos y medibles, para que en base a resultados tangibles todos vayan experimentando, sintiendo los beneficios de mejora y quieran participar de ellos y disfrutar de los nuevos beneficios. 

      miércoles, 7 de abril de 2010

      Arquitectura Orientada a Servicios (SOA)

      Arquitectura Orientada a Servicios (SOA) 
      En cuanto a la INTEGRACION se refiere, una Aplicacion Orientada a SERVICIOS es la solucion.

      Trabajar basado en servicios es incrementar el nivel de abstraccion de un problema, es elevar la solucion a una forma mas flexible.

      Cuando hablamos de arquitectura en el contexto de software nos referimos a la organizacion fundamental del sistema, es decir, los componentes, como estan relacionados y como se comunican e interactuan unos componentes con otros.

      asi como existe el paradigma enfocado a objetos, el paradigma enfocado a servicios es un nivel superior en los sistemas debido a que los servicios son modulos independientes que no tienen estado, su funcionalidad radica en parametros de entrada, en base a estos genera parametros de salida dandole independencia al servicio.

      para modelar las reglas de negocio en un paradigma orientado a servicios se utiliza la orquestacion de servicios que no es mas que llevar el control que indica por que servicios ya se ha obtenido resultado y de cuales servicios estamos a espera, es bueno mencionar que lo anterior no quiere decir que el servicio guarde un estado como tal.

      Servicio: un proceso que genera beneficios, su forma es intangible y trabajan de forma autonoma, dicho en otras palabras, en un servicio a partir de parametros de entrada se generan parametros de salida cuando se ejecuta la llamada, un servicio no tiene estados porque es independiente, de hecho podemos estar trabajando en un lenguaje por ejemplo java y utilizar servicios codificados en c++ porque son totalmente independientes.

      Orquestacion: es secuenciar los servicios para tener orden y control en los resultados, la orquestacion es  utilizada cuando son dos o mas servicios los que se utilizan y como estos no guardan estado entonces es necesario secuenciar los servicios para dar logica al negocio.

      SOA (Service Oriented Architecture) es comun pensar en SERVICIOS WEB o web service que es la exprecion mas comun del paradigma orientado a servicios.

      por ejemplo en internet o en una intranet se pueden tener servicios web funcionando y contar con una aplicacion de escritorio o una RIA que parte de su funcionalidad este procesada por un web service dado es el caso de los pagos por tarjeta de credito.

      Explico, una tienda eletronica cuenta con su pagina web de e-comerce la cual esta compuesta de un catalogo, una carretia de compras y un sistema de autenticacion de usuarios sin embargo permite realizar pagos con tarjeta de credito para lo cual utiliza un servicio web de pagos en linea el cual le permite verificar la terjeta de credito, descontar la cantidad consumida por el cliente y esta funcionalidad es ajena a su pagina de e-commerce mas bien es competencia de la emrpesa emisora de tarjeta de credito (banco o financiera).
      Para el ejemplo citado:
      • tipo servicio: web
      • servicio: pagos con tarjeta de credito
      • parametro de llamada: numero de tarjeta de credito, fecha y hora, monto consumido, establecimiento.
      • parametro de respuesta del servicio: aceptacion/rechazo pago, numero de transaccion.
      Servicios Web 
      Desde luego, el paradigma orientado a serivicios web tiene su manera de funcionar, para poder implementarlo de forma correcta nececitamos emplear
      • SOAP: Simple Object Access Protocol, protocolo utilizado para comunicacion de servicios web, es decir, es el sobre donde se envia la informacion del servicio web.
      • UDDI: catalogo de servicios web, es como una guia de servicios web existentes y disponibles, existen paginas blancas, amarillas y verdes en las cuales se publica el listado de web services ordenados por sector industrial o basado en taxonomias.
      • WSDL: es la estructura de los servicios web, es decir, para comunicarnos con los web services debemos saber que estructura debe tener la comunicacion y que parametros tengo que enviar para ello existe el WSDL.

      martes, 6 de abril de 2010

      Diferencia entre REGRESION Y CORRELACION

      La Regresion y la Correlacion son dos medidas que estan estrechamente relacionadas pero son totalmente diferentes, los conceptos expuestos a continuacion aclaran la diferencia entre los dos terminos.

      El concepto de Correlacion dice que es la medida en la cual se relacionan dos variables diferentes por ejemplo como se relaciona la cantidad de fumadores con la cantidad de enfermos de cancer del pulmon o la relacion que tienen las notas de cursos de estudiantes de diferentes universidades o diferentes nivel economico.

      Por otra parte la Regresion es la ecuacion matematica que describe el comportamiento de dos medidas, es decir, con la regresion podemos construir una formula que nos de el numero de enfermos de cancer de pulmon en funcion de los fumadores o el numero de cursos aprobados en funcion de la universidad o del estatus social del estudiante.

      La correlacion se torna interesante cuando el analista o la persona quien esta ejecutando el analisis de la relacion entre las variables nececita saber con que fuerza influye una variable con el comportamiento de la segunda variable, es decir, cuando medimos la correlacion nos interesa saber que tan importante es una variable y que tanto influye en el resultado.

      En la otra mano tenemos la Regresion que por definicion sabemos que es la construccion de una ecuacion matematica que describe el coportamiento de dos variables a partir de datos mustrales capturados, entonces, la regresion es util cuando saber una prediccion del resultado en base a un valor que resulta ser la variable de la ecuacion calculada por medio de la regresion de datos por ejemplo si yo tengo el numero de alumnos en una clase de matematica y quiero saber la cantidad de alumnos que aprobaran, lo puedo lograr gracias a datos estadisticos que me han generado una ecuacion que describa el comportamiento del numero de alumnos aprobados en funcion del numero de alumnos inscritos de el curso de matematica.

      Red cableada vs red inalambrica

      Tanto las redes cableadas como las redes inalambricas son soluciones para la comunicacion de informacion dentro de un grupo de dispositivos (computadoras, pda, impresoras, etc.).

      Ambas soluciones tienen sus ventajas y sus desventajas, las cuales son fundamentales analizar para tomar la mejor decicion al momento de diseñar e implementar una solucion de conectividad en redes.

      Por su parte las redes alambricas son muy confiables, seguras, veloces y soportan distancias mas largas, sin embargo entre las desventajas tenemos que son incomodas al momento de hacer cambios fisicos, requieren mantener un cable fisico y su instalacion conlleva gastos alternos como lo son las regletas conductoras de cable, switch de conectividad.

      Las Redes inalambricas por su parte dan movilidad, evitan cableado estructurado, independencia de la cantidad de equipos conectados y es mas barata su instalacion, sin embargo sus desventajas son la seguridad, corto alcance especialmente si hay muros por medio, afectan condiciones del clima por su naturaleza de transmitirse por el aire, son mas lentas que las redes cableadas y estan expuestas a interferencias por otras redes inalambricas o a ser interceptadas, recordemos que al ser por el ambiente la transmision  inalambrica es vulnerable a intercepcion en la capa fisica del modelo OSI(Open System Interconection).

      Sabiendo las ventajas y desventajas que implica cada tipo de red, inclinarnos por algun tipo de esta red va a depender de sopesar la velocidad, seguridad y eficiencia de las redes alambricas con la movilidad y costo de las redes inalambricas.

      Entonces esta claro destacar que si mi red esta destinada a una oficina o laboratorio que tiene muchas computadoras conectadas a la red por ejemplo (colegios, oficinas en edificios, empresas) es recomendable diseñar e implementar un buen sistema alambrico el cual va a permitir velocidad evitando que choquen los paquetes inalambricamente, seguridad en la intercepcion de paquetes o en la conexion de equipos ajenos y un servicio estable en el tiempo.

      Si por el contrario, la red que quiero instalar es en una sala de conferencias, en un aeropuerto, un restaurante o una biblioteca, entonces, la seguridad, velocidad y estabilidad del servicio pasa a ser segundo plano y es donde conviene instalar una solucion inalambrica la cual va a permitir la movilidad deseada.

      En tercer opcion tenemos una red hibrida y aunque los costos se eleven, contar con ambos sistemas de red me va a permitir explotar la conexion de dispositivos moviles (laptops, PDA) y para las computadoras estacionarias (Desktop) una conectividad inalambrica.