UT1 Desarrollo del Software PDF
Document Details
CIFP Santa Catalina
María Miranda Herrero
Tags
Summary
These are lecture notes for a course in software development, covering topics including introduction to computer systems, hardware/software relationships, types of software, software life cycle, programming languages, and virtual machines. The notes include definitions, examples, and diagrams. The course is for the academic year 2024-2025.
Full Transcript
ENTORNOS DE DESARROLLO Desarrollo de Aplicaciones Multiplataforma (DAM1) Curso 2024 – 2025 María Miranda Herrero UT1. DESARROLLO DEL SOFTWARE 2 CONTENIDOS 1. Introducción....
ENTORNOS DE DESARROLLO Desarrollo de Aplicaciones Multiplataforma (DAM1) Curso 2024 – 2025 María Miranda Herrero UT1. DESARROLLO DEL SOFTWARE 2 CONTENIDOS 1. Introducción. 2. Relación entre hardware y software. 3. El software. 4. Ciclo de vida del software. 5. Lenguajes de programación. 6. Código fuente, código objeto y código ejecutable. 7. Máquinas virtuales. 3 1. INTRODUCCIÓN. ¿QUÉ ES UN SISTEMA INFORMÁTICO? Herramienta que permite almacenar y procesar información. Tiene tres componentes fundamentales: Personal Hardware Software Programas o Conjunto de aplicaciones informático Personal técnico que componentes físicos (componentes no crea y mantiene el en su mayoría de físicos) que hacen sistema. origen eléctrico- posible el Usuarios finales que electrónico. funcionamiento del lo utilizan. ordenador. 4 1. INTRODUCCIÓN. ¿QUÉ ES UN PROGRAMA INFORMÁTICO? Conjunto de instrucciones cuyo objetivo es realizar una o varias tareas en un ordenador. Sin programas, un ordenador no puede funcionar. Puede ser tanto un programa ejecutable como su código fuente, que es escrito por los programadores. Conjunto de instrucciones u órdenes basadas en un lenguaje de programación que un ordenador interpreta para resolver un problema o una función específica. Una colección de programas de ordenador y datos relacionados se conoce como software. 5 1. INTRODUCCIÓN. ¿PARA QUÉ SIRVE UN PROGRAMA INFORMÁTICO? Lo que diferencia a un ordenador de otras máquinas es que es programable, es decir, puede realizar diferentes tareas. La utilidad básica del ordenador consiste en captar información de entrada (datos), procesarla y generar información de salida. Todo ello gracias a los programas, que dan instrucciones al ordenador de cómo gestionar los datos recibidos y cómo procesarlos, dado lugar a los resultados esperados. DATOS INFORMACIÓN PROCESO 6 2. RELACIÓN ENTRE HARDWARE Y SOFTWARE. HARDWARE Componentes físicos del ordenador, es decir, todo lo que se puede ver y tocar. Clasificaremos el hardware en dos tipos: El que se encuentra dentro de la CPU, y por lo tanto no podemos ver a simple vista. El que se encuentra alrededor de la CPU, y que, por lo tanto, sí que vemos a simple vista, y que denominamos periféricos. 7 2. RELACIÓN ENTRE HARDWARE Y SOFTWARE. SOFTWARE Son instrucciones que el ordenador necesita para funcionar, no existen físicamente, o lo que es igual, no se pueden ver ni tocar. También tenemos dos tipos: Sistemas operativos: Tienen como misión que el ordenador gestione sus recursos de forma eficiente, además de permitir su comunicación con el usuario. Aplicaciones: Son programas informáticos que tratan de resolver necesidades concretas del usuario, como, por ejemplo, escribir, dibujar, escuchar música, etc. 8 2. RELACIÓN ENTRE HARDWARE Y SOFTWARE. El hardware y el software se relacionan para que un ordenador pueda funcionar, no puede funcionar el uno sin el otro. Funcionan unidos para dar vida a un ordenador y de su unión depende el trabajo de dicho ordenador. Es el software el que indica en qué secuencia y bajo que lógica hay que hacer los cálculos y las manipulaciones de datos. 9 3. EL SOFTWARE. SOFTWARE Entenderemos como software tanto los programas encargados de dar instrucciones al hardware como los datos con los que trabajan dichos programas. Podemos clasificar el software teniendo en cuenta diferentes criterios: - Según el tipo de tarea que realiza. - Teniendo en cuenta el método de distribución. 10 3. EL SOFTWARE. TIPOS DE SOFTWARE SEGÚN EL TIPO DE TAREA QUE REALIZA: PROGRAMACIÓN SISTEMA APLICACIÓN O DESARROLLO 11 Es aquel que permite que el hardware funcione. Interactúa SOFTWARE DE entre el usuario y los componentes hardware del ordenador. SISTEMA Ejemplos: sistemas operativos, controladores de dispositivos, herramientas de diagnóstico, etc. Conjunto de instrucciones que sirven para permitir al usuario SOFTWARE DE realizar diversos tipos de trabajos. APLICACIÓN Ejemplos: procesadores de textos, bases de datos, hojas de cálculo, diseño gráfico, multimedia, etc. Proporciona al programador herramientas para ayudarle a escribir programas informáticos y a usar diferentes lenguajes SOFTWARE DE de programación de forma práctica. Ejemplos: los IDEs (Entornos de Desarrollo Integrados) que PROGRAMACIÓN O agrupan varias herramientas de programación en un entorno DESARROLLO visual de forma que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. sus programas. 12 3. EL SOFTWARE. TIPOS DE SOFTWARE SEGÚN EL MÉTODO DE DISTRIBUCIÓN: El modelo tradicional de distribución de aplicaciones consiste en que el que la adquiere tiene derecho a beneficiarse de la misma para siempre, típicamente con mantenimiento y actualizaciones excluidas. Licencias de uso: Saas SHAREWARE FREEWARE ADWARE (Software as a Service) 13 Esta forma de distribución permite que el usuario evalúe de SHAREWARE forma gratuita el producto durante un tiempo limitado. Se distribuye sin ningún cargo y normalmente incluye una licencia de uso que permite distribuirlo con restricciones, FREEWARE como puede ser: no modificar su código, no venderlo, indicar siempre quién es el autor, etc. Programas shareware que descargan de forma automática ADWARE publicidad en nuestro ordenador. SaaS Se paga por el uso, normalmente con una cuota mensual. (Software as a Service) 14 3. EL SOFTWARE. LICENCIAS DE SOFTWARE: Una licencia de software es un contrato que se establece entre el desarrollador de un software (sometido a propiedad intelectual y a derechos de autor) y el usuario de dicho software. Esta licencia define los derechos y deberes de ambas partes. Atendiendo a la licencia de software tenemos: SOFTWARE SOFTWARE DE SOFTWARE LIBRE PROPIETARIO DOMINIO PÚBLICO 15 SOFTWARE LIBRE El autor cede una serie de libertades al usuario, como pueden ser: Libertad de utilizar el programa con cualquier fin en todos los ordenadores que desee. Libertad de estudiar cómo funciona el programa y modificarlo de acuerdo con sus necesidades. Libertad de distribuir copias a otros usuarios, con o sin modificaciones. Libertad de mejorar el programa por ejemplo añadiendo funcionalidades nuevas y distribuir el programa modificado. Los productos de software libre y de fuentes abiertas utilizan generalmente una licencia GPL (GNU General Public License – Licencia Pública General), este tipo de licencia da derecho al usuario a usar y modificar el programa con la obligación de hacer públicas las versiones modificadas que se realicen. 16 SOFTWARE PROPIETARIO Es el que se distribuye en formato binario y no hay posibilidad de acceder al código fuente. Generalmente esta licencia de software prohíbe alguna o todas las libertades indicadas en el apartado anterior. SOFTWARE DE DOMINIO PÚBLICO Se denomina de esta manera al software que carece de licencia o se desconoce su autor, en este caso todo el mundo lo puede utilizar. 17 3. EL SOFTWARE. LICENCIAS DE SOFTWARE: Las licencias Creative Commons son modelos de contratos que sirven para otorgar públicamente el derecho de utilizar una publicación protegida por los derechos de autor. 18 4. CICLO DE VIDA DEL SOFTWARE. La Organización Internacional de Estandarización (ISO) ha definido y por tanto normalizado el trabajo que se debe realizar en el desarrollo de software, definiendo el concepto de ciclo de vida y todos los procesos que lo integran. La ISO define el ciclo de vida del software de la siguiente manera: "Un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto software, abarcando la vida del sistema desde la definición de los requisitos hasta la finalización de su uso". 19 4. CICLO DE VIDA DEL SOFTWARE. Por tanto, el ciclo de vida de una aplicación informática lo forman todas las etapas por las que pasa esa aplicación, desde que se plantea su necesidad hasta que deja de utilizarse. ANÁLISIS DISEÑO ETAPAS PRINCIPALES EN EL CICLO CODIFICACIÓN DE VIDA DEL SOFTWARE PRUEBAS EXPLOTACIÓN MANTENIMIENTO 20 4. CICLO DE VIDA DEL SOFTWARE. ANÁLISIS Es la etapa inicial en el proyecto cuyo objetivo es determinar los requisitos que debe cumplir el sistema. Debe realizarse un estudio profundo del sistema llegando a conocer en su totalidad: los datos que se manejan, procesos que se realizan con los datos, situaciones que afectan al sistema. Es importante producir en esta etapa una documentación entendible, completa y fácil de verificar y modificar. 21 4. CICLO DE VIDA DEL SOFTWARE. DISEÑO En esta etapa se determina como se va a resolver el problema planteado, decidiendo todos los elementos informáticos que se utilizarán para llevar a cabo la mecanización. Por tanto, durante esta etapa se determinarán los módulos (programas) que se deben crear, la comunicación entre ellos, cómo se almacenarán los datos que maneja el sistema, el formato de las interfaces gráficas de usuario (pantallas) a realizar. Durante esta etapa también se determina las características del equipo informático donde se implantará la aplicación (hardware), el software de base que se va a utilizar (sistema operativo, lenguajes de programación, sistema gestor de base de datos, etc.). 22 4. CICLO DE VIDA DEL SOFTWARE. CODIFICACIÓN En esta etapa se traduce lo descrito en el diseño a una forma entendible por la máquina. La salida de esta fase es código ejecutable. Durante esta etapa se crean las bases de datos o ficheros a utilizar por la aplicación y las pantallas que comunicarán los programas con el usuario. PRUEBAS Se comprueba que se cumplen criterios de corrección y calidad. Las pruebas deben garantizar el correcto funcionamiento del sistema. 23 4. CICLO DE VIDA DEL SOFTWARE. EXPLOTACIÓN En esta etapa se lleva a cabo la instalación y puesta en marcha del producto software en el entorno de trabajo del cliente. MANTENIMIENTO Esta fase tiene lugar después de la entrega del software al cliente. En ella hay que asegurar que el sistema se adapta a los cambios. Pueden producirse cambios porque se han encontrado errores, es necesario adaptarse al entorno (por ejemplo, se ha cambiado el sistema operativo) o porque el cliente requiera mejoras funcionales. 24 4. CICLO DE VIDA DEL SOFTWARE. Cada una de las etapas del ciclo de vida debe terminar con una documentación que describa los resultados de la etapa, esta documentación sirve para el inicio de la etapa siguiente. La importancia de la documentación radica en que a menudo un programa escrito por una persona es modificado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). 25 4. CICLO DE VIDA DEL SOFTWARE. La documentación se compone de tres partes: Comentarios o mensajes que se añaden al código fuente para hacer más claro el entendimiento de los Documentación interna procesos que lo conforman. Se define en un documento con los siguientes puntos: descripción del problema, datos del autor, Documentación externa algoritmo (diagrama de flujo o pseudocódigo), diccionario de datos, código fuente (programa). Describe paso a paso el funcionamiento del programa, con el fin de que el usuario lo pueda Manual de usuario manejar para que obtenga el resultado deseado. 26 4. CICLO DE VIDA DEL SOFTWARE. MODELOS DE CICLO DE VIDA Las etapas que forman un ciclo de vida son siempre las mismas, pero se pueden llevar a cabo de maneras diferentes, dando lugar a diferentes modelos de ciclo de vida. Es importante tener en cuenta las características del proyecto para elegir un modelo u otro. MODELOS DE CICLO DE VIDA MODELO EN CASCADA Los principales modelos de ITERATIVO ciclo de vida del software INCREMENTAL son: MODELO EVOLUTIVO ITERATIVO EN ESPIRAL SCRUM, METODOLOGÍAS ÁGILES PROGRAMACIÓN EXTREMA, KANBAN,… 27 4. CICLO DE VIDA DEL SOFTWARE. MODELO EN CASCADA (CICLO DE VIDA CLÁSICO) También recibe el nombre de ciclo de vida lineal. La característica más importante de este modelo es que divide el conjunto de procesos a realizar en fases consecutivas de manera que no puede comenzarse una fase hasta que no ha finalizado la anterior. Después de cada etapa se realiza una revisión para comprobar si se puede pasar a la siguiente. Este modelo permite hacer iteraciones, por ejemplo, si durante la etapa de mantenimiento del producto el cliente requiere una mejora y esto implica que hay que modificar algo en el diseño, habrá que realizar cambios en la codificación y en las pruebas. Es decir, si se tiene que volver a una de las etapas anteriores hay que recorrer de nuevo el resto de las etapas. 28 4. CICLO DE VIDA DEL SOFTWARE. MODELO EN CASCADA (CICLO DE VIDA CLÁSICO) 29 4. CICLO DE VIDA DEL SOFTWARE. MODELO EN CASCADA (CICLO DE VIDA CLÁSICO) Tiene varias variantes, una de las más utilizadas es el modelo en cascada con realimentación. En este modelo, se puede retornar a fases anteriores. Por ejemplo, suponiendo que hemos finalizado la fase de análisis, y en la fase de diseño se detectan fallos (los requisitos han cambiado, hay ambigüedades en la definición de estos…) será necesario retornar a la fase anterior, realizar los ajustes pertinentes y continuar de nuevo con el diseño. A esto se conoce como realimentación, pudiendo volver a una o varias etapas anteriores. 30 4. CICLO DE VIDA DEL SOFTWARE. MODELO EN CASCADA (CICLO DE VIDA CLÁSICO) VENTAJAS INCONVENIENTES La forma de trabajar es fácil de Hay muchos proyectos para los cuales este comprender. modelo no resulta adecuado por ser imposible definir el sistema Las etapas están perfectamente completamente desde el principio. diferenciadas, por tanto, se puede realizar un buen seguimiento del proyecto. Si se comenten errores en una etapa, es difícil volver atrás. Permite trabajar con personas poco cualificadas. Se tarda mucho tiempo en completar el ciclo, ya que hasta que no ha finalizado En teoría ayuda a prevenir que se una fase no se pasa a la siguiente. sobrepasen las fechas de entrega y los costes esperados. El usuario final tarda mucho tiempo en disponer del sistema informático ya que se entrega cuando está completo. 31 4. CICLO DE VIDA DEL SOFTWARE. MODELO EN CASCADA (CICLO DE VIDA CLÁSICO) RECOMENDADO SI: El proyecto es similar a otro que ya se ha realizado con éxito. Los requisitos no se modifican y se han comprendido bien. Los clientes no necesitan versiones intermedias. 32 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO INCREMENTAL El software evoluciona con el tiempo, es normal que los requisitos del usuario y del producto cambien a media que se desarrolla el mismo. La competencia del mercado del software es tan grande que las empresas no pueden esperar a tener el producto totalmente completo para lanzarlo al mercado de forma que se van introduciendo versiones cada vez más completas. En estos modelos se asume que las necesidades del usuario no están completas y se requiere una vuelta a planificar y diseñar después de cada implementación de los entregables. 33 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO INCREMENTAL Este modelo permite seguir una secuencia no lineal en la realización de las tareas del ciclo de vida de una aplicación. Entrega el software en partes pequeñas, que se pueden utilizar, llamadas “incrementos”. Cada incremento se construye sobre aquel que ya ha sido entregado. Se suelen utilizar prototipos para: – Evaluar mejor los requisitos del sistema. – Probar opciones de diseño. 34 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO INCREMENTAL 35 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO INCREMENTAL VENTAJAS INCONVENIENTES No es necesario conocer todos los Resulta complicado determinar el coste requisitos de la aplicación desde el final del proyecto. principio. Puede resultar muy largo al no determinar Disminuye el tiempo de espera del cliente, desde un principio el alcance del proyecto. ya que se pueden ir entregando diferentes funciones con bastante rapidez No es recomendable para desarrollar sistemas en tiempo real o que necesiten un nivel alto de seguridad. 36 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO INCREMENTAL RECOMENDADO SI: Los requisitos no están completamente definidos o pueden cambiar. Se están probando nuevas tecnologías 37 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO EN ESPIRAL Combina el modelo en cascada con el modelo iterativo de construcción de prototipos. El proceso de desarrollo del software se representa como una espiral, donde en cada ciclo se desarrolla una parte del mismo. Cada ciclo está formado por cuatro fases, y cuando termina produce una versión incremental del software con respecto al ciclo anterior. Este modelo añade una nueva etapa al ciclo de vida, llamada análisis de riesgos. Está formado por cuatro actividades principales: 38 Determinar objetivos: Cada ciclo de la espiral comienza determinando los objetivos y las diferentes alternativas para conseguirlos. Evaluar riesgos: Se evalúan los problemas de cada alternativa (requisitos no comprendidos, diseño incorrecto, errores en la implementación, etc.). Generalmente se utilizan prototipos para realizar la evaluación de riesgos. Ingeniería: Desarrollo del producto que implementa los objetivos marcados y verificación de que es correcto. (Entrega de la parte desarrollada al cliente). Planificación: Se revisa y evalúa todo lo realizado y se toma la decisión de continuar o no con la mecanización. 39 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO EN ESPIRAL 40 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO EN ESPIRAL VENTAJAS INCONVENIENTES No es necesario definir de forma completa Para evaluar los riesgos se necesita los requisitos para empezar a funcionar. personalidad con mucha experiencia. Disminuyen los riesgos en la elaboración El coste del proyecto aumenta en cada del proyecto. iteración de la espiral. Se adapta bien cuando se desarrolla utilizando orientación a objetos. 41 4. CICLO DE VIDA DEL SOFTWARE. MODELO EVOLUTIVO: ITERATIVO EN ESPIRAL RECOMENDADO SI: Proyectos muy grandes que cambian constantemente y el factor riesgo es muy importante. 42 4. CICLO DE VIDA DEL SOFTWARE. METODOLOGÍAS ÁGILES Actualmente la innovación ha adquirido una gran velocidad, lo que implica que las herramientas y los sistemas evolucionen muy rápidamente. Aparece, por tanto, la necesidad del uso de metodologías que no sean tan rígidas y que permitan una mejor adaptación a las necesidades de los clientes. Las metodologías ágiles se basan en el trabajo en equipo de grupos multidisciplinarios caracterizados por un desarrollo evolutivo y flexible, autonomía de los equipos, planificación y comunicación. Existen diferentes metodologías ágiles entre las que podemos destacar, por su importancia dentro de las empresas las siguientes: Programación Scrum Kanban extrema (XP) 43 PRINCIPIOS DE Lograr la satisfacción del cliente a través de la entrega continua de software. LA No tener miedo de realizar cambios. METODOLOGÍA ÁGIL Entregar software funcional en una escala de tiempo menor (entre dos semanas y dos meses). Desarrolladores y responsables del negocio deben trabajar juntos. Desarrollar proyectos en torno a personas motivadas. Interactuar cara a cara es el modo de comunicación más eficiente y efectivo. Un software que funciona es la medida principal del progreso. Los procesos ágiles promueven el desarrollo sostenible. Mantener un ritmo constante. La atención continua a la excelencia técnica y al buen diseño mejora la agilidad. La simplicidad es esencial. Las mejores arquitecturas, requisitos y diseños emergen de equipos autoorganizados. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia. 44 4. CICLO DE VIDA DEL SOFTWARE. METODOLOGÍAS ÁGILES Scrum Programación extrema (XP) Kanban 45 5. LENGUAJES DE PROGRAMACIÓN. ¿QUÉ ES UN LENGUAJE DE PROGRAMACIÓN? El idioma es el lenguaje con el que nos comunicamos los seres humanos. Un lenguaje de programación es el ‘idioma’ que sirve para comunicarse los seres humanos con el ordenador. Permite expresar las instrucciones que el programador desea que el ordenador ejecute. Está formado por 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. Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación, se los conoce como protocolos de comunicación. 46 5. LENGUAJES DE PROGRAMACIÓN. Un lenguaje de programación es un conjunto de caracteres y reglas que permiten a los programadores dar instrucciones al ordenador. Consta de: Conjunto de símbolos permitidos a partir del cual se Léxico define el vocabulario del lenguaje. Conjunto de reglas (gramática del lenguaje) para la Sintaxis construcción de las instrucciones correctas del lenguaje. Asocia un significado (la acción que debe llevarse a Semántica cabo) a cada posible construcción del lenguaje. 47 5. LENGUAJES DE PROGRAMACIÓN. Existen muchos lenguajes de programación, cada uno de ellos tiene sus características y objetivos. Se pueden clasificar según diferentes criterios, aunque la mayoría pueden cumplir varios criterios ya que muchos de ellos surgen de la mejora de otros lenguajes existentes. Una clasificación posible es la siguiente: Lenguajes de bajo nivel. Según su nivel de Lenguajes de nivel medio. abstracción Lenguajes de alto nivel. Lenguajes compilados. Según la manera de Lenguajes interpretados. ejecutarse Lenguajes mixtos. Según el paradigma de Lenguajes estructurados. programación Lenguajes orientados a objetos. 48 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN SU NIVEL DE ABSTRACCIÓN: – El nivel de abstracción indica si el lenguaje es más cercano al lenguaje máquina o al lenguaje humano. Lenguajes de bajo nivel: La programación se realiza utilizando ceros y unos y teniendo muy en cuenta las características del procesador. Este tipo de lenguajes coinciden con lo que se llama lenguajes de primera generación y se corresponde con el código máquina. 49 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN SU NIVEL DE ABSTRACCIÓN: Lenguajes de nivel medio: Se encuentran en el punto medio entre los lenguajes de bajo y alto nivel. Aunque utilizan instrucciones relativamente sencillas y naturales, el programador tiene acceso al hardware igual que ocurre con los lenguajes de bajo nivel. De esta manera, los programas pueden acceder a los registros del sistema y el programador puede trabajar con direcciones de memoria. Ejemplo: lenguaje C. Se suelen utilizar para la creación de sistemas operativos. 50 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN SU NIVEL DE ABSTRACCIÓN: Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando el funcionamiento de la máquina. Para poder ejecutarlos en un ordenador se necesita un programa intérprete o compilador que traduzca las instrucciones a lenguaje máquina. Ejemplo: lenguaje C++, C#, Java, PHP, etc. Se suelen utilizar para la creación de sistemas operativos. 51 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN LA MANERA DE EJECUTARSE: – Se tiene en cuenta como debe ser tratado el programa escrito en el lenguaje de programación para poder ejecutarlo. – Un programa que se escribe en un lenguaje de alto nivel tiene que traducirse a un código que pueda utilizar la máquina. – Los programas traductores que realizan esta operación se llaman compiladores o intérpretes. 52 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN LA MANERA DE EJECUTARSE: Lenguajes compilados: El compilador realiza un análisis minucioso del código fuente en busca de posibles errores, y en caso de no encontrarlos generará un código objeto (en código maquina) que podrá ser ejecutado por el ordenador. Ejemplo: lenguaje C. 53 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN LA MANERA DE EJECUTARSE: Lenguajes interpretados: Un programa (intérprete), traduce y ejecuta las instrucciones del programa de manera directa. La principal diferencia con el caso anterior es que no se obtiene una traducción de todo el programa, sino que se traducen y ejecutan solamente las partes del programa necesarias en cada ejecución. Ejemplo: JavaScript. 54 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN LA MANERA DE EJECUTARSE: Lenguajes mixtos: Primero pasan por una fase de compilación en la que todo el código fuente se transforma en un código intermedio, y para ejecutarlo se utiliza un intérprete que traduce y ejecuta las instrucciones del código intermedio. Ejemplo: Java. 55 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN EL PARADIGMA DE PROGRAMACIÓN: – Se tiene en cuenta el estilo de programación utilizado, aunque algunos lenguajes se pueden utilizar con distintos estilos de programación. – En esta clasificación solo se tienen en cuenta los lenguajes de medio o alto nivel. 56 5. LENGUAJES DE PROGRAMACIÓN. Programación estructurada: Estos lenguajes se basan en las tres construcciones lógicas de la programación estructurada: − Secuencia: las instrucciones se ejecutan una detrás de otra siguiendo un orden. − Decisión: las expresiones son evaluadas y, dependiendo del resultado, se decide cuál será la siguiente instrucción a ejecutar. − Iteración: se repetirá un conjunto de instrucciones hasta que una condición sea cierta, permitiéndose de esta manera el salto a otra instrucción. La programación estructurada está relacionada con la programación modular que consiste en la división de un programa en partes más pequeñas llamadas módulos, esto tiene las siguientes ventajas: La división en módulos permite que varios programadores trabajen en la aplicación de forma simultánea. Los módulos se pueden reutilizar en otras aplicaciones. Es más fácil resolver problemas pequeños que grandes. 57 5. LENGUAJES DE PROGRAMACIÓN. SEGÚN EL PARADIGMA DE PROGRAMACIÓN : Programación orientada a objetos: En este caso un problema se resuelve utilizando un conjunto de objetos que se comunican entre ellos para resolver el problema. Ejemplo: Java. 58 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. CÓDIGO FUENTE El código fuente de un programa informático es un conjunto de líneas de texto con los pasos que debe seguir un ordenador para ejecutar dicho programa. Está escrito por un programador en algún lenguaje de programación. Inicialmente, no es directamente ejecutable por el ordenador, sino que debe ser traducido a otro lenguaje o código binario denominado lenguaje máquina o código objeto. Una vez traducido a lenguaje máquina o código objeto ya podrá ser interpretado y ejecutado por el hardware del ordenador. 59 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. CÓDIGO FUENTE Para esta traducción se usan los llamados compiladores, ensambladores, intérpretes y otros sistemas de traducción. El área de la informática que se dedica a la creación de programas y, por tanto, a la creación de su código fuente, es la programación. Cada lenguaje de programación tiene su propio código fuente. 60 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. CÓDIGO FUENTE Java: 61 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. CÓDIGO FUENTE C++: 62 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. CÓDIGO OBJETO En programación, se llama código objeto al código que resulta de la compilación del código fuente. ¿QUÉ ES COMPILAR? Traducir un programa escrito en un lenguaje de programación a un lenguaje diferente que el ordenador pueda comprender, en este caso a lenguaje máquina. Cuando se desarrolla un programa, en la fase de codificación el compilador traducirá el código fuente a código máquina, también llamado código objeto, siempre y cuando, el propio compilador no detecte ningún error en dicho código fuente. 63 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. CÓDIGO OBJETO Por tanto, código objeto es un conjunto de instrucciones y datos escritos en un lenguaje que entiende el ordenador directamente: binario o código máquina. Provienen de la traducción de cierto código fuente, es un fragmento del programa final y es especifico de la plataforma de ejecución. CODIGO EJECUTABLE Es el resultado de enlazar uno o varios fragmentos de código objeto. Constituye un archivo binario con un formato tal que el sistema operativo es capaz de cargarlo en la memoria de un ordenador y proceder a su ejecución. El código ejecutable es directamente inteligible por el procesador. Son el conjunto de códigos generados por los programadores para dar resultado al programa final. Estos son los códigos que utilizan y ejecutan los usuarios del sistema. 64 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. CODIGO EJECUTABLE Este código se encuentra empaquetado y listo para ser ejecutado en cualquier ordenador. Generalmente vienen con la extensión EXE o COM, si los han de ejecutar ordenadores con sistema operativo Windows o con bits de marca que trae Linux para ser ejecutable. El beneficio que esto trae es que, al tener el código ejecutable, podemos saber que la compilación fue realizada correctamente (el programa no tiene errores sintácticos ni semánticos). 65 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. 66 6. CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. PROCESO DE OBTENCIÓN DE CÓDIGO EJECUTABLE A PARTIR DEL CÓDIGO FUENTE Aunque el proceso de obtener nuestro código ejecutable pase tanto por un compilador como por un enlazador, se suele llamar al proceso completo COMPILACIÓN. Todo este proceso se lleva a cabo mediante dos programas: – Compilador. – Enlazador. Mientras que el enlazador solamente une el código objeto con las librerías, el trabajo del compilador es mucho más completo. 67 68 7. MÁQUINAS VIRTUALES. ¿QUÉ ES UNA MÁQUINA VIRTUAL? Aplicación software que simula un ordenador en el que se pueden ejecutar programas como si fuese un ordenador real. Es como una capa intermedia entre el hardware del ordenador y algún software y puede encargarse de funciones como traducir instrucciones o simular el funcionamiento de un ordenador concreto. Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para ‘probarlos’. De esta forma podemos ejecutar un sistema operativo que queramos probar, por ejemplo, GNU/Linux, desde nuestro sistema operativo habitual sin necesidad de instalarlo directamente en nuestro ordenador y sin miedo a que se desconfigure el sistema operativo primario. 69 7. MÁQUINAS VIRTUALES. VENTAJAS E INCONVENIENTES: VENTAJAS INCONVENIENTES La flexibilidad que ofrecen Agregan gran complejidad al compensa la pérdida de eficiencia. sistema en tiempo de ejecución. Ralentización del sistema (el programa no alcanzará la misma velocidad de ejecución que si se instalase directamente en el sistema operativo ‘anfitrión’ o sobre la plataforma de hardware). 70 7. MÁQUINAS VIRTUALES. TIPOS: Permiten ejecutar en una máquina física diferentes máquinas virtuales. DE SISTEMA Cada una de estas máquinas puede tener un sistema operativo. Ejemplos: VirtualBox, VMware, etc. 71 7. MÁQUINAS VIRTUALES. TIPOS: Se ejecuta como un proceso normal dentro de un sistema operativo y soporta un único proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene cuando éste finaliza. DE PROCESO (máquina virtual de Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma hardware aplicación) y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma. Ejemplo: máquina virtual de Java. 72 7. MÁQUINAS VIRTUALES. LA MÁQUINA VIRTUAL DE JAVA Cuando se trabaja con lenguajes de programación compilados, el código objeto obtenido no es válido para cualquier ordenador, si se ha obtenido para una plataforma Windows no podrá ejecutarse en una plataforma Macintosh. Esto supone volver a compilar los programas cuando queremos cambiar la plataforma. La novedad introducida por Java fue que los programas escritos en este lenguaje son independientes del hardware y del sistema operativo en que se ejecutaba. Esto es posible porque se instala una máquina virtual de proceso, denominada Java Virtual Machine o JVM, apropiada para el sistema operativo que estemos utilizando, de manera que los pasos a realizar para ejecutar un programa en Java serían los siguientes: 73 7. MÁQUINAS VIRTUALES. LA MÁQUINA VIRTUAL DE JAVA Escribir el programa fuente en Java. Compilar el programa fuente y obtener el programa escrito en un código intermedio llamado “bycode”. Ejecutar el programa compilado en cualquier máquina que tenga instalado un sistema operativo y la máquina virtual de Java apropiada para dicho sistema operativo. La máquina virtual de Java es la que interpreta el programa escrito en bycode. 74 7. MÁQUINAS VIRTUALES. LA MÁQUINA VIRTUAL DE JAVA 75 7. MÁQUINAS VIRTUALES. LA MÁQUINA VIRTUAL DE JAVA De esta manera un programa escrito en Java puede ejecutarse en una máquina con el sistema operativo Unix, Windows, Linux o cualquier otro, porque en realidad no va a ejecutarse en ninguno de los sistemas operativos, sino en su propia máquina virtual que se instala cuando se instala Java. El precio a pagar o desventaja de este esquema es que todo ordenador que quiera correr una aplicación Java ha de tener instalado Java con su máquina virtual. Una de las razones del éxito de Java es que permite escribir y compilar un programa una sola vez y ejecutar el código obtenido en cualquier plataforma. Debemos tener claro que los productos independientes de la plataforma son las aplicaciones que escribimos con Java, pero la máquina virtual de Java es diferente para cada plataforma. 76 7. MÁQUINAS VIRTUALES. UTILIDAD DE LAS MÁQUINAS VIRTUALES Con las máquinas virtuales podemos tener varios sistemas operativos sin necesidad de crear particiones o tener más discos duros, esto nos permitirá poder tener sistemas operativos para pruebas. Por ejemplo, si sale una versión beta (versión de prueba) y no queremos instalarla en nuestro sistema operativo de trabajo, tendremos la oportunidad de probar dichos programas sin que afecte a nuestro equipo. 77