Vistas de página en total

martes, 15 de octubre de 2013

ARQUITECTURA DE PIZARRA

La arquitectura en pizarra consta de múltiples elementos funcionales, denominados agentes, y un instrumento de control denominado pizarra.
Los agentes suelen estar especializados en una tarea concreta o elemental. Todos ellos cooperan para alcanzar una meta común, si bien, sus objetivos individuales no están aparentemente coordinados.
El comportamiento básico de cualquier agente consiste en examinar la pizarra, realizar su tarea y escribir sus conclusiones en la misma pizarra. De esta manera, otro agente puede trabajar sobre los resultados generados por otro.
La computación termina cuando se alcanza alguna condición deseada entre los resultados escritos en la pizarra.
La pizarra tiene un doble papel. Por una parte, coordina a los distintos agentes y, por otra, facilita su intercomunicación. El estado inicial de la pizarra es una descripción del problema que resolver y el estado final será la solución del problema.
Los resultados generados por los agentes deben responder a un lenguaje y semántica común. En general, se suelen utilizar formalismos lógicos o matemáticos, tales como expresiones lógicas de primer orden.


Ventajas e inconvenientes


Esta arquitectura es tremendamente útil cuando el problema a resolver (o algoritmo a implementar) es extremadamente complejo en términos cognitivos. Es decir, cuando el flujo de control del algoritmo es enrevesado, o simplemente, no se tiene un conocimiento completo del problema a resolver.
Las desventajas de la arquitectura son bastante obvias a priori. Es importante no generalizar en este aspecto, puesto que cada implementación en particular puede solventar estas desventajas en algún ámbito limitado:
·         No existe garantía de que se alcanzará una solución.
·         Es una arquitectura ineficiente, puesto que no existe una cota respecto al tiempo de cómputo necesario para resolver el problema.
·         Es difícil obtener una traza de los pasos que llevaron a la solución, es decir, no ofrece explicaciones.


Desde un punto de vista más filosófico, la arquitectura en pizarra ofrece un interesante experimento de tipo social. Cada agente tiene sus propios objetivos, desconoce los objetivos de los demás, y tampoco conoce el objetivo global (la solución del problema). Sin embargo, se produce una cooperación inconsciente entre ellos que lleva a una meta más importante.





MODELO REST

La Transferencia de Estado Representacional (Representational State Transfer) o REST es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web.
Si bien el término REST se refería originalmente a un conjunto de principios de arquitectura —descritos más abajo—, en la actualidad se usa en el sentido más amplio para describir cualquier interfaz web simple que utiliza XML y HTTP, sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes como el protocolo de servicios web SOAP. Es posible diseñar sistemas de servicios web de acuerdo con el estilo arquitectural REST de Fielding y también es posible diseñar interfaces XMLHTTP de acuerdo con el estilo de llamada a procedimiento remoto pero sin usar SOAP. Estos dos usos diferentes del término REST causan cierta confusión en las discusiones técnicas, aunque RPC no es un ejemplo de REST.
Los sistemas que siguen los principios REST se llaman con frecuencia RESTful; los defensores más acérrimos de REST se llaman a sí mismos RESTafaris.
REST afirma que la web ha disfrutado de escalabilidad como resultado de una serie de diseños fundamentales clave:
·         Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Como resultado, ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión (algunas de estas prácticas, como la reescritura de URLs, no son permitidas por REST)
·         Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información: HTTP en sí define un conjunto pequeño de operaciones, las más importantes son POST,GETPUT y DELETE. Con frecuencia estas operaciones se equiparan a las operaciones CRUD que se requieren para la persistencia de datos, aunque POST no encaja exactamente en este esquema.
·         Una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso es direccionable únicamente a través de su URI.
·         El uso de hipermedios, tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado en un sistema REST sontípicamente HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.

Una aplicación web REST requiere un enfoque de diseño diferente a una aplicación basada en RPC. En RPC, se pone el énfasis en la diversidad de operaciones del protocolo, o verbos; por ejemplo una aplicación RPC podría definir operaciones como:
·         getUser()
·         addUser()
·         removeUser()
·         updateUser()
·         getLocation()
·         addLocation()
·         removeLocation()
·         updateLocation()
·         listUsers()
·         listLocations()
·         findLocation()
·         findUser()
En REST, al contrario, el énfasis se pone en la diversidad de recursos, o los nombres; por ejemplo, una aplicación REST podría definir los siguientes tipos de recursos:
·         Usuario {}
·         Localización {}
Cada recurso tendría su propio identificador, como http://www.example.org/locations/us/ny/new_york_city. Los clientes trabajarían con estos recursos a través de las operaciones estándar de HTTP, como GET para descargar una copia del recurso. Obsérvese cómo cada objeto tiene su propia URL y puede ser fácilmente cacheado, copiado y guardado como marcador. POST se utiliza por lo general para acciones con efectos laterales, como enviar una orden de compra o añadir ciertos datos a una colección.
Por ejemplo, el registro para un usuario podría tener el siguiente aspecto:
<usuario>
 <nombre>María Juana</nombre>
 <sexo>mujer</sexo>
 <localización href="http://www.example.org/locations/us/ny/new_york_city">Nueva York, NY, US</localización>
