Tema III. Software operativo y de desarrollo Objetivo: El alumno conocerá y entenderá la evolución y la situación actual que éste presenta. Asimismo distinguirá los diferentes tipos de programas (software) necesarios tanto para operar la máquina como para realizar desarrollos y aunado a esto tendrá las bases para seleccionar aquel software que le permita resolver un problema. 3.1 Evolución del software y su situación actual Software Es la estructura lógica de una computadora, todo lo intangible, es decir, son los programas de aplicación, sistemas operativos que no son tangibles para el usuario. (Voz ingl.). 1. m. Inform. Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora. Diccionario de la Real Academia de la Lengua Española. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Clasificación Según su función Software de base Software aplicativos Por su uso o estandarización El software aplicativo El software a la medida El software de acuerdo al cliente Libre y propietario Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Software de Base Software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: •Coordina •Manipula •Organiza los archivos Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Sistema Operativo Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con la computadora. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos de utilizar. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Evolución Sistemas por Lotes Estos sistemas se diseñaron en la década de 1950 para controlar las computadoras mainframe. Cada programa a ejecutarse se llamaba tarea. Un programador que deseaba ejecutar una tarea enviaba una solicitud a la sala de operaciones junto con tarjetas perforadas para el programa y los datos. El programador no tenía ningún control o interacción con el sistema. Un operador procesaba las tarjetas perforadas. Si el programa era satisfactorio, el resultado se enviaba al programador , de lo contrario, se enviaba un listado de error. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Tarjeta Perforada Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Evolución Sistemas de Tiempo Compartido Para utilizar los recursos del sistema de computación eficientemente, se introdujo la multiprogramación. La idea es mantener varias tareas en memoria y sólo asignar un recurso a una tarea que lo necesite con la condición de que el recurso está disponible. La multiprogramación trajo la idea del tiempo compartido. Estas dos características mejoraron en gran medida la eficiencia de un sistema de computación. No obstante, ésta requería un sistema operativo más complejo. El sistema operativo ahora tenía que hacer una planificación: asignación de los recursos a los distintos programas y decidir cuál programa debería utilizar cuál recurso y cuándo. Durante esta época, la relación entre una computadora y un usuario también cambió. El usuario podía interactuar directamente con el sistema sin pasar por el operador. Un nuevo término también se acuñó: proceso. Una tarea es un programa a ejecutar; un proceso es un programa que está en la memoria en espera de recursos. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Evolución Sistemas personales Cuando las computadoras personales se introdujeron, había una necesidad de un sistema operativo de este tipo de computadora. Durante esta época, se introdujeron los sistemas operativos monousuario tales como DOS (Disk Operating System) Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Sistemas paralelos La necesidad de una mayor velocidad y eficiencia condujo al diseño de los sistemas paralelos: varios CPU en la misma máquina. Cada CPU podía utilizarse para servir a un programa o a una parte de un programa, lo cual significa que muchas tareas pueden lograrse en paralelo en vez de en forma serial. El sistema operativo para estos sistemas es más complejo que en aquellos con un solo CPU. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Sistema de Procesamiento Paralelo Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Sistemas Distribuidos Una tarea realizada previamente por completo en una computadora ahora podía compartirse entre computadoras que podían estar a miles de kilómetros de distancia. Un programa puede ejecutarse parcialmente en una computadora y parcialmente en otra si éstas están conectadas mediante un conjunto de redes interconectadas como Internet. Además, los recursos pueden distribuirse. Un programa puede necesitar archivos localizados en distintas partes del mundo. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Sistema Operativo Interfaz de usuario Administrador de memoria Administrador de procesos Administrador de dispositivos Administrador de archivos Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ejemplos de Sistemas Operativos MS-DOS Windows Linux Unix BSD Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores MS-DOS •Apareció en los años 70’s • No es multiusuario o multitarea • Se regía por medio de comandos Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Windows Aparición el 20 de noviembre de 1985 Dispone de una interfaz gráfica que facilita el manejo de los procedimientos: cada comando puede ser visualizado en una pantalla mediante una imagen que lo representa. Mayor difusión en el mercado actual, y su imponente popularidad se torna elemento indispensable para la inserción de todo nuevo usuario informático. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores LINUX •Aparición en 1991. •Creado por Linus Torvalds •Sistema informático libre, gratuito y de código fuente abierto. •Flexibilidad de configuración •Estabilidad Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores XFCE LOOKINGLASS GNOME ICEWM ENLIGHTENMENT KDE Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Personajes que ya hicieron historia Richard Stallman Licencia GNU Dennis Ritchie Unix Robert Pike Linus Torvalds Linux Bryan Kerniganh Dos Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores ¿Qué es LINUX? Linux es el núcleo de un sistema operativo libre, desarrollado y lanzado al mundo por Linus Benedict Torvalds en 1991. Torvalds eligió distribuir Linux con una licencia de software de código libre denominada GNU General Public License (GPL). Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Uno de los primeros conceptos que aparecen al iniciarse en Linux es el concepto de distribución. Una distribución es un agrupamiento del núcleo del sistema operativo Linux (la parte desarrollada por Linus Torvalds) y otra serie de aplicaciones de uso general o no tan general. En principio las empresas que desarrollan las distribuciones de Linux están en su derecho al cobrar una cierta cantidad por el software que ofrecen, aunque en la mayor parte de las ocasiones se pueden conseguir estas distribuciones desde Internet, de revistas o de amigos, siendo todas estas formas gratuitas y legales. Ing. Tanya Arteaga Ricci Ing. Tanya I. Arteaga Ricci | F.I. 2009 (R) 3.2 Software de base: sistemas operativos, lenguajes y traductores Richard Matthew Stallman Fundador del proyecto GNU Creador Emacs Compilador GCC Creador de las licencias GNU: GPL, LGPL Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Libertades del Software Libre Libertad 0: la libertad de usar el programa, con cualquier propósito. Libertad 1: la libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades. Libertad 2: la libertad de distribuir copias, con lo que puedes ayudar a tu vecino. Libertad 3: la libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. WWW Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Núcleo y lo demás… Software Drivers Colores Kernel Shell Vi Modo gráfico Hardware gcc http://bellard.org/jslinux/ Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores UNIX • Principios de los años setentas. • Creado por Ken Thompson y Dennis Ritchie. • Capacidad de soportar Multiprogramación. • Capacidad de tiempo compartido. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores BSD • Berkeley Software Distribution. • En 1977 Bill Joy, entonces un estudiante de grado en Berkeley, grabó y envió cintas del primer BSD. • Nacido a partir de los aportes realizados a ese sistema por la Universidad de California en Berkeley. • Manejo de memoria virtual paginado por demanda. • Control de trabajos. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Ciclo de Vida del Software El software primero se desarrolla por un grupo de desarrolladores/programadores. Por lo general, está en uso durante algún tiempo antes de que se requiera hacerle modificaciones. Las modificaciones a menudo son necesarias debido a errores encontrados en el software, a cambios en las normas o leyes, o a cambios en la compañía misma. El software debe modificarse antes para su uso posterior. Estos dos pasos, usar y modificar, continúan hasta que el software se vuelve obsoleto. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Desarrollo del Sistema Análisis Diseño Imple – menta – ción Pruebas Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Fase de Análisis El proceso de desarrollo comienza con la fase de análisis, la cual muestra qué debe hacer el paquete. En esta fase, el analista de sistemas define los requisitos que especifican lo que el sistema propuesto va a lograr. Los requisitos por lo general se establecen en los términos que el usuario comprende. Definición del Usuario Definición de las necesidades Definición de los requisitos Definición de los métodos Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Fase de Análisis Para poder identificar y definir bien un problema es conveniente responder a las siguientes preguntas: ¿Qué entradas se requieren? Tipo de datos con los cuales se trabaja y cantidad ¿Cuál es la salida deseada? Tipo de datos de los resultados y cantidad ¿Qué método produce la salida deseada? Requisitos o requerimientos adicionales y restricciones a la solución. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Fase de Diseño La fase de diseño define cómo logrará el sistema lo que se definió en la fase de análisis. En la fase de diseño, se determinan los sistemas y Se ayuda de dos características en esta etapa: Modularidad el diseño de archivos y/o bases de datos se completa. Herramientas Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Fase de Implementación Herramientas En la fase de implementación se crean los problemas reales. Codificación Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Fase de Prueba Una vez que los programas se han escrito, deben probarse. La fase de prueba puede ser muy tediosa y consumir parte del tiempo de desarrollo del programa. Los programadores son completamente responsables de probar sus programas. En los proyectos de desarrollo grandes, con frecuencia hay especialistas llamados Ingenieros de Pruebas quienes son responsables de probar el sistema como un todo. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Calidad de Software “La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario”. (IEEE, std. 6101990). Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Calidad de Software Software que satisface los requerimientos explícitos e implícitos del usuario, está bien documentado, cumple con las normas operativas de la organización y se ejecuta de manera eficiente en el hardware para el cual se desarrolló. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Calidad del Software Operabilidad Eficiencia Fiabilidad Facilidad de uso Pertinencia Precisión Seguridad Capacidad de mantenimiento Capacidad de transferencia Capacidad de corrección Interoperabilidad Capacidad de pruebas Flexibilidad Variabilidad Portabilidad Reutilización del código Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Lenguaje de programación Cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su procesamiento por una computadora. Conjunto de normas «lingüísticas» que permiten escribir un programa y que éste sea entendido por la computadora y pueda ser trasladado a computadoras similares para su funcionamiento en otros sistemas. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Lenguaje de bajo nivel Lenguaje de programación que la computadora puede entender a la hora de ejecutar programas, lo que aumenta su velocidad de ejecución, pues no necesita un intérprete que traduzca cada línea de instrucciones. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Lenguaje Ensamblador M: DATO: INICIO: EQU $00 EQU $01 ORG $100 LDY #$1000 LDS #$03FF LDAA #$00 LDAB DATO,Y LDX #$000A IDIV ;CARGAR EN A EL DATO CERO ;EL ENTERO SE QUEDA EN IX Y EL RESIDUO EN D XGDX LDAA #$06 MUL STAA M,Y ;D TIENE LA PARTE ENTERA E IX EL RESIDUO ; EL RESIDUO QUEDA EN D ;CARGO EN MEMORIA EL DATO QUE SE QUIERE PASAR A DECIMAL FIN: SUMA: ADDD M,Y XGDX LDAA DATO,Y CMPA #$64 BHS SUMA XGDX STD $18,Y END BRA INICIO LDAB #$C0 ABX STX $18,Y BRA FIN ;TENEMOS EL RESULTADO EN D ;CAMBIA EL DATO DE D A IX ;HACE LA OPERACION DATO-64 ;SI DATO >= 64, BRINCA ;CAMBIO IX A D ;RESULTADO PARA NUMEROS MENORES DE 64H ;SE HACE LA SUMA DE AJUSTE MAYOR A 64H ;DATO EN DECIMAL Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Lenguaje de alto nivel Lenguaje de programación en el que las instrucciones enviadas para que la PC ejecute ciertas órdenes son similares al lenguaje humano. Dado que la PC no es capaz de reconocer estas órdenes, es necesario el uso de un intérprete que traduzca el lenguaje de alto nivel a un lenguaje de bajo nivel que el sistema pueda entender. #include <stdio.h> main( ){ printf (“%f”,42/2); } Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores C C++ Java VB .NET ASP PERL PHP Delphi … Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Compilador Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora. Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Creando un programa en C hola.obj hola.c compilador #include <stdio.h> main() { printf(“hola mundo”); } 0101010101010 101 1010111010111 0110 1010010011100 010 0101010101010 101 0101010101010 100 hola.exe enlazador 0101010101010 101 1010111010111 0110 1010010011100 010 0101010101010 101 0101010101010 100 Compilación Ing. Tanya Arteaga Ricci 3.2 Software de base: sistemas operativos, lenguajes y traductores Intérprete Es un programa capaz de analizar y ejecutar programas escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que los primeros sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción y normalmente no guardan el resultado de dicha traducción. Ing. Tanya Arteaga Ricci Compilados VS Interpretados 3.2 Software de base: sistemas operativos, lenguajes y traductores Lenguaje Compilado/interpretado ADA Lenguaje compilado BASIC Lenguaje interpretado C Lenguaje compilado C++ Lenguaje compilado Cobol Lenguaje compilado Fortran Lenguaje compilado Java Lenguaje intermediario MATLAB Lenguaje interpretado LISP Lenguaje intermediario Pascal Lenguaje compilado PHP Lenguaje interpretado Perl Lenguaje interpretado Ing. Tanya Arteaga Ricci 3.3 Software aplicativo: a la medida y de propósito general Software Aplicativo Programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Posee ciertas características que le diferencia de un S.O., como por ejemplo, suele resultar una solución informática para la automatización de ciertas tareas complicadas como puede ser la contabilidad o la gestión de un almacén. Ing. Tanya Arteaga Ricci 3.3 Software aplicativo: a la medida y de propósito general Software a la medida Son ciertas aplicaciones desarrolladas ‘a medida’ que ofrecen una gran potencia, ya que, están exclusivamente diseñadas para resolver un problema en específico. Ing. Tanya Arteaga Ricci 3.3 Software aplicativo: a la medida y de propósito general Software de propósito general Son paquetes integrados de aplicaciones, como por ejemplo: software que incluyen varias •Procesadores de Texto •Hoja de Cálculo •Base de datos Ir a Tema IV Ing. Tanya Arteaga Ricci