EL SOFTWARE CAROLINA CRUZ YUDY VELANDIA CESAR BENAVIDES CORREA MAURICIO BENAVIDES CORREA UNIVERSIDAD MINUTO DE DIOS CERES – SABANA OCCIDENTE SALUD OCUPACIONAL FACATATIVÁ - CUNDINAMARCA EL SOFTWARE Y SU FUNCION TRABAJO DE INVESTIGACION ELECTIVA I - INFORMÁTICA CAROLINA CRUZ YUDY VELANDIA CESAR BENAVIDES CORREA MAURICIO BENAVIDES CORREA TUTOR MAURICIO LEAL PARGA UNIVERSIDAD MINUTO DE DIOS CERES FACATATIVA SALUD OCUPACIONAL SÁBADO 8 DE MAYO DE 2010 FACATATIVÁ - CUNDINAMARCA PREGUNTAS GENERADORAS 1. ¿Qué es el Software? El software es un conjunto de programas elaborados por el hombre, que controlan la actuación del computador, haciendo que éste siga en sus acciones una serie de esquemas lógicos predeterminados. 2. ¿qué es un programa? Un programa es una secuencia de instrucciones que pueden ser interpretadas por un computador, obteniendo como fruto de esa interpretación un determinado resultado que ha sido predeterminadamente establecido por el ser humano. 3. ¿Cuáles son los tipos o la clasificación del Software (programas)? La clasificación básica es: software de sistema y software de aplicación. El software de sistema es el software básico o sistema operativo. Es un conjunto de programas cuyo objeto es facilitar el uso del computador (aísla de la complejidad de cada dispositivo, y presenta al exterior un modelo común de sistema de manejo para todos los dispositivos) y conseguir que se use eficientemente (ejemplo: realizar operaciones mientras se ejecuta un programa). Administra y asigna los recursos del sistema (hard-ware). Por otro lado, el software de aplicación son los programas que controlan y optimización la operación de la máquina, establecen una relación básica y fundamental entre el usuario y el computador, hacen que el usuario pueda usar en forma cómoda y amigable complejos sistemas hardware, realizan funciones que para el usuario serían engorrosas o incluso imposibles, y actúan como intermediario entre el usuario y el hardware. OBJETIVOS ESPECIFICOS - Dar a conocer a las personas que tienen nociones básicas en sistemas, la facilidad del manejo que brinda este medio para dar solución a las múltiples barreras que se puedan presentar en nuestra diaria labor. - Demostrar que con el conocimiento de los sistemas se abren múltiples oportunidades para mejorar nuestras condiciones personales y laborales. INTRODUCCIÓN Muchas personas se preguntan qué es el software, Cómo está formado, sus diferentes aplicaciones, etc.; y que importante es para el funcionamiento del computador, aunque tenemos claridad que prácticamente sin él, no funcionaría. Debido a su complejidad ya que posee cantidad de programas que infieren en diferentes funcionamientos en particular; es muy importante esta parte en un computador para que haya un orden lógico en el momento de manipular una máquina, y así al usuario no se le haga tan complicado Es de nuestro interés brindar las herramientas para que conozcamos las funciones de su aplicabilidad que conlleven a un manejo correcto y mejor de esta importante herramienta que brinda la tecnología. 1. CATEGORIA DE LOS LENGUAJES LENGUAJE DE PROGRAMACION Un lenguaje de programación es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo. Tiene varias ventajas: - Es mucho más fácil de comprender que un lenguaje máquina. - Permite mayor portabilidad, es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos. Los lenguajes de programación generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos: - Lenguajes imperativos; - Lenguajes funcionales. Un lenguaje imperativo programa mediante una serie de comandos, agrupados en bloques y compuestos de órdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condición. Un lenguaje de programación funcional (a menudo llamado lenguaje procedimental) es un lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones. Cuando una función se invoca a sí misma, hablamos de recursividad. 2. EVOLUCION DEL SOFTWARE Durante los primeros años de la era de la computadora, el software se contemplaba como un añadido. La programación de computadoras era un "arte de andar por casa" para el que existían pocos métodos sistemáticos. El desarrollo del software se realizaba virtualmente sin ninguna planificación, hasta que los planes comenzaron a descalabrarse y los costes a correr. Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. El software se diseñaba a medida para cada aplicación y tenía una distribución relativamente pequeña. La mayoría del software se desarrollaba y era utilizado por la misma persona u organización. La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba. El diseño era un proceso implícito, realizado en la mente de alguien y, la documentación normalmente no existía. La segunda era en la evolución de los sistemas de computadora se extienden desde la mitad de la década de los sesenta hasta finales de los setenta. La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre - máquina. La tercera era en la evolución de los sistemas de computadora comenzó a mediados de los años setenta y continúo más allá de una década. El sistema distribuido, múltiples computadoras, cada una ejecutando funciones concurrentes y comunicándose con alguna otra, incrementó notablemente la complejidad de los sistemas informáticos. El microprocesador ha producido un extenso grupo de productos inteligentes, desde automóviles hasta hornos microondas, desde robots industriales a equipos de diagnósticos de suero sanguíneo. La cuarta era de la evolución de los sistemas informáticos se aleja de las computadoras individuales y de los programas de computadoras, dirigiéndose al impacto colectivo de las computadoras y del software. Potentes máquinas personales controladas por sistemas operativos sofisticados, en redes globales y locales, acompañadas por aplicaciones de software avanzadas se han convertido en la norma. 3. SISTEMAS OPERATIVOS Los sistemas operativos empleados normalmente son UNIX, Macintosh OS, MS-DOS, OS/2 y WindowsNT. El UNIX y sus clones permiten múltiples tareas y múltiples usuarios. Su sistema de archivos proporciona un método sencillo de organizar archivos y permite la protección de archivos. Sin embargo, las instrucciones del UNIX no son intuitivas. Otros sistemas operativos multiusuario y multitarea son OS/2, desarrollado inicialmente por Microsoft Corporation e International Business Machines (IBM) y Windows-NT, desarrollado por Microsoft. El sistema operativo multitarea de las computadoras Apple se denomina Macintosh OS. El DOS y su sucesor, el MS-DOS, son sistemas operativos populares entre los usuarios de computadoras personales. Sólo permiten un usuario y una tarea. MS-DOS Acrónimo de Microsoft Disk Operating System (sistema operativo de disco de Microsoft). Como otros sistemas operativos, el sistema MS-DOS supervisa las operaciones de entrada y salida del disco y controla el adaptador de vídeo, el teclado y muchas funciones internas relacionadas con la ejecución de programas y el mantenimiento de archivos. WINDOWS En informática, nombre común o coloquial de Microsoft Windows, un entorno multitarea dotado de una interfaz gráfica de usuario, que se ejecuta en computadoras diseñadas para MS-DOS. Windows proporciona una interfaz estándar basada en menús desplegables, ventanas en pantalla y un dispositivo señalador como el mouse (ratón). OS/2 En informática, sistema operativo multitarea para ordenadores o computadoras personales con microprocesadores de la gama x86 de Intel. El OS/2 puede ejecutar aplicaciones para Windows y MSDOS y leer discos de MS-DOS. El OS/2 fue desarrollado originalmente como un proyecto conjunto de Microsoft e IBM. UNIX en informática, sistema operativo multiusuario que incorpora multitarea. Fue desarrollado originalmente por Ken Thompson y Dennis Ritchie en los laboratorios AT&T Bell en 1969 para su uso en minicomputadoras. CRAYTHUR. Completamente nuevo y en español. Tiene un cuidado especial en el diseño de escritorios y ventanas. Sin embargo, las aplicaciones aún están un poco a medias. DESKTOPTWO. Basado en Flash, requiere registro para probarlo. Las aplicaciones son algo lentas y con unos cuantos bugs. Hace bastantes cosas bien, pero le falta algo de usabilidad. Y dejar de funcionar a base de pop-ups. EYEOS. Puede descargar los archivos de este sistema operativo para instalarlos en su servidor web y utilizarlos como más le parezca, además de una demo o cuentas gratis para los que no tengan su propio servidor. Resulta funcional y no tiene demasiados fallos, pero de momento no está listo para trabajar con él. GLIDE. En su segunda etapa, este SO se ofrece en versión gratis o de pago. Basado en Flash, no trata de imitar el entorno de Windows y permite subir o almacenar hasta 1GB. Incluye las aplicaciones más comunes, está bien diseñado (al menos a primera vista), pero comparte algunos de los fallos de Desktoptwo. Muchas aplicaciones se abren en ventanas emergentes, otras no están bien terminadas en cuanto a los gráficos, y algunas sencillamente no funcionan. Goowy. Basado en Flash, con muchas aplicaciones bien construidas y con buena usabilidad. No es demasiado lento, y todo funciona en la misma ventana con una barra de herramientas. Los autores de la selección lo consideran de lejos el mejor de la lista por su funcionalidad, usabilidad y escasos fallos. ORCA. No soporta Firefox. Pero incluso en Internet Explorer, Orca está sin terminar, como para que los amigos del programador le ayuden a probarlo. PUREFECT. También está en una fase temprana de su desarrollo, pero muestra algunas promesas. Incluye unas pocas aplicaciones que imitan el estilo de Windows. A pesar de sus fallos, podría merecer la pena revisar cuánto ha avanzado en unos meses. Por ahora no es suficiente. 4. COMPILADORES La traducción de una serie de instrucciones en lenguaje ensamblador (el código fuente) a un código máquina (o código objeto) no es un proceso muy complicado y se realiza normalmente por un programa especial llamado compilador. La traducción de un código fuente de alto nivel a un código máquina también se realiza con un compilador, en este caso más complejo, o mediante un intérprete. Un compilador crea una lista de instrucciones de código máquina, el código objeto, basándose en un código fuente. El código objeto resultante es un programa rápido y listo para funcionar, pero que puede hacer que falle el ordenador si no está bien diseñado. Los intérpretes, por otro lado, son más lentos que los compiladores ya que no producen un código objeto, sino que recorren el código fuente una línea cada vez. Cada línea se traduce a código máquina y se ejecuta. Cuando la línea se lee por segunda vez, como en el caso de los programas en que se reutilizan partes del código, debe compilarse de nuevo. Aunque este proceso es más lento, es menos susceptible de provocar fallos en la computadora. Ventajas de compilar frente a interpretar: Se compila una vez, se ejecuta n veces. En bucles, la compilación genera código equivalente al bucle, pero interpretándolo se traduce tantas veces una línea como veces se repite el bucle. El compilador tiene una visión global del programa, por lo que la información de mensajes de error es más detallada. Ventajas del intérprete frente al compilador: Un intérprete necesita menos memoria que un compilador. En principio eran más abundantes dado que los ordenadores tenían poca memoria. Permiten una mayor interactividad con el código en tiempo de desarrollo. Un compilador no es un programa que funciona de manera aislada, sino que necesita de otros programas para conseguir su objetivo: obtener un programa ejecutable a partir de un programa fuente en un lenguaje de alto nivel. 4.1 CLASIFICACIÓN DE COMPILADORES El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora puede interpretar y ejecutar. Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son, pues, programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina). Los compiladores pueden ser de: - - - Una sola pasada: examina el código fuente una vez, generando el código o programa objeto. Pasadas múltiples: requieren pasos intermedios para producir un código en otro lenguaje, y una pasada final para producir y optimizar el código producido durante los pasos anteriores. Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa. Compiladores incrementales: generan un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente. Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura sencilla. Compilador cruzado: se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++. Compilador con montador: compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos. Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc. 4.2 PARTES EN LAS QUE TRABAJA UN COMPILADOR Conceptualmente un compilador opera en fases. Cada una de las cuales transforma el programa fuente de una representación en otra. En la figura se muestra una descomposición típica de un compilador. En la práctica se pueden agripar fases y las representaciones intermedias entres las fases agrupadas no necesitan ser construidas explícitamente. Programa fuente 5. LENGUAJES DE PROGRAMACION Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o 1 como modo de comunicación humana. Está formado de un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación. También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos: - El desarrollo lógico del programa para resolver un problema en particular. Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa) Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina. Prueba y depuración del programa. Desarrollo de la documentación. Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo el HTML. (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación sino un conjunto de instrucciones que permiten diseñar el contenido y el texto de los documentos). Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción del programa de forma colaborativa. 6. EVOLUCION DE LOS LENGUAJES DE PROGRAMACION Los primeros lenguajes de programación surgieron de la idea de Charles Babagge, la cual se le ocurrió a este hombre a mediados del siglo XIX. Era un profesor matemático de la universidad de Cambridge e inventor ingles, que la principio del siglo XIX predijo muchas de las teorías en que se basan los actuales ordenadores. Consistía en lo que él denominaba la maquina analítica, pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aquélla supuesta maquina de Babagge, en tarjetas perforadas. Como la maquina no llego nunca a construirse, los programas de Ada, lógicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la programación, sobre todo si observamos que en cuanto se empezó a programar, los programadores utilizaron las técnicas diseñadas por Charles Babagge, y Ada, que consistían entre otras, en la programación mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que estos dos genios de antaño, se adelantaron un siglo a su época, lo cual describe la inteligencia de la que se hallaban dotados. En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias, un dispositivo mecánico para efectuar sumas repetidas. Pero Babagge se dedico al proyecto de la máquina analítica, abandonando la maquina de diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creación de Charles Jacquard (francés). Este hombre era un fabricante de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos, leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. Entonces Babagge intento crear la máquina que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribución es decisiva, ya que los ordenadores actuales responden a un esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades básicas: 1) Unidad de entrada, para introducir datos e instrucciones; 2) Memoria, donde se almacenaban datos y resultados intermedios; 3) Unidad de control, para regular la secuencia de ejecución de las operaciones; 4) Unidad Aritmético-Lógica, que efectúa las operaciones; 5) Unidad de salida, encargada de comunicar al exterior los resultados. Charles Babbage, conocido como el "padre de la informática" no pudo completar en aquella época la construcción del computador que había soñado, dado que faltaba algo fundamental: la electrónica. El camino señalado de Babbage, no fue nunca abandonado y siguiéndolo, se construyeron los primeros computadores. Cuando surgió el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And Calculator), su programación se basaba en componentes físicos, o sea, que se programaba, cambiando directamente el Hardware de la maquina, exactamente lo que sé hacia era cambiar cables de sitio para conseguir así la programación de la maquina. La entrada y salida de datos se realizaba mediante tarjetas perforadas. 7. APLICACIONES DEL SOFTWARE En informática, una aplicación es un tipo de programa informático diseñado como herramienta para permitir a un usuario realizar uno o diversos tipos de trabajo. Esto lo diferencia principalmente de otros tipos de programas como los sistemas operativos (que hacen funcionar al ordenador), las utilidades (que realizan tareas de mantenimiento o de uso general), y los lenguajes de programación (con el cual se crean los programas informáticos). Suele resultar una solución informática para la automatización de ciertas tareas complicadas como pueden ser la contabilidad, la redacción de documentos, o la gestión de un almacén. Algunos ejemplos de programas de aplicación son los procesadores de textos,hojas de cálculo, y base de datos. Ciertas aplicaciones desarrolladas 'a medida' suelen ofrecer una gran potencia ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos. Este diagrama muestra la ubicación y relación que tienen estas aplicaciones para con el usuario final, y con otros programas informáticos existentes. Otros ejemplos de programas de aplicación pueden ser: programas de comunicación de datos, Multimedia, presentaciones, diseño gráfico, cálculo, finanzas, correo electrónico, compresión de archivos, presupuestos de obras, gestión de empresas, etc. Algunas compañías agrupan diversos programas de distinta naturaleza para que formen un paquete (llamados suites o suite ofimática) que sean satisfactorios para las necesidades más apremiantes del usuario. Todos y cada uno de ellos sirven para ahorrar tiempo y dinero al usuario, al permitirle hacer cosas útiles con el ordenador (o computadora); algunos con ciertas prestaciones, otros con equis diseño; unos son más amigables o fáciles de usar que otros, pero bajo el mismo principio. Un ejemplo común de estos paquetes es Microsoft Office. 8. HERRAMIENTAS DE PRODUCTIVIDAD PERSONAL Son los métodos necesarios para aprender a utilizar el software, que sea útil para la realización tanto de gráficos como de presentaciones electrónicas, tan necesarias para la presentación de trabajos y temas en la actualidad. Conocer la forma más fácil y práctica de hacer una presentación que incluya efectos, gráficos, imágenes, videos... Además conocer conceptos relacionados con este tema como: resolución, impresoras, escáner, etc. MAPA CONCEPTUAL EL SOFTWARE Y SU FUNCION CATEGORIAS DE LOS LENGUAJES LENGUAJES DE PROGRAMACION SISTEMAS OPERATIVOS COMPILADORES LENGUAJES DE PROGRAMACION UNA SOLA PASADA OPTIMACIÓN MS DOS WINDOWS IMPERATIVOS INCREMENTALES ENSAMBLADOR OS / 2 UNIX FUNCIONALES CRUZADO CON MONTADOR CRAYTHUR DESKTOPTWO PASADAS MULTIPLES AUTOCOMPILADOR EYEOS GLIDE GOOWY ORCA PUREFECT CONCLUSIONES Se dieron a conocer los conceptos básicos sobre el Software: programas, lenguajes, sistemas operativos, aplicaciones y su evolución, que conllevan al mejoramiento del uso de las nuevas tecnologías y optimizan nuestras condiciones laborales y personales. BLIOGRAFÍA JACOBSON, Ivar; BOOCH, Grady; RUMBAUGH, James (2000). El Proceso Unificado de Desarrollo de Software (en Español). Pearson Addisson-Wesley. Pressman, Roger S. (2003). Ingeniería del Software, un enfoque Práctico, Quinta edición edición (en Español), Mc Graw Hill. ISBN 84-481-3214-9. JACOBSON; BOOCH; RUMBAUGH (1999). UML - El Lenguaje Unificado de Modelado (en Español). Pearson Addisson-Wesley. Rational Software Corporation, Addison Wesley Iberoamericana. ISBN 84-7829-028-1. Haeberer, A. M.; P. A. S. Veloso, G. Baum (1988). Formalización del proceso de desarrollo de software, Ed. preliminar edición (en Español), Buenos Aires: Kapelusz. ISBN 950-13-9880-3. Fowler, Martin; Kendall Sccott (1999). UML Gota a Gota (en Español). Addison Wesley. ISBN 9789684443648. Loucopoulos, Pericles; Karakostas, V. (1995). System Requirements Engineering (en Inglés). London: McGraw-Hill Companies, pp. 160 p.. ISBN 978-0077078430. Sommerville, Ian; P. Sawyer (1997). Requirements Engineering: A Good Practice Guide, 1ra. edition edición (en Inglés), Wiley & Sons, pp. 404 p.. ISBN 978-0471974444. Gottesdiener, Ellen; P. Sawyer (2002). Requirements by Collaboration: Workshops for Defining Needs (en Inglés). Addison-Wesley Professional, pp. 368 p.. ISBN 978-0201786064