</usuario>
Para actualizar la localización del usuario, un cliente REST podría primero descargar el registro XML anterior usando GET. El cliente después modificaría el fichero para cambiar la localización y lo subiría al servidor utilizando HTTP PUT.
Nótese, sin embargo, que los verbos HTTP no proporcionan ningún recurso estándar para descubrir recursos -- no hay ninguna operación LIST o FIND en HTTP, que se corresponderían con las operaciones list*() y find*() en el ejemplo RPC. En su lugar, las aplicaciones basadas en datos REST resuelven el problema tratando una colección de resultados de búsqueda como otro tipo de recurso, lo que requiere que los diseñadores de la aplicación conozcan URLs adicionales para mostrar o buscar cada tipo de recurso.

Por ejemplo, una petición GET HTTP sobre la URL http://www.example.org/locations/us/ny/ podría devolver un enlace a una lista de ficheros en XML con todas las localizaciones posibles en Nueva York, mientras que una petición GET a la URL http://www.example.org/users?surname=Michaels podría devolver una lista de enlaces a todos los usuarios con el apellido "Michaels".
REST proporciona algunas indicaciones sobre cómo realizar este tipo de acciones como parte de su restricción "hipermedia como el medio de estado de la aplicación", lo que sugiere el uso de un lenguaje de formularios (tales como un formulario HTML) para especificar consultas parametrizadas.


La iniciativa OpenSearch de A9.com intenta estandarizar las búsquedas usando REST estableciendo especificaciones para descubrir recursos y un formato genérico para utilizar con sistemas basados en REST, incluyendo el RDFXTMAtomRSS (en sus varias formas) y XML con XLink para gestionar los enlaces.



SISTEMAS DE HIPERTEXTO

Como ya se ha puesto de manifiesto, el concepto de hipertexto presenta cierta ambigüedad, ya que con el mismo término se hace referencia a tres significados distintos: un  modelo teórico de organizar la información (el concepto de sistema hipertextual), las herramientas de creación (es decir, el software y aplicaciones utilizadas para la puesta en marcha y desarrollo del sistema, lo que se conoce comúnmente como sistemas de gestión de hipertextos); y por último, las aplicaciones concretas a que dan lugar esos sistemas de gestión (los documentos hipertextuales ohiperdocumentos).

Un documento hipertextual puede crearse como un sistema independiente o para integrarse en un sistema en red, y también ofrece la posibilidad de presentarse bien como un sistema sólo delectura en el que el lector/usuario no puede modificar nada a pesar de poder elegir un recorrido propio de lectura o navegación; o bien puede aparecer como un sistema que permite allector/usuario no sólo escoger su propio modo de lectura o exploración, sino también crear sus propios enlaces y anotaciones. Existen sistemas de gestión de hipertextos totalmente cerrados que almacenan la información, por ejemplo, en un CD-ROM o en un DVD de sólo lectura, y otros que permiten trasladar esa información a un ordenador o a un servidor de red, mientras que existen otros modelos más desarrollados que permiten todas estas funciones y que además hacen posible la apertura del hipertexto a la Web.

