CAPITULO II MARCO TEÓRICO CONCEPTUAL SOBRE INFORMÁTICA, BIOMETRÍA, ANÁLISIS Y DISEÑO DE UN SISTEMA. A. INFORMÁTICA. El correr de los años y el constante desarrollo y progreso técnico ha llevado al ser humano a desarrollar formas de producción más avanzadas, y diferentes formas de consumo. A partir del siglo XVIII, los avances tecnológicos han comenzado a plantear dificultades de control, debido a esto la cantidad de información respectiva a personas, datos técnicos, estadísticos, documentación han aumentado considerablemente haciendo más difícil calcular, almacenar o procesar todos estos datos de manera que hace al hombre buscar nuevas y modernas alternativas que le permitan, aumentar la capacidad de almacenaje, la rapidez en los cálculos y minimizar el margen de error a través de la tecnología. Esta demanda de eficiencia en los procesos ha llevado al hombre a inventar un aparato que sea capaz, de asemejarse a algunos aspectos de la capacidad humana, y que debido a esto sea capaz de servir al hombre como su mejor y mas confiable asistente, este aparato o maquina es lo que el hombre desarrollo y al mismo tiempo denominó “computadora” 1. Definición de informática. Los términos computación e informática son equivalentes, solo que su uso depende de la zona geográfica; el vocablo computación se deriva del idioma Inglés y estudia el tratamiento automático de la información en computadoras, dispositivos electrónicos y esta ligado a la actividad de realizar de cálculos. Por otra parte, el vocablo informática se deriva del idioma Francés y es la ciencia que estudia el tratamiento automático y racional de la información. Debido a que los vocablos se relacionan entre si dando como resultado el concepto de computación e informática 25 que se maneja en estos días que es la realización de cálculos y el procesamiento de datos por medio de una máquina conocida como computadora. 2. Antecedentes. A través de la historia el hombre se vio en la necesidad de realizar cálculos básicos para diferentes tareas; la primera herramienta de cálculo conocida y la más antigua es el ábaco, su nombre se deriva del griego que significa “superficie plana”. Se conoce que los griegos utilizaban tablas para contar desde el siglo V antes de Cristo. Tras el ábaco de los griegos en el siglo XVI, un matemático escocés llamado John Napier (1550 – 1617) inventó un dispositivo que consistía en unos palillos con números impresos que por medio de un ingenioso y complicado mecanismo permitía realizar operaciones de multiplicación y división. El primer calculador mecánico apareció en el año de 1642, el creador de esta máquina fue el filosofo francés Blaise Pascal (1623 – 1662). A los 18 años Pascal deseaba dar con la forma de reducir el trabajo de cálculo de su padre que era un funcionario de impuestos. La máquina de cálculo que inventó Pascal tenía el tamaño de un cartón de tabaco y su principio de funcionamiento era el mismo que rige los cuentakilómetros de los coches actuales; una serie de ruedas tales que cada una de las cuales hacía avanzar un paso a la siguiente al completar una vuelta. Las ruedas estaban marcadas con números del 0 al 9 y había dos para los decimales y 6 para los enteros con lo que podía manejar números entre 000.000 01 y 999.999 99. A este calculador mecánico se le conoce como “Pascalina”. En el año 1672 aparece la máquina de calcular de Leibnitz (1646 – 1716), Leibnitz fue uno de los genios de su época; a sus 26 años aprendió matemáticas de modo autodidacta y procedió a inventar el cálculo, inventó su máquina de calcular por el simple hecho de que nadie le enseñó las tablas de multiplicar. La máquina de Libnitz 26 se diferenciaba de la pascalina en varios aspectos fundamentales el más importante era que podía multiplicar, dividir y obtener raíces cuadradas. Entre los años de (1673 – 1801) se realizaron algunos avances significativos siendo uno de los más fundamentales el invento de Joseph Jacquard (1752 – 1834) que inventó una máquina que utilizaba un mecanismo de tarjetas perforadas para colocar el dibujo formado por los hilos de las telas confeccionadas por una máquina de tejer. Jacquard fue el primero en emplear tarjetas perforadas para almacenar la información sobre el dibujo del tejido y además controlar la máquina. Aunque en el correr de la historia hubo muchos precursores de los actuales sistemas informáticos para muchos especialistas la historia empieza con el matemático e inventor inglés Charles Babbage quien al principio del siglo XIX predijo muchas de las teorías en que se basan los actuales ordenadores. En 1822 diseñó su máquina diferencial para el cálculo de polinomios. Esta máquina se utilizó con éxito para el cálculo de tablas de navegación y artillería lo que permitió a Babbage conseguir una subvención del gobierno para el desarrollo de una segunda y mejor inversión de la máquina. Durante 10 años Babbage trabajó en una segunda máquina sin llegar a conseguir completarla y en 1833 tuvo una idea mejor. Mientras que su primera máquina mejor conocida como la máquina diferencial era un aparato de proceso único Babbage decidió construir una máquina de propósito general que pudiese resolver casi cualquier problema matemático. Todas estas máquinas eran por supuesto mecánicas movidas por vapor. De todas formas la velocidad de cálculo de las máquinas no era tal como para cambiar la naturaleza del cálculo además la ingeniería entonces no estaba lo suficientemente desarrollada como para permitir la fabricación de los delicados y complejos mecanismos requeridos por el ingenio de Babbage. La sofisticada organización de esta segunda máquina la máquina diferencial según se la llamó es lo que hace que muchos consideren a Babbage padre de la informática actual. 27 Como los modernos computadores la máquina de Babbage tenía un mecanismo de entrada y salida por tarjetas perforadas una memoria una unidad de control y una unidad aritmético-lógica. Preveía tarjetas separadas para programa y datos. Una de sus características más importantes era que la máquina podía alterar su secuencia de operaciones en base al resultado de cálculos anteriores algo fundamental en los ordenadores modernos la máquina sin embargo nunca llegó a construirse. Babbage no pudo conseguir un contrato de investigación y pasó el resto de su vida inventando piezas y diseñando esquemas para conseguir los fondos para construir la máquina. Murió sin conseguirlo. Otro inventor digno de mención es Herman Hollerith. A los 19 años en 1879 fue contratado como asistente en las oficinas del censo norteamericano que por aquel entonces se disponía a realizar el recuento de la población para el censo de 1880. Este tardó 7 años y medio en completarse manualmente. Hollerith fue animado por sus superiores a desarrollar un sistema de cómputo automático para futuras tareas. El sistema inventado por Hollerith utilizaba tarjetas perforadas en las que mediante agujeros se representaba el sexo, la edad, raza, etc. En la máquina las tarjetas pasaban por un juego de contactos que cerraban un circuito eléctrico activándose un contador y un mecanismo de selección de tarjetas. Estas se leían a ritmo de 50 a 80 por minuto. Ante las posibilidades comerciales de su máquina Hollerith dejó las oficinas del censo en 1896 para fundar su propia Compañía la Tabulating Machine Company. En 1900 había desarrollado una máquina que podía clasificar 300 tarjetas por minuto una perforadora de tarjetas y una máquina de cómputo semiautomática. 28 3. Evolución de las Computadoras. 3.1 Primera generación: Esta generación se desarrollo entre los años de (1940 – 1952) las computadoras que estaban constituidas por tubos de vacío, desprendían bastante calor y tenían una vida relativamente corta. Máquinas grandes y pesadas. A esta generación pertenece el ENIAC, el EDSAC y UNIVAC entre otros. El almacenamiento de la información era en un tambor magnético interior. El tambor magnético estaba ubicado en el interior del ordenador, recogía y memorizaba los datos y los programas que se le suministraban. La programación era en lenguaje máquina, consistía en largas cadenas de bits, de ceros y unos, por lo que la programación resultaba larga y compleja. Se usaban tarjetas perforadas para suministrar los datos y los programas. Estos ordenadores carecían de sistema operativo. En general, tenían un alto costo. 3.2 Segunda generación: Esta generación se desarrolló entre los años de (1952-1964). Los tubos de vacío fueron sustituidos por los transistores; ya que los transistores eran más económicos y mas pequeños que las válvulas que en ese entonces ya habían sido miniaturizadas, que consumían menos electricidad y producían menos calor. Por estos motivos, la densidad del circuito podía ser aumentada sensiblemente, lo que quería decir que los componentes podían colocarse mucho más cerca unos a otros y ahorrar mucho más espacio. Evolucionan los modos de direccionamiento y surgen los lenguajes de programación de más alto nivel. Algunos ordenadores de esta época son el UNIVAC 1004, el CDC 6600 y el PDP-1. 3.3 Tercera generación: Esta generación se desarrolló entre los años de (1964 – 1971). En esta generación aparece el circuito integrado (chip). Aumenta la capacidad de almacenamiento y se reduce el tiempo de respuesta. Se generalizan los lenguajes de programación de alto nivel. Se consigue compatibilidad para compartir software entre diversos equipos. Aparece la posibilidad de trabajar en 29 tiempo compartido. Pertenecen a estos años las máquinas UNIVAC 1100 y PDP-8. 3.4 Cuarta generación: Esta generación se desarrolló entre los años de (1971 – 1981). En esta generación surge el microcircuito integrado. Se construye el microprocesador: El proceso de reducción del tamaño de los componentes llega a operar a escalas microscópicas. La micro miniaturización permite construir dicho microprocesador, circuito integrado que rige las funciones fundamentales del ordenador. Comienzan a proliferar las redes de computadores. Aparecen los sistemas operativos en red y distribuidos. Ordenadores de esta generación son el Cray-1, IBM PC, SPARC, etc. 3.5 Quinta generación: Esta generación data desde el año de 1981 hasta nuestros días en esta generación se ha desarrollado la Inteligencia Artificial. El propósito de la Inteligencia Artificial es equipar a las Computadoras con "Inteligencia Humana" y con la capacidad de razonar para encontrar soluciones. Otro factor fundamental del diseño, la capacidad de la computadora para reconocer patrones y secuencias de procesamiento que haya encontrado previamente (programación heurística) que permita a la computadora recordar resultados previos e incluirlos en el procesamiento. En esencia, la computadora aprenderá a partir de sus propias experiencias usará sus datos originales para obtener la respuesta por medio del razonamiento y conservará esos resultados para posteriores tareas de procesamiento y toma de decisiones. 4. Clasificación de Informática. En la actualidad cuando la informática se refiere se puede hablar de dos grandes grupos que son: ¾ Hardware. 30 ¾ Software. 4.1 Hardware: Componentes electrónicos, tarjetas, periféricos y equipo que conforman un sistema de computación, que proporcionan capacidad de cálculos y funciones rápidas, exactas y efectivas (Computadoras, censores, maquinarias, lectores y circuitos), que proporcionan una función externa dentro de los sistemas. 8 Cuando un usuario interactúa con una computadora, proporciona una entrada basada en esta la computadora procesa esta los datos devolviendo una respuesta llamada salida. La entrada se puede realizar en formato de órdenes o instrucciones dadas, texto, números o imágenes (escaneadas). La salida no es más que el resultado ya sea en forma de cálculos en una hoja de cálculo, una carta impresa o un auto moviéndose por la pantalla en un juego de carreras de autos. Una computadora necesita disponer de un conjunto de funcionalidad y proporcional a la capacidad de: ¾ Aceptar la entrada. ¾ Visualizar o presentar la salida. ¾ Almacenar la información en un formato consistente lógicamente. ¾ Ejecutar operaciones aritméticas o lógicas bien sobre datos de entrada o bien sobre datos de salida. ¾ Monitorizar, controlar y dirigir las operaciones globales y de secuencia del sistema.9 8 BRYAN PFAFFENBERGER, Diccionario de Términos de Computación. Prentice Hall, Mexico 1999, p. 25 9 LUIS JOYANES AGUILAR. Fundamentos de Programación. McGraw-Hill Mexico 2003, p 5 31 La figura 5 representa los componentes más importantes que soportan las propiedades o capacidades mencionadas. Fig. 5 Esquema del funcionamiento de las PCs 4.1.1 Micro-procesador: Es el dispositivo ubicado en el interior de la computadora que ejecuta las instrucciones del programa, mejor conocido como CPU por sus siglas en ingles Central Processing Unit (Unidad Central de Procesamiento) o también es conocido como chip. El procesador sólo puede ejecutar instrucciones simples, tales como cálculos aritméticos sencillos o desplazamientos de números por diferentes posiciones. Sin embargo la velocidad a la cual se realizan estos cálculos debe ser muy veloz y esta característica le permite ejecutar instrucciones que realizan cálculos complejos. El CPU dirige y controla el proceso de información realizado por la computadora. El CPU procesa o manipula la información almacenada en memoria, puede recuperar información desde memoria, también almacena resultados de procesos en memoria para ser utilizados posteriormente. 32 Cuando hablamos de CPU podemos citar la palabra microprocesador que es un chip que controla y realiza las funciones y operaciones con los datos. En resumen el microprocesador es la representación de la Unidad Central de Procesamiento o mejor conocida como CPU. La velocidad del procesador o microprocesador se mide en Megahertz (MHZ) y en la actualidad se fabrican procesadores o microprocesadores medidos en Gigahertz (GHZ). 4.1.2 Dispositivos de entrada / salida: Para que el usuario pueda introducir la entrada de datos o información, la computadora tiene varios dispositivos de entrada como parte de su hardware tales como: teclado, ratón, son los dispositivos mas populares. La salida al usuario le proporciona mediante dispositivos de salida, tales como impresora o pantalla. Los dispositivos de Entrada/Salida (E/S) permiten la comunicación entre la computadora y el usuario. Los dispositivos de entrada, como su nombre indica, sirven para introducir datos en la computadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Los dispositivos de entrada convierten la información de entrada en señales eléctricas que se almacenan en la memoria central. Algunos de los dispositivos de Entrada más populares son: El ratón, teclado, lectores de tarjetas, lectores de código de barras, scanner, micrófonos, etc. Algunos de los dispositivos de Salida más populares son: Monitor, impresoras, trazadores gráficos, altavoces, etc. 4.1.3 Memoria Central: Con el fin de almacenar información y operaciones realizadas, la computadora cuenta con una gran colección de pequeños circuitos electrónicos capaces de almacenar un bit. La memoria Central o memoria Interna se divide de la siguiente manera 33 ¾ Memoria RAM (Random, Access Memory) es normalmente volátil, lo que significa que todo cuanto se almacena o guarda en ella se pierde cuando se apaga la computadora. ¾ Memoria ROM (Read Only Memory) memoria de solo lectura contiene instrucciones fundamentales que no se pueden modificar o perder de modo accidental por el usuario. 4.2 Software: El software es el conjunto de instrucciones que las computadoras emplean para manipular datos. Sin el software, la computadora sería un conjunto de medios electrónicos que no se podrían utilizar. Al cargar los programas en una computadora, la maquina actuará como si recibiera un adiestramiento instantáneo; de pronto "sabe" cómo pensar y cómo operar. El Software es un conjunto de programas, documentos, procedimientos, y rutinas asociados con la operación de un sistema de cómputo. Distinguiéndose de los componentes físicos llamados hardware. Comúnmente a los programas de computación se les llama software; el software asegura que el programa o sistema cumpla por completo con sus objetivos, opera con eficiencia, esta convenientemente documentado, y suficientemente sencillo de operar. Es simplemente el conjunto de instrucciones individuales que se le proporciona al microprocesador para que pueda procesar los datos y generar los resultados esperados. El hardware por si solo no puede hacer nada, pues es necesario que exista el software, que es el conjunto de instrucciones que hacen funcionar al hardware. 34 4.2.1 Clasificaciones del software: Los software se puede clasificar en 4 diferentes Categorías: ¾ Sistemas Operativos. ¾ Lenguajes de Programación. ¾ Software de uso general. ¾ Software de Aplicación. (Algunos autores consideran al software de uso general y el software de aplicación como una sola clasificación). 4.2.1.1 Sistemas Operativos: Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de los Sistemas Operativos es lograr que el software de computación se use de manera cómoda, el objetivo secundario es que el hardware del computador se emplee de una manera eficiente. Se puede decir que un Sistema Operativo posee las siguientes características: ¾ Conveniencia: Un Sistema Operativo hace más conveniente el uso de una computadora. ¾ Eficiencia: Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible. ¾ Habilidad para evolucionar: Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio. 35 ¾ Encargado de administrar el hardware: El Sistema Operativo se encarga de manejar de manera correcta los recursos de la computadora en cuanto a hardware se refiere, asigna a cada proceso una parte del procesador para poder compartir los recursos. ¾ Relacionar dispositivos: El Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera. 4.2.1.2 Lenguajes de programación: Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. 4.2.1.2.1 Clasificación de lenguajes de programación: Los lenguajes de programación se clasifican dependiendo de: ¾ El nivel de abstracción. ¾ La forma de ejecución. ¾ El paradigma de programación que poseen. 4.2.1.2.1.1 Lenguajes de programación por su nivel de abstracción: ¾ Lenguajes de bajo nivel: Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el código de máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa. ¾ Lenguajes de medio nivel: Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los 36 lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel. ¾ Lenguajes de alto nivel: Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática. 4.2.1.2.1.2 Lenguajes de programación según la forma de ejecución: ¾ Lenguajes compilados: Los programas que son escritos en un lenguaje de alto nivel también tienen que ser traducidos a un lenguaje que la computadora pueda entender es decir a un lenguaje de maquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema. Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario). Al usar un lenguaje compilado, el programa desarrollado nunca se ejecuta mientras existan errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el código. ¾ Lenguajes interpretados: Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código 37 objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el Sistema Operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el código objeto para utilizarlo posteriormente. La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una corrida de compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de producción. 4.2.1.2.1.3 Lenguajes de programación de acuerdo al paradigma de programación que poseen: ¾ Lenguajes orientados a objetos: En la Programación Orientada a Objetos (POO u OOP según siglas en inglés) se definen los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos) comportamiento (esto es, procedimientos o métodos) e identidad 38 (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas módulos más fáciles de escribir, mantener y reutilizar. ¾ Lenguajes de programación estructurada: Mediante la programación Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificación del mismo desde su inicio hasta su terminación en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lógica establecida por el programador, como es la situación habitual con codificaciones desarrolladas bajo otras técnicas. Programación Estructurada es una técnica en la cual la estructura de un programa, esto es, la interpelación de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lógicas de control: a. Secuencia: Sucesión simple de dos o mas operaciones. b. Selección: bifurcación condicional de una o mas operaciones. c. Interacción: Repetición de una operación mientras se cumple una condición. Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información. Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una página o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamás se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un programa propio. 39 La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente. Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea. 40 4.2.1.2.2 Evolución de los lenguajes de programación Lenguajes de Programación de los años 40 Lenguaje Año Creador Descripción Plankakül 1943 Honrad Zuse ENAC 1943 Kay Antonelli, Jean Bartik, Betty Holberton, Marilyn Meltzer, Frances Spence y Ruth Teitelbawn Lenguaje creado para la organización de datos. Sus únicos valores atómicos eran los bits Lenguaje Maquina de propósito general, capaz de resolver 5,000 sumas y 360 multiplicaciones en 1 segundo Tabla 5 41 Lenguajes de Programación de los años 50 Lenguaje Año Creador Descripción Fortran 1954 Grupo de cientificos de la empresa IBM liderados por John W. Backus Utilizado especialmente para aplicaciones científicas y análisis numéricos, en sus inicios fue diseñado para ser escritos en tarjetas perforadas de 80 columnas Lisp 1958 John McCarthy Lenguaje de programación orientado a objetos, es del tipo aplicativo y funcional porqué se basa en la aplicación de funciones, los elementos fundamentales son listas tanto los datos como los programas están presentados en listas. Cobol 1959 CODASYL Fue diseñado con excelentes capacidades de auto documentación, una buena gestión de archivos y una excelente gestión de los tipos de datos. Emplea números en base a diez Tabla 6 42 Tabla 7 Lenguajes de Programación de los años 60 Lenguaje Año Creador APL 1962 Kenneth Iverson Descripción Lenguaje conciso con sintaxis sencilla, orientado a trabajos con matrices con la que se puede realizar todo tipo de operaciones lógicas y matemáticas. Puede crear, ejecutar y compilar en tiempo de ejecución desde una sola rutina. SIMULA 1962 BASIC 1964 Ole Johan Dahl y Kristen Mygaard John George Kemeny y Thomas Kurtz Lenguaje de programación Orientado a Objetos fue el primer lenguaje de programación que utilizo términos como clase, objetos, instancia, herencia, polimorfismo, etc. Programa diseñado para poder ser utilizado por principiantes, permitía que estudiantes escribieran programas usando terminales de computador de tiempo compartido. Sintaxis sencilla; algunos comando que se utilizan son Left, Print, If, Goto. 43 Lenguajes de Programación de los años 70 Lenguaje Año Creador Descripción Lenguaje de programación estructurado. El código está dividido PASCAL 1970 Niklaus Wirth por funciones o procedimientos. El tipo de dato de todas las variables debe ser declarado previamente. C 1972 Dennis Ritchie y Ken Thompson Lenguaje orientado a la implementación de Sistemas Operativos en concreto UNIX, es el lenguaje más popular para la creación de software de sistemas. Lenguaje declarativo de acceso a base de datos relacionales que permite el manejo de algebras y cálculos relacionales SQL 1978 E. F. Codd permitiendo alcanzar consultas con el fin de recuperar información de interés de una base de datos de una forma sencilla Tabla 8 44 Lenguajes de Programación de los años 80 Lenguaje ADA C++ Año 1983 1983 Creador Descripción Jean Ichbiah Fue diseñado con la seguridad en mente y con una filosofía orientada a la reducción de errores comunes y difíciles de descubrir. Para ello se basa en un tipado muy fuerte y en chequeos en tiempo de ejecución (desactivables en beneficio del rendimiento). Bjarne Stroustrup Es el soporte para programación orientada a objetos y el soporte de plantillas o programación genérica. Abarca tres paradigmas de la programación: la programación estructurada, la programación genérica y la programación orientada a objetos. Perl es un lenguaje de propósito general originalmente desarrollado Larry Wall, Perl 1987 Nicholas Clark y la comunidad Perl para la manipulación de texto y que ahora es utilizado para un amplio rango de tareas incluyendo administración de sistemas, desarrollo web, programación en red, desarrollo de GUI y más. Tabla 9 45 Lenguajes de Programación de los años 90 Lenguaje Año Creador Descripción Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos PYTHON 1990 Guido van Rossum incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el usuario) como Tk, GTK, Qt entre otros Está compilado en un bytecode, aunque la compilación en código máquina nativo también es posible. No implementa Bases de Datos, JAVA 1991 Sun Microsystems ya que solo es un lenguaje de programación, pero implementa funciones que permiten al programador realizar conexiones entre la interfaz de usuario y el Gestor de Base de Datos. Lenguaje de programación reflexivo y orientado a objetos es un RUBY 1993 Yukihiro lenguaje de programación interpretado en una sola pasada y su Matsumoto implementación oficial es distribuida bajo una licencia de software libre. Tabla 10 46 Lenguajes de Programación del siglo XXI Lenguaje Año Creador Descripción C# (pronunciado "si sharp", C sostenido o C almohadilla) es un C# 2001 Microsoft lenguaje de programación orientado a objetos desarrollado y Corporation. estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA e ISO Tabla 11 47 4.2.1.3 Software de uso general. El software para uso general ofrece la estructura para un gran número de aplicaciones empresariales, científicas y personales. El software de hoja de cálculo, de diseño asistido por computadoras (CAD), de procesamiento de texto, de manejo de Bases de Datos, pertenece a esta categoría. La mayoría de software para uso general se vende como paquete; es decir, con software y documentación orientada a los usuarios (manuales de referencia, plantillas, manuales de usuario). El software de uso general más común es: 4.2.1.3.1 Bases de Datos. Los DBMS (Data Base Management System) es la herramienta que las computadoras utilizan para realizar el procesamiento y almacenamiento ordenado de los datos. Una base de datos es un recipiente para colecciones relacionadas de datos. Cualquier conjunto de datos organizados para su almacenamiento en la memoria de un ordenador o computadora, diseñado para facilitar su mantenimiento y acceso de una forma estándar. Los datos suelen aparecer en forma de texto, números o gráficos. 4.2.1.3.2 Tipos de bases de datos. 4.2.1.3.2.1 Bases de datos estáticas: Éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones. 4.2.1.3.2.2 Bases de datos dinámicas: Éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización y adición de datos, además de las operaciones fundamentales de consulta. 48 4.2.1.3.3 Modelos de bases de datos. Algunos modelos que con frecuencia son utilizados en las bases de datos son: 4.2.1.3.3.1 Bases de datos jerárquicas: Éstas son bases de datos que, como su nombre indica, almacenan su información en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol, en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas. (Figura 6).10 Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento. Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos. Fig. 6 Bases Jerárquicas 4.2.1.3.3.2 Base de datos de red: Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se 10 http://es.wikipedia.org/wiki/Base_de_datos 49 permite que un mismo nodo tenga varios padres; posibilidad no permitida en el modelo jerárquico. (Figura 7) Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales. Fig. 7 Modelo Bases de Datos de Red 4.2.1.3.3.3 Base de datos relacional: Éste es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que ésta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros, que representarían las tuplas, y campos. (Figura 8). En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario 50 esporádico de la base de datos. La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales. Durante su diseño, una base de datos relacional pasa por un proceso al que se le conoce como normalización de una base de datos. Fig. 8 Modelo Base de Datos Relacional 4.2.1.3.3.4 Bases de datos orientadas a objetos: Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos. Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos: ¾ Encapsulación: Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos incorrectos o conflictos. ¾ Herencia: Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases. 51 ¾ Polimorfismo: Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos. En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura) de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). La implementación (o método) de la operación se especifica separadamente y puede modificarse sin afectar la interfaz. Los programas de aplicación de los usuarios pueden operar sobre los datos invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podría denominarse independencia entre programas y operaciones. 4.2.1.3.3.5 Bases de datos documentales: Permiten la indexación a texto completo, y en líneas generales realizar búsquedas más potentes. Tesaurus es un sistema de índices optimizado para este tipo de bases de datos. 4.2.1.3.3.6 Base de datos deductivas: Un sistema de base de datos deductivas, es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a través de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. También las bases de datos deductivas son llamadas base de datos lógica, a raíz de que se basan en lógica matemática. 4.2.1.3.3.7 Gestión de bases de datos distribuida: La base de datos está almacenada en varias computadoras conectadas en red. Surgen debido a la existencia física de organismos descentralizados. Esto les da la capacidad de unir las bases de datos de cada localidad y acceder así a distintas universidades, sucursales de tiendas, etc. 52 4.2.1.4 Software de aplicaciones. El software de aplicación esta diseñado y escrito para realizar tareas específicas personales, empresariales como el procesamiento de nóminas, la administración de los recursos humanos o el control de inventarios. Todas estas aplicaciones procesan datos y generan información para el usuario. Algún software de aplicaciones más comunes son: 4.2.1.4.1 Procesadores de Palabras: Son utilizados para escribir cartas, memorándums y otros documentos, El usuario teclea una serie de letras o párrafos, y son mostradas en la pantalla. El usuario puede fácilmente adherir, borrar y cambiar el texto hasta que el documento quede exactamente como se desea. Algunas características avanzadas que encontramos en la actualidad en los procesadores de texto son: corrector de ortografía, diccionario de sinónimos, presentación preliminar del texto antes de imprimir. 4.2.1.4.2 Hojas de Cálculo: Una Hoja de Cálculo es una herramienta para calcular y evaluar números. También ofrece capacidades para crear informes y presentaciones para comunicar lo que revelan los análisis; el usuario teclea los datos y las fórmulas que serán usadas para obtener los resultados; después el programa aplica las fórmulas a los datos y así obtiene los resultados; una de sus características mas importantes es la habilidad de preguntar (Sentencias condicionales), cambiando los datos y rápidamente re- calculando los nuevos resultados. La mayoría de las Hojas de Cálculo cuentan también con la posibilidad de graficar estos resultados en diferentes estilos de gráficas. 4.2.1.4.3 Paquetes de Presentación: Software que permite al usuario diseñar presentaciones para desplegarlas a través de la misma computadora o imprimir diapositivas y acetatos. Contienen opciones avanzadas para integrar efectos en cada cambio de diapositiva. 53 4.2.1.4.3.1 Shareware: Software distribuido de forma gratuita para ser probado. Si el usuario decide quedarse con el programa y seguir usándolo, debe pagar al desarrollador. Normalmente, el shareware es desarrollado por compañías relativamente pequeñas o inclusive por programadores individuales, y generalmente es barato. 4.2.1.4.3.2 Freeware: Programas gratuitos que los desarrolladores ponen a disposición de otros usuarios sin ningún costo. En algunos casos el desarrollador no reclama derechos de autor y el programa se convierte en software del dominio público. En otros casos, el software tiene derechos de autor pero el desarrollador ha permitido a otra gente usarlos y copiarlo gratuitamente. B. SISTEMAS. 1 Definición de Sistemas. “Es una colección organizada de componentes que se optimizan para que funcionen como un todo”.11 2 Clasificación de sistemas. Los sistemas de información son desarrollados con propósitos diferentes dependiendo de las necesidades del negocio. Los sistemas de procesamiento de transacciones (TPS por sus siglas en inglés) funcionan al nivel operacional de la organización, los sistemas de automatización de oficina (OAS por sus siglas en ingles) y los sistemas de trabajo de conocimiento (KWS) que dan lugar al trabajo a nivel de conocimiento. Los sistemas de más alto nivel incluyen a los sistemas de apoyo a decisiones (DSS) así como a los sistemas de información gerencial (MIS). Los sistemas expertos aplican la experiencia de los tomadores de decisiones para 11 BRYAN PFAFFENBERGER. ob. Cit. , p. 45. 54 resolver problemas específicos estructurados. Al nivel estratégico de la administración encontramos sistemas de apoyo a ejecutivos (ESS) y los sistemas de apoyo a decisiones de grupo (GDSS) ayudan a la toma de decisiones al mismo nivel, en una forma sin estructura o semiestructurada.12 (Figura 9) Fig. 9 Clasificación de los Sistemas de Información. 2.1 Sistemas de procesamiento de transacciones: Los sistemas de procesamiento de transacciones (TPS) son sistemas de información computarizados desarrollados para procesar gran cantidad de datos para transacciones rutinarias de los negocios, tales como nómina e inventario. Los TPS eliminan lo aburrido y cansado de las transacciones operacionales necesarias y reducen el tiempo que alguna vez se requirió para ejecutarlas manualmente, aunque la gente todavía debe alimentar datos a los sistemas computarizados. Los sistemas de procesamiento de transacciones son sistemas que traspasan fronteras y que permiten que la organización interactúe con ambientes externos. Los administradores consultan constantemente los datos generados por el TPS para saber que esta pasando en sus compañías, es esencial para las operaciones diarias que estos sistemas funcionen lentamente y sin interrupción. 12 JAMES A OBRIEN, GEORGE M. MARAKAS. Sistemas de información gerencial: McGran-Hill, Mexico 2006, p. 2 55 2.2 Sistemas de automatización de oficina y sistemas de manejo de conocimiento: A nivel de conocimiento de la organización hay dos clases de sistemas. Los sistemas de automatización de oficina (OAS) que dan soporte a los trabajadores de datos, quienes, por lo general, no crean un nuevo conocimiento sino que usan los datos para analizarlos y transformarlos en información, o para manejarla en alguna forma y luego compartirla o diseminarla formalmente por toda la organización y algunas veces más allá de ella. Los aspectos familiares de los OAS incluyen procesamiento de palabras, hojas de cálculo, editor de publicaciones, agenda electrónica y comunicación mediante correo de voz, correo electrónico y video conferencias. Los sistemas de manejo de conocimiento (KWS) dan soporte a los trabajadores profesionales, tales como científicos, ingenieros y doctores, les ayudan a crear un nuevo conocimiento que contribuya a la organización o a toda la sociedad. 2.3 Sistemas de información gerencial: Los sistemas de información gerencia (MIS) no reemplazan a los sistemas de procesamiento de transacciones, sino que todos los MIS incluyen procesamiento de transacciones. Los MIS son sistemas de información computarizada que trabajan debido a la interacción resuelta entre personas y computadoras. Requieren que las personas, el software y el hardware trabajen al unísono. Los sistemas de información dan soporte a un espectro más amplio de tareas organizacionales que los sistemas de procesamiento de transacciones, incluyendo el análisis de decisiones y la toma de decisiones. Para poder integrar la información, los usuarios de un sistema de información gerencial comparten una base de datos común. La base de datos guarda modelos que ayudan a los usuarios a interpretar y aplicar esos mismos datos. Los sistemas de información gerencial producen información que es usada en la toma de decisiones. Un sistema de información gerencial también puede llegar a unificar algunas de las funciones de información computarizada, aunque no exista como una estructura singular en ningún lugar de negocio. 56 2.4 Sistemas de apoyo a decisiones: Una clase de más alto nivel en los sistemas de información computarizada son los sistemas de apoyo a decisiones (DSS). El DSS es similar al Sistema de Información Gerencial tradicional en que ambos dependen de una base de datos como fuente. Un sistema de apoyo a decisiones se aparta del sistema de información gerencial tradicional en que enfatiza el apoyo a la toma de decisiones en todas sus fases, aunque la decisión actual todavía es del dominio del tomador de decisiones. Los sistemas de apoyo a decisiones están más hechos a la medida de la persona o grupo que los usa que los sistemas de información gerencial tradicionales. 2.5 sistemas expertos e inteligencia artificial: La inteligencia artificial (AI) puede ser considerada la meta de los sistemas expertos. El empuje general de la AI ha sido desarrollar máquinas que se comporten de forma inteligente. Dos caminos de la investigación de la AI son la comprensión del lenguaje natural y el análisis de la habilidad para razonar un problema y llegar a conclusiones lógicas. Los sistemas expertos usan los enfoques del razonamiento de la AI para resolver los problemas que les plantean los usuarios de negocios. Los sistemas expertos son un caso muy especial de un sistema de información, cuyo uso ha sido factible para los negocios a partir de la reciente y amplia disponibilidad de hardware y software tal como las microcomputadoras y sistemas expertos. Un sistema experto (también llamado un sistema basado en conocimiento) captura en forma efectiva y usa el conocimiento de un experto para resolver un problema particular experimentado en una organización. Observe que a diferencia del DSS, que deja la decisión hasta el momento final para poder tomar una decisión concreta, un sistema experto selecciona la mejor solución a un problema o a una clase específica de problemas. Los componentes básicos de un sistema experto son la base de conocimiento, una máquina de inferencia que esta al usuario con el sistema, procesando consultas por medio de lenguajes tales como SQL (Lenguaje de consultas estructurado), y la 57 interfaz de usuario. Personas llamadas ingenieros de conocimiento capturan la experiencia de los expertos, construyen un sistema de computadora donde incluyen el conocimiento del experto y luego la implementan. Es totalmente posible que la construcción e implementación de sistemas expertos sea el trabajo futuro de muchos analistas de sistemas. 2.6 Sistemas de apoyo a decisiones de grupo: Cuando los grupos de personas involucradas en un proceso necesitan trabajar juntos para tomar decisiones semiestructuradas o sin estructura, un sistema de apoyo a decisiones de grupo (GDSS) son usados en cuartos especiales, equipados en varias configuraciones diferentes, que consienten que los miembros del grupo interactúen con apoyo electrónico, frecuentemente en forma de software especializado y con una persona que da facilidades al grupo. Los sistemas para decisiones de grupo están orientados para reunir a un grupo, a fin de que resuelva un problema con la ayuda de varios apoyos como votaciones, cuestionarios, aportación de ideas y creación de escenarios. El software GDSS puede ser diseñado para minimizar el comportamiento negativo típico de un grupo, tal como la falta de participación debido al miedo a represiones por expresar un punto de vista no popular o conflictivo, dominación por miembros del grupo con voz dominante y la toma de decisiones de “ pensamiento en grupo “. Algunas veces los GDSS son tratados bajo el término más general trabajo colaborativo apoyado por computadora (CSCW) que puede incluir el apoyo de software llamado “groupware” para la colaboración en equipo por medio de computadoras en red. 2.7 Sistemas de apoyo ejecutivos: Cuando los ejecutivos se acercan a la computadora, frecuentemente están buscando formas que les ayuden a tomar decisiones a nivel estratégico. Un sistema de apoyo a ejecutivos (ESS) ayuda a los ejecutivos, para organizar sus interacciones con el ambiente externo, proporcionando apoyo de gráficos y comunicaciones en lugares accesibles tales como salas de juntas u oficinas personales corporativas. Aunque los ESS se apoyan en la información generada por los TPS y los MIS, los sistemas de apoyo a ejecutivos 58 ayudan a sus usuarios a que ataquen problemas de decisión sin estructura, que no son específicos de una aplicación, creando un ambiente que ayude a pensar acerca de los problemas estratégicos de una manera informada. C. CICLO DE VIDA DEL DESARROLLO DE UN SISTEMA. Para lograr un mejor entendimiento de la información que se presenta en este capítulo supongamos la existencia de un departamento de sistemas en una organización, el cual se encuentra organizado como se muestra a continuación, la coordinación de desarrollo de sistemas se encargará de cumplir cada una de las fases del ciclo de vida del desarrollo de un sistema, auxiliándose de cada uno de sus equipos. La coordinación de operación de sistemas, se encargará de tener en un buen estado el equipo que se ocupará para poder manipular la herramienta proporcionada por la coordinación de desarrollo de sistemas13. Figura 10 Fig.10 Ciclo de Vida de un Sistema 1. Análisis. El primer paso del ciclo de vida de un proyecto consiste en un análisis de las características y el comportamiento del sistema del cual el software va a formar parte. 13 KENNETH E. KENDALL; JULIE E. KENDALL.. Análisis y Diseño de Sistemas: Prentice Hall, Mexico 1997, p. 8 59 Esta fase se divide en tres factores importantes: La identificación del problema, oportunidades y objetivos. La identificación del problema requiere que el analista observe honestamente lo que esta sucediendo en un negocio. Resaltando los problemas que frecuentemente ya han sido vistos por los demás, y son la razón por la cual el analista fue llamado inicialmente. Las oportunidades son situaciones que el analista considera puede ser mejoradas por medio del uso de sistemas de información computarizado. El aprovechar las oportunidades puede permitir que el negocio genere un avance competitivo o ponga un estándar de la industria. La identificación de los objetivos es también un componente importante de la primera fase. En primer lugar el analista debe descubrir lo que esta tratando de hacer el negocio. Luego será capaz de ver si algún aspecto de la aplicación de los sistemas de información puede ayudar para que el negocio alcance sus objetivos atacando problemas específicos u oportunidades. Las personas involucradas en la primera fase son los usuarios, analista y administradores de sistema que coordina el proyecto. Las actividades de esta fase consisten en entrevistas a los administradores de los usuarios, sumarización del conocimiento obtenido, estimación del alcance del proyecto y documentación de los resultados. La salida de esta fase es un estudio de factibilidad que contiene una definición del problema y la sumarización de los objetivos. Luego los administradores deben tomar una decisión por ver si continúan con el proyecto propuesto, la investigación preliminar contiene tres partes: 1.1 Aclaración de la solicitud: Muchas solicitudes que provienen de empleados y usuarios, no están formuladas de manera clara. Por consiguiente, antes de considerar cualquier investigación de sistemas, la solicitud de proyecto debe examinarse para determinar con precisión lo que el solicitante desea. Si este tiene 60 una buena idea de lo que se necesita pero no esta seguro como expresarlo, entonces bastara con hacer una llamada telefónica. Por otra parte, si el solicitante pide ayuda sin saber que es lo que esta mal o donde se encuentra el problema, la aclaración del mismo se vuelve más difícil. En cualquier caso, antes de seguir adelante, la solicitud de proyecto debe estar claramente planteada.14 1.2 Estudio de factibilidad: Un resultado importante de la investigación preliminar, es la determinación de que el sistema solicitado sea factible, En general los análisis de factibilidad se completan durante la fase de diseño de sistemas, durante esta fase se evalúa las diferentes alternativas de solución propuestas. Los estudios de factibilidad consideran la factibilidad técnica, económica y operacional de cada alternativa, así como si el proyecto es o no apropiado dados los factores políticos y otros del contexto institucional. 1.2.1 Factibilidad técnica: El análisis de factibilidad técnica evalúa si el equipo y software están disponibles (o, en el caso del software, si puede desarrollarse) y si tienen las capacidades técnicas requeridas por cada alternativa del diseño que se esté considerando. Los estudios de factibilidad técnica también consideran si la organización tiene el personal que posee la experiencia técnica requerida para diseñar, implementar, operar y mantener el sistema propuesto. Si el personal no tiene esta experiencia, puede entrenársele o pueden emplearse nuevos o consultores que la tengan. Sin embargo, una falta de experiencia técnica dentro de la organización puede llevar al rechazo de una alternativa particular. 14 JAMES A. SENN. Análisis y diseño de sistemas de Información: McGraw Hill, Mexico 2001, p. 34 61 1.2.2 Factibilidad económica: Los estudios de factibilidad económica incluyen análisis de costos y beneficios asociados con cada alternativa del proyecto. Un análisis de costos/beneficio, todos los costos y beneficios de adquirir y operar cada sistema alternativo se identifican y se hace una comparación de ellos. Primero se comparan los costos esperados de cada alternativa con los beneficios esperados para asegurarse que los beneficios excedan a los costos. Luego se evalúan cada una de las alternativas para identificar la alternativa que sea más atractiva en su aspecto económico. 1.2.3 Factibilidad operacional: Esta factibilidad comprende una determinación de la probabilidad de que un nuevo sistema se use como se supone. Se consideran algunos aspectos de la factibilidad operacional. ¾ El sistema puede ser demasiado complejo para los usuarios de la organización o los operadores del sistema. Si lo es, los usuarios pueden ignorar el sistema o bien usarlo en tal forma que cause errores o fallas en el sistema. ¾ El sistema puede hacer que los usuarios se resistan a él como consecuencia de una técnica de trabajo, miedo a ser desplazados, intereses en el sistema antiguo u otras razones. ¾ El sistema puede introducir cambios demasiado rápido para permitir al personal adaptarse a él y aceptarlo. Un cambio repentino que se ha anunciado, explicado y “vendido” a los usuarios con anterioridad puede crear resistencia. Sin importar qué tan atractivo pueda ser un sistema en su aspecto económico si la factibilidad operacional indica que tal vez los usuarios no aceptarán el sistema o que uso resultará en muchos errores o en una baja en la moral, el sistema no debe implantarse. 62 1.3 Aprobación de la solicitud: Las organizaciones reciben solicitudes para el desarrollo de proyectos sin embargo no todas las solicitudes son aprobados para desarrollar los proyectos por parte de la unidad de informática solo aquellos que son deseables y factibles, son incorporados en los planes. En el caso que el equipo de sistemas se encuentren ocupado en otros proyectos, es la administración es quien decide que proyectos son los mas importantes. Después de aprobada la solicitud de un proyecto se estima su costo, el tiempo necesario para terminarlo y las necesidades de personal; con esta información se determina donde ubicarlo dentro de la existencia de proyectos. 2. Diseño. El diseño de un sistema de información produce los detalles que establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante la etapa de análisis de la información.15 El equipo de análisis entrega como resultado de la fase, el modelo real de operación de la organización, en base a éste, el equipo de diseño se enfoca a trabajar en la solución al problema definido en el modelo real para generar un modelo a proponer denominado modelo propuesto. Para obtener el modelo propuesto el equipo de diseño se enfoca en dos sentidos: el diseño operativo y el diseño computacional. El proceso de diseño operativo se refiere a lo relacionado con la identificación de usuarios, reportes, pantallas, procedimientos y salidas que debe producir el sistema. Es común que los diseñadores elaboren un bosquejo o formato de pantalla y reportes para determinar colores y estructura de los mismos. Los procedimientos que se escriben indican cómo procesar los datos y producir las salidas. 15 KENNETH E. KENDALL; JULIE E. KENDALL. Ob.cit., p. 10 63 El proceso de diseño computacional está orientado a determinar los datos específicos para cada reporte y salida. El diseño computacional también abarca los datos de entrada, aquellos que serán calculados y los que deben ser almacenados. Se escriben a detalle los procedimientos de cálculo y los datos individuales. Se seleccionan las estructuras de archivo. Los documentos que contienen las especificaciones de diseño, tanto computacional como operativo, representan a éste de muchas maneras (diagramas, tablas y símbolos especiales). La información detallada del diseño se proporciona en el modelo propuesto al equipo de programación para comenzar la fase de desarrollo de software. El equipo de diseño es el responsable de dar a través del modelo propuesto a los programadores las especificaciones de software completas y claramente delineadas. Los encargados de dar visto bueno al modelo propuesto son los usuarios finales, coordinador de desarrollo de sistemas y el jefe de sistemas. 3 Programación. Una vez comenzada la fase de programación el equipo de diseño contesta preguntas, aclara dudas y maneja los problemas que enfrentan los programadores cuando utilizan las especificaciones de diseño. La programación (en ocasiones también llamada codificación) consiste en la traducción del diseño a un formato que sea legible para la computadora. Si el diseño es lo suficientemente detallado, la programación es relativamente sencilla, y puede hacerse de forma automática, usando generadores de código. Podemos observar que estas primeras fases del ciclo de vida consisten básicamente en una traducción: en el análisis del sistema, los requisitos, la función y la estructura 64 de este se traducen a un documento: el análisis del sistema que está formado en parte por diagramas y en parte por descripciones en lenguaje natural. En el análisis de requisitos se profundiza en el estudio del componente software del sistema y esto se traduce a un documento, también formado por diagramas y descripciones en lenguaje natural obteniendo el modelo real. En el diseño, los requisitos del software se traducen a una serie de diagramas que representan la estructura del sistema software, de sus datos, de sus programas y de sus interfaces teniendo como resultado el modelo propuesto. Por último, en la programación se traducen estos diagramas de diseño a un lenguaje fuente, que luego se traduce (compila) para obtener un programa ejecutable. Esta fase de programación es realizada por el equipo de implementación, en conjunto con los diseñadores, para observar, aclarar dudas y hacer que se respete el modelo propuesto. 4 Pruebas. La prueba de un sistema no es una actividad trivial para aprender, algunos lo consideran un arte; y aprender a hacerlo bien requiere práctica y experiencia. Este proceso de evaluación del sistema se puede realizar por medios manuales y automáticos, con el objeto de verificar que se satisfagan los requerimientos y de identificar diferencias entre los resultados esperados y los que produce el sistema. 16 Regularmente se sugiere que se conforme un equipo para esta fase, conformado por: ¾ Equipo de diseño. ¾ Usuarios finales. ¾ Equipo de implementación 16 JAMES A. SENN. Ob. Cit., p. 37 65 ¾ Gestor de calidad. (Que puede ser el coordinador de desarrollo de sistemas o el jefe de sistemas). Este personal se encarga de aplicar las pruebas necesarias al sistema de información que se esté desarrollando. Se debe tomar muy en cuenta el diferenciar entre una prueba y una depuración. Una prueba es el proceso mediante el cual se establece la existencia de errores y una depuración es el proceso mediante el cual se localizan errores. La prueba puede demostrar existencia de errores, no la ausencia de ellos. 5 Documentación. La documentación de sistemas de información es el conjunto de información que nos dice qué hacen los sistemas, cómo lo hacen y para quién lo hacen. La documentación es un material que explica las características técnicas y la operación de un sistema de información. Es esencial para proporcionar entendimiento de un sistema y para enseñar a los usuarios como interactuar con los servicios y su funcionamiento. Existen varios tipos de documentación. La primera es la información acerca de programas, que explica la lógica de un programa e incluye descripciones, diagramas de flujo, listados de programas y otros documentos; y la segunda es referente a los usuarios que contiene de forma general la naturaleza y capacidades del sistema. En muchas organizaciones tienen lo que se conoce como un programa de documentación, el cual consiste en una política formal cuya documentación se muestra como algo que debe prepararse en forma rutinaria para cada programa de cómputo, archivo y nuevos sistemas. Esta fase de documentación es de real importancia a tal grado que puede ser comparada con la existencia de una póliza de seguro. La documentación adecuada y completa de una aplicación que se desea implantar, mantener y actualizar en forma satisfactoria, es esencial en cualquier 66 sistema de información, aunque frecuentemente es la parte a la cual se dedica menor tiempo y se le presta menos atención durante el ciclo de vida del desarrollo de sistemas de información. Para esta etapa se verán involucrados los equipos de diseño e implementación y los usuarios finales, puesto que son quienes utilizarán los manuales. Si la documentación del sistema de información es incompleta el diseñador continuamente estará involucrado y siempre al tanto de las situaciones que se les presenten a los usuarios finales. 6 Implementación. Una vez superada la fase de pruebas, el software se entrega al cliente y comienza la vida útil del mismo. La implementación es el proceso de asegurarse de que el sistema de información sea operacional, y permitir que luego tomen los usuarios finales el control de la operación para su uso y evaluación. El equipo de análisis observará como a través de tres enfoques se llega a la culminación de la implementación. El primer enfoque para la implementación se refiere a la utilización de diferentes estrategias para el entrenamiento de los usuarios y el personal que se verá involucrado en los procesos administrativos con el sistema nuevo. Otro enfoque importante en esta fase es la selección de una estrategia de conversión, el analista necesita ponderar la situación proponer un plan de conversión que sea adecuado para la organización particular del sistema de información. El último enfoque involucra la evaluación del sistema de información nuevo o modificado. El analista deberá formular medidas de desempeño con las cuales evaluar al sistema de información implementado en la organización. 7 Mantenimiento. El sistema de información sufrirá cambios a lo largo de su vida útil. Estos cambios pueden ser debidos a tres causas: 67 ¾ Que durante la utilización el cliente detecte errores en el software: Los errores latentes. ¾ ¾ Que se produzcan cambios en alguno de los componentes del sistema informático: Por ejemplo cambios en la máquina, en el sistema operativo o en los periféricos. ¾ Que el cliente requiera modificaciones funcionales (normalmente ampliaciones) no contempladas en el proyecto. En cualquier caso, el mantenimiento supone volver atrás en el ciclo de vida, a las etapas de programación, diseño o análisis dependiendo de la magnitud del cambio. D. CONTROL DE PERSONAL. Los objetivos centrales de esta técnica es controlar las entradas y salida del personal, cumplimiento del horario de trabajo, controlar horas extras, permisos, vacaciones, tardanzas, licencias, etc. Este proceso técnico se aplica desde el momento en que el colaborador ingresa a laborar a la institución, ya que su ingreso debe registrarse en una ficha personal pre elaborada por el área de desarrollo de recursos humanos, complementándose inmediatamente con su tarjeta de asistencia diaria. 1 Definición. Es el procedimiento administrativo, que consiste en la puesta en práctica de una serie de Instrumentos, que tienen como finalidad el registrar y controlar al personal que labora en una determinada empresa o institución. Con el control y registro del 68 personal, se trata de asegurar que las diversas unidades de la organización marchen de acuerdo con lo previsto. Es la función administrativa que consiste en medir el desempeño individual y organizacional para asegurar que los acontecimientos se adecuen a las metas y planes institucionales. 2 Importancia. Hoy en día todas las empresas buscan formas innovadoras y eficientes para mejorar su productividad. El hecho de controlar la entrada y salida del personal es de vital importancia, desde el punto de vista productivo y financiero para cualquier empresa. Desde el punto de vista producción, el empleado es la principal causante de alcanzar o superar las metas trazadas por la administración. Desde el punto de vista financiero, no alcanzar las metas trazadas por la administración produce perdidas económicas. 3 Métodos y técnicas. En la actualidad existe diversidad de métodos tecnológicos que facilitan el registro, entrada y salida de personal. Todas las empresas o instituciones poseen diferentes métodos para dicho control, desde formas prácticas y sencillas hasta formas innovadores, el método que se utiliza depende de muchos factores anterior mente mencionados, lo que las empresas buscan es controlar a un 100% la asistencia del personal. Entre los métodos que se utilizan para el control de entrada y salida de personal se encuentran: ¾ Métodos Tradicionales 69 ¾ Métodos No Tradicionales. 3.1 Métodos Tradicionales. Son los métodos mas utilizados en las medianas y pequeñas empresas debido a su valor económico así como a su facilidad de adquisición y manejo, por que no se requiere a un especialista para realizar esta labor, pero se olvidan de que estos métodos son muy vulnerables y fácilmente pueden ser falsificados por cualquier individuo. Entre estos métodos cabe mencionar. 3.1.1 Firmas en libros: Es un sistema antiguo y útil a la vez, consiste en que la persona al llegar a la empresa o institución de trabajo plasma su firma, así como la hora de llegada en un libro donde se encuentra la nomina del personal que labora. Este método es muy utilizado en las pequeñas y medianas empresas donde el personal que labora es poco y por este motivo es muy fácil verificar a simple vista la realidad. 3.1.2 Boletas perforadas: Fueron las primeras utilizadas por la mayoría de instituciones, construidas de material de corta duración, como cartulina o cartoncillo. El método consiste en que la persona al llegar a su lugar de trabajo perforaba la tarjeta en una máquina, lo cual indicaba la hora de llegada, de la misma manera lo hacia al salir para registrar su hora de salida de la institución. 3.1.3 Tarjetas de código de barra: Estas tarjetas son utilizadas por muchas empresas, por su bajo costo y por su fácil manejo, el método consiste en asignar al empleado número de carné el cual contiene un código cifrado en barras, cuando este llega a la empresa pasa su carné por un scanner este lee el código y lo busca en la nomina de los empleados se encuentra guardada en una base de datos al encontrarlo lo registra y de igual manera lo hace a la hora de salida. 70 3.1.4 Tarjetas banda magnética: El uso de las tarjetas es muy empleado por diversas empresas, la banda magnética es una banda negra o marrón, esta banda esta hecha de finas partículas magnéticas en una resina. Las partículas pueden ser aplicadas directamente a la tarjeta o pueden ser hechas en forma de banda magnética y después ser adherida a la tarjeta. Las tarjetas de banda magnética utilizan diferentes dispositivos de control o diferentes tipos de scanner para chequear el acceso de personal, todo depende de la estabilidad y necesidad de una empresa para poner un sistema de control de este tipo. Una de las desventajas de las tarjetas es que un empleado puede deslizar o chequear la entrada a otro empleado. 3.2 No tradicionales: Son los métodos mas utilizados alrededor del mundo en la actualidad, por su confiabilidad y su estabilidad, estos métodos son objeto de estudio de la ciencia y la tecnología para formar técnicas eficientes y seguras que se basan en biometría, es decir en el estudio de métodos automáticos para el reconocimiento único de humanos basados en uno o más rasgos conductuales o físicos. La biometría se basa en los rasgos y características únicas e irrepetibles de los seres humanos, es por eso que la biometría estudia e investiga cada uno de los diferentes rasgos del individuo, de tal forma que, dichos elementos se constituyen en la única alternativa, técnicamente viable, para identificar positivamente a una persona y de esta manera dejar por obsoleto el uso de aquellos métodos que son vulnerables como lo son los métodos tradicionales.17 La biometría consiste en guardar digitalmente en una base de datos aquellos rasgos de las personas que son únicos, para que estos sean utilizados como una clave en el momento de que una persona quiera entrar o salir de la institución. Entre las características físicas utilizadas podemos mencionar: ¾ Huellas digitales. 17 http://www.oap1.com/Biomet.htm 71 ¾ La voz. ¾ Geometría de la mano. ¾ La topografía del iris del ojo. ¾ Rasgos faciales. 3.2.1 La huella dactilar: Según Faulds y Galton. La capa externa de la piel forma unos patrones en la yema de los dedos de la mano, integrados por crestas y valles que generalmente, siguen caminos paralelos, A simple vista, el patrón que siguen las líneas y surcos de una huella se puede clasificar según tres rasgos mayores: arco, lazo y espiral. Figura 1118. De tal manera podemos afirmar que no existe en todo el mundo, dos huellas que sean iguales y gracias a los estudios realizados y los avances de la tecnología, hoy en día podemos utilizar estas características como un método muy útil y eficiente para el control de entrada y salida de personal en diferentes empresas, por medio de sistemas informáticos encargados de digitalizar y archivar huellas dactilares. El funcionamiento es simple pero a la vez complejo, las huellas dactilares de los empleados son archivados en una base de datos, ya digitalizados por medio de un scanner. Cuando el empleado quiere ingresar a las instalaciones de la empresa coloca su huella en el scanner y este lo busca en la base de datos. Una de las mayores desventajas de este método es que al tener una herida o deformación en la huella, el scanner no puede reconocerla. Según la historia las huellas dactilares fueron las primeras en ser utilizadas por el ser humano, como método para controlar de forma eficaz la entrada y salida del personal a las instituciones de trabajo. Fig.11 Huella Dactilar 18 http://www.tecnociencia.es/monograficos/biometria.html 72 3.2.2 El iris: El iris no sólo es la parte pigmentada del ojo que rodea a la pupila. También se trata de la estructura indivisible del cuerpo humano más distintiva matemáticamente. Mide aproximadamente 11 milímetros de diámetro en los cuales cada iris concentra más de 400 características que pueden ser usadas para identificar a su propietario (criptas, surcos, anillos, fosos, pecas, corona entre cruzadas);19 La ciencia y la tecnología aprovechan todas estas características para crear un sistema informático sofisticado y avanzado para un control estricto y de alta seguridad en el control de entrada y salida de personal en empresas o instituciones de máxima seguridad. Figura 12. El método es sencillo, consiste en digitalizar las características del iris y a su vez almacenarlas en una base de datos, por medio de un scanner especializado el cual sirve para controlar y verificar a la persona. Cuando quiere ingresar a la institución el scanner es pasado y comprueba si la persona existe en la base de datos o no. Fig.12 Iris 3.2.3 Reconocimiento facial: De todos los rasgos anatómicos, el rostro es sin lugar a duda el elemento que con más frecuencia los seres humanos utilizamos para identificar a otra persona. Aunque parezca increíble la estructura del rostro es diferente en cada individuo y es por este motivo que es un área de estudio de la 19 http://www.tecnociencia.es, ob., cit. 73 biometría. Figura 13. Hoy en día existen sistemas biométricos basados en reconocimiento facial, en concreto, ciertos software interpretan cada imagen facial como un conjunto bidimensional de patrones brillantes y oscuros, con diferentes intensidades de luz en el rostro.20 El procedimiento de todos los sistemas basados en biometría son similares y el reconocimiento facial no es la excepción, consiste en guardar las características faciales partiendo de puntos estratégicos del rostro estos sirven de base para la estructura del individuo y cuando el rostro es pasado por un scanner estos puntos son digitalizados y guardados en una base de reconocimiento intervienen muchos factores como la luz y la expresión del rostro, colocación. Fig.13 Rasgos faciales 3.2.4 Anatomía de la mano: También la forma de la mano puede ser de gran valor en biometría. A diferencia de las huellas dactilares, la mano humana no es única, y sus características individuales no son suficientes para identificar a una persona. Sin embargo, su perfil resulta útil si el sistema biométrico lo combina con imágenes individuales de algunos dedos, extrayendo datos como las longitudes, anchuras, alturas, posiciones relativas, articulaciones. Estas características se transforman en una serie de patrones numéricos que pueden ser comparados. Su principal aplicación es la verificación de usuarios21. Figura 14. 20 http://www.tecnociencia.es, ob., cit. 21 http://www.tecnociencia.es, ob., cit. 74 El funcionamiento es similar al de la huella digital, reconocimiento facial y el de el iris, por que parte del mismo punto, que son características intrínsecas del individuo con la diferencia que es la mano la que se utiliza para detectar rasgos de la persona por medio de un scanner. Fig. 14 Mano 3.3 Comparación entre sistemas biométricos: En la tabla 12 se representan algunas diferencias de seguridad entre los diferentes sistemas biométricos. 22 Ojo (Iris) Huellas Geometría dactilares de la mano Rostro Fiabilidad Muy alta Alta Alta Alta Facilidad de uso Media Alta Alta Alta Prevención Muy alta Alta Alta Media Aceptación Media Media Alta Muy alta Tabla 12 22 http://es.wikipedia.org/wiki/Biometr%C3%ADa 75