Historia de la sociedad de la información y el conocimiento. Autora: Patricia Chia Serrano DNI: 28818700E ISBN: 978-84-615-0504-3 Depósito Legal: SE 3915-2011 1 Índice 1. SOCIEDAD DE LA INFORMACIÓN Y LA COMUNICACIÓN.......................................... 4 2. DESARROLLO DE LOS SISTEMAS INFORMACIÓN........................................................ 7 3. SISTEMAS INFORMÁTICOS ................................................................................................ 11 3.1. Estructura............................................................................................................................ 13 4. ORIGEN Y EVOLUCIÓN DEL HARDWARE ..................................................................... 17 4.1.HISTORIA DE LOS COMPUTADORES ........................................................................ 18 4.2. MODIFICACIONES DE LA ARQUITECTURA DE UN ORDENADOR................... 21 4.4. EVOLUCIÓN DE CARACTERÍSTICAS DE LOS ORDENADORES DIGITALES. 23 5. ORIGEN Y EVOLUCIÓN DEL SOFTWARE BASE ........................................................... 30 5.1. EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS...................................................... 34 5.1.1. Primera etapa (1943 – 1955). ...................................................................................... 34 5.1.2. SEGUNDA etapa (1956 – 1963). ................................................................................. 35 5.1.3. TERCERA etapa (1963 – 1979). ................................................................................. 36 5.1.4. CUARTA etapa (1980 – actualidad). ......................................................................... 39 5.2. Evolución de los sistemas operativos de mayor difusión................................................. 41 5.2.1. Sistemas operativos de Microsoft. .............................................................................. 42 5.2.2. UNIX y GNU/Linux. .................................................................................................... 44 5.2.3. Otros sistemas operativos............................................................................................ 46 6. ALGORITMIA, PROGRAMACIÓN Y APLICACIONES .................................................. 47 6.1. HISTORIA DE LA INGENIERÍA DEL SOFTWARE................................................... 51 6.2. DESARROLLO DE APLICACIONES Y ESTANDARIZACIÓN DE FORMATOS . 54 6.2.1. APLICACIONES......................................................................................................... 54 6.2.2. FORMATOS ................................................................................................................ 59 7. DESARROLLO DEL ALMACENAMIENTO DE LA INFORMACIÓN........................... 65 7.1. APLICACIONES DE GESTIÓN DE LA INFORMACIÓN EN LA EMPRESA ........ 66 8. COMUNICACIÓN Y REDES .................................................................................................. 71 8. COMUNICACIÓN Y REDES .................................................................................................. 71 8.1. EVOLUCIÓN HISTÓRICA DE LAS REDES. ............................................................... 72 8.2. Modelos de distribución del procesamiento y la información ........................................ 74 9. FUTURO: INTELIGENCIA ARTIFICIAL ........................................................................... 77 9.1. Sistemas basados en el conocimiento. .......................................................................... 77 2 9.2. Aplicaciones de la IA. .................................................................................................... 79 9.3. TIPOS DE SISTEMAS EXPERTOS. .......................................................................... 79 9.4. HISTORIA RECIENTE DE LOS SISTEMAS EXPERTOS. ................................... 81 10. REVOLUCIÓN MULTIMEDIA............................................................................................ 84 BIBLIOGRAFÍA............................................................................................................................ 90 3 1. SOCIEDAD DE LA INFORMACIÓN Y LA COMUNICACIÓN Actualmente la irrupción y desarrollo de las nuevas tecnologías están conformando una serie de cambios estructurales, a nivel económico, laboral, social, educativo, político, de relaciones. En definitiva, se está configurando la emergencia de una nueva forma de entender la cultura. En esta coyuntura, la información aparece como el elemento clave, aglutinador, estructurador... de este tipo de sociedad. Fue en la década de los setenta cuando se comienza a hablar de la "sociedad de la información". Aparece la información como la panacea, el eslogan de "la información es poder" vino a abanderar toda una serie de cambios que iban a configurar nuevas pautas sociales, motivadas por el auge del sector servicios. Ya no se trata de desarrollar bienes tangibles, como se venían desarrollando hasta ahora en una sociedad industrial. Se destinará a "producir" bienes ligados a la educación, la salud, la información, el medio ambiente, el ocio, etc. Y que configuran a grandes rasgos lo que se ha dado en llamar sociedad postindustrial. Esta "sociedad de la información" se va a definir en relación a mecanismos como la producción, el tratamiento y la distribución de la información. Va a exigir desde un punto de vista técnico, la infraestructura necesaria para su utilización en todos los ámbitos de la economía y de la vida social. Haciendo que muchas de nuestras acciones se conformen en torno a ésta. Hoy día, en la sociedad occidental en la cual estamos inmersos se nos "vende" la información como un elemento accesible, que se puede poseer, que da poder, que da conocimiento. La información se ha convertido en un culto, en un mito, algo que otorga autoridad, ventajas, superioridad, dominio,... Sin embargo, no se considera que la información tenga carácter informativo, por el simple hecho de ser poseída; o de poder ser asimilada por un sujeto. Se ha producido un cambio en el concepto de la información. La información con las nuevas tecnologías, se independiza de los sujetos. Las personas son despojadas de la posesión, de ser la fuente y manantial de la información. En último término, no es la información para los sujetos y gracias a ellos, sino que los sujetos son para la información y, al final, serán los productos de la misma. Es decir, "el mundo físico ha dejado de ser el destinatario básico de la transformación. El destinatario ahora, es la totalidad de lo real, los seres humanos incluidos". 4 Al mismo tiempo, la información ha pasado a ser un bien de consumo. Pero no sólo este producto entra dentro de esta categoría sino que los modos de vida de las personas de los países más desarrollados se han transformado de una manera radical. Asistimos al nacimiento de una nueva sociedad donde la calidad, la gestión y la velocidad de la información se convierten en factor clave de la competitividad tanto para el conjunto de los oferentes como para los demandantes. Las tecnologías de la información y comunicación condicionan la economía en todas sus etapas. Por todo ello la información, es controlada por las condiciones del mercado. Éstas determinan por un lado, quienes tienen acceso a ella y por otro, qué o quiénes controlan su creación y su disposición. La información se toma o se ha tomado a veces como equivalente a saber o conocimiento. Sin embargo, hay muchas diferencias entre información y conocimiento. La identificación entre ambos va a surgir en la década de los cuarenta, desde las teorías de la información y la cibernética. Desde estos postulados, la mente humana, se va a concebir como una máquina capaz de adquirir y manipular información, de forma que pensar se va a reducir a procesar esa información. ¿Es cierto que tener información sobre determinados temas equivale a poseer conocimiento a cerca del mismo? Nosotras coincidiendo con múltiples autores, opinamos que no es así. Esta teoría es un tanto reduccionista, y no tiene en cuenta otras muchas variables que confluyen. Ya que conocer y pensar no es simplemente almacenar, tratar y comunicar datos. Serán procesos de generalización de distinto tipo y sus resultados, los que nos determinarán el saber cómo actuar sobre algo en una situación dada. El desarrollar procesos de pensamiento alternativos, creativos e idiosincrásicos. La información no es en sí conocimiento. El acceso a ella no garantiza en absoluto desarrollar procesos originales de pensamiento. A pesar de que el conocimiento se basa en la información, ésta por sí sola no genera conocimiento. La promesa que, insistentemente se nos hace de acceso global y factible a grandes volúmenes de información desde las nuevas tecnologías no va a ser garantía de mayor conocimiento, ni de mayor educación. Para que esta información se convierta en conocimiento es necesario la puesta en marcha, desarrollo y mantenimiento de una serie de estrategias. En primer lugar, tendremos que discriminar aquella información relevante para nuestro interés. Tras haber seleccionado la información, debemos analizarla desde una postura reflexiva, intentando profundizar en cada uno de los 5 elementos, deconstruyendo el mensaje, para construirlo desde nuestra propia realidad. Es decir en el proceso de deconstrucción vamos a desmontar, comprender, entender las variables, partes, objetivos, elementos, axiomas del mensaje. En el proceso de construcción realizamos el procedimiento inverso. A partir de variables, axiomas, elementos, etc., volvemos a componer el mensaje, desde nuestra realidad personal, social, histórica, cultural y vital. Es decir, desde nuestra perspectiva global del conocimiento y la persona. Sólo y no perdiendo esta perspectiva podemos afrontar y enfrentarnos a la evolución y el progreso de las nuevas tecnologías de tal forma que nos lleve en un futuro a crear una sociedad más humana y justa donde lo tecnológico y lo humano se integren al igual que los distintos puntos de mira de las distintas culturas conformando el crisol de la realidad en la que estamos sumergidos. A lo largo de los siguientes apartados veremos una revisión de los principales hitos históricos que han posibilitado el auge de la sociedad de la información y el conocimiento. 6 2. DESARROLLO DE LOS SISTEMAS INFORMACIÓN La palabra “sistema” tiene muchas acepciones, una de ella: Conjunto de elementos interrelacionados que trabajan juntos para obtener un resultado deseado, operando sobre información, sobre energía o materia u organismos para producir como salida información o energía o materia u organismos. Un sistema de información se define como un conjunto de funciones o componentes interrelacionados que forman un todo, es decir, obtiene, procesa, almacena y distribuye información (datos manipulados) para apoyar la toma de decisiones y el control en una organización. Igualmente apoya la coordinación, análisis de problemas, visualización de aspectos complejos, entre otros aspectos. El estudio de las empresas como sistemas de información es muy interesante para poder tener una visión global de las mismas. Es un primer paso antes de informatizar. La mayoría de las empresas son parecidas desde el punto de vista de la información que manejan y cómo la procesan. Ello ha hecho que aparezcan herramientas genéricas adaptables a cualquier empresa, y cuya popularidad es cada día mayor. Actualmente, las empresas se enfrentan a un entorno comercial que progresivamente se hace más complejo y difícil. El mercado requiere respuestas cada vez más rápidas en un mundo donde los cambios resultan impredecibles, las situaciones evolucionan con mucha velocidad, los problemas requieren un conocimiento mayor de una cantidad elevada de factores que se interrelacionan entre sí de forma compleja, etc. Ante esto, la compañía debe adaptarse creando organizaciones más eficaces. Los directivos de las empresas buscan el tipo de organización que resulta más apropiada para los objetivos que se quieren lograr. La eficacia de una empresa depende de su capacidad para que todos sus elementos funcionen de manera coordinada para la consecución de los objetivos fijados. En un mercado como el actual en el que la competitividad y la rapidez de maniobra es esencial para el éxito, hay que contar con la información adecuada para actuar y tomar las mejores decisiones. Por ello, las organizaciones crean sistemas de información que ayuden a lograr los objetivos de la compañía. Toda empresa, grande o pequeña, necesita una infraestructura para poder desarrollar sus actividades. Esta estructura organizativa suele descansar en una red de relaciones que hay que desarrollar y que, entre otras, incluye a las siguientes: 7 • Controlar y gestionar el empleo de los recursos financieros, del dinero, a través de la función (o sistema) contable y de gestión económica. • Comercializar de manera óptima los productos o servicios en los que la empresa basa su negocio: la actividad comercial y de ventas. • Fabricar productos o crear servicios que vender en el mercado: se trata de la función o departamento de producción. Pero es muy difícil que todas estas funciones y actividades se puedan realizar con eficacia sin coordinarse entre sí mediante la gestión y la intercomunicación de información de buena calidad. Por ello, las organizaciones incluyen una infraestructura para coordinar los flujos y los registros de información necesarios para desarrollar sus actividades de acuerdo a su planteamiento o estrategia de negocio. El sistema dedicado a este cometido es el que se denomina sistema de información de la empresa. Este sistema es tan necesario como cualquiera de los otros nombrados anteriormente (ventas, comercialización, producción, etc.). Hoy en día, cuando se piensa en un sistema de información, la mayoría de las personas suele concebir una imagen repleta de ordenadores, programas e instrumentos sofisticados pertenecientes a lo que se suele llamar tecnologías de la información (conocidas por las siglas TI). Sin embargo, los sistemas de información existen desde el mismo día en el que se creó la primera organización humana: una estructura compuesta por un conjunto de personas distribuidas en departamentos o funciones con arreglo a ciertos criterios de división del trabajo y coordinación. Cuando a principios del siglo XIX la Revolución Industrial cambió el concepto existente de trabajo basado en la artesanía (cada empleado fabricaba un producto desde el principio al final) por la especialización y la división del trabajo (cada empleado construye la parte del producto en cuyo desarrollo está especializado), las empresas tuvieron que organizar un sistema para que los distintos departamentos o especialistas se coordinaran entre sí mediante el intercambio de información. En esos tiempos la gestión de la información sólo podía apoyarse en herramientas elementales como el papel, el lápiz y los archivadores. A principios del siglo XX, el tamaño y la complejidad de las empresas hizo que la gestión de la información tuviera que apoyarse en sistemas que contaban con una multitud de “oficinistas” o “administrativos” que manejaban ingentes cantidades de impresos, fichas, correspondencia, etc. sin mayor ayuda que algunos medios manuales (considerados los más sofisticados de la época: 8 máquinas de escribir, calculadoras mecánicas, perforadoras de papel, etc.) y rígidos procedimientos que simplificaban el trabajo repetitivo y permitían controlar el flujo y el almacenamiento de información. Es la típica imagen de los empleados con manguitos realizando sobre papel multitud de tareas repetitivas de contabilidad o administración. Todos estos elementos constituían auténticos sistemas de información y formaron la infraestructura administrativa sobre la que se edificaron muchas de las grandes empresas y organizaciones actuales. Por lo tanto, la implementación actual de sistemas de información de las empresas mediante el empleo de tecnologías de la información (TI) sofisticadas no debe hacernos olvidar el concepto original que subyace en ellas. Sin embargo, no es tan sencillo ofrecer una definición totalmente satisfactoria de sistema de información. En este sentido, una de las definiciones más completas es la ofrecida por R. Andreu. Inspirados en ella podemos decir que un SI es: Un conjunto formal de procesos que, operando sobre una colección de datos estructurada según las necesidades de la empresa, recopilan, elaboran y distribuyen la información (o parte de ella) necesaria para las operaciones de dicha empresa y para las actividades de dirección y control correspondientes (decisiones) para desempeñar su actividad de acuerdo a su estrategia de negocio. Los sistemas de información pueden ser manuales o automatizados. Hasta ahora hemos trabajado con la noción de SI independientemente de la tecnología empleada para darle soporte. Ya sabemos que pueden existir sistemas de soporte puramente manuales, con herramientas rudimentarias (papel, lápiz, ele.) y empleando personas para realizar todas las actividades de procesamiento y almacenamiento de información. Evidentemente, las empresas han ido incorporando nuevas tecnologías a lo largo del siglo XX para mejorar el rendimiento y la eficacia de los SI. Se comenzó con máquinas de escribir, calculadoras mecánicas, teléfonos, cintas de papel perforado, etc. y se han llegado ya a utilizar tecnologías sofisticadas de tratamiento y comunicación de información: fax, informática, ofimática, etc. a las que se ha denominado genéricamente tecnologías de la información (TI). En nuestro caso, nos centraremos especialmente en la informática como TI que podemos aplicar a la automatización de los SI, pero sin olvidar que otras tecnologías pueden complementar su acción. Debemos recordar que, cuando los directivos de una empresa deciden mejorar el rendimiento de su SI incorporando medios informáticos, se debe realizar un estudio minucioso de lo que resulta más eficaz para cada caso. En general, la solución óptima consiste en un SI que 9 cuenta con una mezcla de actividades, con algunas partes o subsistemas automatizados y otras funciones que se siguen realizando manualmente. Por lo tanto, podemos distinguir entre lo que es el SI total y lo que es el SIA o Sistema Información Automatizado (véase la figura). Por otra parte, el SIA deberá contar con un soporte informático para poder funcionar. En este sentido, la informática constituye sólo una herramienta más o menos sofisticada y completa para implementar lo que está incluido en el SIA. Por lo tanto, no debe confundirse informática y SI. Esto implica que los informáticos son simples técnicos que deben aportar soluciones para proporcionar porte a lo que los directivos de la empresa conciben como estructura óptima de formación de su empresa. Tampoco debemos confundir el SIA con el simple soporte físico o sistema informático asociado constituido por el hardware, el software base y las aplicaciones. FIGURA. RELACIÓN ENTRE SI Y SIA 10 3. SISTEMAS INFORMÁTICOS Un sistema informático es la síntesis de hardware, software y de un soporte humano. Un sistema informático típico emplea un ordenador que usa dispositivos programables para almacenar, recuperar y procesar datos. El ordenador personal o PC, junto con la persona que lo maneja y los periféricos que los envuelven, resultan de por sí un ejemplo de un sistema informático. Incluso el ordenador más sencillo se clasifica como un sistema informático, porque al menos dos componentes (hardware y software) tienen que trabajar unidos. Pero el genuino significado de “sistema informático” viene mediante la interconexión. La interconexión de sistemas informáticos puede tornarse difícil debido a las incompatibilidades entre los mismos. A veces estas dificultades ocurren entre hardware incompatible, mientras que en otras ocasiones se dan entre programas informáticos que no se entienden entre sí. Todo sistema, se puede contemplar desde 2 aspectos: cómo es físicamente, partes que lo componen, interconexión de las mismas, etc, es decir una descripción física del mismo; por otro lado se puede contemplar desde el punto de vista del funcionamiento, qué funciones desempeñan sus constituyentes y cómo afectan dichas funciones al funcionamiento de otros. En un sistema informático se puede establecer esta división, atendiendo a su estructura física y a la estructura funcional. Para facilitar el diseño y análisis de los sistemas informáticos, se describen distintos niveles conceptuales. La distinción entre niveles más sencilla es la que existe entre software asociado a la descripción funcional y hardware asociado a la descripción física del sistema. Una distinción más detallada se muestra a continuación. 11 Figura. Niveles conceptuales de descripción de un computador A lo largo del apartado veremos principalmente con más detalle las características de: • Estructura física de los sistemas informáticos, asociada usualmente al soporte físico, o hardware de un computador. Veremos con más detalle las arquitecturas de organización que existen a nivel hardware en los sistemas informáticos. • Estructura funcional, asociada al software o soporte lógico de un computador, conjunto de programas (del sistema operativo, de utilidades y de los usuarios) ejecutables por el computador y su organización. Veremos con más detalle las arquitecturas de organización de los sistemas informáticos, desde el punto de vista de ejecución de aplicaciones. Por tanto un sistema informático es un conjunto de dispositivos constituido por, al menos, una Unidad Central de Proceso (UCP), estando física y lógicamente conectados entre sí todos los dispositivos que lo integran, ya sea a través de canales -en local- o mediante líneas de telecomunicación. Representa la concreción e infraestructura física y lógica que sirve de soporte al proceso, almacenamiento, entrada y salida de los datos, textos y gráficos que forman parte de un sistema de información general o específico. 12 Para llevar a cabo su cometido un ordenador ha de dotarse de una serie de recursos. Estos recursos pueden variar según el destino que le demos al ordenador. Así, un ordenador que se destine a un proceso de investigación, tendrá que contar con grandes elementos de cálculo que le permitan realizar operaciones completas en el mínimo tiempo, mientras que un ordenador destinado al tratamiento de gran cantidad de datos, dispondrá de una gran memoria en donde almacenar los datos para su tratamiento. Sin embargo, estas variaciones en la concepción del ordenador no son más que modificaciones de tipo cuantitativo pues cualitativamente todos los ordenadores deben disponer de dos elementos básicos: Un sistema físico y un sistema lógico. A estos dos elementos hay que añadir un tercero que, sin pertenecer a la estructura física no se puede pensar en un sistema sin él: los Recursos Humanos. 3.1. Estructura. Los elementos que componen un sistema informático son: • Hardware, dispositivos electrónicos y electromecánicos, que proporcionan capacidad de cálculos y funciones rápidas, exactas y efectivas (Computadoras, sensores, maquinarias, bombas, lectores, etc.), que proporcionan una función externa dentro de los sistemas. • Software, que son programas de ordenador, con estructuras de datos y su documentación de forma que hagan efectiva la metodología o controles de requerimientos para los que fueron ideados. • Personal, son los operadores o usuarios directos del sistema informático, y los profesionales que lo diseñan, programan, configuran y mantienen. • Base de Datos, colección de informaciones organizadas y enlazadas al sistema a las que se accede por medio del software, en su fase de explotación. • Documentación, Manuales, formularios, y otra información descriptiva que detalla o da instrucciones sobre el empleo y operación del sistema y procedimientos de uso del sistema. • Procedimientos, o pasos que definen el uso especifico de cada uno de los elementos o componentes del sistema y las reglas de su manejo y mantenimiento. 13 A continuación describiremos cada uno de los tres principales subsistemas que componen un sistema informático. • Subsistema físico. Es el conjunto de elementos tangibles necesarios para el tratamiento eficaz de la información. El subsistema físico se conoce con el nombre de hardware y se compone habitualmente a su vez de varios elementos: la unidad central de proceso, la memoria auxiliar y los dispositivos de entrada/salida o periféricos. Recordar que la unidad central de proceso, como ya sabemos, está formada por la unidad de control, por la unidad aritmético-lógica y por la memoria central. En cuanto a la memoria auxiliar, decir que son los dispositivos que sirven para almacenar de forma permanente datos y programas. Los periféricos, ya sabemos que son elementos que comunican al ordenador con el exterior. • Subsistema lógico. El subsistema físico por sí sólo es inerte, algo pasivo que necesita elementos que le pongan en marcha. El subsistema lógico es el conjunto de recursos lógicos necesarios para que el sistema físico se encuentre en condiciones de realizar todos los trabajos que se le vayan a encomendar. Al subsistema lógico se le conoce con el nombre de software. Mediante el software un ordenador es capaz de realizar las operaciones y cálculos de cualquier tipo. Este software se divide en dos tipos de programas: los llamados programas del sistema, que manejan los recursos lógicos para que opere el propio ordenador, y los llamados programas de aplicación, que son los que resuelven los problemas de los usuarios. Algunos de los programas del sistema residen en el hardware del ordenador (memoria o cableado) y se conocen con el nombre de firmware. Tales programas suelen grabarse en el momento de la fabricación del propio ordenador. Otros programas sin embargo residen en memorias externas y son cargados en la memoria central o principal cuando se pone en marcha el ordenador o cuando se requiera alguno de sus ellos. 14 • Subsistema de Recursos Humanos. Con la aparición de la informática surge un nuevo colectivo de profesionales que trata de abarcar todos los conocimientos que de esta nueva ciencia se derivan. Pero no todo el mundo que utiliza los ordenadores es un profesional de la informática; existe otro tipo de personas, los usuarios, que aprovechan las prestaciones de los ordenadores. Por lo tanto, la informática es utilizada por dos tipos de personas: los usuarios y los informáticos profesionales. ➥ Los usuarios: son los destinatarios finales de cualquier software. El usuario es aquella persona que, sin necesidad de grandes conocimientos de informática, es capaz de realizar su trabajo utilizando un ordenador. Sus nociones de informática, en general, son básicas, pero suele tener un gran conocimiento de las posibilidades de los programas que usa. ➥ Los informáticos: son el colectivo de personas dedicado a la investigación, el desarrollo, la explotación de los programas y la formación de los usuarios. Los informáticos profesionales, según el tipo de trabajo que desarrollan, se pueden clasificar por grupos o categorías: ➫ Analista: persona dedicada al análisis del problema y a encontrar el algoritmo correcto para solucionarlo. ➫ Programador: persona que se encarga de transcribir los pasos descritos por el analista para solucionar el problema, en un lenguaje comprensible por el ordenador. ➫ Administrador del sistema: a su cargo está la administración de los recursos que posee el sistema informática, así como el establecimiento de los niveles necesarios para mantener la seguridad de los datos. ➫ Planificador de trabajos informáticos: encargado de la instalación, pruebas, mantenimiento y explotación de los programas que lleguen a sus manos. 15 ➫ Operador: notifica al ordenador los procesos que debe realizar, estando a cargo de introducir o retirar los soportes donde se encuentran los datos y la información. ➫ Formadores, informadores, comerciales y otros encargados de transmitir conocimientos informáticos a los usuarios para su correcto aprovechamiento. 16 4. ORIGEN Y EVOLUCIÓN DEL HARDWARE En sentido general, un ordenador es todo aparato o máquina destinada a procesar información, entendiéndose por proceso las sucesivas fases, manipulaciones o transformaciones que sufre la información para resolver un problema determinado. La palabra computador hace referencia a las aplicaciones exclusivamente numéricas para las que se diseñaron los primeros ordenadores. Por tanto, el término francés “ordenateur”, (introducido con motivo de la presentación en Europa del IBM 701), completa al término anglosajón “computer”, aunque hay autores que los emplean indistintamente refiriéndose a ordenadores. Desde este punto de vista general, no se presupone la tecnología en que se ha de construir el computador, ni la forma en que se ha de representar la información para su proceso, ni de cómo se realiza éste. En sus orígenes, los ordenadores se basaban en las tecnologías mecánica y electromecánica. Sin embargo, hoy en día, la tecnología mayoritariamente empleada es la electrónica, aunque ciertas partes del ordenador, como son los periféricos, aún contienen una gran parte mecánica. Por otro lado la tecnología óptica apunta como la tecnología del futuro de los ordenadores, aunque de momento su mayor aplicación está en las comunicaciones y en algunos dispositivos de almacenamiento de información. Desde el punto de vista de la forma en que se representa la información en un computador, existen dos alternativas muy diferentes, que dan lugar a dos clases de computadores perfectamente diferenciados, esto es, a: • Los computadores digitales. • Los computadores analógicos. En los computadores digitales (y, en general, en los ordenadores) la información está representada mediante un sistema digital binario, esto es, un sistema que sólo reconoce dos estados distintos, que suelen denominarse “1” y “0”. Cada uno de los dígitos de esta representación binaria recibe el nombre de bit - binary digit y puede tomar los valores de “1” ó “0”. En los computadores digitales se pueden emplear cadenas de bits de la longitud que se desee y de la codificación que se quiera, lo que permite representar y manipular tanto números 17 como letras y símbolos. Cuando se consideran exclusivamente números se dice que la información es numérica. Cuando se trata de números y texto se dice que es alfanumérica. En contraposición, los computadores analógicos sólo pueden representar números, estando determinada su magnitud por el valor de una tensión eléctrica, en el caso más frecuente de estar construidos con circuitos electrónicos. La precisión del computador analógico está limitada, también por razones constructivas, a las menores variaciones de tensión que es capaz de manejar correctamente. La superioridad de los ordenadores digitales frente a las computadoras analógicas es patente en cuanto a: • Facilidad y capacidad de almacenamiento de información. • Precisión de la representación numérica, limitada, solamente, por la longitud de las cadenas de bits empleadas y no por la calidad de los circuitos electrónicos. • Comodidad de uso. • Posibilidad de tratar información no numérica. Por todo ello hoy en día se ha impuesto el ordenador digital, y por ello el título de este tema lo menciona explícitamente. 4.1.HISTORIA DE LOS COMPUTADORES Comenzaremos por la clasificación según hechos relevantes y generaciones del computador digital actual: 18 El predecesor de las actuales computadoras personales y progenitor de la plataforma IBM PC compatible, fue lanzado en agosto de 1981. El modelo original fue llamado "IBM 5150". Su éxito comercial fue tal que el uso de ordenadores para particulares se extendió muy rápidamente debido a sus bajos precios. El desarrollo exitoso del PC tardó cerca de un año. Para lograrlo, primero decidieron construir la máquina con partes disponibles en el mercado de una variedad de distintos fabricantes. Anteriormente IBM había desarrollado sus propios componentes. Luego diseñaron una arquitectura abierta para que otros fabricantes pudieran producir y vender máquinas compatibles (las compatibles con IBM PC), así que la especificación de la ROM BIOS fue publicada. IBM esperaba mantener su posición en el mercado al tener los derechos de licencia de la BIOS, y manteniéndose delante de la competencia. Desafortunadamente para IBM, otros fabricantes rápidamente hicieron ingeniería inversa de la BIOS y produjeron sus propias versiones sin pagar derechos de uso a IBM. (Compaq Computer Corporation fabricó el primer clon compatible de la IBM PC en 1983). Una vez que el IBM PC se convirtió en un éxito comercial, el producto PC dejó de estar bajo el control de un grupo especial dentro de IBM para pasar a diversificarse el mercado con otros fabricantes hasta hoy en día en el cual el número de empresas que se dedican a desarrollar componentes y a ensamblar ordenadores es incontable. En la actualidad, y como muestra la gráfica de la figura, los ordenadores de tipo PC cubren la mayor parte del mercado. Ello justifica que el presente tema se centre en los PC. 19 Figura. Evolución del mercado de los ordenadores personales a lo largo de los últimos años El PC comercial actual se compone de forma casi general de los siguientes elementos: • Caja o Torre: También denominada CPU, ya que alberga los componentes internos del ordenador, CPU: Microprocesador, memoria principal (RAM), placa base o placa madre (motherboard), donde se interconectan todos los componentes del ordenador, tanto: ➥ Integrados (chips funcionales: tarjeta de vídeo, de sonido, de red, puertos para conexiones externos). ➥ Internos mediante slots internos (discos duros, unidades de CD, DVD, mediante los slots IDE, tarjetas de expansión sonido, vídeo, red, mediante conexiones a los slots PCI, ISA, AGP…). ➥ Externos mediante las extensiones de puertos externos a la torre USB, VGA(monitor, RJ45 (ethernet), mini jack(sonido), PS/2 (teclado, ratón)… Aparte de los componentes principales de la CPU y unidades funcionales internas, posee otros elementos auxiliares como ventiladores y fuente de alimentación. 20 • Periféricos externos: Como hemos mencionado el PC actual se compone de los componentes internos a la torre y de periféricos que permiten la interacción exterior con el hombre. Estos periféricos son típicamente de: ➥ Entrada: ratón, teclado, escáner, micrófono…, ➥ Salida: monitor, altavoces, impresora… ➥ Entrada/salida: módem, multifunciones… ➥ Almacenamiento externo: Memorias USB, disco duros externos… 4.2. MODIFICACIONES DE LA ARQUITECTURA DE UN ORDENADOR La arquitectura de un ordenador define su comportamiento funcional. El modelo básico de arquitectura empleada en los ordenadores digitales fue establecido en 1945 por Von Neumann (Budapest 1903- Washington 1957). Esta arquitectura es todavía la que emplean la gran mayoría de los fabricantes. 21 La figura muestra la estructura general de un ordenador tipo Von Neumann. Esta máquina es capaz de ejecutar una serie de instrucciones u órdenes elementales llamadas instrucciones de máquina, que deben estar almacenadas en la memoria principal (programa almacenado) para poder ser leídas y ejecutadas. El poder ejecutar distintos programas hace que el modelo de máquina de von Neumann sea de propósito general. Puede observarse de la figura que esta máquina está compuesta por las siguientes unidades: Periférico MEMORIA PRINCIPAL UNIDAD ARITMÉTICOLÓGICA UNIDAD DE CONTROL UNIDAD DE ENTRADA/SALIDA Registros Puntero Periférico Periférico Periférico UNIDAD CENTRAL DE PROCESO (CPU) Figura. Modelo de von Neumann • La Memoria Principal está compuesta por un conjunto de celdas idénticas, esto es, que tienen el mismo tamaño (mismo número de bits). En un instante determinado se puede seleccionar una de estas celdas, para lo que se emplea una dirección que la identifica. Sobre la celda seleccionada se puede realizar una operación de lectura, que permite conocer el valor almacenado previamente en la celda, o de escritura, que permite almacenar un nuevo valor. Estas celdas se emplean tanto para almacenar los datos como las instrucciones de máquina. • La Unidad Aritmético-Lógica (ALU) permite una serie de operaciones elementales tales como suma, resta, AND, OR, etc. Los datos sobre los que opera esta unidad 22 provienen de la memoria principal, y pueden estar almacenados de forma temporal en algunos registros de la propia unidad aritmética. • La Unidad de Control se encarga de leer, una tras otra, las instrucciones de máquina almacenadas en la memoria principal, y de generar las señales de control necesarias para que todo el computador funcione y ejecute las instrucciones leídas. La figura anterior indica estas señales mediante flechas de trazos. Para conocer en todo momento la posición de memoria en la que está almacenada la instrucción que corresponde ejecutar, existe un registro apuntador llamado contador de programa que contiene esta información. • La Unidad de Entrada/Salida (E/S) realiza la transferencia de información con unas unidades exteriores llamadas periféricos, lo que permite, entre otras cosas, cargar datos y programas en la memoria principal y sacar resultados impresos. Se denomina Unidad Central de Proceso (CPU, Central Processing Unit) al conjunto de la unidad de control, los registros y la unidad aritmética de un ordenador, esto es, al bloque que ejecuta las instrucciones. Para formar un ordenador hay que añadir la memoria principal, la unidad o unidades de entrada/salida y los periféricas. Con frecuencia se denomina procesador a una CPU, aunque a veces se extrapole este término de procesador al conjunto formado por una CPU y una pequeña memoria, como, por ejemplo, cuando se habla de un procesador de entrada/salida. Entre los periféricos se podrían mencionar los siguientes: • Impresoras, para producir texto. • Discos, para almacenar información. • Terminales, para que los usuarios se comuniquen con el ordenador 4.4. EVOLUCIÓN DE CARACTERÍSTICAS DE LOS ORDENADORES DIGITALES Caracterizar las prestaciones de los ordenadores digitales es una tarea muy compleja, puesto que éstas dependen de muchos factores, entre los que hay que destacar el entorno en el que se usen, las instrucciones de máquina que tienen, el grado de utilización efectiva que permiten, etc. 23 Sin embargo, se emplean con frecuencia una serie de parámetros para especificar sus características. 1. Palabra. Es el conjunto de de bits que forma una dirección, instrucción u operando. 2. Ancho o longitud de palabra. Expresa el número de bits que maneja en paralelo el ordenador. En general, mientras mayor sea el ancho de palabra mayor será su potencia de cálculo. Tamaños típicos de los primeros microprocesadores fueron los de 8 bits y 16. Hoy en día el tamaño más normal es el de 32 bits, pero son cada vez más corrientes las máquinas de 64 bits. 3. Capacidad de almacenamiento. Se refiere a las posibilidades de una unidad para almacenar datos o instrucciones de forma temporal o fija. La unidad generalmente empleada es el octeto (formado por 8 bits), también denominado byte, y sus múltiplos: a) Octeto. 1 octeto = 8 bits b) Kiloocteto. 1Kocteto = 1024 octetos c) Megaocteto. 1 Mocteto = 1024 koctetos d) Gigaocteto. 1 Gocteto = 1024 Moctetos e) Teraocteto. 1 Tocteto = 1024 Goctetos f) Petaocteto. 1 Pocteto = 1024 Toctetos Internacionalmente se utiliza la letra “b” (minúscula) para indicar bit, y “B” (mayúscula) para el byte u octeto. Conviene, por tanto, no confundir Kb, Mb, Gb, Tb y Pb, que se refieren a bits, con KB, MB, GB, TB y PB, que se refieren a octetos o bytes. 4. Tiempo de acceso. En una unidad de memoria es el intervalo de tiempo que transcurre desde el instante en que se proporciona a la misma, la posición o dirección concreta del dato o instrucción que se quiere leer o escribir, y el instante en que se obtiene (lee) o graba (escribe) el mismo. 24 5. Ancho de banda. Expresa el caudal de información que es capaz de transmitir un bus o una unidad de entrada/salida, o el caudal de información que es capaz de tratar un aunidad. Se suele expresar en Kbits/segundo (Kb/s), Mbits/segundo (Mb/s), Koctetos/segundo o Kbytes/segundo (KB/s) o Moctetos/segundo o Mbytes/segundo (MB/s). 6. MIPS (millones de instrucciones por segundo). Expresa la velocidad de ejecución de las instrucciones de máquina. 7. MFLOPS (millones de operaciones en punto flotante por segundo). Expresa la potencia de cálculo científico de un ordenador. Dado que las operaciones en punto flotante son las más complejas y largas de ejecutar, la tasa de MFLOPS de un ordenador suele ser menor que su tasa de MIPS (sin embargo, los ordenadores vectoriales ejecutan más de una operación de punto flotante por instrucción, por lo que permiten obtener una tasa de MFLOPS mayor que su tasa de MIPS). 8. Vectores por segundo. Expresa la potencia de cálculo en la generación de gráficos. Se suele aplicar a los coprocesadores gráficos de las estaciones de trabajo. Se puede dar la medida en vectores 2D (en un plano) o en vectores 3D (en el espacio). 9. Tests sintéticos. Dado que las medidas en MIPS o MFLOPS no permiten una comparación clara entre las máquinas de los distintos fabricantes, cada vez son más utilizados los tests sintéticos. Estos tests consisten en programas que caracterizan algunas de las aplicaciones típicas, por lo que la velocidad a la que se ejecutan dan una medida de la velocidad del ordenador. Dado que suelen estar escritos en lenguajes de alto nivel, en realidad miden la eficacia del conjunto compilador-CPU. Entre los más empleados están el Linpack y los SPEC de System Performance and Evaluation Cooperative. El resultado de estos tests puede expresarse en valor absoluto como el tiempo que se tarda en ejecutar el test o como el número de veces que se ejecuta el test en un segundo. También es muy frecuente expresar los resultados con relación a la velocidad de ejecución en una máquina específica. Así, los SPECint92 (enteros) y SPECfp92 (punto flotante) estaban referidos al VAX11/780 de DEC, mientras que los SPECint95 y SPECfp95 están referidos al SparcStation 10 de 40 MHz de Sun. Una máquina de 10 SPECint95 es 10 veces más rápida que la mencionada SparcStation10. 25 Figura. Medida de MIPS y MFLOPS 26 Figura. SPECint95 27 Figura. SPECfp95 28 Las “máquinas de cómputo” no han sido siempre iguales. Las arquitecturas fueron evolucionando hasta el modelo de Von Neumann, que se ha convertido en el estándar de facto. Desde un punto de vista esquemático, se puede concluir que la evolución de los ordenadores no ha sido muy grande en las últimas décadas, al contrario de la opinión generalizada. Al fin y al cabo, todos cuentan con los mismos bloques constitutivos: CPU, unidades de E/S, memoria... Lo que sí ha presentado una evolución acelerada son precisamente esos bloques, que son el objeto de estudio de los temas siguientes. 29 5. ORIGEN Y EVOLUCIÓN DEL SOFTWARE BASE Los ordenadores por sí solos no pueden realizar ninguna función, necesitan recibir órdenes que les dirijan y controlen. Estas órdenes o instrucciones son dadas por el programador, y agrupadas forman los programas o parte lógica de los sistemas informáticos, junto a los datos. Estos programas que controlan la actuación del ordenador son los que conforman el software de un sistema informático. El software se puede clasificar en 2 grandes grupos: el software de sistema y el software de aplicación: • El Software de sistema, software básico o sistema operativo: Constituido por el conjunto de programas que controlan el funcionamiento del ordenador junto con sus recursos y del resto de los programas, proporcionando al usuario una interfaz cómoda en su comunicación con el ordenador. ➥ El sistema operativo es lo que constituye este software de control y tiene dos funciones básicas que lo hacen indispensable: 30 ➫ Administrador de recursos del sistema. ➫ Interfaz entre el usuario y la máquina, facilitando su uso y ocultando sus características físicas. ➥ Los programas de servicio o de proceso lo constituyen los programas o utilidades que permiten la construcción de programas, incluyendo herramientas como editores de texto, traductores, etc. En la actualidad, existen entornos integrados de desarrollo (IDE) que contienen todas las herramientas necesarias para la construcción de proyectos, desde herramientas para el desarrollo y la documentación, como para el diseño visual de formularios e informes, incluso herramientas de gestión del sistema operativo. Existen en la actualidad herramientas especialmente diseñadas para el desarrollo de software en todo su ciclo de vida, se les denomina herramientas CASE (ingeniería del software asistida por ordenador). • Software de aplicación: Dentro de este grupo se distinguen dos tipos de software de aplicación, los verticales y los horizontales. ➥ Como software de aplicación horizontal se denominan a las aplicaciones que, como los procesadores de texto o las hojas de cálculo, pueden aplicarse a distintos usos. Cuando varios programas de este tipo se diseñan para trabajar perfectamente coordinados reciben el nombre de paquete integrado. También pertenecen a este tipo de software los programas que permiten la comunicación entre ordenadores. ➥ El software vertical estaría constituido por los programas realizados a la medida de las necesidades de un usuario. En este ámbito encontramos soluciones software de gestión empresarial. La estructura funcional más simple es la que conforma un sistema informático aislado que no se relaciona con otros sistemas, y que es autónomo para realizar un completo funcionamiento del mismo. Para un sistema asilado su estructura funcional estará compuesta por un sistema operativo que administre los recuros, y disponga al usuario de un interfaz sencillo para poder utilizar el hardware, junto con un conjunto de porgramas de aplicación. 31 El sistema operativo es el conjunto de programas del sistema informático que controla los recursos hardware del ordenador y sirve de base para la ejecución de los programas de aplicación, actúa por tanto de intermediario entre el hardware y los usuarios del mismo. El sistema operativo es el software básico y fundamental de un sistema informático. Sin su existencia, el elemento hardware sólo sería una entidad física sin utilidad, ya que no podríamos asignarle ningún tipo de tarea. Por consiguiente, se trata de una de las partes más fundamentales de un sistema informático y es importante conocerlo. De hecho, algunas empresas de software desarrollan sus productos sólo para ciertos tipos de sistemas operativos. Una primera aproximación nos presentaría al sistema operativo como un tipo de software que controla el funcionamiento del sistema físico (hardware), ocultando sus detalles al usuario, permitiéndole así trabajar con el ordenador de una forma fácil y segura. El sistema operativo enmascara los recursos físicos, permitiendo un manejo sencillo y flexible de los mismos, y proporciona determinados servicios de alto nivel al usuario que no están directamente presentes en el hardware subyacente. En este sentido, hace posible la ejecución y uso de aplicaciones por parte del usuario. De esta forma, el sistema operativo junto con el hardware (máquina física) definen una máquina virtual que puede ser utilizada sin conocer las características concretas de los dispositivos hardware. El sistema operativo actúa como un programa (o conjunto de programas) de control que tiene por objeto facilitar el uso del ordenador y conseguir que éste se utilice eficientemente. Es un programa de control, ya que se encarga de gestionar y asignar los recursos hardware a los usuarios. Controla los programas de los usuarios y los dispositivos de E/S. Los recursos hardware son: • El procesador (CPU): Dado que es el lugar donde se ejecutan las instrucciones de los programas de aplicación, se debe controlar la forma en que se ejecutan dichos programas. • La memoria principal: Dado que es el dispositivo donde residirán los datos a procesar y los programas a ejecutar, es necesario regular su uso y ocupación. 32 • Los dispositivos periféricos: Estas unidades permiten la comunicación de los programas con el exterior, y debe asegurarse su adecuado direccionamiento y control. El sistema operativo facilita el uso del ordenador. Contiene módulos de gestión de entradas/salidas que evitan a los usuarios tener que incluir esas instrucciones cada vez que realizan una operación de ese tipo. Se puede decir que esos módulos del sistema operativo hacen “transparente” al usuario las características hardware concretas de los dispositivos. El sistema operativo también hace que el ordenador se utilice eficientemente. Por ejemplo, en los sistemas de multiprogramación hace que, cuando un programa esté dedicado a una operación de entrada o salida, la CPU pase a atender a otro programa. En el desarrollo de este tema veremos los componentes que lo integran: núcleo, servicios y el intérprete de mandatos o shell; distinguiremos los sistemas operativos con estructuras monolíticas de los que son propiamente estructurados; veremos las funciones clásicas del sistema operativo, se pueden agrupar en las tres siguientes: gestión de los recursos de la computadora, ejecución de servicios para los programas, ejecución de los mandatos de los usuarios. Por último haremos una revisión histórica de la evolución de los sitemas operativos, permitiéndonos clasificarlos adecuadamente. Los sistemas operativos se pueden clasificar según distintos criterios fundamentales: • Administración de tareas: ➥ Monotarea: Solamente puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización o interrupción. ➥ Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente. • Administración de usuarios: 33 ➥ Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo. ➥ Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario. • Manejo de recursos: ➥ Centralizado: Si permite utilizar los recursos de una sola computadora. ➥ Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos...) de más de una computadora al mismo tiempo. El sistema operativo lo forman un conjunto de programas que ayudan a los usuarios en la explotación de una computadora, simplificando, por un lado, su uso, y permitiendo, por otro, obtener un buen rendimiento de la máquina. Es difícil tratar de dar una definición precisa de sistema operativo, puesto que existen muchos tipos, según sea la aplicación deseada, el tamaño de la computadora usada y el énfasis que se dé a su explotación. Por ello se va a realizar un bosquejo de la evolución histórica de los sistemas operativos, ya que así quedará plasmada la finalidad que se les ha ido atribuyendo. 5.1. EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS Se pueden encontrar los siguientes tipos de sistemas operativos, durante las cuatro generaciones de evolución de los sistemas operativos. 5.1.1. Primera etapa (1943 – 1955). Durante esta etapa, se construyen las primeras computadoras. Como ejemplo de computadoras de esta época se pueden citar el ENIAC (Electronic Numerical Integrator Analyzer and Computer), financiado por el Laboratorio de Investigación Balística de los Estados Unidos. El ENIAC era una máquina enorme con un peso de 30 toneladas, que era capaz de realizar 5.000 34 sumas por segundo, 457 multiplicaciones por segundo y 38 divisiones por segundo. Otra computadora de esta época fue el EDVAC (Electronic Discrete Variable Automatic Computer). En esta etapa no existían sistemas operativos. El usuario debía codificar su programa a mano y en instrucciones máquina, y debía introducirlo personalmente en la computadora, mediante conmutadores o tarjetas perforadas. Las salidas se imprimían o se perforaban en cinta de papel para su posterior impresión. En caso de errores en la ejecución de los programas, el usuario tenía que depurarlos examinando el contenido de la memoria y los registros de la computadora. En esta primera etapa todos los trabajos se realizaban en serie. Se introducía un programa en la computadora, se ejecutaba y se imprimían los resultados y se repetía este proceso con otros programas. Otro aspecto importante de esta época es que se requería mucho tiempo para preparar y ejecutar un programa, ya que el programador debía encargarse de codificar todo el programa e introducirlo en la computadora de forma manual. 5.1.2. SEGUNDA etapa (1956 – 1963). Sistemas operativos por lotes: con la aparición de la primera generación de computadoras (50’s) se hace necesario racionalizar su explotación, puesto que ya empieza a haber una base mayor de usuarios. El tipo de operación seguía siendo serie como en el caso anterior, esto es, se trataba un trabajo detrás de otro, teniendo cada trabajo las fases siguientes: • Instalación de cintas o fichas perforadas en los dispositivos periféricos. En su caso, instalación del papel en la impresora. • Lectura mediante un programa cargador del programa a ejecutar y de sus datos. • Ejecución del programa. • Impresión o grabación de los resultados. • Retirada de cintas, fichas y papel. La realización de la primera fase se denominaba montar el trabajo. El problema básico que abordaban estos sistemas operativos primitivos era optimizar el flujo de trabajos, minimizando el tiempo empleado en retirar un trabajo y montar el siguiente. 35 También empezaron a abordar el problema de la E/S, facilitando al usuario paquetes de rutinas de E/S, para simplificar la programación de estas operaciones, apareciendo así los primeros manejadores de dispositivos. Se introdujo también el concepto de system file name, que empleaba un nombre o número simbólico para referirse a los periféricos, haciendo que su manipulación fuera mucho más flexible que mediante las direcciones físicas. Para minimizar el tiempo de montaje de los trabajos, éstos se agrupaban en lotes (batch) del mismo tipo (p. ej.: programas Fortran, programas Cobol, etc.), lo que evitaba tener que montar y desmontar las cintas de los compiladores y montadores, aumentando el rendimiento. En las grandes instalaciones se utilizaban computadoras auxiliares, o satélites, para realizar las funciones de montar y retirar los trabajos. Así se mejoraba el rendimiento de la computadora principal, puesto que se le suministraban los trabajos montados en cinta magnética y éste se limitaba a procesarlos y a grabar los resultados también en cinta magnética. En este caso se decía que la E/S se hacía fuera de línea (off-line). Los sistemas operativos de las grandes instalaciones tenían las siguientes características: • Procesaban un único flujo de trabajos en lotes. • Disponían de un conjunto de rutinas de E/S. • Usaban mecanismos rápidos para pasar de un trabajo al siguiente. • Permitían la recuperación del sistema si un trabajo acababa en error. • Tenían un lenguaje de control de trabajos que permitía especificar los recursos a utilizar y las operaciones a realizar por cada trabajo. Como ejemplos de sistemas operativos de esta época se pueden citar el FMS (Fortran Monitor System) e IBYSS, el sistema operativo de la IBM 7094. 5.1.3. TERCERA etapa (1963 – 1979). Sistemas operativos de multiprogramación: con la aparición de la segunda generación de computadoras (60’s) se hizo más necesario, dada la mayor competencia entre los fabricantes, mejorar la explotación de estas máquinas de altos precios. La multiprogramación se impuso en sistemas de lotes como una forma de aprovechar el tiempo empleado en las operaciones de E/S. La 36 base de estos sistemas reside en la gran diferencia que existe entre las velocidades de los periféricos y de la UCP, por lo que esta última, en las operaciones de E/S, se pasa mucho tiempo esperando a los periféricos. Una forma de aprovechar ese tiempo consiste en mantener varios trabajos simultáneamente en memoria principal (técnica llamada de multiprogramación), y en realizar las operaciones de E/S por acceso directo a memoria. Cuando un trabajo necesita una operación de E/S la solicita al sistema operativo que se encarga de: • Congelar el trabajo solicitante. • Iniciar la mencionada operación de E/S por DMA. • Pasar a realizar otro trabajo residente en memoria. Estas operaciones las realiza el sistema operativo multiprogramado de forma transparente al usuario. Sistemas operativos de tiempo compartido: También en la segunda generación de computadoras comienzan a desarrollarse los sistemas de tiempo compartido o timesharing. Estos sistemas, a los que estamos muy acostumbrados en la actualidad, permiten que varios usuarios trabajen de forma interactiva o conversacional con la computadora desde terminales, que en aquellos días eran teletipos electromecánicos. El sistema operativo se encarga de repartir el tiempo de la UCP entre los distintos usuarios, asignando de forma rotativa pequeños intervalos de tiempo de UCP denominadas rodajas (time slice). En sistemas bien dimensionados, cada usuario tiene la impresión de que la computadora le atiende exclusivamente a él, respondiendo rápidamente a sus órdenes. Aparecen así los primeros planificadores. El CTSS, desarrollado en el MIT fue el primer sistema de tiempo compartido. Sistemas operativos en tiempo real: los primeros sistemas de tiempo real datan también de los años sesenta, pertenecientes por tanto a la segunda generación de computadoras. Se trata de aplicaciones militares, en concreto para detección de ataques aéreos. En este caso, la computadora está conectada a un sistema externo y debe responder velozmente a las necesidades de ese sistema externo. En este tipo de sistemas las respuestas deben producirse en períodos de tiempo previamente especificados, que en la mayoría de los casos son pequeños. Los primeros sistemas de este tipo se construían en ensamblador y ejecutaban sobre máquina desnuda, lo que hacía de estas aplicaciones sistemas muy complejos. 37 Sistemas operativos de propósito general o multimodo: La tercera generación (70’s) es la época de los sistemas de propósito general y se caracteriza por la sistemas operativos multimodo de operación, esto es, capaces de operar en lotes, en multiprogramación, en tiempo real, en tiempo compartido y en modo multiprocesador. Estos sistemas operativa fueron costosísimos de realizar e interpusieron entre el usuario y el hardware una gruesa capa de software, de forma que éste sólo veía esta capa, sin tenerse que preocupar de los detalles de la circuitería. Uno de los inconvenientes de estos sistemas operativos era su complejo lenguaje de control que debían aprenderse los usuarios para preparar sus trabajos, puesto que era necesario especificar multitud de detalles y opciones. Otro de los inconvenientes era el gran consumo de recursos que ocasionaban, esto es, los grandes espacios de memoria principal y secundaria ocupados, así como tiempo de UCP consumido, que en algunos casos superaba el 50 por 100 del tiempo total. Esta década fue importante por la aparición de dos sistemas que tuvieron una gran difusión UNIX y MVS de IBM. De especial importancia fue UNIX, desarrollado en los laboratorios Bell para una PDP-7 en 1970. Pronto se transportó a una PDP-11, para cual se reescribió utilizando el lenguaje de programación C. Esto fue algo muy importante en historia de los sistemas operativos, ya que hasta la fecha ninguno se había escrito utilizando lenguaje de alto nivel, recurriendo para ello a los lenguajes ensambladores propios de cada quitectura. Sólo una pequeña parte de UNIX, aquella que accedía de forma directa al hardware siguió escribiéndose en ensamblador. La programación de un sistema operativo utilizando un lenguaje de alto nivel como es C hace que un sistema operativo sea fácilmente transportable a amplia gama de computadoras. En la actualidad, prácticamente todos los sistemas operativos escriben en lenguajes de alto nivel, fundamentalmente en C. La primera versión ampliamente disponible de UNIX fue la versión 6 de los laboratorios Bell que apareció en 1976. A ésta le siguió la versión 7 distribuida en 1978, antecesora de prácticamente todas las versiones modernas de UNIX. En 1982 aparece una versión de UNIX desarrollada por Universidad de California en Berkeley, la cual se distribuyó como la versión BSD (Berkeley Ovare Distribution) de UNIX. Esta versión de UNIX introdujo mejoras importantes como la inclusión de memoria virtual y la interfaz de sockets para la programación de aplicaciones sobre protocolos TCP/IP. Más tarde, AT&T (propietario de los laboratorios Bell) distribuyó la versión de UNIX conocida como System V o RVS4. Desde entonces muchos han sido los fabricantes de 38 computadoras has adoptado a UNIX como sistema operativo de sus máquinas. Ejemplos de estas versiones Solaris de SUN, HP UNIX, IRIX de SGI y AIX de IBM. 5.1.4. CUARTA etapa (1980 – actualidad). Sistemas operativos orientados a usuarios finales: La cuarta generación se caracteriza por una evolución de los sistemas operativos de propósito general de la tercera generación, tendente a su especialización, a su simplificación y a dar más importancia a la productividad del usuario que al rendimiento de la máquina. Adquiere cada vez más importancia el tema de las redes de computadoras, tanto redes de largo alcance como locales. En concreto, la disminución del coste del hardware hace que se difunda el proceso distribuido, en contra de la tendencia centralizadora anterior. El proceso distribuido consiste en disponer de varias computadoras, cada una situada en el lugar de trabajo de las personas que la emplean, en lugar de una única central. Estas computadoras suelen estar unidas mediante una red, de forma que puedan compartir información y periféricos. Se difunde el concepto de máquina virtual, consistente en que una computadora X, incluyendo su sistema operativo, sea simulada por otra computadora Y. Su ventaja es que permite ejecutar, en la computadora Y, programas preparados para la computadora X, lo que posibilita el empleo de software elaborado para la computadora X, sin necesidad de disponer de dicha computadora. Durante esta época, los sistemas de bases de datos sustituyen a los archivos en multitud de aplicaciones. Estos sistemas se diferencian de un conjunto de archivos en que sus datos están estructurados de tal forma que permiten acceder a la información de diversas maneras, evitar datos redundantes y mantener su integridad y coherencia. La difusión de las computadoras personales ha traído una humanización en los sistemas informáticos. Aparecen los sistemas «amistosos» o ergonómicos, en los que se evita que el usuario tenga que aprenderse complejos lenguajes de control, sustituyéndose éstos por los sistemas dirigidos por menú, en los que la selección puede incluso hacerse mediante un manejados de cursor. En estos sistemas, de orientación monousuario, el objetivo primario del sistema operativo ya no es aumentar el rendimiento del sistema, sino la productividad del usuario. En este sentido, la tendencia actual consiste en utilizar sistemas operativos multiprogramados sobre los que se añade 39 un gestor de ventanas, lo que permite que el usuario tenga activas, en cada momento, tantas tareas como desee y que las distribuya a su antojo sobre la superficie del terminal. Los sistemas operativos que dominaron el campo de las computadoras personales fueron UNIX, MS-DOS y los sucesores de Microsoft para este sistema: Windows 95/98, Windows NT y Windows 2000. La primera versión de Windows NT (versión 3.1) apareció en 1993 e incluía la misma interfaz de usuario que Windows 3.1. En 1996 aparece la versión 4.0, que se caracterizó por la inclusión dentro del ejecutivo de Windows NT de diversos componentes gráficos que ejecutaban anteriormente en modo usuario. Durante el año 2000, Microsoft distribuye la versión denominada Windows 2000. Posteriormente le han sucedido Windows XP y, para servidores, Windows 2003. También ha tenido importancia durante esta época el desarrollo de Linux. Linux es un sistema operativo similar a UNIX, desarrollado de forma desinteresada durante la década de los noventa por miles de voluntarios conectados a Internet. Linux está creciendo fuertemente debido sobre todo a su bajo coste y a su gran estabilidad, comparable a cualquier otro sistema UNIX. Una de las principales características de Linux es que su código fuente está disponible, lo que le hace especialmente atractivo para el estudio de la estructura interna de un sistema operativo. Su aparición ha tenido también mucha importancia en el mercado del software ya que ha hecho que se difunda el concepto de software libre. Sistemas operativos distribuidos: A mediados de los ochenta aparecen los sistemas operativos distribuidos. Un sistema operativo distribuido es un sistema operativo común utilizado en una serie de computadoras conectadas por una red. Este tipo de sistemas aparece al usuario como un único sistema operativo centralizado, haciendo por tanto más fácil el uso de una red de computadoras. Un sistema operativo de este tipo sigue teniendo las mismas características que un sistema operativo convencional pero aplicadas a un sistema distribuido. Como ejemplo de sistemas operativos distribuidos se puede citar: Mach, Chorus y Amoeba. Figura. Estructura de un sistema distribuido que utiliza un sistema operativo distribuido 40 Sistemas operativos con middleware: los sistemas operativos distribuidos han dejado de tener importancia y han evolucionado durante la década de los noventa a lo que se conoce como middleware. Un middleware es una capa de software que se ejecuta sobre un sistema operativo ya existente y que se encarga de gestionar un sistema distribuido. En este sentido, presenta las mismas funciones que un sistema operativo distribuido. La diferencia es que ejecuta sobre sistemas operativos ya existentes que pueden ser además distintos, lo que hace más atractiva su utilización. Dos de los middleware más importantes de esta década han sido DCE y CORBA. Microsoft también ofrece su propio middleware conocido como DCOM. Figura. Estructura de un sistema distribuido que emplea un middleware 5.2. Evolución de los sistemas operativos de mayor difusión. Inicialmente cada fabricante de computadores (IBM, DEC, Data General, Apple, Sperry, etc.) desarrollaba sus propios sistemas operativos, que incluso, dentro de la misma empresa, podrían diferir de una serie de computadores a otra. Esto dificultaba considerablemente el trabajo de los programadores y usuarios, en general, ya que, con gran frecuencia, al cambiar de computador tenían que aprender un nuevo sistema operativo y realizar las adaptaciones oportunas de todas las aplicaciones al nuevo equipo. Este panorama ha cambiado en la actualidad debido a que en el mercado se han impuesto sistemas operativos que no son propietarios de un determinado fabricante de computadores sino que son realizados por terceras personas o empresas especializadas en software de forma que pueden ser utilizados en equipos muy diversos. Los más relevantes son los siguientes: 41 5.2.1. Sistemas operativos de Microsoft. Son los sistemas operativos dominantes en el mercado de microcomputadores. El primero de ellos es el MS-DOS (Microsoft Disk Operating System) y debe su difusión a que fue adoptado por IBM al inicio de la década de los 80 como el sistema operativo estándar para el IBM-PC. En la Figura 15.8 se muestra un esquema de la evolución de este sistema operativo. El MS-DOS inicial era un sistema operativo para microprocesadores de 16 bits (de Intel), monousuario y tenía una interfaz de usuario de línea de órdenes. A inicios de los 90 se comercializó el Microsoft Windows 3.0 que disponía de una GUI con gestión de menús, y era capaz de cargar en memoria más de un programa a la vez. En 1995 Microsoft comercializó el Windows 95, que contiene una GUI basada en iconos, y es un sistema operativo de 16/32 bits con multiprogramación apropiativa (puede suspender temporalmente la ejecución de un trabajo para ejecutar otro) y con memoria virtual. Posteriormente se comercializaron las versiones Windows 98 y Windows ME (Milenium), en 1998 y en 2000, respectivamente. Conviene indicar que las denominaciones Windows en realidad hacen referencia a la GUI: para identificar completamente a las nuevas versiones de Microsoft hay que facilitar también la versión del sistema operativo propiamente dicho; por ejemplo, una versión concreta es: Windows 98 MS-DOS 7.0. Paralelamente al desarrollo de las versiones Windows, en 1993 Microsoft comercializó el Windows NT (Windows New Technology), diseñado fundamentalmente para estaciones de trabajo potentes y servidores de red con procesadores de 32 bits. En 2001 se disponían de tres alternativas: • Windows 2000 professional: está orientado a estaciones de trabajo en red. Puede utilizarse con diversos procesadores (Intel, Alpha y PowerPC). Es un sistema operativo monousuario y multiprogramación. Su interfaz de usuario es muy parecida a Windows 95, pero ofrece mucha más seguridad (identificación y contabilidad de usuarios) y tolerante a fallos (aísla unos programas de otros, y duplica en línea el contenido de los discos de forma que si falla uno, automáticamente actúa el de respaldo). • Windows NT Server (servidores): es una versión ampliada del Windows NT Workstation, multiusuario y proyectada para actuar en servidores de archivos y de impresoras, y otros sistemas, a los que se accede a través de redes de área local (LAN) o internet. Incluye funciones de seguridad para grupos de usuario, 42 autentificación de usuarios y control de acceso a los recursos compartidos de la red. Admite estructuras RAID de discos. • Windows CE (Consumer Electronics): es una versión simplificada de las otras versiones de Windows NT ideada para equipos informáticos miniaturizados, como computadores móviles (asistentes digitales personales, computadores de bolsillo, organizadores personales, etc.), televisores conectables a internet, etc. En el año 2001 se comercializó en Windows XP, que supuso la unificación de la línea clásica de los sistemas operativos de Microsoft (Windows 3.1/95/98J98SE/ME) con la de Windows NT (NT 3.1, 4.1 y Windows 2000), véase Figura 15.8. El Windows XP contiene el núcleo del Windows NT y se comercializó en dos versiones: Home y Proffesional. Posteriormente se lanzó al mercado el Windows 2003 y Vista. Figura. Pasos más relevantes en la evoluciónde los sistemas operativos Microsoft. 43 5.2.2. UNIX y GNU/Linux. El sistema operativo UNIX inicialmente se desarrolló en los Bell Labs de la AT&T y fue comercializado en sus inicios por Honeywell y, a los comienzos de la década de los 90, por Novell. En la siguiente figura 15.9 se incluye un esquema simplificado de la evolución de este sistema operativo. Una de las versiones más conocidas es la desarrollada en el Campus de Berkeley de la Universidad de California. Algunas de las principales características del UNIX son las siguientes: • Desde un punto de vista técnico UNIX puede considerarse como un conjunto de familias de sistemas operativos que comparten ciertos criterios de diseño e interoperabilidad. Esta familia incluye más de 100 sistemas operativos desarrollados a lo largo de 35 años. No obstante, es importante señalar que esta definición no implica necesariamente que dichos sistemas operativos compartan código máquina o cualquier propiedad intelectual. • Puede funcionar en multitud de computadores, desde en los supercomputadores Cray hasta en PC. Debido a ello puede considerarse como un auténtico sistema operativo estándar y la columna vertebral de Internet. Su mayor uso se da en estaciones de trabajo para usuarios CAD y CAM (estaciones de trabajo de Sun Microsystems, Hewlett-Packard, IBM y Silicon Graphics). • Es un sistema operativo de multiprogramación, multiusuario y multiprocesamiento, pudiéndose utilizar también para procesamiento en tiempo real. • A priori al poder configurar más parámetros del sistema operativo puede resultar más difícil de aprender y de usar que los MS-Windows y Mac orientados claramente a usuarios finales. 44 Figura. Pasos relevantes en la evolución del sistema operativo UNIX. Un estudiante de informática de la Universidad de Helsinki (Finlandia) llamado Linus Torvalls concluyó en 1991 (con 23 años de edad) un sistema operativo que denominó Linux, versión 0.01. Este sistema operativo fue concebido como una versión PC compatible y sustancialmente mejorada del sistema operativo Minix (muy parecido al UNIX), descrito por el profesor Tanenbaum en sus primeros textos de sistemas operativos. Aunque Linux no es un programa de dominio público, se distribuye con una licencia GPL (General Public Licence) de GNU, de forma que los autores no han renunciado a sus derechos, pero la obtención de su licencia es gratuita, y cualquiera puede disponer de todos los programas fuente, modificarlos y desarrollar nuevas aplicaciones basadas en Linux, teniendo derecho a regalar éstas e incluso a venderlas. La condición de la licencia radica en que nadie puede registrar como propiedad intelectual los productos derivados de Linux y los usuarios que adquieran (por compra o gratuitamente) el código modificado tienen derecho a disponer también del código fuente correspondiente. Linux hoy día puede considerarse como un clónico de UNIX desarrollado por multitud de personas distribuidas por todo el mundo. 45 5.2.3. Otros sistemas operativos. Hay otros muchos sistemas operativos, entre los que se pueden destacar: • MacOS, o sistema operativo de los Macintosh. Desarrollado a mediados de los 80, es sin lugar a dudas el precursor de los sistemas operativos con interfaz gráfica, siendo muy fácil de usar y el preferido por empresas de publicidad y de artes gráficas, y realizadores de aplicaciones multimedia. Su principal inconveniente es que sólo funciona en los PC tipo Macintosh y sus compatibles (microprocesadores Motorola), no existiendo tanta disponibilidad de software como para los IBM-PC y compatibles (microprocesadores Intel). • OS/2, desarrollado a partir de 1982 inicialmente de forma conjunta por IBM e Intel, es un sistema operativo monousuario y multiprogramación ideado para los microprocesadores Intel. Actualmente sólo es comercializado y mantenido por IBM. • MVS (Múltiple Virtual Storage), es uno de los sistemas operativos más sofisticados desarrollado por IBM para grandes computadores, es de tipo multiprogramación, multiusuario, funcionando tanto de forma interactiva como por lotes, y con memoria virtual. Los sistemas operativos son una parte fundamental de los sistemas informáticos, significan mucho más que simplemente la interfaz de usuario. En el futuro próximo, la evolución de los sistemas operativos se va a orientar hacia las plataformas distribuidas y la computación móvil. Gran importancia tendrá la construcción de sistemas operativos y entornos que permitan utilizar estaciones de trabajo heterogéneas (computadoras de diferentes fabricantes con sistemas operativos distintos) conectadas por redes de interconexión, como una gran máquina centralizada, lo que permitirá disponer de una mayor capacidad de cómputo y facilitará el trabajo cooperativo. 46 6. ALGORITMIA, PROGRAMACIÓN Y APLICACIONES Los primeros algoritmos conocidos están fechados entre los años 3000 y 1500 antes de Cristo. Fueron encontrados en la zona conocida como Mesopotamia (actualmente Irak) cerca de la ciudad de Babilonia. Estos algoritmos no tenían ni condicionales, los expresaban escribiendo diversas veces el algoritmo, extendían el algoritmo con tantos pasos como fuera necesario. Algoritmo proviene de Mohammed al-KhoWârizmi, matemático persa que vivió durante el siglo IX y alcanzó gran reputación por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir números decimales; la traducción al latín del apellido en la palabra algorismus derivó posteriormente en algoritmo. Euclides, el gran matemático griego (del siglo IV a.C.) que inventó un método para encontrar el máximo común divisor de dos números, se considera con AlKhowârizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos). Más recientes fueron las aportaciones en este campo de Charles Babbage, quien entre los años 1820 y 1850, diseñó dos máquinas para computar ninguna de las cuales fue terminada. La más interesante, ya que se parecía a los computadores digitales modernos, fue la máquina analítica. Los programas para este primer computador estaban escritos, básicamente, en lenguaje máquina y utilizaban unas ciertas tarjetas de operación y tarjetas de variable (no se tenía la idea de programas y datos residentes en memoria). Junto a Babbage trabajó Ada Augusta, condesa de Lovelace, hija del famoso poeta Lord Byron. Recientemente ha sido reconocida como la primera programadora (en su honor se llamó ADA al último lenguaje desarrollado bajo el auspicio del Departamento de Defensa de los Estados Unidos). Durante los años 1930 y 1940 surge un gran número de científicos con ideas sobre notaciones para la programación. La mayoría eran puramente teóricas, es decir, no pretendían que fueran usadas en máquinas reales. Algunos ejemplos son la máquma de Turing o el cálculo lambda. A principios de los años 1950 se empezaron a construir máquinas con cierta capacidad de cálculo (aunque muy limitadas y costosas), que trabajaban con lenguajes tipo ensamblador. Todos estos lenguajes eran muy parecidos y tuvieron un éxito muy limitado. Ejemplos de estos lenguajes podrían ser AUTOCODER, SPS, BAL o EASYCODER. 47 A mediados de los años 50 comenzaron a aparecer máquinas con más capacidad de cálculo y memoria, y se creó FORTRAN cuyo principal propósito era conseguir eficiencia. Entre los anos 57 y 63 aparecen ALGOL (ALGOL6O), COBOL y LISP. ALGOL fue un lenguaje diseñado por un colectivo mayoritariamente europeo. Sus objetivos principales eran la claridad, la coherencia y la elegancia, pero no la eficiencia. Sólo se usaba en las universidades, pero fue el más importante de la época. Para definir su sintaxis, se utilizó por primera vez la notación BNF (Backus-Naur-Formalism) que fue utilizada posteriormente en la definición de otros lenguajes. ALGOL introdujo nociones como la de tipo de datos o de estructura de bloques, así corno ciertas instrucciones que después han sido muy utilizadas (while, if, else, etc.) o el uso de la recursividad. Se le considera un lenguaje muy bien diseñado. COBOL, en cambio, fue un lenguaje diseñado por un comité bajo el auspicio del Departamento de Defensa de EEUU para las necesidades, las áreas de problemas y los hábitos de expresión de los programadores en el procesamiento de datos comerciales y bases de datos. Se intentó obtener programas más legibles y aumentar la potencia en el tratamiento de ficheros. LISP fue un lenguaje extraño en su momento, ya que no se parecía a ningún otro lenguaje anterior. En LISP se pueden tener funciones que se aplican a ciertos datos, de aquí proviene el nombre de lenguaje funcional con el que se denomina a éste y a otros lenguajes de estas características. Como tipo de datos tenemos símbolos (tratamiento simbólico) o bien la estructura de datos lista. Fue un lenguaje difícil de implementar. Después de estos lenguajes aparecieron otros, todos orientados a resolver algún problema concreto. Hacia el 1965 aparece BASIC, por motivos didácticos. Estaba orientado a computadores pequeños. Es un lenguaje con pocas instrucciones y fácil de aprender. Durante la primera editad de los años 60 se define lenguajes como SNOBOL (para el procesamiento de cadenas de caracteres, es decir, tratamiento de textos) o APL (para el tratamiento de matrices). Un resultado negativo de la proliferación de estos primeros lenguajes fue la división de la programación en dos campos, las aplicaciones científicas y las comerciales. De hecho, el problema venía de la creencia que programar consistía principalmente en codificar algoritmos en un lenguaje específico. Entre el 1954 y 1957 se desarrolla PL/I, en un intento de crear un lenguaje útil para resolver cualquier tipo de problema. El resultado fue un lenguaje demasiado grande, difícil de aprender y de conocer, y a la vez poco fiable. 48 En 1967 se crea SIMULA, basado en ALGOL60, con la simulación como campo de aplicación principal. Una de las características más importantes que se introducen en SIMULA es el concepto de clase, donde un conjunto de declaraciones y procedimientos están agrupados y tratados como una unidad. Se pueden generar objetos de una clase, que pueden ser usados fueraa del bloque donde fueron creados. El concepto de clase es considerado el precusor de la abstracción de datos. ALGOL68 (1968) pretendía ser el sucesor de ALGOL60, es decir, una versión más actualizada. Se intentó llegar a la máxima ortogonolidad (no poner ninguna restricción a los componentes del lenguaje: instrucciones, estructuras de datos, etc.). Se quería conseguir un lenguaje simple y ortogonal, y de esta forma, obtener un lenguaje potente y sencillo. El resultado, en cambio, fue un lenguaje casi inimplementable. Fue el fracaso más grande de la historia de los lenguajes de programación. Después de la crisis del software, a principios de los 70, aparece Pascal, notablemente influido por las nuevas técnicas: verificación de programas, programación estructurada, etc. Sigue la línea de ALGOL60 con adquisiciones de otros lenguajes: el constructor tupla (COBOL y PL/I), los tipos de datos, se mejoran los apuntadores (respecto a PL/I), se definen mejor los bloques. Es un lenguaje bastante bien diseñado. Tras Pascal (en la década de los 70) aparecen lenguajes de alto nivel diseñados para programar en un cierto estilo, como CLU, ALPHARD, C, MODULA o EUCLID. Se introduce la idea de programación paralela. Aparecen los programas concurrentes en nuevas versiones de MODULA y en Pascal concurrente. En este periodo se crea el primer lenguaje de programación lógica, PROLOG, cuyo dominio de aplicación se restringía a una parte de la lógica de primer orden, la lógica clausal. Se basaba en la existencia de una cierta similitud entre teoremas y programas, y entre demostración y ejecución. Posteriormente fue mejorado y se convirtió en un lenguaje útil en diversos campos de la programación (principalmente científicos). El lenguaje C fue inventado en los Laboratorios Bell en 1972 por Dennis Ritchie e implementado sobre un DEC PDP-11 utilizando el sistema operativo UNIX. La idea de Ritchie era crear un lenguaje de propósito general (al contrario de los lenguajs de propósito específico, como es el caso de FORTRAN para el cálculo cinentífico) que facilitara la programación y realización de muchas de las tareas anteriormente reservadas al lenguaje ensamblador. Inicialmente surgieron varias versiones de C incompatibles entre sí, hasta que en 1983 ANSI lo estandarizó. Se ha usado 49 para el desarrollo de infinidad de herramientas de trabajo (sistemas operativos, compiladores, procesadores de texto, sistemas gestores de bases de datos, etc.). La ventaja más destacable es la transportabilidad o portabilidad, es decir, la posibilidad de utilizarlo en diversos sistemas y máquinas. El lenguaje C es un lenguaje que por estas carcaterísticas se ha convertido en referencia a nivel educativo a la hora de iniciarse en la programación, en escuelas técnicas y de formación profesional, incluso por autodidactas, principalmente por la cantidad de documentación existente. Con el proyecto de las máquinas de quinta generación (máquinas muntiprocesador con paralelismo masivo), surgen nuevos lenguajes funcionales y se empiezan a usar los lenguajes lógicos. Nace un nuevo tipo de lenguajes, los de flujo de datos: VAL, LAU, Id o Lucid. Son lenguajes experimentales que se basan en el intento de hacer el máximo número de cálculos en paralelo. También durante los últimos años han surgido los lenguajes orientarlos a objetos. que tienen como principales representantes a Smalltalk y Eiffel. Debido a la gran cantidad de lenguajes existentes, se intentó nuevamente diseñar un lenguaje de gran abasto, esta vez con el auspicio del Departamento de Defensa de EEUU. El resultado fue ADA, la versión definitiva del cual apareció en 1983. Para evitar que se hicieran versiones de este lenguaje (con el mismo nombre) se registró la marca. Para obtener una generalidad máxima, el compilador de ADA fue el primero que no daba directamente código en el lenguaje máquina del computador en el que se estaba trabajando, sino que generaba un código intermedio, que se pretendía que fuera único para todo tipo de máquina, y posteriormente se pasaba al lenguaje máquina determinado. Así, la primera parte del compilador era común para todas las máquinas que lo usaran. ADA se convirtió en un lenguaje para profesionales (con gran capacidad de abstracción y conocimientos a nivel teórico), pues era un lenguaje muy complejo y extenso. En ADA se mejoraron las construcciones modulares, las tuplas con partes variables, los apuntadores, la forma de abordar la concurrencia, el tratamiento de excepciones (por ejemplo, errores de ejecución) y apareció el concepto de sobrecarga (posibilidad de usar en un mismo punto del programa el mismo identificador para denotar cosas distintas). En la segunda mitad de los años 80 se han diseñado desde nuevos lenguajes funcionales como Lazy ML (1984), Miranda (1985) o Standard ML (1986), hasta lenguajes que eran mejoras o ampliaciones de otros ya conocidos, como es el caso de C++ (1986, en el que se incorpora el concepto de clase) u Oberon (Wirth 1988, como mejora de MODULA). 50 Finalmente, durante los años 90 hasta la actualidad, han ido apareciendo los llamados lenguajes de cuarta generación, que permiten, por ejemplo, acelerar el proceso de automatización de las apliaciones mediante los entornos integrados de desarrollo o IDE, integrated develpment environment, y reducir los costos de mantenimiento o permitir a los usuarios finales solucionar directamente sus propios problemas. Muchos de estos lenguajes dependen de bases de datos y diccionarios de datos, su acceso y ejecución es orientado a entorno web y son multiplataforma, es decir ejecutables en distintos sistemas operativos. Pueden incluir formatos de pantalla, formatos de informes, estructuras de diálogo, asociaciones entre muchos datos, pruebas de validación, controles de seguridad, etc. Una de las decisiones más importantes que se deben tomar al diseñar y construir un sistema grande de software es la del lenguaje de programación que se va a utilizar en la aplicación del sistema. Como la mayor parte de los costes de un sistema de software se producen en las fases de prueba y mantenimiento del ciclo de vida, el empleo de una notación inapropiada para representar el sistema puede ser la causa de dificultades en las etapas posteriores del ciclo de vida. La elección de un lenguaje de programación apropiado reduce al mínimo las dificultades de codificar un diseño, reduce la cantidad de pruebas de programas necesarias y hace al programa más legible y, por tanto, más fácil de mantener. La elección de un lenguaje de programación es muy importante y deben tenerse en cuenta todos los factores al hacer tal elección. En la actualidad, no hay lenguajes que sean realmente adecuados para todas las aplicaciones, y no es recomendable la estandarización rígida de un solo lenguaje. 6.1. HISTORIA DE LA INGENIERÍA DEL SOFTWARE A lo largo del desarrollo de un sistema software desde el estudio de requisitos hasta la implementación y puesta en marcha del mismo, se contemplan una multitud de tareas complejas. El software desde sus orígenes de desarrollo en los que se realizaban programas de forma poco sistemática, casi artesanal, hasta hoy en día en el que existen metodologías de desarrollo muy definidas, ha evolucionado en gran medida gracias a la ingeniería del software que pretende aplicar los principios de la ingeniería al desarrollo de software de forma que se sistematice la producción del mismo. 51 La crisis del software, término informático acuñado en 1968, en la primera conferencia organizada por la OTAN sobre desarrollo de software, se refiere a la dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables. Las causas son, entre otras, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios. Esta conferencia supone un punto de inflexión en el desarrollo de software, ya que formalmente nace la ingeniería del software. Como pudiera esperarse, las organizaciones pequeñas de proceso de datos tienden a ser relativamente informales: los proyectos de desarrollo de sistemas nacen de conversaciones entre el usuario y el administrador del proyecto (que puede ser a la vez el analista, el programador, y el operario) y el proyecto procede desde el análisis hasta el diseño e implantación sin mayor alboroto. Sin embargo, en las organizaciones más grandes, las cosas se llevan a cabo de manera mucho más formal. La comunicación entre los usuarios, la administración y el equipo del proyecto suele ser por escrito, y todo mundo entiende que el proyecto pasará por diversas fases antes de completarse. Aun así, es sorprendente ver la gran diferencia entre las maneras en que dos directores afrontan sus respectivos proyectos. De hecho, a menudo se deja a discreción del administrador determinar las fases y actividades de su proyecto, y cómo se llevarán a cabo. 52 Recientemente, sin embargo, ha empezado a cambiar el enfoque que se le da al desarrollo de sistemas. Cada vez son más las organizaciones grandes y pequeñas que están adoptando un ciclo de vida uniforme y único para sus proyectos. Esto a veces se conoce como el plan del proyecto, la metodología del desarrollo del sistema o, simplemente, “la forma en la que hacemos las cosas aquí”. (El manual del ciclo de vida del proyecto suele ser un libro tan voluminoso como el compendio de normas, que yace, sobre escritorio de todo analista y programador). El enfoque a la hora de desarrollar software puede ser casero o, como alternativa, pudiera ser que la organización para el desarrollo de sistemas decida comprar un paquete de administración de proyectos y ajustarlo a las necesidades de la compañía. Parece obvio que, aparte de darle empleo a las personas que crean los manuales de ciclo de vida de los proyectos (y a aquellos que escriben libros de texto al respecto), es conveniente la metodología del proyecto. ¿De qué sirve entonces tener un ciclo de vida de un proyecto? Existen tres objetivos principales: 1. Definir las actividades a llevarse a cabo en un proyecto de desarrollo de sistemas. 2. Lograr congruencia entre la multitud de proyectos de desarrollo de sistemas en una misma organización. 3. Proporcionar puntos de control y revisión administrativos de las decisiones sobre continuar o no con un proyecto. El tercer objetivo de un ciclo de vida de proyecto normal se refiere a la necesidad de la dirección de controlar un proyecto. Como hemos visto anteriormente en la introducción, la crisis del software se fundamentó en el tiempo de creación de software, ya que en la creación del mismo no se obtenían los resultados deseados, además de un gran costo y poca flexibilidad. Es un término informático acuñado en 1968, en la primera conferencia organizada por la OTAN sobre desarrollo de software, de la cual nació formalmente la rama de la ingeniería de software. El término se adjudica a F. L. Bauer, aunque previamente había sido utilizado por Edsger Dijkstra en su obra The Humble Programmer. Básicamente, la crisis del software se refiere a la dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables. Las causas son, entre otras, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios. 53 Englobó a una serie de sucesos que se venían observando en los proyectos de desarrollo de software: • Los proyectos no terminaban en plazo. • Los proyectos no se ajustaban al presupuesto inicial. • Baja calidad del software generado. • Software que no cumplía las especificaciones. • Código inmantenible que dificultaba la gestión y evolución del proyecto. Todo esto hizo replantear el enfoque y la metodología de desarrollo de los programas, naciendo formalmente la ingeniería del software. El autor de referencia Roger S. Pressman en su libro “Ingeniería del Software. Un enfoque práctico” incluye la definición del IEEE de ingeniería del software: aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software. Su objetivo es facilitar el mantenimiento del software y aumentar la calidad de éste. La ingeniería del software por tanto estudiará el conjunto de procesos para el desarrollo de productos software según un enfoque ingenieril, considerando, además de la programación, otras actividades previas de análisis y diseño. Si se ignoran este tipo de actividades, en lugar de ingeniería del software se está realizando “artesanía del software”. Los sistemas informáticos son tan complejos y en su elaboración participan tantos desarrolladores que se hace necesario planificar y organizar cuidadosamente los equipos y plazos. La ingeniería del software se hace, por tanto, imprescindible en proyectos serios, si bien muchos la ignoran, con los problemas que ello acarrea a medio y largo plazo. 6.2. DESARROLLO DE APLICACIONES Y ESTANDARIZACIÓN DE FORMATOS 6.2.1. APLICACIONES Entre las aplicaciones de software horizontal encontramos las aplicaciones ofimáticas. El término ofimática procede de la unión de oficina e informática y trata de la automatización de oficinas y de los procesos del trabajo que se realizan en su seno. La ofimática en sus orígenes, 54 surge como la necesidad de mecanizar las tareas más repetitivas y costosas del trabajo propio de una oficina y con este objetivo aparecieron las primeras máquinas de escribir y calculadoras. Con el avance de la tecnología y durante los años 70 las oficinas se van dotando de máquinas de tratamiento de textos, dedicadas a secretarias/os principalmente. Este concepto, hoy en día completamente obsoleto, fue transformándose gracias a la entrada de los ordenadores personales (PCs) en la oficina. Las fases por las que ha ido evolucionando la ofimática son: • Primera fase (1975 - 1980). La ofimática de una empresa se componía de elementos aislados, es decir, un procesador de textos, una hoja de cálculo, etc. Estos elementos no tenían interrelación entre sí, la formación era muy costosa y la interfaz con el usuario árida. Esta incipiente ofimática estaba soportada por grandes ordenadores corporativos. • Segunda fase (1980 - 1990). Irrumpen los paquetes integrados, como conjunto de herramientas que daban solución a la mayoría de las funcionalidades normalmente requeridas. Presentaban el inconveniente de tener que adquirir todo el paquete aunque se necesitase únicamente una o dos funciones del mismo y sobre todo, la formación no sólo era imprescindible, sino costosa. La interfaz de usuario seguía siendo orientada a carácter. La ofimática en este punto sigue teniendo una importancia de segundo orden frente a aplicaciones de mayor entidad dentro de la empresa, éstas aplicaciones estaban centralizadas en un gran ordenador central del que dependían terminales sin capacidad de proceso. En los últimos años 80, como consecuencia de la experiencia adquirida por los fabricantes del sector informático y debido al cambio de estrategia de éstos hacia la fabricación de productos para ordenadores personales, se abaratan los costes y aumentan las prestaciones tanto en soporte físico como lógico de forma espectacular. • Tercera fase (a partir de 1990). La ofimática moderna, está apoyada por ordenadores personales con alta capacidad de proceso, monitores en color y soporte lógico desarrollado con nuevas tecnologías de programación orientada a objetos 55 (OOP). A estos factores hay que añadir el auge experimentado por las diferentes comunicaciones y a la creciente utilización de redes locales de ordenadores personales. El equipo lógico se compone de paquetes modulares con una completa interrelación entre sí, productos que comparten información y procesos, pudiéndose adquirir únicamente lo que se necesita. Aparecen nuevos estándares de interfaz gráfica de usuario que permiten reducir el tiempo de formación de usuarios al mínimo y surge el concepto de “Trabajo en Grupo”. La información fluye a través de las redes de área local y es compartida por todos los miembros de un grupo de trabajo que no tienen que estar necesariamente en un mismo edificio. Esta capacidad tecnológica de hacer “circular” la información sin la necesidad de tener un soporte en papel lleva a pensar en el futuro: “la oficina sin papel”. En este punto surgen las suites como conjunto de aplicaciones que al ser utilizadas conjuntamente ofrecen ventajas adicionales en cuanto a integración y facilidad de uso, y cuyos distintos componentes se encuentran también disponibles en el mercado como productos independientes. La auténtica ventaja de las suites es la integración: la capacidad de las aplicaciones para compartir datos e interactuar entre sí de una manera que sería imposible si funcionasen por separado. Una mayor integración aumenta la productividad. La suite debe incluir un gestor centralizado que supervise los programas que la componen, y ofrecer herramientas compartidas para realizar las operaciones más habituales. Todas las aplicaciones componentes deben poder intercambiar datos de forma transparente. La suites preponderantes en el mercado son el paquete Office de Microsoft y OpenOffice de Sun Microsystems, de licencia libre y multiplataforma. Entre las principales tendencias actuales de los productos ofimáticos destacan las siguientes: ➥ Trabajo en grupo. La compartición de información y recursos está cimentada sobre una sólida plataforma tecnológica de redes de área local, 56 esta tendencia es ya un hecho en oficinas con un entorno ofimático avanzado. ➥ Multimedia. El fenómeno multimedia representa una auténtica revolución tanto en la presentación de la información como en la estructura misma de la comunicación. Existen múltiples definiciones de multimedia puesto que se trata de una tecnología en constante evolución. Se puede decir que multimedia es la aplicación conjunta y en un sólo mensaje de texto, gráficos, sonido e imágenes. El fuerte crecimiento de las prestaciones de los ordenadores personales así como del software de aplicación y los precios cada vez más asequibles, están propiciando la rápida entrada en el mercado de esta tecnología. ➥ Herramientas multiplataforma. La evolución tecnológica en cuanto a conectividad y la creciente necesidad de la integración de los diferentes sistemas existentes, están propiciando el desarrollo de productos capaces de trabajar en diferentes plataformas. De hecho, numerosos fabricantes se están inclinando hacia la adaptación y desarrollo de sus productos ofimáticos sobre por ejemplo Java estándar, como es el caso de OpenOffice. Esto hace a sus aplicaciones independientes del sistema operativo o plataforma puesto que teniendo instalada su “máquina virtual” (“virtual machine”) (Java Virtual Machine JVM, la cual existe para la mayoría de las plataformas), es posible interpretar el lenguaje Java . ➥ Integración de herramientas ofimáticas. Los fabricantes en su afán por acaparar mercado están lanzando una serie de productos llamados suites, que son grupos de aplicaciones que al ser utilizadas conjuntamente, ofrecen según los fabricantes ventajas adicionales en cuanto a integración y facilidad de uso. Un requisito imprescindible es que los distintos componentes de la suite también se encuentren disponibles en el mercado como productos independientes, y que éstos figuren en la élite de las aplicaciones ofimáticas del momento. Uno de los atractivos de estos conjuntos de aplicaciones es que el precio total del mismo suele ser muy inferior al de la suma de los programas que la forman, aunuqe la tendencia actual es a diseñar paquetes ofimáticos completos de licencia libre, y sin costes. 57 Hoy en día la industria ofimática se realimenta de las necesidades manifestadas por los propios usuarios, y se desarrolla en función de las mismas. Dichas necesidades son las que tienen una importancia más significativa a la hora de adquirir un producto ofimático y que se enumeran a continuación: • Fácil manejo:Interfaz de usuario amigable, personalizable y sensible al contexto. Necesidad de formación mínima. • Protección de la inversión exigiendo una trayectoria de adaptación a las nuevas tecnologías y una estrategia de futuro que garantice la continuidad del producto. Compatibilidad con los productos que ya se poseen. • Soporte de distintas plataformas físicas y sistemas operativos. Interoperabilidad con otras aplicaciones. Facilidad para las comunicaciones con otros entornos operativos. • Seguridad de los datos. • Soporte de los dispositivos requeridos. • Manuales en la lengua mayoritaria de los usuarios, muy valorables las ayudas embebidas en el producto. Esta lista, general para todos los productos ofimáticos, podría disgregarse dando lugar a una lista de características técnico-funcionales específicas que se deberían exigir a los diferentes productos ofimáticos. Los productos ofimáticos se han acercado mucho unos a otros, debido a la utilización de un estándar gráfico común y al alto grado de conocimiento de los fabricantes sobre las necesidades de los usuarios. Esencialmente todos los productos, cada uno en su especialidad, realizan las mismas funciones básicas. En el siguiente apartado se verán algunos de los formatos de ficheros más desarrollados en cuanto al intercambio directo entre aplicaciones y sistemas. Es importante resaltar la tendencia actual a estandarizar los formatos internos de representación que emplean las distintas aplicaciones de propósito general para sus ficheros o archivos, ya que se pretende que la mayor parte de las plataformas y aplicaciones, y por tanto de los usuarios potenciales, los puedan abrir sin problemas de compatibilidad. 58 6.2.2. FORMATOS ODA/ODIF/ODF. La Arquitectura de Documentos de Oficina (ODA, Office Document Architecture) empezó a desarrollarse en 1982 en un principio por la Asociación Europea de Fabricantes de Ordenadores (ECMA). En 1985 el programa de investigación europea ESPRIT financió una implementación piloto de ODA. En 1991 ODA recibió un fuerte impulso con la creación del Consorcio ODA, constituido por Bull Corporation, DEC, IBM, ICL y Siemens AG. Más adelante fue reconocida por la ITU-T (documentos T.411-T.424) y por la Organización Internacional de Estandarización (ISO) en su norma ISO 8613 y pasó a denominarse Open Document Architecture. El estándar se publicó finalmente en 1999. ODA se diseñó como un formato de intercambio para documentos elaborados mediante procesadores de textos, y estaba destinado más a la comunicación entre sistemas de software que al uso directo por parte de usuarios humanos. Su objetivo era conseguir que los documentos, tanto textuales como gráficos, pudieran ser transferidos, con todos sus atributos intactos, de un sistema a otro para poder ser luego editados, procesados, almacenados, etc. Se pretendía, en definitiva, solucionar el problema de comunicación entre formatos de procesadores de texto propietarios, cuya proliferación se veía en aquellos momentos (más que ahora) como una dificultad para el intercambio de documentos complejos. ODA describe cómo debe ser la estructura de un documentos. Esa estructura se divide en tres partes: • Estructura lógica, que que consiste en una secuencia en orden lógico de los objetos que componen el fichero. la estructura lógica permite dividir un documento en capítulos, secciones, párrafos, notas a pie de página, etc. La estructura es semejante a HTML. • Diseño (layout), que define la colocación de los elementos en el texto impreso o en la pantalla de visualización, en términos de páginas, columnas, márgenes, etc. La función es semejante a la de las hojas de estilo de internet. 59 • Contenido: el texto en sí, las figuras vectoriales, y las imágenes. No todos los ficheros ODA tienen esas 3 partes. De hecho, los ficheros ODA se pueden clasificar en función de esto: • Formateados: sólo constan del diseño y del contenido. Carecen de la estructura lógica, no se pueden editar. • Procesables: sólo constan del contenido y la estructura lógica, y son editables. • Formateados procesables: tienen las 3 partes, y se pueden editar. El formato de transporte binario de un fichero ODA se denomina ODIF (Open Document Interchange Format), y está basado en una codificación ASN.1 (Abstract Syntax Notation One). El formato ODA/ODIF ha caído en el olvido más absoluto durante unos años. La actividad del Consorcio ODA cesó y el soporte y desarrollo de productos acordes con la norma también se vieron paralizados. Quizá su complejidad fue una de las causas por las que ODA/ODIF no consiguió alcanzar un nivel de aceptación suficiente entre los fabricantes de software. También es verdad que el predominio logrado por Microsoft y sus aplicaciones de sobremesa en los últimos años fueron los principales enemigos para su éxito. Pero en los últimos años ha existido un resurgimiento de esta idea, el Formato de Documento Abierto para Aplicaciones Ofimáticas de OASIS (en inglés, OASIS Open Document Format for Office Applications), también referido como formato OpenDocument (ODF). ODF es un formato de fichero estándar para el almacenamiento de documentos ofimáticos tales como hojas de cálculo, memorandos, gráficas y presentaciones. Aunque las especificaciones fueron inicialmente elaboradas por Sun, el estándar fue desarrollado por el comité técnico para Open Office XML de la organización OASIS y está basado en un esquema XML, que veremos posteriormente, inicialmente creado e implementado por la suite ofimática OpenOffice.org. OpenDocument fue aprobado como un estándar OASIS el 1 de mayo de 2005. Asimismo fue publicado el 30 de noviembre de 2006 por las organizaciones ISO/IEC como estándar ISO/IEC 26300:2006 Open Document Format for Office Applications (OpenDocument) v1.0. 60 Por otra parte la versión 1.1 de la especificación fue aprobada el 25 de octubre de 2006 por el comité de estandarización de OASIS. El estándar fue desarrollado públicamente por un grupo de organizaciones, es de acceso libre, y puede ser implementado por cualquiera sin restricción. Con ello, Open Document es el primer estándar para documentos ofimáticos implementado por distintos competidores, visado por organismos de estandarización independientes y susceptible de ser implementado por cualquier proveedor. PDF. Ante el fracaso de ODA/ODIF, las empresas especializadas en software para la gestión de documentos digitales se enzarzaron en una carrera para ver quién conseguía imponer como estándar su propio formato de intercambio. Así surgió en 1993 Acrobat con su formato PDF (Portable Document File) un sistema con el que Adobe ha facilitado la difusión de documentos digitales entre sistemas software y hardware que son incompatibles entre sí. Haciendo uso de la tecnología Acrobat es posible ver en la pantalla del ordenador o imprimir (con gran fidelidad a la tipografía, estilo, gráficos y colores del original) documentos que pueden haber sido creados en un sistema completamente incompatible. Los documentos de réplica se crean mediante un proceso de conversión, utilizando un software especial que actúa como un controlador (driver) de impresión. Para generar un documento basta con imprimirlo desde la aplicación con la que se creó (Microsoft Word, WordPerfect, QuarkXpress, FrameMaker, Excel, etc.) tras haber seleccionado el controlador correspondiente desde el cuadro de diálogo que contiene las opciones de impresión. El documento resultante mantiene las características tipográficas y el formateo del original, y todos los objetos que lo componen se fusionan en un único archivo comprimido, con lo que se minimiza el espacio de almacenamiento requerido y se facilita su transmisión a través de redes. El formato también almacena información sobre las fuentes utilizadas en el documento original. En el caso de que el ordenador desde el que se lee no disponga del tipo de letra utilizado al crearlo, el software lector (Acrobat Reader) propietario pero gratuito, disponible en multitud de plataformas y de pequeño tamaño, es capaz de emularla de forma razonablemente satisfactoria. Tras la conversión es posible añadir al documento tablas de contenidos, crear índices en texto completo, hiperenlaces, etc., así como indicar restricciones de seguridad. Esta edición se lleva a cabo utilizando aplicaciones proporcionadas por el fabricante del formato. Para leer y editar los 61 documentos es necesario disponer de un. Ésta es una de las características más importantes de los formatos de réplica. Las posibilidades de edición disponibles con este tipo de formatos son muy limitadas (eliminación e inserción de páginas extraídas de otro archivo en el mismo formato, creación de notas e hiperenlaces, etc.) y no suelen estar disponibles en los lectores de libre distribución. En 1998 Adobe Acrobat y PDF dejaron de tener competencia: Farallon abandonó la tarea de desarrollar y comercializar Replica; Hummingbird había hecho pública su decisión de hacer lo mismo con Common Ground en febrero de ese mismo año y Tumbleweed (encargada de desarrollar Envoy) orientó su actividad hacia la distribución segura de documentos, recomendando el uso de PDF, al que definió como estándar de facto en una nota de prensa publicada en octubre de 1997, todos ellos intentos fallidos de conseguir un formato de documento universal. Esto no debe interpretarse como una superioridad técnica del formato PDF frente al resto de sus competidores. Simplemente se trata, nuevamente, de una mayor aceptación debida sobre todo a la posición de superioridad que Adobe tenía en el mercado, gracias en buena parte a la importante implantación del estándar de facto PostScript, que había sido lanzado por la compañía en 1985. SGML. SGML (Standard Generalized Markup Language) es una norma ISO (ISO 8879) que data de 1986 y que se derivó de una anterior (GML de IBM). SGML fue diseñado para permitir el intercambio de información entre distintas plataformas, soportes físicos, lógicos y diferentes sistemas de almacenamiento y presentación (bases de datos, edición electrónica, etc.), con independencia de su grado de complejidad. El estándar SGML utiliza un conjunto de caracteres basado en el estándar ASCII (American Standard Coding for the Interchange of Information), reconocido de manera prácticamente universal por cualquier tipo de plataforma y de sistema informático. Los caracteres especiales, que no están contemplados en el conjunto de caracteres ASCII (propios de sistemas de escritura distintos del inglés, símbolos matemáticos, etc.) se transforman en representaciones ASCII y se denominan Así se evitan otros caracteres especiales o de control. 62 referencias de entidad. Un documento SGML se marca con etiquetas de modo que no dice nada respecto a su representación en la pantalla o en papel. Un programa de presentación debe unir el documento con la información de estilo a fin de producir una copia impresa en la pantalla o en el papel. En SGML, las etiquetas se distinguen del resto del texto mediante caracteres de delimitación. Estos delimitadores permiten que el software reconozca qué caracteres deben ser leídos en modo de ETIQUETA, y deben por ello traducirse al lenguaje concreto de composición o tratarse de manera específica, y qué otros caracteres de CONTENIDO deberán ser transferidos posteriormente a la aplicación para su procesamiento. Los caracteres utilizados como delimitadores deben elegirse cuidadosamente, ya que no han de aparecer con demasiada frecuencia como parte del contenido de un documento. La norma ISO 8879 describe un conjunto de caracteres básicos entre los que se incluyen los signos < y > de apertura y de cierre para destacar las etiquetas de inicio y el signo & seguido por un nombre, y éste a su vez seguido de un punto y coma para representar entidades tales como imágenes gráficas o caracteres especiales (por ejemplo, &bullet; para un redondelito negro). Todos los procesadores de texto utilizan algún sistema de codificación interno para marcar cuestiones como la negrita, la cursiva, el sangrado, el centrado, etc. Pero el problema con estos códigos es que cada programa usa un sistema propio, sistemas que incluso cambian de una versión a otra en un mismo programa. Aunque existen programas para convertir, los problemas que esta disparidad ocasiona son considerables. En las primeras reuniones del Comité que abordó la creación de SGML, una de las principales cuestiones que se debatieron fue la codificación genérica, esto es, un sistema de códigos universal e independiente de la aplicación, por medio del cual, por ejemplo <P> significara siempre párrafo y <H1> indicara siempre un encabezado de primer nivel. La intención inicial era lograr especificar un conjunto de etiquetas que fueran válidas para un elevado número de documentos. Sin embargo, a pesar de que el principio de la codificación genérica está bien fundado, la variedad de documentos, así como la diversidad de elementos que contienen, lo hacen prácticamente inabordable. La solución que se adoptó es emplear una cabecera (heading) donde se definan las etiquetas que se van a usar. De esta forma SGML no se quedó como un mero conjunto de códigos 63 normalizados, sino que se convirtió en un lenguaje con el que se podía crear una definición del tipo de documento (DTD), mediante la que se definen con precisión aquellos elementos que son necesarios en la elaboración de un documento o un grupo de documentos estructurados de manera similar. Las definiciones de los elementos -formalmente denominadas declaraciones de elementos- tienen dos funciones: • Aportan el nombre “oficial” de las etiquetas (los nombres que aparecerán dentro de los delimitadores, por ejemplo <chapter>). • Describen lo que cada elemento puede contener, el modelo de contenido. XML (eXtensible Markup Language) fue desarrollado por un Grupo de Trabajo XML (originalmente conocido como “SGML Editorial Review Board”) formado bajo los auspicios del Consorcio World Wide Web (W3C), en 1996. Fue presidido por Jon Bosak de Sun Microsystems con la participación activa de un Grupo Especial de Interés en XML (previamente conocido como Grupo de Trabajo SGML) también organizado en el W3C. XML es un subconjunto de SGML cuyo objetivo es permitir que SGML sea servido, recibido y procesado en la web de la misma forma que HTML. Se trata, por tanto, de posibilitar el intercambio electrónico de datos (EDI), tanto estructurados como no estructurados, mediante la tecnología web, hasta ahora reservada exclusivamente a los documentos HTML. Relación entre HTML, XML y SGML XML es un metalenguaje, como SGML. Los documentos XML válidos son, por definición, documentos SGML válidos, pero los documentos XML tienen restricciones adicionales. Por ejemplo, XML no admite el conector & de SGML. Por otra parte, la esencia de SGML, que es el concepto de DTD, continúa estando presente en XML. 64 7. DESARROLLO DEL ALMACENAMIENTO DE LA INFORMACIÓN Las bases de datos nacen para solucionar los problemas presentados a los programadores a la hora de diseñar programas eficientes capaces de manipular grandes volúmenes de información. Los pioneros de finales de los 50 y principios de los 60 desarrollaron muchas técnicas nuevas para manipular los ficheros. Los ficheros se pueden manipular mediante lenguajes de tercera generación convencionales empleando los servicios del sistema operativo. La complejidad del trabajo de programación y la rigidez de las restricciones que imponía la tecnología de los ordenadores en aspectos como la inserción de datos o la gestión de casos especiales, hacía arduo el trabajo. De su evolución y necesidad de facilitar la tarea al programador surgen las bases de datos como conjunto, colección o depósito de datos almacenados en un soporte informático no volátil. A su vez alrededor de las bases de datos nacen los sistemas gestores de base de datos (SGBD) (DBMS, DataBase Management System) conjunto de utilidades que permiten la implantación, acceso y mantenimiento de una base de datos. A lo largo de la historia los sistemas gestores de base de datos han ido evolucionando ligados a los modelos de datos que pueden implementar, desde los años sesenta con bases de datos estructurados de forma jerárquica y en red, hasta los actuales que permiten desarrollar aplicaciones gráficas multiusuario y multiplataforma, en potentes sistemas en red, podemos distinguir una evolución en la que se distinguen tres etapas o generaciones: Primera generación de los SGBD: Los sistemas jerárquico y de red constituyen la primera generación de los SGBD. El modelo jerárquico estructura los datos de manera escalonada, existiendo una relación del tipo padre-hijo entre sus registros. La representación de la información es similar a una estructura en árbol. El modelo en red, elimina la restricción del modelo jerárquico, en el sentido de que un registro puede tener más de un padre, por lo que resulta más flexible, dando lugar a una estructura de grafo. Pero estos sistemas presentan algunos inconvenientes: • Es necesario escribir complejos programas de aplicación para responder a cualquier tipo de consulta de datos, por simple que ésta sea. • La independencia de datos es mínima. • No tienen un fundamento teórico. 65 Segunda generación de los SGBD: En 1970 Codd, de los laboratorios de investigación de IBM, escribió un artículo presentando el modelo relacional. En este artículo, presentaba también los inconvenientes de los sistemas previos, el jerárquico y el de red. Entonces, se comenzaron a desarrollar muchos sistemas relacionales, apareciendo los primeros a finales de los setenta y principios de los ochenta. Esto condujo a dos grandes desarrollos: • El desarrollo de un lenguaje de consultas estructurado denominado SQL, que se ha convertido en el lenguaje estándar de los sistemas relacionales. • La producción de varios SGBD relacionales durante los años ochenta, como DB2 y SLQ/DS de IBM, y ORACLE de ORACLE Corporation. Hoy en día, existen cientos de SGBD relacionales, tanto para microordenadores como para sistemas multiusuario, aunque muchos no son completamente fieles al modelo relacional. Los SGBD relacionales constituyen la segunda generación de los SGBD. Tercera generación de los SGBD: Como respuesta a la creciente complejidad de las aplicaciones que requieren bases de datos, han surgido nuevos modelos de datos y SGBD que los soportan: el modelo de datos objeto-relacional y el modelo relacional extendido. Sin embargo, a diferencia de los modelos que los preceden, la composición de estos modelos no está clara. Las bases de datos son hoy en día el corazón de las empresas. Sin ellas se verían expulsadas del mercado por la competencia. Todos los ciclos formativos de la familia profesional de informática contemplan en sus temarios las bases de datos, lo que pone de relieve la gran importancia de las mismas. 7.1. APLICACIONES DE GESTIÓN DE LA INFORMACIÓN EN LA EMPRESA • WORKFLOW. Un sistema de workflow (“flujo de trabajo”) es un software de gestión basado en reglas que dirige, coordina y monitoriza la ejecución de un conjunto interrelacionado de tareas organizadas para formar un proceso de negocio. El propósito principal de los sistemas de workflow es proporcionar a los empleados capacidad de seguimiento, enrutamiento, gestión de documentos, y otras posibilidades diseñadas para mejorar los procesos de negocio. 66 • ERP. Un sistema ERP (Enterprise Resource Planning, planificación de recursos empresariales) consta de un conjunto de programas integrados capaz de gestionar las operaciones vitales de una empresa global que tenga multitud de sedes. Aunque el alcance de los sistemas ERP puede variar de empresa a empresa, la mayoría proporcionan software integrado de soporte para las funciones de finanzas y producción. Los sistemas ERP típicamente manejan la producción, logística, distribución, inventario, envíos, facturas y una contabilidad para la compañía de la Planificación de Recursos Empresariales o el software ERP puede intervenir en el control de muchas actividades de negocios como ventas, entregas, pagos, producción, administración de inventarios, calidad de administración y la administración de recursos humanos. Por ejemplo, los sistemas ERP son capaces de hacer predicciones de demanda, cotejar la predicción con las existencias de inventario, y determinar las materias primas necesarias para fabricar los productos que se prevén van a demandarse. La mayoría de los sistemas ERP también incorporan la capacidad de realizar automáticamente los pedidos de esos materiales. Además, se soportan e integran otras funciones como las relativas a la gestión de recursos humanos, ventas y distribución. Algunos productos ERP son: ➥ mySAP de SAP AG (la versión anterior de este ERP es SAP R/3). Es el líder en ERP. ➥ Oracle E-Business, de Oracle Co. ➥ SSA ERP de SSA Global. ➥ Peoplesoft de Peoplesoft (adquirida por Oracle). ➥ World de J.D. Edwards (adquirido por Peoplesoft). • CRM. Del acrónimo inglés “Customer Relationship Management”, administración de la relación con los clientes. Se trata de software en sistemas informáticos, de apoyo a la gestión de las relaciones con los clientes, a la venta y al marketing. Con este significado CRM se refiere al Data warehouse con la información de la gestión de ventas, y de los clientes de la empresa. 67 Las bases de datos de marketing tienen como finalidad cargar y almacenar perfiles de los clientes con datos más subjetivos como, por ejemplo, qué le gusta hacer en su tiempo libre, qué tipo de comida consume, etc., datos que están enfocados a poder desarrollar un perfil de cliente de modo que podamos brindarle una oferta que esté realmente hecha para él. Por esto es que las estrategias de marketing directo basadas en un desarrollo CRM tienen tanto éxito en todo el mundo. La orientación al cliente es cada vez más importante. El objetivo es ofrecer al cliente aquello que necesita y en el momento que lo necesita. El software CRM online es, según consultoras y especialistas, el que en un futuro cercano mejor permitirá conocer al detalle, sus necesidades y anticiparse a su demanda desde el lugar en que nos encontremos, compartiendo la información. Uno de los mayores problemas para que las empresas exploten un producto CRM es el alto costo de estos productos comerciales, licencias adicionales como un sistema operativo y mas aun el alto costo de la su implantación y puesta en marcha. • MIS. Un MIS (Management Information System, sistema de información para la dirección), es una colección de personas, procedimientos, software, bases de datos y dispositivos usados para proporcionar información rutinaria a los directivos. El objetivo de los MIS es la eficiencia en la toma de decisiones operacionales. Estas decisiones se caracterizan por ser estructuradas. Es decir, se adoptan conforme a una regla, un procedimiento o un método cuantitativo. Por ejemplo, decir que se debe repoer el inventario cuando su nivel descienda a 100 unidades es una regla. Las decisiones estructuradas son fáciles de programar. Las diversas áreas empresariales (marketing, producción, finanzas, etc.) disponen de MIS dedicados, que generan informes estándar a partir de los datos proporcionados por los sistemas de procesamiento de transacciones, no sólo de su área, sino de todas. Para ello, se ha de usar una base de datos común a todas las áreas. Los informes que proporcionan los MIS sin fijos, con formatos estándar, si bien se permite a lo usuarios elaborar informes a medida. Para su confección, los MIS hacen uso de la información interna a la empresa, que reside en sus bases de datos. Algunos MIS usan fuentes externa de datos sobre sus competidores, el mercado, etc. Internet se usa con frecuencia como una fuente de datos externos. 68 • DSS. Un DSS (Decision Support System, sistema de ayuda a la decisión) es una colección organizada de personas, procedimientos, software, bases de datos y dispositivos usados para servir de ayuda en la toma de decisiones de problemas específicos. Estos problemas son poco estructurados, es decir, las relaciones entre los datos no son siempre claras, los datos pueden estar en una gran variedad de formatos, y pueden ser difíciles de obtener. Mientras que un MIS ayudan a la empresa a “hacer correctamente las cosas”, un DSS ayuda a un directivo a “hacer la cosa correcta”. Los DSS asisten en todos los aspectos que se han de contemplar para adoptar decisiones relativas a problemas específicos, extendiéndose más allá de lo que lo haría un MIS; los MIS tradicionales no ayudan a resolver problemas complejos. Los MIS tradicionales se usan raramente para resolver este tipo de problemas; un DSS puede ayudar sugiriendo alternativas que faciliten la adopción de la solución final. Los sistemas de apoyo a la decisión se usan cuando los problemas son complejos y la información que se necesita para dar la mejor respuesta es difícil de obtener y usar. Entre los elementos constitutivos de un DSS se encuentran los modelos empleados, y los hechos (datos) con los que se han de alimentar esos modelos, así como una interfaz de usuario que permita interactuar con el DSS, planteándole, por ejemplo, situaciones hipotéticas cuyas consecuencias habrán de simular mediante los modelos. También se les puede proporcionar un objetivo (goal) para el que deben determinar los datos de entrada que lo lograrían. Los DSS proporcionan maneras flexibles de presentar la información, tanto gráfica como textualmente, y con distintos niveles de profundidad, aunque son fáciles de usar y aprender. Los DSS manejan grandes cantidades de información (almacenes de datos o data warehouses), procedentes de diversas fuentes. Encontramos 2 versiones o evoluciones de los sistemas software DSS: ➥ GDSS: Los sistemas de apoyo a la toma de decisión en grupo (GDSS, Group Decision Support System), también denominados sistemas de trabajo colaborativo constan de la mayoría de los elementos de los DSS, además del software necesario para facilitar el trabajo en grupo a distancia (groupware). ➥ ESS: Los ejecutivos de más alto nivel necesitan un apoyo muy especializado que les ayude a adoptar decisiones estratégicas. Este apoyo se lo brindan los sistemas de sistemas de apoyo para 69 ejecutivos (ESS, Executive Support System), también llamados sistemas de información para ejecutivos (EIS, Executive Information System). Los ESS son un caso particular de DSS, aunque presentan diferencias. Los DSS proporcionan herramientas de modelado y análisis que permiten a los usuarios profundizar en los problemas a la busca de respuestas. Los ESS presentan información sobre aspectos de la empresa que los ejecutivos consideran importantes; en otras palabras, les facilitan la tarea de formular las preguntas oportunas. 70 8. COMUNICACIÓN Y REDES Los tres últimos siglos han estado dominados, cada uno de ellos, por una tecnología. El siglo XVIII fue la época de los grandes sistemas mecánicos que acompañaron a la Revolución Industrial. El siglo XIX fue la era de las máquinas de vapor. En el siglo XX, la tecnología clave ha sido la obtención, procesamiento y distribución de la información. Entre otros avances, hemos visto la instalación de redes telefónicas mundiales, la invención del radio y la televisión, el nacimiento y crecimiento sin precedentes de la industria de las computadoras y el lanzamiento de satélites de comunicación. Debido al rápido progreso de la tecnología, estas áreas están convergiendo rápidamente, y las diferencias entre juntar, transportar, almacenar y procesar información desaparecen con rapidez. Las organizaciones con cientos de oficinas que se extienden sobre una amplia área geográfica esperan ser capaces de examinar la situación, aun de sus más remotos puestos de avanzada, oprimiendo un botón. Al crecer nuestra habilidad para obtener, procesar y distribuir información, también crece la demanda de técnicas de procesamiento de información más avanzadas. El constante avance tecnológico en informática ha derivado no sólo en el avance en el procesamiento de la información, sino en las necesidades de comunicar, compartir y divulgar dicha información. En este sentido la tendencia actual es la compartición de datos, programas, dispositivos hardware y todo tipo de recursos en general. De la unión de la informática y las telecomunicaciones surge la ciencia de la Telemática o Teleinformática, que estudia las técnicas necesarias para la transmisión de datos a través de redes de telecomunicación. Una red de comunicaciones es un conjunto de equipos y facilidades para el transporte de información entre usuarios ubicados en varios puntos geográficos. Debido a las nuevas necesidades aparecidas en los últimos años las redes de ordenadores han experimentado un desarrollo veloz. En su libro “Redes de computadoras” el autor Andrew S. Tanenbaum define una red de ordenadores, como “colección interconectada de computadoras autónomas”. 71 Los objetivos fundamentales de las redes en general y de la interconexión de ordenadores en particular son: • Disponer de medios de comunicación entre emplazamientos remotos. • Compartir la información de forma casi instantánea. • Compartir recursos sin importar la localización física y/o el entorno de trabajo. • Compartir la carga de trabajo de procesamiento. En este tema veremos una panorámica global de las redes, así como los principios básicos de las mismas y los servicios que se soportan y prestan a los usuarios. 8.1. EVOLUCIÓN HISTÓRICA DE LAS REDES. No es posible entender el estado actual de las telecomunicaciones y transmisión de datos sin conocer cuál ha sido su evolución histórica y la sucesión avances tecnológicos en la materia. La evolución de la tecnología ha posibilitado que la informática haya conseguido avances espectaculares en un tiempo relativamente corto. Las telecomunicaciones, comienzan en la primera mitad del siglo XIX, en 1844 Samuel Morse inventó el telégrafo inalámbrico, que permitió el enviar mensajes cuyo contenido eran letras y números. Más tarde en 1876 Alexander Bell amplió las posibilidades del telégrafo, desarrollando el teléfono, con el que fue posible comunicarse utilizando la voz, y posteriormente, la revolución de la comunicación inalámbrica: las ondas de radio. A principios del siglo XX aparece el teletipo que, utilizando el código Baudot, permitía enviar texto en algo parecido a una máquina de escribir y también recibir texto, que era impreso por tipos movidos por relés. El término telecomunicación fue definido por primera vez en la reunión conjunta de la XIII Conferencia de la UTI (Unión Telegráfica Internacional). La definición entonces aprobada del término fue: "Telecomunicación es toda transmisión, emisión o recepción, de signos, señales, escritos, imágenes, sonidos o informaciones de cualquier naturaleza por hilo, radioelectricidad, medios ópticos u otros sistemas electromagnéticos". 72 El siguiente artefacto revolucionario en las telecomunicaciones fue el módem que hizo posible la transmisión de datos entre computadoras y otros dispositivos. En los años 60's comienza a ser utilizada la telecomunicación en el campo de la informática con el uso de satélites de comunicación y las redes de conmutación de paquetes. La década siguiente se caracterizó por la aparición de las redes de computadoras y los protocolos y arquitecturas que servirían de base para las telecomunicaciones modernas (en estos años aparece la ARPANET, que dio origen a la Internet). También en estos años comienza el auge de la normalización de las redes de datos: el CCITT trabaja en la normalización de las redes de conmutación de circuitos y de conmutación de paquetes y la Organización Internacional para la Estandarización crea el modelo OSI. A finales de los años setenta aparecen las redes de área local o LAN. En los años 1980, cuando los ordenadores personales se volvieron populares, aparecen las redes digitales. En la última década del siglo XX aparece Internet, que se expandió enormemente y a principios del siglo XXI se están viviendo los comienzos de la interconexión total a la que convergen las telecomunicaciones, a través de todo tipo de dispositivos que son cada vez más rápidos, más compactos, más poderosos y multifuncionales Entre 1983 y 1984 surgieron los primeros entornos servidores de ficheros para redes de área local. Entre las compañías destacadas, cabe citar a Novell Inc., 3Com Corp., AT&T e IBM. Aunque todas ellas diferían en la gestión e implementación, se trataba de entornos centralizados, donde un ordenador hacía las veces de servidor (con el sistema operativo de red instalado en él y los datos compartidos) y el resto de equipos funcionaban con una versión de un sistema operativo más “ligero”, como MSDOS. Hacia 1990, este tipo de redes locales triunfó en el mundo de la empresa y la industria de las redes creció a velocidades impresionantes. Hoy en día, las redes de ordenadores son algo más que un entorno centralizado de gestión de ficheros. El desarrollo de la tecnología en los medios físicos disponibles (cobre, coaxial, fibra óptica, transmisores y receptores inalámbricos de alta velocidad) ha posibilitado el incremento en velocidad de transmisión y fiabilidad, lo que ha supuesto una extensión en sus capacidades. La principal tiene que ver con las redes de altas prestaciones, donde una aplicación compleja se ejecuta de forma distribuida en los equipos de la red. La tendencia actual debido a las altas velocidades, fiabilidad y capacidad de procesamiento en equipos dispuestos en red local, se orienta 73 hoy en día hacia las redes distribuidas (en lugar de centralizadas) donde cada ordenador es cliente, pero también puede realizar procesamiento de las peticiones de otros clientes, siendo servidor de datos o dispositivos compartidos. 8.2. Modelos de distribución del procesamiento y la información Hace unos años los sistemas informáticos empresariales eran centralizados. Grandes mainframes, también denominados hosts, concentraban toda la carga computacional. Se accedía a ellos desde unos terminales, que eran poco más que un monitor de fósforo verde y un teclado. Conforme los requisitos de las aplicaciones empresariales fueron aumentando, se fue haciendo cada vez más patente que los sistemas centralizados no eran adecuados y resultaban caros. Las empresas dependían de ellos, pero... ¿qué sucedía cuando el host se caía?: se paraba la actividad empresarial. El surgimiento de los ordenadores personales (PC), de coste cada vez más asequible, propició su implantación progresiva en las empresas. Como su capacidad de cómputo crecía rápidamente, parece lógico que se empezara a delegar parte del trabajo de los hosts en los PC. Del mismo modo el desarrollo de los lenguajes de alto nivel como Visual Basic y con Oracle Forms Developer, facilitó el desarrollo de aplicaciones de clientes en PC con acceso a servidores. De esa forma, surgió la arquitectura de dos capas cliente/servidor. Esta arquitectura no estaba exenta problemas, pero como habitualmente los sistemas no ocupaban más de una oficina, las ventajas que aportaba la tecnología cliente/servidor superaban a sus inconvenientes. 74 A mediados de la década de los noventa, a medida que los sistemas empezaban a estar cada vez más intercomunicados, los problemas se fueron haciendo progresivamente más patentes. Un inconveniente muy fuerte de la arquitectura de dos capas (aunque no el único) es su administración cuando la red se extiende más allá de un departamento u oficina. Piénsese en lo que supone migrar a una nueva versión del cliente: reinstalar en muchísimas máquinas, parando el trabajo de todos los empleados. Otro inconveniente, vinculado al anterior, es la elevada complejidad que habían alcanzado los sistemas. Los clientes cada vez eran más “obesos”; debían utilizar más inteligencia. Lo que antes era un host, ahora, cada vez más, se limitaba a un medio para compartir recursos, como un sistema de ficheros, una impresora y, con frecuencia, una base de datos. Los problemas de administración y desarrollo se agigantaban. Había que construir y administrar aplicaciones diferentes para distintos departamentos. Se hacía cada vez más necesaria una arquitectura que fuera escalable. Es decir, ampliable. Surgen así las arquitecturas de tres capas, favorecidas por la explosión de Internet. Aun así los sistemas centralizados siguen teniendo aplicación hoy en día. La arquitectura de tres capas aleja la inteligencia del cliente. El cliente ahora es, típicamente, un navegador web (browser), y sólo sirve como interfaz de usuario. Los datos siguen residiendo en una base de datos, carente de “inteligencia”. Dicha “inteligencia” reside ahora en programas que componen una capa intermedia. El cliente emite su solicitud a los programas intermedios, que pedirán datos al servidor mediante una consulta, procesándolos una vez obtenidos, y devolverán al cliente el resultado de dicho proceso. La arquitectura de tres capas es tremendamente flexible. Ampliar el sistema sólo supone cambiar, en un único sitio, los componentes de la capa intermedia. Además, todos los departamentos pueden acceder a dicha capa, y aunque posiblemente cada uno tenga su aplicación allí, la administración se simplifica enormemente. Además hay otras ventajas, como pueden ser: • Mayor seguridad, derivada del hecho de no permitir a los clientes un acceso directo a la base de datos. • Soporte directo para acceso desde Internet a las aplicaciones empresariales. 75 • Elevada disponibilidad, puesto que se puede configurar una capa intermedia con varias máquinas. • Buen rendimiento, al dividir el sistema en partes que pueden residir en ordenadores distintos. Actualmente, la comunicación entre el usuario final y el programa de la capa intermedia se suele hacer mediante páginas web (protocolo HTTP), empleando alguna de las tecnologías de programación web (CGI, Servlets Java o Páginas de Servidor). La comunicación entre la capa intermedia y el sistema gestor de bases de datos se lleva a cabo mediante mensajes SQL con protocolos y arquitecturas de red propietarios como, por ejemplo, NET8 de Oracle. La programación de la comunicación con el servidor se realiza habitualmente con SQL embebido, ODBC o JDBC. 76 9. FUTURO: INTELIGENCIA ARTIFICIAL Los sistemas basados en el conocimiento también denominados expertos son programas que reproducen el proceso intelectual de un experto humano en un campo particular, pudiendo mejorar su productividad, ahorrar tiempo y dinero, conservar sus valiosos conocimientos y difundirlos más fácilmente. Los sistemas expertos se pueden considerar como el primer producto verdaderamente operacional de la inteligencia artificial. Son programas de ordenador diseñados para actuar como un especialista humano en un dominio particular o área de conocimiento. En este sentido, pueden considerarse como intermediarios entre el experto humano, que transmite su conocimiento al sistema, y el usuario que lo utiliza para resolver un problema con la eficacia del especialista. El sistema experto utilizará para ello el conocimiento que tenga almacenado y algunos métodos de inferencia. A la vez, el usuario puede aprender observando el comportamiento del sistema. Es decir, los sistemas expertos se pueden considerar simultáneamente como un medio de ejecución y transmisión del conocimiento. Lo que se intenta, de esta manera, es representar los mecanismos heurísticos que intervienen en un proceso de descubrimiento. Éstos mecanismos forman ese conocimiento difícil de expresar que permite que los expertos humanos sean eficaces calculando lo menos posible. Los sistemas expertos contienen ese “saber hacer”. La característica fundamental de un sistema experto es que separa los conocimientos almacenados (base de conocimiento) del programa que los controla (motor de inferencia). Los datos propios de un determinado problema se almacenan en una base de datos aparte (base de hechos). Una característica adicional deseable, y a veces fundamental, es que el sistema sea capaz de justificar su propia línea de razonamiento de forma inteligible por el usuario. 9.1. Sistemas basados en el conocimiento. Como el conocimiento es el núcleo de los sistemas expertos, a menudo se les denomina sistemas de conocimiento o sistemas basados en el conocimiento. El campo de los sistemas expertos trata de las formas de adquirir conocimiento de los especialistas humanos y de representar 77 esos conocimientos en una forma compatible con un ordenador. Los ordenadores ejecutan una forma de tratamiento del conocimiento cuando los usuarios lo solicitan. ¿Qué es el conocimiento? El conocimiento se puede considerar como la comprensión adquirida. En muchas aplicaciones, el conocimiento heurístico adquirido mediante la experiencia que proporciona el mundo real es el más adecuado para resolver los problemas. ¿Qué es la información? La información son hechos e imágenes. El conocimiento consiste en entender esos hechos e imágenes. Los sistemas expertos ayudan a manejar la sobrecarga de información a la que nos enfrentamos traduciendo ésta en conocimiento utilizable. Inteligencia artificial (IA). Los sistemas expertos son una de las aplicaciones de la inteligencia artificial. Ahora que ya se sabe qué es y qué hace un sistema experto, es el momento de volver la vista hacia la inteligencia artificial, el campo del que derivan los sistemas expertos. La inteligencia artificial es esa “misteriosa” parte de la informática que intenta hacer ordenadores más “inteligentes” y, por tanto, más útiles. El objeto de la IA no es reemplazar a los humanos con ordenadores inteligentes, sino dotar a los ordenadores de “inteligencia” suficiente para que resulten una herramienta más potente, más útil y de uso más variado. Los sistemas expertos y otras formas de inteligencia artificial son paquetes de software que se pueden hacer funcionar en casi todos los ordenadores. Los dos componentes principales de cualquier programa de IA son: una base de conocimientos y un programa de inferencia. Mediante el uso de símbolos se puede crear una “base de conocimientos” que establezca diferentes hechos acerca de objetos, acciones o procesos, y sus relaciones. Una vez creada la base de conocimiento se debe diseñar un método para utilizarla. Básicamente, se necesita un programa que use el conocimiento para razonar y pensar en cómo resolver un problema particular. Esta clase de programa se denomina generalmente “programa de inferencia” o “máquina de inferencia”. El enfoque básico para la resolución de problemas en inteligencia artificial son los procesos de búsqueda y comparación de patrones, los veremos posteriormente. 78 9.2. Aplicaciones de la IA. La inteligencia artificial se viene aplicando a multitud de campos, en algunos de los cuales tiene una profunda evolución y maduración: • Procesamiento del lenguaje natural (NLP). Las técnicas de procesamiento del lenguaje natural permiten a los ordenadores comprender el lenguaje de los humanos. • Reconocimiento de la voz. Los sistemas de reconocimiento de la voz imitan la capacidad auditiva humana de reconocer e interpretar la voz. • Visión por ordenador. Los sistemas de visión dotan a los ordenadores de capacidad de percepción visual. • Robótica. Un robot es a la inteligencia artificial lo que el cuerpo es a la mente humana. Se puede crear un robot inteligente usando sensores para obtener retroalimentación y software de IA para modificar el programa de control. • Aprendizaje del ordenador. Los investigadores están intentando encontrar formas de hacer que los ordenadores aprendan de su experiencia o de los datos que reciben. • Educación y en entrenamiento. Los métodos de la IA se están usando para crear una nueva forma de enseñanza asistida por ordenador. • Programación automática, en la que se aplican las técnicas de la inteligencia artificial a la difícil tarea de crear software. 9.3. TIPOS DE SISTEMAS EXPERTOS. • Sistemas de análisis e interpretación. Los sistemas expertos realizan un trabajo de interpretación a partir de la información recibida desde un teclado, desde otro programa del ordenador o desde sensores electrónicos. Una vez que la información está disponible, los programas de inferencia utilizan esos datos junto con la información contenida en una base de conocimientos para intentar comprender los datos, y a continuación proporcionan una explicación para los datos o saca conclusiones apropiadas. 79 • Sistemas de predicción. Los sistemas expertos son muy buenos para predecir resultados futuros. Utilizando los datos de entrada acerca de una situación dada, un sistema experto de predicción puede deducir consecuencias futuras o resultados a partir del conocimiento que tiene. Los sistemas de predicción producen resultados especialmente buenos a la hora de sugerir las consecuencias más probables de unas determinadas condiciones. La base de conocimientos suelen contener las tendencias de los datos y la información histórica, así como los patrones cíclicos apropiados. • Sistemas de diagnóstico y depuración. Otra aplicación especialmente adecuada para los sistemas expertos son los sistemas de diagnóstico y depuración. Ambas técnicas se utilizan en la reparación y detección de fallos en equipos. También se emplean mucho en medicina de diagnóstico. Un sistema experto de diagnóstico recibe los datos acerca del comportamiento del dispositivo, sistema o individuo. De hecho, la mayoría de los sistemas expertos formulan listas de preguntas en un intento de acumular los datos necesarios para llegar a una conclusión. Estos datos de entrada toman la forma de síntomas, características físicas, prestaciones registradas e irregularidades o funciones indeseadas. Con esta información, el programa de inferencia recorre la base de conocimientos para detectar los problemas. Mientras que algunos sistemas expertos realizan sólo diagnósticos, otros también incluyen características de depuración, lo que significa que recomiendan las acciones adecuadas para corregir los problemas y deficiencias descubiertas. • Sistemas de control. El control consiste fundamentalmente en observar los datos que proporcionan los sensores. Se emplea una gran variedad de sensores para transformar las variaciones de distintas magnitudes físicas en señales eléctricas que pueden ser interpretadas por un ordenador. Se prepara un programa para determinar cuáles de las señales controladas se encuentran dentro de los límites deseados. En un sistema experto, la base de conocimientos contiene reglas para decidir qué hacer con las magnitudes con valores fuera de límite. Si alguno de los sensores indica un valor fuera de límite, se activa un programa de control en el ordenador para devolver los datos a su nivel correcto. Este proceso de control generalmente emplea técnicas de retroalimentación, es decir, información detectada en el sistema que se está controlando, e informa el ordenador de lo que sucede. El ordenador continúa controlando el sistema hasta que recibe información de que el sistema falla o llega a 80 alguna condición deseada. Denominados sistemas de control en bucle cerrado, éstos permiten automatizar totalmente algunos procesos. • Sistemas de diseño. Los sistemas CAD basados en sistemas expertos liberan a los ingenieros o a los diseñadores para dedicarse a tareas más creativas. • Sistemas de planificación. Los sistemas expertos ayudan a las personas a establecer planes, de forma rápida, para realizar operaciones complejas. • Sistemas de enseñanza. Un sistema experto puede utilizarse para la enseñanza empleando el conocimiento que forma el núcleo del sistema. Un sistema experto evalúa el nivel de conocimientos y comprensión de cada estudiante. Con esta información se puede ajustar el proceso educativo a sus necesidades. 9.4. HISTORIA RECIENTE DE LOS SISTEMAS EXPERTOS. Los sistemas expertos descritos a continuación son famosos por su impacto en la inteligencia artificial. Se han empleado muchos años de investigación para desarrollar estos primeros programas, que definen la forma y el sistema de funcionamiento de los sistemas expertos actuales. • Dendral. Muchos consideran que Dendral fue el primer sistema experto. Se desarrolló en la Universidad de Stanford a mediados de los años setenta. El desarrollo del programa y sus múltiples descendientes continuó durante la mayor parte de los años setenta. Siendo uno de los sistemas expertos más estudiados, el trabajo que se ha desarrollado sobre Dendral ha influido en el desarrollo de la mayoría de los sistemas expertos. La versión comercial de Dendral ayuda a los químicos a identificar la estructura molecular de las sustancias desconocidas. • Macsyma. Desarrollado en el MIT, Macsyma está diseñado para realizar manipulaciones simbólicas de expresiones matemáticas. Macsyma se desarrolló a principio de los años setenta y se siguió trabajando en él hasta principios de los años ochenta. Capaz de realizar simbólicamente cálculo integral y diferencial, ayuda a los científicos e ingenieros a resolver problemas complicados que habrían tardado días 81 e incluso meses en resolver manualmente. Macsyma también manipula expresiones algebraicas complicadas y ayuda a reducirlas a su forma más simple. • Mycin. Mycin es un sistema experto desarrollado en Stanford para el diagnóstico y tratamiento de enfermedades infecciosas de la sangre. Es uno de los sistemas expertos más estudiados por su gran éxito. Mycin fue uno de los primeros sistemas expertos en emplear reglas de producción y métodos de inferencia con encadenamiento regresivo. Una de las características principales de Mycin es que su base de reglas está radicalmente separada de su programa de inferencia. Esto permite eliminar completamente la base de conocimientos, creando Mycin vacíos (llamados Emmycin). Emmycin es el modelo a partir del cual se crearon los “shell” de los modernos sistemas expertos. • Prospector. Prospector, construido sobre la tecnología de Mycin, es un sistema experto diseñado para ayudar a los geólogos a encontrar yacimientos importantes. Su base de conocimientos, que se complementa con reglas de producción y redes semánticas, contiene información sobre los depósitos y sobre la clasificación de distintos tipos de rocas y minerales. Dándole datos acerca de un área particular, Prospector puede estimar las probabilidades de encontrar distintos tipos de depósitos minerales. Prospector ha tenido un éxito poco usual en la localización de grandes depósitos de minerales valiosos. Se desarrolló a principios de los años setenta en SRI Internacional. • Xcon. Xcon es un sistema experto diseñado para ayudar a los técnicos de Digital Equipment Corporation (DEC) a configurar sistemas de miniordenadores. La popular serie VAX de DEC se encuentra disponible en una amplia gama de modelos con una gran cantidad de características y opciones que puede seleccionar el cliente. Dado el gran número de posibles combinaciones, el personal de DEC tenía problemas para configurar el sistema apropiado en el que todos los componentes funcionaran en conjunto. Xcon genera automáticamente la configuración deseada a partir de los requisitos del cliente. 82 Xcon se denominó originalmente R1 y fue desarrollado en la Universidad Carnegie Mellon a finales de los años setenta, siendo revisado y actualizado en DEC a principios de los años ochenta. 83 10. REVOLUCIÓN MULTIMEDIA Multimedia es cualquier combinación de texto, sonido digital, música, imagen estática, animación y vídeo que se expone por medio de un ordenador personal u otros medios electrónicos. Multimedia se compone de los siguientes elementos: • Texto. • Sonido. • Imagen. • Animación. • Vídeo. Cuando un programa, además de utilizar los elementos anteriores de Multimedia, permite que el usuario intervenga y controle su ejecución, entonces se habla de Multimedia interactiva. Desde el punto de vista del diseño y construcción de interfaces gráficas de usuario, lo que aporta Multimedia es una ampliación de las posibilidades existentes para comunicarse con el usuario de una aplicación. Algunos ejemplos: • Hacer que la aplicación emita un sonido de alarma cuando se produzca un error importante, con lo que se consigue atraer la atención del usuario si éste está pendiente de otra tarea. • Utilizar síntesis de voz para facilitar el manejo del programa por parte de usuarios con problemas de visión. • Utilizar fragmentos de vídeo o animaciones en programas de enseñanza asistida por ordenador, con el fin de mejorar las explicaciones proporcionadas al alumno. Los sistemas de información que modelan la realidad incorporando la información de la forma más natural posible y que ofrecen niveles de estímulo elevado tienen una respuesta inmediata en el hombre. Este es el gran reto y también el gran éxito de la tecnología multimedia; la utilización de “múltiples medios” de la forma más similar a como se percibe la vida real. Ello implica que se tiene que trabajar con imágenes de vídeo dinámicas en tiempo real y en pantalla completa, audio de alta fidelidad, gráficos, texto y animación en una sola plataforma con un 84 software como único soporte controlando toda la aplicación mediante comandos hablados o dispositivos adicionales mediante simples gestos. Pero, además, el cerebro procesa la información de forma aleatoria y multidireccional a diferencia del ordenador que lo hace lineal y secuencialmente. Esto impone a multimedia una servidumbre adicional: la interactividad, que significa que el usuario decide qué parte y en qué secuencia desea recibir la información. Este entorno interactivo trata de involucrar al usuario a través de un diálogo constante que reduzca la carga de información inútil y le haga el conocimiento más accesible. En este tema revisaremos los sistemas multimedia, revisando los elementos más importantes, la imagen, el sonido y el vídeo, junto al hardware comercial correspondiente. Desde el comienzo de la era informática los terminales de salida de información de los ordenadores han ido mejorando considerablemente. Al principio sólo comprendían una simple impresora, luego aparecieron las pantallas de visualización en las que los datos aparecían con mucha mayor rapidez que en una impresora. Pero estos primeros sistemas de visualización presentaban numerosos inconvenientes: el más grave consistía en lo largo y enojoso de examinar en gran número de datos expresados en forma de palabras y frases, es decir, codificados en caracteres alfabéticos y numéricos en continua sucesión temporal. Este sistema no es capaz de aprovechar la extraordinaria capacidad que tiene la visión del ser humano para localizar rápidamente algo especialmente interesante situado en un espacio de disposición compleja. Hasta entonces, el sector de los sistemas de información habían dominado las modalidades alfanuméricas. Pero la situación fue cambiando y aparecieron, sobre todo en el mundo empresarial, planteamientos nuevos en los que se reclamaba ver “información” y no simplemente “datos”; entendiendo por “información”, las curvas de tendencias o los gráficos de barras. La posibilidad de utilizar pantallas de más resolución, así como la disponibilidad de mejores programas de tratamiento de imagen permitieron nuevas formas de presentar la información, por ejemplo con los interfaces gráficos de usuario o conmunmente denominados GUI, con las que era posible que la pantalla del ordenador mostrara imágenes visualmente más atractivas y representativas de la información que se quiere mostrar. 85 De esta forma se permitía una interacción persona-máquina más <natural>, en la que el usuario <ve> el proceso que siguen los datos que maneja. Ahora que las redes de telecomunicaciones son globales, los proveedores de información y los propietarios de derechos de autor determinan el valor de sus productos y cuánto cobran por ellos, los elementos de información se integrarán a sus desarrollos en línea como recursos distribuidos en una autopista de datos, como una autopista de pago, donde se pagará por adquirir y utilizar la información basada en multimedia. Actualmente el desarrollo de internet posibilita un gran desarrollo multimedia por ejemplo se tiene acceso a textos completos de libros y revistas, vía módem y enlaces electrónicos; se proyectan películas en casa; se disponen de noticias casi en el momento que ocurran en cualquier lugar de la Tierra,etc. La tendencia actual es llevar al hogar la multimedia interactiva, proprocionando la interacción y control de los distintos mecanismos y electrodomésticos de casa desde un sistema informático. El origen de la gran difusión multimedia también está promovido por el intento de estandarización por parte de los fabricantes debido a los grandes problemas de compatibilidad entre los diferentes componentes. En 1991 un grupo de fabricantes (AT&T, CompuAdd, NEC, Tandy, Microsoft, Zenith, NCR, Olivetti, Philips, Media Vision, Video Seven y Creative Labs) agrupados con la denominación The Multimedia PC Marketing Council, elaboró la primera Norma Multimedia para Ordenadores Personales, o MPC, que definía los requisitos mínimos de un sistema multimedia. Esta especificación estaba en consonancia con la tecnología y capacidad de proceso del momento. Esta primera estandarización quedó obsoleta ya que las prestaciones requeridas superaban la capacidad de proceso existente requerida por los escasos productos del mercado (principalmente enciclopedias) y, en consecuencia, las expectativas de la mayoría de los usuarios quedaron defraudadas. Tras estos primeros pasos, en la primavera de 1993, se elaboró una segunda norma denominada MPC-II cuyos criterios eran más exigentes y se apoyaban en un soporte físico ya disponible (en especial procesadores) más potente. Fue el inicio de las aplicaciones y los ordenadores multimedia. A continuación se muestran dichas especificaciones. 86 Level 1 Level 2 -----------------------------RAM 2 MB Processor 386SX, 16 MHz Hard Drive 30 MB CD-ROM Drive Other 150 KB/sec. 4 MB 486SX, 25 MHz 160 MB 300 KB/sec CD-ROM XA ready, Multisession capable Sound 8-bit digital sound, 16-bit digital sound, 8-note synthesizer, MIDI playback 8-note synthesizer, MIDI playback Video Display 640 x 480, 16 colors 640 x 480, 65,536 colors Ports MIDI I/O, joystick MIDI I/O, joystick Aunque como podemos comprobar dichas especificaciones están obsoletas, marcaron un hito de cara a compatibilizar y definir los componentes básicos multimedia de un PC, actualmente se entiende por MPC un ordenador multimedia personal, estándar para los programas y hardware multimedia en los ordenadores personales. Por tanto podemos concluir que en los últimos años se está produciendo un auge del concepto multimedia; este fenómeno está motivado, fundamentalmente, por las causas siguientes: • La continua bajada de precios, tanto de equipo lógico como de físico. Como ejemplo se puede indicar el precio de un ordenador personal de características similares que reduce su precio de año en año. • El equipamiento físico disponible, que incrementa el rendimiento de los 87 ordenadores, la capacidad de los discos magnéticos y la aparición de la tecnología de almacenamiento óptico, que permite el almacenamiento masivo a más bajo coste que con la tecnología de discos magnéticos. • La aparición de tecnologías como MMX en el diseño de microprocesadores, que incorpora en su interior capacidades multimedia, y la puerta que, con ello, queda abierta, para el futuro de dichos dispositivos, y su proyección en el entorno multimedia. • La presencia de herramientas software, que permiten la integración y el sencillo acceso por parte de los usuarios a diferentes aplicaciones. • La creciente demanda de los usuarios que cada vez solicitan más prestaciones a su sistema informático como tratamiento de gráficos, imágenes, sonido, movimiento, etc. • La decisión internacional de digitalización de la TV, que supone tratamiento digital homogéneo para todos los medios: datos, voz, imágen fija y en movimiento y TV, así como la posibilidad de acceder a Internet a través de dicha tecnología, hecho que abre un canal universal de entrada en la Red y a todas las posibilidades multimedia que en ella se ofrecen. • La convergencia entre TV digital y la tecnología Web, favorecida por el alto ancho de banda proporcionado por las proveedoras de Internet en combinación con la tecnología asociada a las operadoras de “cable”. La posibilidad de acceder, a través de Internet, a “frames” de imágen en movimiento y sonido que crean la necesidad de tener equipos multimedia por parte de los usuarios. • La tendencia al aumento del ancho de banda en las redes de comunicaciones y la utilización de ADSL, RDSI de banda ancha sobre fibra óptica. • La convergencia de los servicios de telecomunicaciones con la informática tradicional, así como el desarrollo de comunicaciones celulares y redes sin cable. La aparición de TV que permite ejecutar aplicaciones, monitores de PC que están adaptados para recibir y visualizar señales de TV. En resumen, la confluencia en un solo dispositivo de terminales para proceso y TV. 88 • La evolución de las técnicas de compresión. Hoy en día la evolución y presencia de multimedia podemos encontrarlas en multitud de dispositivos de uso cotidiano como TV, portátiles, teléfonos móviles, reproductores de audio, video, etc. integrando y estandarizando cada vez en mayor medida las opciones y calidad de reproducción. 89 BIBLIOGRAFÍA - INTRODUCCIÓN A LA INFORMÁTICA, A. Prieto Espinosa, A. Lloris Ruiz, J.C. Torres Cantero, Ed. McGraw-Hill, 4ª Edición, 2006. - FUNDAMENTOS DE LOS COMPUTADORES, P. De Miguel Anasagasti, Ed. Paraninfo, 1999. - SISTEMAS OPERATIVOS: UNA VISIÓN APLICADA, Jesús Carretero Pérez, Pedro de Miguel Anasagasti, Félix García Carballeira y Fernando Pérez Costoya, McGraw Hill, 2001. - Sistemas operativos, Stallings, W. Prentice Hall, 2ed., 1997. - Sistemas operativos: Diseño e implementación, Tanenbaum, Andrew S. Prentice Hall, 1990. - Sistemas operativos Modernos, Tanenbaum, Andrew S. Prentice Hall, 1993. - INGENIERÍA DEL SOFTWARE, 2ª Ed., Ian Sommerville, Addison Wesley, 1988. - PROGRAMMING LANGUAGES: PRINCIPLES AND PARADIGMS, Allen Tucker y Robert Nooan, McGraw Hill, 2002. - Comunicaciones y redes de computadores. Stallings, William. Pearson Prentice Hall, 7ed. 2004 - ANÁLISIS Y DISEÑO DETALLADO DE APLICACIONES INFORMÁTICAS DE GESTIÓN, Mario G. Piattini, José A. Calvo-Manzano, Joaquín Cercera y Luis Fernández, Ra-Ma, 1996. 90