La mayor parte de los documentos hipertextuales que se diseñan en la actualidad, y las herramientas para gestionarlos, se construyen para su integración en la Web. El sistema hipertextual por excelencia es el sistema de la World Wide Web basado en el lenguaje HTML, pero existen otros muchos. Por ejemplo, muchos sistemas de edición electrónica, o la propia ayuda de Windows, utilizan sistemas de hipertexto. También existen hipertextos disponibles en CD-ROM, en ordenadores individuales o en pequeñas redes propietarias o Intranets; y hasta hace poco tiempo, proliferaban los sistemas de gestión autónomos e independientes que se utilizaban para la elaboración de hipertextos literarios, de los cuales sobreviven unos pocos tales como Storyspace. En la actualidad, los sistemas de edición de documentos se conocen con el hombre genérico de herramientas de autor  (authoring tool) y de éstas herramientas, las que tienen funcionalidades hipertextuales se denominan herramientas de autoría para hipertextos (hypertext authoring) para distinguirlas de las herramientas o software para crear documentos web denominadas herramientas de autoría web (web authoring) o editores web. En realidad, ambas herramientas no son más que programas o software para la creación, generación y edición de documentos con funcionalidades hipertextuales. La diferencia radica en que los primeros no crean documentos en lenguaje HTML, sino en otros formatos distintos, y que los segundos -las herramientas para autoría web- sí crean documentos en HTML, aunque lo cierto es que los límites entre ambos sistemas de gestión a veces son difusos, puesto que muchas herramientas de autor sirven tanto para construir hipertextos fuera de la web, como dentro de ella, ya que permiten la conversión de los formatos propios al formato HTML, ofreciendo así la posibilidad de que el hipertexto pueda integrarse en la World Wide Web.

Así pues, podemos distinguir dos tipos principales de sistemas de gestión de hipertextos:
·          Sistemas independientes, autóctonos o cerrados (hypertext authoring)
·          Sistemas dependientes o abiertos a la Web (web authoring)

Antes del desarrollo de la WWW, todos los sistemas pre-web de gestión de hipertextos eran programas autónomos. Hoy, la mayor parte de ellos han desaparecido o se han modificado para integrarse en la WWW. Sin embargo, aún siguen desarrollándose una serie de aplicaciones y herramientas que sirven para crear y gestionar hipertextos independientes. Este tipo de programas es lo que hemos denominado software o herramientas de autor. Los sistemas de gestión de hipertextos independientes son programas concretos que utilizan técnicas de hipertexto y que permiten crear, almacenar, mantener, recuperar, filtrar, adaptar, presentar, anotar, navegar por la información y por los nodos.

Estos programas suelen permitir a los lectores convertirse en autores, añadir anotaciones, añadir enlaces y otras muchas opciones y ofrecen herramientas para gestionar las relaciones de todo tipo y los vínculos: vínculos bidireccionales, enlaces dinámicos, etc. Los primeros programas que servían para construir hipertexto o elaborar páginas web sólo permitían navegar, ver, distribuir y vincular las páginas mediante enlaces. Actualmente, la mayor parte de estos programas cuentan también con la herramientas necesarias para generar de forma automática Tablas de contenidos y bases de datos, indizar páginas o realizar búsquedas. 



Los sistemas de la tecnología hipertextual presentan diferencias notables. Aunque casi todos los sistemas de gestión de hipertextos actuales permiten elementos multimedia, existen también diferencias importantes entre ellos porque algunos sólo soportan imágenes estáticas, mientras que otros permiten añadir sonido, vídeo e incluso animación 3D. Muchos de estos sistemas no se diferencian lo más mínimo de un libro electrónico limitándose a ofrecer al lector poder elegir los recorridos de lectura y navegación, dejando a un lado las verdaderas potencialidades que ofrece el hipertexto; mientras que otros aprovechan todas y cada una de las potencialidades que ofrece el hipertexto e incluso están dotados de un alto grado de interatividad para permitir que el usuario explote al máximo las posibilidades que se le ofrecen.

