PROYECTOS TELEMÁTICOS (Nivel 1) INTRODUCCIÓN A LA COMPETENCIA DEFINIDA COMO DESARROLLO DE PROYECTOS TELEMÁTICOS ..........................................................................3 1. TERMINOLOGÍA RELACIONADA A LOS PROYECTOS TELEMÁTICOS .....5 2. LAS BASES DE DATOS RELACIONALES ................................................16 2.1. Las reglas que hacen que un sistema gestor de base de datos sea relacional. ... 19 2.2. Ventajas de un sistema de base de datos:...................................................... 21 2.3. Componentes de un sistema de base de datos................................................ 23 2.3.1. 2.3.2. 2.3.3. Datos.............................................................................................................23 Programas......................................................................................................24 Usuarios.........................................................................................................27 2.4. Estructura general de una base de datos........................................................ 29 2.5. Principales bases de datos relacionales .......................................................... 29 2.5.1. 2.5.2. 2.5.3. 2.5.4. SQL ...............................................................................................................30 DB2 ...............................................................................................................32 Oracle............................................................................................................34 Microsoft SQL Server .......................................................................................36 Características de Microsoft SQL Server .................................................................... 36 2.5.5. POSTGRES .....................................................................................................37 Alta concurrencia............................................................................................................37 Amplia variedad de tipos nativos ......................................................................................38 2.5.6. Microsoft Access .............................................................................................39 Inconvenientes ....................................................................................................... 39 3. CONCEPTOS BÁSICOS SOBRE LOS LEGUAJES DE PROGRAMACIÓN ...41 4. PRINCIPALES TECNOLOGÍAS DE DESARROLLO DE SISTEMAS EN ENTORNOS DISTRIBUIDOS .......................................................................50 4.1. RMI ............................................................................................................ 50 Desarrollando aplicaciones con Java RMI...........................................................................52 4.2. COM/DCOM ................................................................................................. 54 4.3. CORBA ........................................................................................................ 57 5. BIBLIOGRAFÍA .....................................................................................61 6. MAPA CONCEPTUAL .............................................................................62 Desarrollo de proyectos telemáticos nivel 1 2 INTRODUCCIÓN A LA COMPETENCIA DEFINIDA COMO DESARROLLO DE PROYECTOS TELEMÁTICOS Definición de la competencia: Conocimientos sobre la planificación, desarrollo e implantación de sistemas de información y comunicación, así como sobre herramientas y metodologías utilizadas. Conocimientos y Capacidades definidas para esta competencia: o El vocabulario asociado a lenguajes de programación (entornos, plataformas, etc.). o Las principales tecnologías de desarrollo de sistemas en entornos distribuidos. o Los principales lenguajes de programación en entornos. o Los principales conceptos de bases de datos corporativas (Oracle, Sql Server, DB2, etc.). Objetivos de aprendizaje. ¿Qué conocimientos y capacidades vas a alcanzar una vez estudiado el contenido del manual? Conocerás el vocabulario asociado a lenguajes de programación. Obtendrás conocimiento de las principales tecnologías de desarrollo de sistemas en entornos distribuidos. Identificarás los principales lenguajes de programación en entornos. Conocerás los principales conceptos de bases de datos corporativas. Desarrollo de proyectos telemáticos nivel 1 3 Resumen de los contenidos del manual En este manual vas a encontrar la información básica necesaria relacionada con el desarrollo de proyectos telemáticos. En primer lugar nos dedicaremos a definir los términos más importantes asociados con los proyectos telemáticos. En segundo lugar nos referiremos a las bases de datos relacionales. El tercer punto comprende los conceptos básicos sobre los lenguajes de programación. La cuarta parte estará dedicada a las tecnologías de desarrollo de sistemas en entornos distribuidos. Desarrollo de proyectos telemáticos nivel 1 4 1. TERMINOLOGÍA RELACIONADA A LOS PROYECTOS TELEMÁTICOS LA TELEMÁTICA: La Telemática es una disciplina científica y tecnológica que surge de la evolución y fusión de la telecomunicación y de la informática. El término Telemática se acuñó en Francia (télématique). En 1976, en un informe encargado por el presidente francés y elaborado por Simon Nora y Alain Minc (conocido como informe Nora-Minc y distribuido por el título: "Informatización de la Sociedad") en el que se daba una visión increíblemente precisa de la evolución tecnológica futura. Ahora bien, el concepto, también puede ligarse a un origen estadounidense: compunication, o como se utiliza más habitualmente Computer and Communications. No obstante, no es casualidad la diferencia entre los términos: responden a contextos diferentes, en efecto, hay matices claves a distinguir. Para aclarar esto, conviene situarse en el contexto de la época: por una parte Francia, ponía claro énfasis en las telecomunicaciones como motor de su transformación social (1976), mientras que Estados Unidos estaba viviendo una gran revolución de la informática. Así, compunication apunta a un modelo con mayor relevancia de los sistemas informáticos; telemática (télématique) por su parte, refiere a un mayor énfasis en la telecomunicación. Esta diferencia de origen se ha perdido, ya que esta disciplina científica y tecnológica ha convergido por completo a nivel mundial, para formar un único cuerpo de conocimiento bien establecido. La Telemática cubre un campo científico y tecnológico de una considerable Desarrollo de proyectos telemáticos nivel 1 5 amplitud, englobando el estudio, diseño, gestión y aplicación de las redes y servicios de comunicaciones, para el transporte, almacenamiento y procesado de cualquier tipo de información (datos, voz, vídeo, etc.), incluyendo el análisis y diseño de tecnologías y sistemas de conmutación. La Telemática abarca entre otros conceptos los siguientes planos funcionales: • El plano de usuario, donde se distribuye y procesa la información de los servicios y aplicaciones finales. • El plano de señalización y control, donde se distribuye y procesa la información de control del propio sistema, y su interacción con los usuarios. • El plano de gestión, donde se distribuye y procesa la información de operación y gestión del sistema y los servicios, y su interacción con los operadores de la red. Cada uno de los planos se estructura en subsistemas denominados entidades de protocolo, que a su vez se ubican en base a su funcionalidad en varios niveles. Estos niveles son agrupaciones de funcionalidad, y según el Modelo de interconexión de sistemas abiertos de la Organización Internacional de Normalización se componen de: nivel físico, nivel de enlace, nivel de red, nivel de transporte extremo a extremo, nivel de sesión, nivel de presentación y nivel de aplicación. Trata también servicios como la tele-educación (e-learning), el comercio electrónico (e-commerce) o la administración electrónica (e-government), servicios Web, TV digital, la conmutación y la arquitectura de conmutadores, y también toca temas como el análisis de prestaciones, modelado y simulación de redes: optimización, planificación de la capacidad, ingeniería de tráfico y diseño de redes. Desarrollo de proyectos telemáticos nivel 1 6 Otra modalidad es encontrarla focalizada en una actividad específica como Telemática Educativa en donde se desarrolla el uso de los recursos telemáticos dirigidos a la Educación; entre ellos la comunicación interactiva, la distribución de la información y el uso pedagógico de los servicios.. Sin lugar a duda, la posesión de una red informática de nivel medio, se hace absolutamente necesaria para poder poner en funcionamiento un sistema de comunicaciones elemental. La comunicación, ya sea dentro de un grupo pequeño, a lo largo de una organización grande o entre distintas organizaciones, se puede mejorar casi siempre –se puede hacer más fluida, más fácil de recibir y más fácil de responder. La aplicación WEB, una forma de comunicación multimedia que incluye texto, gráficos, sonido, vídeo y guiones transmitidos por computadoras, es la plataforma ideal para la proyección de la comunicación. Aunque son las computadoras las que están colocadas en el extremo de la transmisión y recepción del WEB, es lo que vincula a las computadoras lo que da la aplicación web una de sus características más importantes. El vínculo supone que los emisores y los receptores pueden operar de manera independiente, (los emisores pueden poner el contenido de acuerdo con su programación y los receptores pueden recibirlo en cualquier momento a partir de entonces. El vínculo que se utiliza para la transmisión del contenido del web es un de los dos modos de conexión en la red, ya sea la internet pública, que utiliza redes públicas y privadas, incluyendo la línea de teléfono, o una intranet privada, que utiliza una red de área local (LAN), generalmente dentro de una organización. INTERNET Y WORLD WIDE WEB Desarrollo de proyectos telemáticos nivel 1 7 Internet y World Wide Web (el Web) son los cimientos de una revolución en el ámbito global en las comunicaciones que ha cambiado el modo en que la gente se comunica, trabaja y dirige sus negocios. Ambos facilitan y abaratan el intercambio de información, ideas y productos a través del globo. Acceder a un sitio web de Australia es tan fácil como acceder a un sitio web situado en la acera de enfrente. Cualquier Centro Educativo puede tener acceso a la red de redes por poco dinero. Con un servidor, o un ordenador que haga esas funciones, un colegio que disponga de dos o tres ordenadores conectados en red y la posibilidad de tener un router con acceso telefónico ya puede pensar en dar su primer paso para disponer de presencia en internet. Esta es una condición "sine quo non" para proyectar el centro al exterior. Utilizando cualquier aplicación web podemos diseñar el sitio web institucional y abrir, de esta manera, una ventana o escaparate que facilite y agilice la comunicación entre el centro, los alumnos y las familias. Desarrollo de proyectos telemáticos nivel 1 8 LAN E INTRANET La misma importancia que ha adquirido internet para la sociedad la han adquirido las redes de área local (LAN), o aún más, para el intercambio de información y comunicación dentro de las organizaciones. Las LAN empezaron como un medio para compartir programas y archivos de datos entre diversas personas de una misma organización. Esto se amplió al parecer el correo electrónico (correo-e) para enviar y recibir mensajes a través de la LAN. Recientemente se han añadido intranets a la LAN para proporcionar una versión en miniatura del Word, Wide Web dentro de una organización.-un lugar donde la gente puede colocar y leer documentos con textos y gráficos en el momento que elija. Un buen ejemplo de uso que se puede dar a una intranet sería un informe de un proyecto. En vez de enviar una actualización semanal por correo electrónico a una lista larga de personas que puedan estar interesadas (y llenar la bandeja de entrada de cada una de ellas durante el proceso), se podría poner una página web en la que no solamente se incluiría una información sobre el estado actual del proyecto, sino también otro tipo de información, como la gente que está trabajando en el mismo, las metas y su financiación. De este modo, las personas realmente interesadas podrían obtener esta información. Como definición del término intranet : "Red de comunicación interna diseñada sobre la base de los protocolos de internet (TCP/IP) que puede estar o no conectada a ésta y que enlaza múltiples usuarios". La tecnología intranet permite a usuarios de empresas, y organizaciones trabajar de forma más eficiente facilitándoles la información que precisan. A un nivel muy básico, una intranet es el lugar común donde poner toda la información que pueda Desarrollo de proyectos telemáticos nivel 1 9 necesitar cualquiera de sus empleados para llevar a cabo con éxito su labor diaria. Con el proyecto de una red local, la intranet es un vehículo gracias al cual se reducen los tiempos de búsqueda de datos y se coordinan proyectos de trabajo ya que permite archivar el trabajo electrónicamente y volverlo a encontrar de manera muy rápida. El propio servidor de red de la LAN puede ser el equipo encargado de manejar el tráfico en código HTML, depositados en su propio disco duro, para que mediante un navegador Web todos los usuarios puedan acceder a la información organizada como si de una internet interna sé tratarse. CONFECCIÓN DE PÁGINAS WEB Una aplicación web consta de una o más páginas web conectadas entre sí. Una página web es un archivo de texto que contiene lenguaje de marcas de hipertexto (HTML), etiquetas de formato y vínculos a archivos de gráficos y a otra página web. Es la capacidad y la habilidad en la confección y diseño de estas páginas donde radica uno de los puntos más importantes a la hora de poner en funcionamiento, de manera independiente, todo el entramado que rodea a las intranet e internet. Hoy en día cualquier persona puede diseñar una página web con ayuda del programa adecuado. (Solamente utilizando un editor de texto como Word, podemos elabora páginas web) Desarrollo de proyectos telemáticos nivel 1 10 TELEDUCACIÓN Además de las posibilidades que Internet pueda ofrecer a los alumnos que conociendo sus posibilidades se sirvan de la red como complemento a sus estudios, trabajo, etc. La red de redes, ofrece otra variedad de aprendizaje a los estudiantes y que se constituye como una perfecta alternativa a la tradicional educación a distancia. Estamos hablando de lo que por el momento se conoce como Teleducación o Telenseñanza. Esta nueva forma de impartir y adquirir educación, a la que actualmente se tiende, consiste en una fórmula de enseñanza no presencial con una metodología basada en la distribución de material didáctico multimedia (disquetes, programas multimedia, videos...), y en el uso permanente del correo electrónico como medio de comunicación entre profesores y alumnos, o entre ellos mismos. Ésta puede ser utilizada no sólo por centros educativos de carácter oficial y extraoficial, sino que con ellas, miles de organizaciones podrían impartir cursos de todo tipo. Desde clases de cocina, hasta de astrología, podrían ser impartidos on line. De hecho se está asistiendo a una cada vez mayor presencia de instituciones y organizaciones que se dedican a ofrecer cursos de los más variados temas. La teleducación ofrece la posibilidad de realizar, sin salir de casa, cursos en el extranjero que de otra manera serían muy costosos, y que ahora podrán lucir en los curriculums de muchos usuarios de Internet. Con ello además se consigue una mayor disponibilidad del profesor-tutor a cualquier hora del día, pues pueden mantener intercambios con otros alumnos sobre los contenidos. Asimismo se disminuye el aislamiento que generalmente siente el alumno de la formación a distancia convencional. Desarrollo de proyectos telemáticos nivel 1 11 PLATAFORMA DE DESARROLLO Una plataforma de desarrollo es el entorno de software común en el cual se desenvuelve la programación de un grupo definido de aplicaciones. Comúnmente se encuentra relacionada directamente a un sistema operativo; sin embargo, también es posible encontrarla ligada a una familia de lenguajes de programación o a una Interfaz de programación de aplicaciones (API por sus siglas en inglés). Ejemplos de plataformas son PC (Windows) y Macintosh (Mac) SISTEMA OPERATIVO Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computadora destinado a permitir una administración eficaz de sus recursos. Comienza a trabajar cuando se enciende el ordenador, y gestiona el hardware de la máquina desde los niveles más básicos, permitiendo también la interacción con el usuario. Un sistema operativo se puede encontrar normalmente en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, PDAs, ordenadores, etc.). Desarrollo de proyectos telemáticos nivel 1 12 Entorno es otra de las denominaciones que se utilizan para definir el sistema operativo en el que se trabaja. Los sistemas operativos DOS o UNIX son entornos basados en texto, mientras que Windows, OS2 o MacOS son entornos gráficos. Linux es un entorno basado en texto, aunque en las distribuciones actuales existen entornos gráficos para el mismo. SOFTWARE Software , palabra proveniente del inglés, también denominado equipamiento lógico o soporte lógico, es el conjunto de los componentes intangibles de una computadora, es decir, el conjunto de programas y procedimientos necesarios para hacer posible la realización de una tarea específica, en contraposición a los componentes físicos del sistema (hardware). Esto incluye aplicaciones informáticas tales como un procesador de textos, que permite al usuario realizar una tarea, y software de sistema como un sistema operativo, que permite al resto de programas funcionar adecuadamente, facilitando la interacción con los componentes físicos y el resto de aplicaciones. Bajo esta definición, el concepto de software va más allá de los programas de cómputo en sus distintas formas: código fuente, binario o ejecutable, además de su documentación: es decir, todo lo intangible. Desarrollo de proyectos telemáticos nivel 1 13 APLICACIÓN Aplicación es un programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Posee ciertas características que lo diferencian de un sistema operativo (que hace funcionar al ordenador), de una utilidad (informática) (que realiza tareas de mantenimiento o de uso general) y de un Lenguaje de programación (con el cual se crean los programas informáticos). Suele resultar una solución informática para la automatización de ciertas tareas complicadas como pueden ser la contabilidad o la gestión de un almacén. Ciertas aplicaciones desarrolladas 'a medida' suelen ofrecer una gran potencia ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos. Los programas de aplicación se dividen en muchos tipos, entre los cuales se pueden nombrar: procesadores de texto, hojas electrónicas o de cálculo, manejo de base de datos, Comunicación de datos, Multimedia, presentaciones, diseño gráfico, cálculo, finanzas, correo electrónico, compresión de archivos, presupuestación de obras, gestión de empresas, étc. Algunas compañías agrupan varios programas de distinta naturaleza para que formen un paquete (llamados suites o suite ofimática) que sean satisfactorios para las necesidades más apremiantes del usuario. Todos y cada uno de ellos sirven para ahorrar tiempo y dinero al usuario, al permitirle hacer cosas útiles con el ordenador (o computadora); algunos con ciertas prestaciones, otros con equis diseño; unos son más amigables o fáciles de usar. Desarrollo de proyectos telemáticos nivel 1 14 LENGUAJE DE PROGRAMACIÓN Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web). Desarrollo de proyectos telemáticos nivel 1 15 2. LAS BASES DE DATOS RELACIONALES El término base de datos fue acuñado por primera vez en 1963, en un simposio celebrado en California. De forma sencilla podemos indicar que una base de datos no es más que un conjunto de información relacionada que se encuentra agrupada o estructurada. El archivo por sí mismo, no constituye una base de datos, sino más bien la forma en que está organizada la información es la que da origen a la base de datos. Las bases de datos manuales, pueden ser difíciles de gestionar y modificar. Por ejemplo, en una guía de teléfonos no es posible encontrar el número de un individuo si no sabemos su apellido, aunque conozcamos su domicilio. Del mismo modo, en un archivo de pacientes en el que la información esté desordenada por el nombre de los mismos, será una tarea bastante engorrosa encontrar todos los pacientes que viven en una zona determinada. Los problemas expuestos anteriormente se pueden resolver creando una base de datos informatizada. Desde el punto de vista informático, una 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 manipulan ese conjunto de datos. Desarrollo de proyectos telemáticos nivel 1 16 Desde el punto de vista más formal, podríamos definir una base de datos como un conjunto de datos estructurados, fiables y homogéneos, organizados independientemente en máquina, accesibles a tiempo real, compartibles por usuarios concurrentes que tienen necesidades de información diferente y no predecibles en el tiempo. La idea general es que estamos tratando con una colección de datos que cumplen las siguientes propiedades: • Están estructurados independientemente de las aplicaciones y del soporte de almacenamiento que los contiene. • Presentan la menor redundancia posible. • Son compartidos por varios usuarios y/o aplicaciones. Base de datos relacionales En una computadora existen diferentes formas de almacenar información. Esto da lugar a distintos modelos de organización de la base de datos: jerárquico, red, relacional y orientada a objeto. Los sistemas relacionales son importantes porque ofrecen muchos tipos de procesos de datos, como: simplicidad y generalidad, facilidad de uso para el usuario final, períodos cortos de aprendizaje y las consultas de información se especifican de forma sencilla. Desarrollo de proyectos telemáticos nivel 1 17 Las tablas son un medio de representar la información de una forma más compacta y es posible acceder a la información contenida en dos o más tablas. Más adelante explicaremos que son las tablas. Las bases de datos relacionales están constituidas por una o más tablas que contienen la información ordenada de una forma organizada. Cumplen las siguientes leyes básicas: • Generalmente, contendrán muchas tablas. • Una tabla sólo contiene un número fijo de campos. • El nombre de los campos de una tabla es distinto. • Cada registro de la tabla es único. • El orden de los registros y de los campos no está determinados. • Para cada campo existe un conjunto de valores posible. Desarrollo de proyectos telemáticos nivel 1 18 Las reglas que hacen que un sistema gestor de base de datos sea relacional. 2.1. Antes de poner las reglas recordamos lo que era un sistema gestor de base de datos: Un sistema gestor de base de datos se define como el conjunto de programas que administran y gestionan la información contenida en una base de datos. Se establecen 12 reglas por las cuales la base de datos es relacional: • Regla de información: Toda la información está representada lógicamente en tablas. • Tratamiento sistemático de valores nulos: debe soportar valores nulos de forma automática independientemente del tipo de dato. • Regla de acceso garantizado: Se tiene que poder acceder a cada dato mediante la combinación del nombre de la tabla, la columna que lo contiene y la clave primaria de la fila. • Regla de sublenguaje completo: Debe permitir un lenguaje cuya sintaxis este bien definida para la manipulación de la base de datos. • Catalogo on-line: Un usuario tiene que poder acceder a dicho catalogo con su usuario y contraseña. • Inserción, modificación y borrado de alto nivel: Debe ser posible realizar dichas operaciones sin alterar los demás datos. • Actualización de vista: Se debe poder actualizar las vistas por el sistema gestor. Desarrollo de proyectos telemáticos nivel 1 19 • Independencia física de los datos: la forma de almacenar los datos no influye en la manipulación de los mismos. • Independencia lógica de los datos: los cambios sobre los objetos de la base de datos no tienen porque afectar a los usuarios y programas. • Independencia de distribución: los programas no se tienen porque alterar al redistribuir los datos. • Independencia de integridad: las restricciones de integridad se almacenan y crean en el sistema gestor y no en los programas. • Regla de no subversión: Si un sistema gestor de base de datos tiene un lenguaje de bajo nivel, este lenguaje no se puede utilizar para destruir o evitar las reglas de integridad o las restricciones expresadas en el lenguaje relacional de alto nivel. Si un sistema gestor de base de datos cumple con estas doce reglas se puede afirmar que se trata de un sistema gestor de base de datos relacional o lo que es lo mismo SGBDR Desarrollo de proyectos telemáticos nivel 1 20 2.2. Ventajas de un sistema de base de datos: Eliminación/Reducción de Redundancia: Por redundancia se entiende información repetida dentro del sistema de base de datos (SBD). Lo ideal es eliminar la redundancia, aunque en determinados casos se usa teniendo en cuenta que al utilizar redundancia cualquier cambio hay que transmitirlo a todas las redundancias. (Propagación automática de actualizaciones). Ejemplo: En un sistema de ficheros podríamos tener dos programas uno de cuentas corrientes y otro de préstamos; cada uno con un fichero mientras que en un s.b.d. con un solo fichero bastaría. Eliminación de Inconsistencias: En los s.b.d se eliminan las inconsistencias, que son valores erróneos en las bases de datos. Esto es que existan un mismo dato en más de un sitio con valores distintos (muy relacionado con la Redundancia). Otro tipo de inconsistencias son valores erróneos en el s.b.d. Esto es por ejemplo marcar en horas trabajadas 400 en lugar de 40. Para esto los s.b.d. nos van a ayudar dándonos la posibilidad de imponer restricciones sobre los datos (estas restricciones serán globales). Desarrollo de proyectos telemáticos nivel 1 21 Normas de Representación: Los datos los vamos a representar en la Base de Datos de forma idéntica. Imponer restricciones de seguridad: Nos permite especificar a que usuarios se los permitirá acceder a los datos, a todos o a parte de ellos. En un sistema de ficheros cada aplicación tenía que imponer sus propias restricciones, mientras en un s.b.d. imponemos restricciones globales. Compartición de los datos: Nos permite compartir los datos entre usuarios y aplicaciones. Los Programas no se hacen teniendo en cuenta los datos (es decir, no se tienen en cuenta su aspecto lógico o estructural). Compartir datos viene dado por la característica de independencia de los datos, esto es poder modificar los datos sin modificar los programas y modificar los programas sin modificar los datos. Desarrollo de proyectos telemáticos nivel 1 22 2.3. Componentes de un sistema de base de datos Los componentes de un sistema de base de datos serán: - Datos. - Programas. - Usuarios. - Maquinas. (En este no profundizaremos). 2.3.1. Datos. Los datos o el conjunto de datos es lo que se conoce como la Base de Datos. Dentro de aquí tendremos: • Datos (Ficheros de datos) • Índices. • Diccionarios de datos. • Ficheros con estadísticas de uso de la base de datos. Desarrollo de proyectos telemáticos nivel 1 23 2.3.2. Programas. Los Programas son lo que conoceremos como DBMS (Data Base Management System) o SGBD (Sistema Gestor de Base de Datos). Dentro de este manejo nos van a permitir hacer dos funciones principalmente: 1.- Definición de las estructuras para almacenar los datos. 2.- Manejo de los datos. Además de estas dos cosas el DBMS se ocupara de muchas más cosas como control de acceso, control de inconsistencias, etc. A estas dos características se nos permitirá acceder a ellas desde tres niveles de complejidad (o abstracción), estos tres niveles de abstracción serán: Nivel Físico: - Será desde donde se va a ver la Base de Datos tal y como es. - Se verán la forma de almacenar los datos. - Aquí hablaremos de Registros. - Se representara con lo que conoce como Esquema Físico. Nivel Conceptual: Desarrollo de proyectos telemáticos nivel 1 24 - Es mucho más próximo a nosotros. - Aquí definiremos la base de datos con objetos del mundo real y por relaciones entre estos objetos. - Hablaremos de Entidades y Relaciones. - Para representar el nivel conceptual usaremos el Esquema Conceptual, que va a ser una representación del mundo real: - Para hacer el paso del mundo real al esquema conceptual nos apoyaremos en modelos de datos, que son herramientas formales que nos van a permitir nombrar y definir los objetos del mundo real. Nivel de Visión: - Es un nivel de abstracción Superior. - Es una visión lógica de parte o de toda la base de datos. - Para cada usuario se crea un esquema de visión distinto. - Aquí tenemos un Esquema de Visión. También se conoce como subesquema, se suele utilizar para no agobiar al usuario con información innecesaria y para proteger la base Desarrollo de proyectos telemáticos nivel 1 25 de datos. Desarrollo de proyectos telemáticos nivel 1 26 2.3.3. Usuarios Dentro de los usuarios tenemos distintos tipos dependiendo de la forma en la que interactúan con la misma: • Programadores de aplicaciones: - Son personas con conocimientos de programación (usuarios complejos). - Interactúan con el sistema por medio de llamadas con DML embebidas en algún lenguaje de alto nivel. • Usuarios Especializados: - Son usuarios con conocimientos del lenguaje de base de datos. - Interactúan con el sistema mediante el manejo de datos o mediante el DML. • Usuarios Normales (Operadores): - Tienen escasos conocimientos del lenguaje de base de datos. - Interactúan con el sistema mediante aplicaciones de base de datos que ya han sido creadas por programadores. Desarrollo de proyectos telemáticos nivel 1 27 • Administrador de la Base de datos (DBA: Database Administrator): Por lo general es un grupo de personas que se encarga de gestionar la base de datos. Sus funciones son: - Se encargan de crear los distintos esquemas de la base de datos (Físico y conceptual). - Están encargados de crear los distintos subesquemas correspondientes a cada nivel o usuario. - También se encargan de especificar que reglas deben cumplir los datos. - Y son los encargados de imponer las restricciones de seguridad de la base de datos. Desarrollo de proyectos telemáticos nivel 1 28 2.4. Estructura general de una base de datos 2.5. Principales bases de datos relacionales Desarrollo de proyectos telemáticos nivel 1 29 2.5.1. SQL El Lenguaje de consulta estructurado (SQL [/esecuele/ en español, /sicuèl/ en inglés] Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una base de datos, de una forma sencilla. Es un lenguaje de cuarta generación (4GL). Los orígenes del SQL están ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el cálculo de predicados. Basándose en estas ideas, los laboratorios de IBM definen el lenguaje SEQUEL (Structured English QUEry Language) que más tarde sería ampliamente implementado por el SGBD experimental System R, desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un programa comercial. El SEQUEL terminaría siendo el predecesor de SQL, siendo éste una versión evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos SGBD relacionales surgidos en los años siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje, el SQL-86 o SQL1. Al año siguiente este estándar es también adoptado por la ISO. Sin embargo este primer estándar no cubre todas las necesidades de los Desarrollo de proyectos telemáticos nivel 1 30 desarrolladores e incluye funcionalidades de definición de almacenamiento que se consideraron suprimir. Así que en 1992 se lanza un nuevo estándar ampliado y revisado del SQL llamado SQL-92 o SQL2. En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque la diversidad de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estándar SQL-92 es general y muy amplio. El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones sobre los mismos. Es un lenguaje declarativo de alto nivel o de no procedimiento, que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificación. De esta forma una sola sentencia puede equivaler a uno o más programas que utilizasen un lenguaje de bajo nivel orientado a registro. Como suele ser común en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué es lo que se quiere y no cómo conseguirlo, por lo que una sentencia no establece explícitamente un orden de ejecución. El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de la ejecución de la misma. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza la actualización de los datos, dependiendo del uso de la aplicación, se priorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente en Desarrollo de proyectos telemáticos nivel 1 31 cada motor de base de datos y depende de muchos factores. Existe una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases de datos difusas, usando la lógica difusa. Este lenguaje ha sido implementado a nivel experimental y está evolucionando rápidamente. 2.5.2. DB2 DB2 es una marca comercial, propiedad de IBM, bajo la cual se comercializa el sistema de gestión de base de datos. DB2 versión 9 es un motor de base de datos relacional que integra XML de manera nativa, lo que IBM ha llamado pureXML, que permite almacenar documentos completos dentro del tipo de datos xml para realizar operaciones y búsquedas de manera jerárquica dentro de éste, e integrarlo con búsquedas relacionales. DB2 Express-C es la versión gratuita, soportada por la comunidad, de DB2 que permite desarrollar, implementar y distribuir aplicaciones que no usen las características avanzadas de las versiones comerciales de DB2. Esta versión de DB2 puede ser concebida como el núcleo de DB2, las diferentes ediciones incluyen las características de Express-C más funcionalidades específicas. Gracias a su alcance global y de bajo costo, Internet puede ser una solución de negocios muy poderosa para realizar operaciones comerciales garantizando un nivel de seguridad y confiabilidad con sus servicios de autorización y autenticación integrados a redes y sistema operativos, soportando el network computing utilizando Java y JDBC, incluyendo capacidad nativa de almacenar varios tipos de datos: alfanuméricos, video, imagen, audio y los definidos por el usuario. DB2 y SQL Server tenían grandes compañías detrás con otros negocios que les Desarrollo de proyectos telemáticos nivel 1 32 permitió aguantar la política agresiva de Oracle. Recientemente IBM adquirió Informix con lo que el mercado de las bases de datos comerciales en UNIX (Linux) quedó entre IBM y Oracle. Permite el manejo de objetos grandes (hasta 2 GB), la definición de datos y funciones por parte del usuario, el chequeo de integridad referencial, SQL recursivo, soporte multimedia: texto, imágenes, video, audio; queries paralelos, commit de dos fases, backup/recuperación online y offline. Además cuenta con un monitor gráfico de performance el cual posibilita observar el tiempo de ejecución de una sentencia SQL y corregir detalles para aumentar el rendimiento. Mediante los extensores se realiza el manejo de los datos no tradicionales, por ejemplo si tengo un donde tengo almacenados los curriculums de varias personas, mediante este puedo realizar búsquedas documentos con los datos que me interesen sin tener que ver los CV uno por uno. Esta capacidad se utiliza en sistemas de búsqueda de personas por huellas digitales, en sistemas información geográfica, etc. Internet es siempre la gran estrella, con DB2 es posible acceder a los datos usando JDBC (tan potente como escribir directamente C contra la base de datos), Java y SQL (tanto el SQL estático, como complementa el SQL dinámico). • Plataformas host: OS/390(MVS), VM & VSE, OS/400 Desarrollo de proyectos telemáticos nivel 1 33 • Plataformas de servidor: OS/2 Warp Server, Sinix, SCO Openserver, Windows NT, Aix, HP Ux, Solaris. • Plataformas Cliente: OS/2, DOS, Sinix, SCO OpenServer, Windows 3.1/95/NT, Macintosh System 7, Aix, HP Ux, Solaris. 2.5.3. Oracle Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), fabricado por Oracle Corporation. Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su: • Soporte de transacciones. • Estabilidad. • Escalabilidad. • Es multiplataforma. Aunque su dominio en el mercado de servidores empresariales ha sido casi total hasta hace poco, recientemente sufre la competencia del Microsoft SQL Server de Microsoft y de la oferta de otros RDBMS con licencia libre como PostgreSQL, MySql Desarrollo de proyectos telemáticos nivel 1 34 o Firebird. Las últimas versiones de Oracle han sido certificadas para poder trabajar bajo Linux. Oracle surge a finales de los 70 bajo el nombre de Relational Software a partir de un estudio sobre SGBD (Sistemas Gestores de Base de Datos) de George Koch. Computer World definió este estudio como uno de los más completos jamás escritos sobre bases de datos. Este artículo incluía una comparativa de productos que erigía a Relational Software como el más completo desde el punto de vista técnico. Esto se debía a que usaba la filosofía de las bases de datos relacionales, algo que por aquella época era todavía desconocido. En la actualidad, Oracle (Nasdaq: ORCL) todavía encabeza la lista. La tecnología Oracle se encuentra prácticamente en todas las industrias alrededor del mundo y en las oficinas de 98 de las 100 empresas Fortune 100. Oracle es la primera compañía de software que desarrolla e implementa software para empresas 100 por ciento activado por Internet a través de toda su línea de productos: base de datos, aplicaciones comerciales y herramientas de desarrollo de aplicaciones y soporte de decisiones. Oracle es el proveedor mundial líder de software para administración de información, y la segunda empresa de software. Desarrollo de proyectos telemáticos nivel 1 35 2.5.4. Microsoft SQL Server Microsoft SQL Server es un sistema de gestión de bases de datos relacionales (SGBD) basado en el lenguaje Transact-SQL, y específicamente en Sybase IQ, capaz de poner a disposición de muchos usuarios grandes cantidades de datos de manera simultánea. Así de tener unas ventajas que a continuación se pueden describir. Microsoft SQL Server constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle, Sybase ASE, PostgreSQL o MySQL. Características de Microsoft SQL Server • Soporte de transacciones. • Escalabilidad, estabilidad y seguridad. • Soporta procedimientos almacenados. • Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente. • Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y las terminales o clientes de la red sólo acceden a la información. • Además permite administrar información de otros servidores de datos. Es común desarrollar completos proyectos complementando Microsoft SQL Server y Microsoft Access a través de los llamados ADP (Access Data Project). De esta forma se completa una potente base de datos (Microsoft SQL Server), con un entorno de desarrollo cómodo y de alto rendimiento (VBA Access), a través de la implementación de aplicaciones de dos capas mediante el uso de formularios Desarrollo de proyectos telemáticos nivel 1 36 Windows. Para el desarrollo de aplicaciones más complejas (tres o más capas), Microsoft SQL Server incluye interfaces de acceso para varias plataformas de desarrollo, entre ellas .NET, pero el servidor solo está disponible para Sistemas Operativos Windows. 2.5.5. POSTGRES PostgreSQL es un servidor de base de datos relacional orientada a objetos de software libre, liberado bajo la licencia BSD. Como muchos otros proyectos opensource, el desarrollo de PostgreSQL no es manejado por una sola compañía sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group). Algunas de sus principales características son: Alta concurrencia Mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visión consistente de lo último a lo que se le hizo commit. Esta estrategia es superior al uso de bloqueos por tabla o por filas común en otras bases, eliminando la necesidad del uso de bloqueos explícitos. Desarrollo de proyectos telemáticos nivel 1 37 Amplia variedad de tipos nativos PostgreSQL provee nativamente soporte para: • Números de precisión arbitraria. • Texto de largo ilimitado. • Figuras geométricas (con una variedad de funciones asociadas) • Direcciones IP (IPv4 e IPv6). • Bloques de direcciones estilo CIDR. • Direcciones MAC. • Arrays. Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por completo indexables gracias a la infraestructura GiST de PostgreSQL. Algunos ejemplos son los tipos de datos GIS creados por el proyecto PostGIS. Desarrollo de proyectos telemáticos nivel 1 38 2.5.6. Microsoft Access Microsoft Access es un programa Sistema de gestión de base de datos relacional creado y modificado por Microsoft para uso personal de pequeñas organizaciones. Es un componente de la suite Microsoft Office aunque no se incluye en el paquete "básico". Una posibilidad adicional es la de crear ficheros con bases de datos que pueden ser consultados por otros programas. Es un software de gran difusión entre pequeñas empresas (PYMES) cuyas bases de datos no requieren de excesiva potencia, ya que se integra perfectamente con el resto de aplicaciones de Microsoft y permite crear pequeñas aplicaciones con unos pocos conocimientos del Programa. Tiene un sistema de seguridad de cifrado bastante primitivo y puede ser la respuesta a proyectos de programación de pequeño y mediano tamaño. Inconvenientes Para bases de datos de gran calibre (en cuanto a volumen de datos o de usuarios) es recomendable usar otros sistemas como MySQL o Microsoft SQL Server, y código VBA (Visual Basic para Aplicaciones). Entre sus mayores inconvenientes figuran que no es multiplataforma, pues sólo está disponible para sistemas operativos de Microsoft, y que no permite transacciones. Su uso es inadecuado para grandes proyectos de software que requieren tiempos de respuesta críticos o muchos accesos simultáneos a la base de datos. Desarrollo de proyectos telemáticos nivel 1 39 Microsoft Access usa las siguientes extensiones para guardar sus datos: .mdb -Base de datos de Access (Versión 2003 y anteriores) .mde -Base de datos de Access protegida, con macros (Versión 2003 y anteriores) .accdb - Base de datos de Access (Versión 2007) .accde - Base de datos de Access protegida, con macros (Versión 2007 y anteriores) .mam - Macro de Access .maq - Consulta de Access .mar - Informe de Access .mat - Tabla de Access .maf - Formulario de Access .adp - Proyecto de Access .adn - Plantilla de proyecto de Access Desarrollo de proyectos telemáticos nivel 1 40 3. CONCEPTOS BÁSICOS SOBRE LOS LEGUAJES DE PROGRAMACIÓN Tecnología Dentro del campo de la telemática, la tecnología tiene el objetivo de eliminar las tareas repetitivas, facilitando el trabajo y haciéndolo más eficiente así como aumentando la productividad y los beneficios de la empresa. Programación La programación es una de las etapas más importantes del ciclo de vida de un proyecto, y requiere un método de trabajo. La programación es el resultado de dicho trabajo. La programación es el instrumento que permite la ejecución de las tareas automatizadas de un sistema informático. Las herramientas que utilizaremos para programar son los lenguajes de programación, a través de las cuales codificaremos los programas. Programa Conjunto de instrucciones entendibles por el ordenador que permiten realizar un trabajo o resolver un problema. Un programa debe ser finito, es decir, tiene que tener un inicio y un fin. Tiene que estar bien confeccionado para que, al introducir un dato, salga una solución y si se volviese a introducir el mismo dato, saliese de nuevo la misma solución. Desarrollo de proyectos telemáticos nivel 1 41 Metodología de la programación Se entiende como metodología de la programación al conjunto de normas, métodos y anotaciones que nos indican la forma de programar. Cada lenguaje de programación sigue una metodología distinta. Lenguaje de programación Es un conjunto de reglas semánticas así como sintácticas que los programadores usan para la codificación de instrucciones de un programa o algoritmo de programación. Existen varios lenguajes de programación. Entorno de programación o entorno de desarrollo Es el conjunto de herramientas utilizadas para la elaboración de un programa. Recursos Conjunto de componentes hardware que utilizaremos para la elaboración de un programa (cpu, disco duro…..). Una vez conocidos los conceptos básicos necesarios para el aprendizaje de la programación podemos empezar a ver los diferentes tipos de lenguajes de programación. Desarrollo de proyectos telemáticos nivel 1 42 Tipos de lenguaje de programación Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto nivel. El ordenador sólo entiende un lenguaje conocido como código binario o código máquina, consistente en ceros y unos. Es decir, sólo utiliza 0 y 1 para codificar cualquier acción. Los lenguajes más próximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran más cercanos a los programadores y usuarios se denominan lenguajes de alto nivel. Lenguajes de bajo nivel Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las características del mismo. Dentro de este grupo se encuentran: - El lenguaje maquina: este lenguaje ordena a la máquina las operaciones fundamentales para su funcionamiento. Consiste en la combinación de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho más rápido que los lenguajes de alto nivel. La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente enormes donde encontrar un fallo es casi imposible. Desarrollo de proyectos telemáticos nivel 1 43 - El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener. Lenguajes de alto nivel Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de EDD's. Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo de problema. Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que entiendan el código fuente como las características de la maquina. Desarrollo de proyectos telemáticos nivel 1 44 Suelen usar tipos de datos para la programación y hay lenguajes de propósito general (cualquier tipo de aplicación) y de propósito especifico (como FORTRAN para trabajos científicos). Lenguajes de Medio nivel Se trata de un término no aceptado por todos, pero q seguramente habrás oído. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel. Generaciones La evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones. • Primera generación: lenguaje maquina. • Segunda generación: se crearon los primeros lenguajes ensambladores. • Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol… • Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes… Desarrollo de proyectos telemáticos nivel 1 45 • Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP 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. 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: Desarrollo de proyectos telemáticos nivel 1 46 o Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra. o 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. o 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 más 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. Desarrollo de proyectos telemáticos nivel 1 47 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. Desarrollo de proyectos telemáticos nivel 1 48 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). Desarrollo de proyectos telemáticos nivel 1 49 4. PRINCIPALES TECNOLOGÍAS DE DESARROLLO DE SISTEMAS EN ENTORNOS DISTRIBUIDOS 4.1. RMI Java RMI (Invocación Remota de Métodos) es un modelo de objetos distribuidos para la plataforma Java. La principal característica de RMI es que es un modelo cuyo eje central es el lenguaje Java por lo que puede utilizar la homogeneidad del entorno para distribuir de forma más sencilla y eficiente la aplicación. Pero lo que parece en principio una tremenda limitación, obligar a que todo el mundo utilice el mismo lenguaje, no lo es tanto ya que Java a creado una arquitectura virtual común para todo tipo de plataformas, lo que le asegura una gran interoperabilidad. Se trata de una técnología de desarrollo de Sistemas en entornos distribuidos creada por SUN (competidor de Microsoft). En SUN han apostado por dos formas diferentes de lograr la distribución de Java: CORBA y RMI. Java planea soportar tanto una como otra arquitectura, lo que ha supuesto que mucha gente les critique por ello, y no decantarse por CORBA, un estándar abierto y soportado por la industria. La idea de Java RMI es la misma que la de CORBA o DCOM: extender el modelo de invocación de métodos dentro del espacio de direccionamiento de una sola máquina virtual a invocaciones remotas de forma lo más transparente posible para el desarrollador. La invocación de métodos se puede realizar entre diferentes VM interconectadas a través de una red de comunicación. Desarrollo de proyectos telemáticos nivel 1 50 Una característica a destacar de Java RMI es que incluso los objetos pueden pasarse como parámetros de una invocación, o como valores de retorno. Para ello SUN ha desarrollado una metodología para transformar los objetos en flujos de octetos (byte-stream) y así poder ser enviados por los canales de comunicación. A esta metodología se la conoce como serialización de los objetos (object serialization). Es una característica que también es útil para almacenar en algún medio persistente a los objetos, algo fundamental por ejemplo en las bases de datos de objetos. En SUN ven a Java RMI como una extensión natural al paradigma de los objetos de su RPC (Llamadas remotas a procedimientos). Con esto se logra el objetivo de hacer lo más transparente posible el hecho de que la invocación sea remota, de forma que los programadores tienen un modelo común de objetos tanto para aplicaciones centralizadas como distribuidas, el modelo de objetos de Java. A la sencillez que se logra al centrar todo el modelo entorno a un lenguaje común se une el hecho de que la maquina virtual Java tiene un recolector de basura automático, por lo que la gestión de la memoria distribuida, uno de los temas más espinosos dentro de cualquier sistema de objetos distribuidos, es transparente para el programador. Además, RMI tiene algunas características nuevas que no se encuentran por ejemplo en CORBA o DCOM: la capacidad de distribuir de forma dinámica el código ejecutable gracias a que los objetos pueden viajar como parámetros en las invocaciones. Esta característica se presenta como fundamental en el mundo de los ordenadores que compañías como SUN, Netscape y Oracle entre otras tienen en mente: redes con un servidor central desde donde se distribuye todo el software, tanto datos como programas ejecutables, a los clientes, que serán los conocidos NC (Network Computer). Esto conlleva las consabidas ventajas de facilidad de instalación y mantenimiento del sistema. Desarrollo de proyectos telemáticos nivel 1 51 La homogeneidad de Java en el entorno distribuido asegura un mayor control sobre lo que ocurre y toda la seguridad que ya fue incluida desde sus orígenes con la máquina virtual Java (consultar el capítulo de Java para obtener más detalles). Desarrollando aplicaciones con Java RMI Desarrollar una aplicación utilizando Java RMI supone muy poco esfuerzo extra para el desarrollador, y lo que es más, no necesita saber nada de un nuevo lenguaje como IDL. Y por otro lado, viene todo muy integrado dentro del JDK 1.1, por lo que no hay que preocuparse de obtener nuevos paquetes software, ni de pagarlos. Pero no olvidemos que en el JDK 1.2 SUN planea ya incluir Java IDL, su ORB, por lo que estas ventajas también las tendrá CORBA. La metodología de desarrollo es totalmente paralela a la de una aplicación CORBA, aunque hay ciertos detalles que hay que ir aclarando según avancemos en el proceso. Veamos nuestro ejemplo típico del contador, que nos permitirá medir el rendimiento de Java RMI. Conclusiones Java RMI es un sistema cuya principal cualidad es su homogeneidad, todo se hace Desarrollo de proyectos telemáticos nivel 1 52 en Java. Esto lleva a que todo sea más sencillo y por lo tanto se ha de lograr sistemas más eficientes y gestionables. Pero en los sistemas actuales, cada vez más complejos y donde deberán interactuar sistemas de muy diferentes tipos, el obligar a que todo este hecho en un único lenguaje reduzca el campo de aplicación mucho, ya que casi todo lo que se puede hacer con Java RMI se puede hacer con CORBA, y las posibilidades de CORBA son muy superiores. Java RMI se verá restringido a sistemas nuevos, programados íntegramente en Java, y de una complejidad baja o moderada. Incluso en este campo tendrá como fuerte rival a Caffeine, que tiene las ventajas principales de Java RMI, pero esta soportado sobre CORBA, pudiendo pues tener la potencia inherente a CORBA. Desarrollo de proyectos telemáticos nivel 1 53 4.2. COM/DCOM COM (Component Object Model) es un estándar que permite la creación de objetos que ejecuten tareas que resuelven problemas específicos pero comunes a varias aplicaciones que puedan desear hacer uso de ellos. Estos pueden ser invocados por diferentes programas que los requieran, tanto OLE como ActiveX están basados en esta tecnología. La idea es tener un mundo de objetos independientes de un lenguaje de programación. Por ello COM proporciona un estándar para las comunicaciones entre componentes, de tal forma, que una aplicación puede utilizar características de cualquier otro objeto de la aplicación, o del sistema operativo, y permite actualizar el software de un componente sin afectar a la operación de la solución global. COM soporta comunicación entre objetos de equipos de cómputo distintos, en una LAN, WAN, o incluso en Internet. DCOM extiende el estándar COM de objetos remotos, para su utilización en redes. Inicialmente se desarrolló para Windows NT 4.0, y posteriormente para Solaris 2.x y Macintosh, así como para diferentes versiones UNIX. Se encarga de manejar los detalles muy bajos de protocolos de red, por lo que el desarrollador se puede centrar en la realidad de los negocios, proporcionando así mejores soluciones a los clientes. La arquitectura define cómo los componentes y sus clientes interactúan entre sí. Esta interacción es definida cual traduce la llamada del cliente a un formato neutro, totalmente independiente, que puede transportarse sobre cualquier medio para el cual exista un protocolo de comunicación de tal manera que el cliente y el componente puede conectarse sin la necesidad de un sistema intermedio. El cliente llama a los métodos del componente sin tener que preocuparse de niveles Desarrollo de proyectos telemáticos nivel 1 54 más complejos. DCOM olvida completamente la localización de los componentes, no importando que estén en el mismo proceso que el cliente o en una máquina en cualquier lugar del mundo. En cualquier caso, la forma en la que el cliente se conecta a un componente y llama a los métodos de éste, es idéntica. No es sólo que no necesite cambios en el código fuente, sino que además no necesita que el programa sea recompilado. Una simple reconfiguración cambia la forma en la que los componentes se conectan entre sí. La independencia de localización en DCOM simplifica enormemente las tareas de los componentes de aplicaciones distribuidas para alcanzar un nivel de funcionamiento óptimo. Supongamos, por ejemplo, que cierto componente debe ser localizado en una máquina específica en un lugar determinado. Si la aplicación tiene numerosos componentes pequeños, se puede reducir la carga de la red situándolos en la misma LAN, en la misma máquina, o incluso en el mismo proceso. Si la aplicación está compuesta por un pequeño número de grandes componentes, la carga de red es menor y no es un problema, por tanto se pueden poner en las máquinas más rápidas disponibles independientemente de donde estén situadas. Es completamente independiente del lenguaje. Casi cualquier lenguaje puede ser utilizado para crear componentes COM, y estos componentes puede ser utilizado por muchos más lenguajes y herramientas. Java, Microsoft Visual C++, Microsoft Visual Basic, Delphi, PowerBuilder, y Micro Focus COBOL interactúan perfectamente con DCOM. Puede utilizar cualquier protocolo de transporte, como TCP/IP, UDP, IPX/SPX y NetBIOS, y proporciona un marco de seguridad a todos estos protocolos. Los desarrolladores pueden utilizar las características proporcionadas por DCOM y asegurar que sus aplicaciones son completamente independientes del protocolo. Desarrollo de proyectos telemáticos nivel 1 55 DCOM está pensado para que el sistema pueda funcionar bajo cualquier tipo de red, ya sea LAN, WAN o Internet, de forma que se solucionen los múltiples problemas que añaden estos entornos. DCOM extiende COM para permitir la comunicación entre objetos situados en diferentes ordenadores conectados a una LAN, WAN o incluso Internet. DCOM oculta los detalles de los protocolos de red por lo que se evita la complejidad del mundo de las comunicaciones. COM y DCOM están en la actualidad gestionados por un grupo independiente de Microsoft conocido como el "Consorcio ActiveXTM" aunque, el control sigue en manos de Microsoft. Desarrollo de proyectos telemáticos nivel 1 56 4.3. CORBA CORBA, Common Object Request Broker Architecture, es una tecnología para crear sistemas distribuidos, creada por un consorcio de fabricantes, agrupados bajo el OMG (Object Management Group). El estándar CORBA define qué ha de incluir una implementación estándar, pero no cómo se han de hacer. Esta tarea se deja de la mano de los diferentes fabricantes. Esta es una de las principales características de CORBA: permite una total libertad a los implementadores siempre que estos respeten unos mínimos orientados a la interoperabilidad entre implementaciones. A. Ventajas 1) Disponibilidad y Versatilidad Muchas arquitecturas y sistemas operativos cuentan con una implementación de CORBA, lo que hace suponer que se puede usar CORBA en virtualmente cualquier proyecto de sistemas distribuidos. 2) Eficiencia La libertad de desarrollo ha favorecido la existencia de una pléyade de implementaciones del estándar que se adaptan a multitud de posibles necesidades de los usuarios, generando una competencia que favorece aquellas implementaciones de mayor calidad y con más características. 3) Adaptación a Lenguajes de programación Desarrollo de proyectos telemáticos nivel 1 57 Además, es posible emplear los servicios de CORBA desde cualquier lenguaje de programación, desde C++, C ó Java, hasta COBOL ó Ada. B. Inconvenientes 1) Complejidad Permitir la interoperabilidad de distintos lenguajes, arquitecturas y sistemas operativos hace que sea un estándar bastante complejo, y su uso no sea tan transparente al programador como sería deseable: 1. Hay que usar un compilador que traduce una serie de tipos de datos estándares a los tipos del lenguaje en el que se vaya a programar (IDL). 2. Hay que ser conscientes a la hora de diseñar qué objetos van a ser remotos y cuáles no (los remotos sufren restricciones en cuanto a sus capacidades con respecto a un objeto normal). 3. Es necesario emplear tipos de datos que no son los que proporciona de manera habitual el lenguaje de programación (muchas veces hay que emplear tipos de datos adaptados de IDL). 2) Incompatibilidad entre implementaciones Muchas empresas ofrecen implementaciones CORBA, si bien el grado de cumplimiento es diverso. Las divergencias entre ORBs radican en detalles que, aunque no hacen imposible aplicar en uno el mismo diseño de un programa pensado para otro, hacen que la adaptación sea fastidiosa. Cuestiones como la colocación de librerías o las diferentes formas de implementar la gestión de la concurrencia, hacen difícil la portabilidad del código y obligan al programador a reciclarse cuando quiere cambiar de ORB. Además, donde el estándar no concreta, Desarrollo de proyectos telemáticos nivel 1 58 las implementaciones pueden variar entre sí, lo que da lugar a molestas incompatibilidades que complican la vida al usuario. C. Limitaciones de CORBA. 1. El sistema no es transparente al programador. Las diferencias para el programador que quiera usar un determinado objeto con respecto a las de emplear uno local, se reducen a la inicialización del mismo. En vez de inicializarlo normalmente, hay que pedir al ORB (vía IOR o usando un nombre más inteligible), una referencia al objeto remoto y luego convertirlo al tipo de objeto a manejar. 2. Los objetos remotos se pueden usar por referencia, pero no por valor. Así, cuando se haga uso de los métodos de un objeto remoto (al que se accede por referencia), solo se le pueden pasar como parámetros (y el método solo podrá devolver como resultado) tipos de datos contemplados en el IDL. Afortunadamente, este problema queda resuelto con CORBA 3, que sí soporta el paso de parámetros por valor. 3. Múltiples implementaciones de CORBA dan lugar a múltiples incompatibilidades. El estándar CORBA define a alto nivel qué funciones debe proporcionar un ORB y cómo han de interoperar estos entre sí, lo que garantiza cierto grado de compatibilidad, pero el cómo se ofrezca esa funcionalidad al programador es algo que está al libre albedrío del fabricante del ORB. Es más, parte de la funcionalidad del estándar CORBA no es de obligado cumplimiento por parte de las compañías fabricantes para poder anunciarse como CORBA-compliant. En estas condiciones es muy difícil pensar que un programa que haya sido programado pensando en un ORB concreto, pueda funcionar bien con una simple recompilación. Desarrollo de proyectos telemáticos nivel 1 59 4. El estándar CORBA está poco preparado para usarse en entornos embebidos (electrónica de consumo, asistentes digitales) o que requieran soporte de tiempo real. Para el primer caso, se diseñó en CORBA 3 un subconjunto llamado Minumum CORBA que, al ser más ligero, encaja mejor en los sistemas embebidos, donde el control del consumo de recursos es vital. Para solucionar el segundo problema, CORBA 3 introducirá Real -Time CORBA, que introducirá modelos de prioridad para conseguir un comportamiento predecible de los programas que lo usen. Desarrollo de proyectos telemáticos nivel 1 60 5. BIBLIOGRAFÍA - “Sistemas operativos y lenguajes de programación”. Enrique Quero Catalinas. Ed. Paraninfo. - “Sistemas distribuidos”. George Coulouris. Ed. Addison Wesley. Desarrollo de proyectos telemáticos nivel 1 61 6. MAPA CONCEPTUAL TERMINOLOGÍA BASES DE DATOS RELACIONALES DESARROLLO DE PROYECTOS TELEMÁTICOS LOS LENGUAJES DE PROGRAMACIÓN TECNOLOGÍAS DE DESARROLLO DE SISTEMAS EN ENTORNOS DISTRIBUIDOS Desarrollo de proyectos telemáticos nivel 1 62