BASES DE DATOS

Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar fácilmente. A continuación te presentamos una guía que te explicará el concepto y características de las bases de datos.
El término de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado en California, USA. Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada.
Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.
Cada base de datos se compone de una o más tablas que guarda un conjunto de datos. Cada tabla tiene una o más columnas y filas. Las columnas guardan una parte de la información sobre cada elemento que queramos guardar en la tabla, cada fila de la tabla conforma un registro.
Definición de base de datos
Se define una base de datos como una serie de datos organizados y relacionados entre sí, los cuales son recolectados y explotados por los sistemas de información de una empresa o negocio en particular.
Características
Entre las principales características de los sistemas de base de datos podemos mencionar:
·         Independencia lógica y física de los datos.
·         Redundancia mínima.
·         Acceso concurrente por parte de múltiples usuarios.
·         Integridad de los datos.
·         Consultas complejas optimizadas.
·         Seguridad de acceso y auditoría.
·         Respaldo y recuperación.
·         Acceso a través de lenguajes de programación estándar.
Sistema de Gestión de Base de Datos (SGBD)
Los Sistemas de Gestión de Base de Datos (en inglés DataBase Management System) son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta.
Ventajas de las bases de datos
Control sobre la redundancia de datos:
Los sistemas de ficheros almacenan varias copias de los mismos datos en ficheros distintos. Esto hace que se desperdicie espacio de almacenamiento, además de provocar la falta de consistencia de datos.
En los sistemas de bases de datos todos estos ficheros están integrados, por lo que no se almacenan varias copias de los mismos datos. Sin embargo, en una base de datos no se puede eliminar la redundancia completamente, ya que en ocasiones es necesaria para modelar las relaciones entre los datos.
Consistencia de datos:
Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias. Si un dato está almacenado una sola vez, cualquier actualización se debe realizar sólo una vez, y está disponible para todos los usuarios inmediatamente. Si un dato está duplicado y el sistema conoce esta redundancia, el propio sistema puede encargarse de garantizar que todas las copias se mantienen consistentes.
Compartición de datos:
En los sistemas de ficheros, los ficheros pertenecen a las personas o a los departamentos que los utilizan. Pero en los sistemas de bases de datos, la base de datos pertenece a la empresa y puede ser compartida por todos los usuarios que estén autorizados.
Mantenimiento de estándares:
Gracias a la integración es más fácil respetar los estándares necesarios, tanto los establecidos a nivel de la empresa como los nacionales e internacionales. Estosestándares pueden establecerse sobre el formato de los datos para facilitar su intercambio, pueden ser estándares de documentación, procedimientos de actualización y también reglas de acceso.
Mejora en la integridad de datos:
La integridad de la base de datos se refiere a la validez y la consistencia de los datos almacenados. Normalmente, la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas restricciones se pueden aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe encargar de mantenerlas.
Mejora en la seguridad:
La seguridad de la base de datos es la protección de la base de datos frente a usuarios no autorizados. Sin unas buenas medidas de seguridad, la integración de datos en los sistemas de bases de datos hace que éstos sean más vulnerables que en los sistemas de ficheros.
Mejora en la accesibilidad a los datos:
Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicación que realice tal tarea.
Mejora en la productividad:
El SGBD proporciona muchas de las funciones estándar que el programador necesita escribir en un sistema de ficheros. A nivel básico, el SGBD proporciona todas las rutinas de manejo de ficheros típicas de los programas de aplicación.
El hecho de disponer de estas funciones permite al programador centrarse mejor en la función específica requerida por los usuarios, sin tener que preocuparse de los detalles de implementación de bajo nivel.
Mejora en el mantenimiento:
En los sistemas de ficheros, las descripciones de los datos se encuentran inmersas en los programas de aplicación que los manejan.
Esto hace que los programas sean dependientes de los datos, de modo que un cambio en su estructura, o un cambio en el modo en que se almacena en disco, requiere cambios importantes en los programas cuyos datos se ven afectados.
Sin embargo, los SGBD separan las descripciones de los datos de las aplicaciones. Esto es lo que se conoce como independencia de datos, gracias a la cual se simplifica el mantenimiento de las aplicaciones que acceden a la base de datos.
Aumento de la concurrencia:
En algunos sistemas de ficheros, si hay varios usuarios que pueden acceder simultáneamente a un mismo fichero, es posible que el acceso interfiera entre ellos de modo que se pierda información o se pierda la integridad. La mayoría de los SGBD gestionan el acceso concurrente a la base de datos y garantizan que no ocurran problemas de este tipo.
Mejora en los servicios de copias de seguridad:
Muchos sistemas de ficheros dejan que sea el usuario quien proporcione las medidas necesarias para proteger los datos ante fallos en el sistema o en las aplicaciones. Los usuarios tienen que hacer copias de seguridad cada día, y si se produce algún fallo, utilizar estas copias para restaurarlos.
En este caso, todo el trabajo realizado sobre los datos desde que se hizo la última copia de seguridad se pierde y se tiene que volver a realizar. Sin embargo, los SGBD actuales funcionan de modo que se minimiza la cantidad de trabajo perdido cuando se produce un fallo.
Desventajas de las bases de datos
Complejidad:
Los SGBD son conjuntos de programas que pueden llegar a ser complejos con una gran funcionalidad. Es preciso comprender muy bien esta funcionalidad para poder realizar un buen uso de ellos.
Coste del equipamiento adicional:
Tanto el SGBD, como la propia base de datos, pueden hacer que sea necesario adquirir más espacio de almacenamiento. Además, para alcanzar las prestaciones deseadas, es posible que sea necesario adquirir una máquina más grande o una máquina que se dedique solamente al SGBD. Todo esto hará que la implantación de un sistema de bases de datos sea más cara.
Vulnerable a los fallos:
El hecho de que todo esté centralizado en el SGBD hace que el sistema sea más vulnerable ante los fallos que puedan producirse. Es por ello que deben tenerse copias de seguridad (Backup).
Tipos de Campos
Cada Sistema de Base de Datos posee tipos de campos que pueden ser similares o diferentes. Entre los más comunes podemos nombrar:
·         Numérico: entre los diferentes tipos de campos numéricos podemos encontrar enteros “sin decimales” y reales “decimales”.
·         Booleanos: poseen dos estados: Verdadero “Si” y Falso “No”.
·         Memos: son campos alfanuméricos de longitud ilimitada. Presentan el inconveniente de no poder ser indexados.
·         Fechas: almacenan fechas facilitando posteriormente su explotación. Almacenar fechas de esta forma posibilita ordenar los registros por fechas o calcular los días entre una fecha y otra.
·         Alfanuméricos: contienen cifras y letras. Presentan una longitud limitada (255 caracteres).


·         Autoincrementables: son campos numéricos enteros que incrementan en una unidad su valor para cada registro incorporado. Su utilidad resulta: Servir de identificador ya que resultan exclusivos de un registro.




SISTEMAS CENTRADOS EN DATOS (REPOSITORIOS)

ARQUITECTURAS DEL DESARROLLO DE SOFTWARE
Los diferentes tipos de modelos de diseño arquitectural son los siguientes:

Modelos estructurales.
Representan la arquitectura como una colección organizada de componentes.

Modelo de Frameworks.
Identifican patrones de diseño arquitectónico repetibles que se encuentran en aplicaciones similares.

Modelos Dinámicos.
Muestra los aspectos de comportamiento dinámico de la arquitectura indicando como la estructura o la configuración puede cambiar en base a eventos externos.

Modelos de Procesos.
Se enfocan en diseño del proceso del negocio que sistema debe soportar.

Modelos funcionales.
Pueden utilizarse para representar la jerarquía funcional del sistema.

Estilos arquitectónicos.
 Arquitectura centrada en datos.
Como parte central en esta arquitectura aparece un almacén de datos es cual es accedido frecuentemente por otros componentes que actualizan añaden y borran dichos componentes. El software cliente accede a un repositorio vacío

.Repositorio pasivo  el cliente de software accede a los datos independientemente delos cambios o las acciones de otros clientes de software.

Repositorio activo el repositorio envía información a los clientes cuando los datos de su interés cambian siendo por lo tanto un ente activo.



Las arquitecturas centradas en datos proporcionan integridad, es decir los componentes existentes pueden cambiar y pueden añadirse nuevos componentes a la arquitectura sin que afecte a otros clientes. A su vez los datos pueden ser pasados entre clientes através de mecanismos que coordinen dicha transferencia de información.





Arquitectura centrada en flujos de datos

 Se basa en un patrón tuberías y filtros. Este consta de un conjunto de componentes denominados “filtros” conectados entre si por “tuberias” que transmiten los datos desde un componente al siguiente. Cada filtro trabaja de manera independiente de los componentes que se encuentren situados antes o después de ella. Se diseñan de tal modo que esperan que un conjunto de datos en un determinado formato. Y obtiene como resultado datos de salida en un formato especifico

Arquitectura llamada y respuesta.
Permite a los diseñadores de software conseguir estructuras relativamente fáciles de modificar y escalar. Podemos encontrar diferentes estilos dentro de este tipo.

Programa principal subprograma. Descompone las funciones en una jerarquía de control donde el programa principal invoca a programas subordinados los cuales a su vez invocan a otros.

Llamada a procedimiento remoto. Los componentes de la arquitectura son distribuidos entre diferentes ordenadores de la red

Arquitectura orientada a objetos.
Los componentes del sistema encapsulan datos y operaciones que deben de utilizarse para manipular dichos datos.

Arquitectura en capas.
Se definen como un conjunto de niveles o capas cada nivelinterno que se atraviesa se aproxima mas al nivel del conjunto de instruccionesmaquina.Sistemas en capas puros. Cada capa solo puede comunicarse con las vecinas.  Esta solución aunque menos eficiente facilita la portabilidad en los diseños

Arquitectura basada en atributos.

Que se establecen como una extensión de la noción de estilo arquitectónico, mediante la asociación de modelos analíticos de atributos de calidad. En este sentido, los autores proponen que estos estilos incluyen un razonamiento cualitativo o cuantitativo, basado en modelos específicos de atributos de calidad.

Arquitecturas orientadas a servicios.

Una SOA es una arquitectura Es “independiente” de tecnologías. Es una arquitectura de una aplicación donde las funcionalidades se definen como servicios independientes, con interfaces invocables bien definidas, que pueden ser llamadas en secuencias dadas para formar procesos de negocios