Download Tema 1 Entornos de Desarrollo
Document related concepts
Transcript
Departamento de informática Entornos de desarrollo UNIDAD DIDÁCTICA 1: CONCEPTOS BÁSICOS En esta unidad el alumno conocerá los conceptos necesarios para que cualquier persona pueda adentrarse en el mundo de la programación. Sin estos conceptos, sería muy complicado el uso de un entorno de desarrollo, por lo cual se considera importante que el alumno domine este conocimiento 1. CONCEPTOS DE PROGRAMA INFORMÁTICO, APLICACIÓN INFORMÁTICA Y LENGUAJE DE PROGRAMACIÓN 2. TIPOS DE LENGUAJES DE PROGRAMACIÓN 3. CARACTERÍSTICAS DIFUNDIDOS 4. PROCESO DE OBTENCIÓN DE CÓDIGO EJECUTABLE A PARTIR DE CÓDIGO FUENTE 5. FASES DEL DESARROLLO DE UNA APLICACIÓN 6. ROLES QUE INTERACTÚAN EN EL DESARROLLO DE Desarrollo de Aplicaciones Informáticas LOS LENGUAJES MÁS 1 Departamento de informática Entornos de desarrollo 1.1 CONCEPTOS DE PROGRAMA INFORMÁTICO, APLICACIÓN INFORMÁTICA Y LENGUAJE DE PROGRAMACIÓN La definición de software o programa informático es la siguiente: el software es un conjunto de programas elaborados por el hombre, que controlan la actuación de la computadora, haciendo que ésta siga en sus acciones una serie de pasos lógicos predeterminados. El software es el nexo entre el hardware (computadora) y el hombre (usuario). La computadora, por sí sola, no puede comunicarse con el usuario y viceversa, ya que los separa la barrera del lenguaje. El software trata de eliminar esa barrera, estableciendo procedimientos de comunicación entre el hombre y la máquina; es decir, el software obra como un intermediario entre el hardware y el hombre. Existen diferentes tipos de software: software de sistema y software de aplicación Una aplicación es un tipo de programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Esto lo diferencia principalmente de otros tipos de programas (sistema) que realizan tareas más avanzadas y no pertinentes al usuario común, como los sistemas operativos (que hacen funcionar al ordenador, como Windows, Mac o Linux), 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). Las aplicaciones suelen diseñarse para la automatización de ciertas tareas complicadas o tediosas 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. De modo que una aplicación informática es un programa o consta de varios programas relacionados entre sí. Pero un programa no siempre es una aplicación, porque hay diferentes tipos de programas y los programas de aplicación son solo uno de ellos. Desarrollo de Aplicaciones Informáticas 2 Departamento de informática Entornos de desarrollo Un algoritmo es la forma de resolver un problema, los pasos a seguir para resolver un problema estándar. El algoritmo de “ir a la compra” sería: 1) Hago la lista de la compra 2) Voy a comprar 3) Guardo las cosas. Un ejemplo un poco tonto pero es para que se entienda. Veamos ahora un algoritmo universal para sistemas informáticos 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. Hay muchísimos, de toda clase de tipos y características, inventados para facilitar el abordaje de distintos problemas, el mantenimiento del software, su reutilización, mejorar la productividad, etc. 1.2 TIPOS DE LENGUAJES DE PROGRAMACIÓN Los lenguajes de programación se pueden clasificar según varios criterios. Hay que tener en cuenta también, que en la práctica, la mayoría de lenguajes no pueden ser puramente clasificados en una categoría, pues surgen incorporando ideas de otros lenguajes y de otras filosofías de programación, pero no importa al establecer las clasificaciones, pues el auténtico objetivo de las mismas es mostrar los rangos, las posibilidades y tipos de lenguajes que hay. 1. Nivel de abstracción. Desarrollo de Aplicaciones Informáticas 3 Departamento de informática Entornos de desarrollo Según el nivel de abstracción, es decir, según el grado de cercanía a la máquina: Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta las características del procesador. Cadenas interminables de secuencias de 1s y 0s que conforman operaciones que la máquina puede entender. Ejemplo: Lenguajes ensamblador. Lenguajes de nivel medio: Permiten un mayor grado de abstracción pero al mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C puede realizar operaciones lógicas y de desplazamiento con bits, tratar todos los tipos de datos como lo que son en realidad a bajo nivel (números), etc. Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando (abstrayéndose) del funcionamiento de la máquina. Ejemplos: Java, Ruby. Hay quien sólo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es considerado de alto nivel). 2. Propósito. Según el propósito, es decir, el tipo de problemas a tratar con ellos: Lenguajes de propósito general: Aptos para todo tipo de tareas: Ejemplo: C. Java. Lenguajes de propósito específico: Hechos para un objetivo muy concreto. Ejemplo: Csound (para crear ficheros de audio). Lenguajes de programación de sistemas: Diseñados para realizar sistemas operativos o drivers. Ejemplo: C. Lenguajes de script: Para realizar tareas varias de control y auxiliares. Antiguamente eran los llamados lenguajes de procesamiento por lotes (batch). Se subdividen en varias clases (de shell, de GUI, de programación web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript (programación web). 3. Evolución histórica. Con el paso del tiempo, se va incrementando el nivel de abstracción, pero en la práctica, los de una generación no terminan de sustituir a los de la anterior: Lenguajes de primera generación (1GL): Código máquina. Lenguajes de segunda generación (2GL): Lenguajes ensamblador. Lenguajes de tercera generación (3GL): La mayoría de los lenguajes modernos, diseñados para facilitar la programación a los humanos. Ejemplos: C, Java. Lenguajes de cuarta generación (4GL): Diseñados con un propósito concreto, o sea, para abordar un tipo concreto de problemas. Ejemplos: SQL, matlab, Mathematica. Lenguajes de quinta generación (5GL): La intención es que el programador establezca el problema qué ha de ser resuelto y las condiciones a reunir, y la máquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog. Desarrollo de Aplicaciones Informáticas 4 Departamento de informática Entornos de desarrollo 4. Manera de ejecutarse. Según la manera de ejecutarse: Lenguajes compilados Lenguajes interpretados También los hay mixtos, 5. Manera de abordar la tarea a realizar. Según la manera de abordar la tarea a realizar, pueden ser: Lenguajes imperativos: Indican cómo hay que hacer la tarea, es decir, expresan los pasos a realizar. Ejemplo: C. Lenguajes declarativos: Indican qué hay que hacer. Ejemplos: Lisp, Prolog. Otros ejemplos de lenguajes declarativos, pero que no son lenguajes de programación, son HTML (para describir páginas web) o SQL (para consultar bases de datos). 6. Paradigma de programación. El paradigma de programación es el estilo de programación empleado. Algunos lenguajes soportan varios paradigmas, y otros sólo uno. Lenguajes de programación estructurado: Divide el problema en partes más pequeñas, que serán realizadas por subprogramas (subrutinas, funciones, procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal. Lenguajes de programación orientada a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y se comunican con otros objetos. Ejemplos: C++, Java. Lenguajes de programación funcional: La tarea se realiza evaluando funciones, (como en Matemáticas), de manera recursiva. Ejemplo: Lisp, Scala. Lenguajes de programación lógica: La tarea a realizar se expresa empleando lógica formal matemática. Expresa qué computar. Ejemplo: Prolog. 7. Lugar de ejecución. En sistemas distribuidos, según dónde se ejecute: Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el más utilizado en servidores web. Lenguajes de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores web. 1.3 CARACTERÍSTICAS DE LOS LENGUAJES MÁS DIFUNDIDOS Desarrollo de Aplicaciones Informáticas 5 Departamento de informática Entornos de desarrollo Algunos de los lenguajes más difundidos son: BASIC, que durante mucho tiempo se ha considerado un buen lenguaje para comenzar a aprender, por su sencillez, aunque se podía tender a crear programas poco legibles. A pesar de esta "sencillez" hay versiones muy potentes, incluso para programar en entornos gráficos como Windows. COBOL, que fue muy utilizado para negocios (para crear software de gestión, que tuviese que manipular grandes cantidades de datos), aunque últimamente está bastante en desuso. FORTRAN, concebido para ingeniería, operaciones matemáticas, etc. También va quedando desplazado. Ensamblador, muy cercano al código máquina (es un lenguaje de "bajo nivel"), pero sustituye las secuencias de ceros y unos (bits) por palabras más fáciles de recordar, como MOV, ADD, CALL o JMP. C, uno de los mejor considerados actualmente (junto con C++ y Java, que mencionaremos a continuación), porque no es demasiado difícil de aprender y permite un grado de control del ordenador muy alto, combinando características de lenguajes de alto y bajo nivel. Además, es muy transportable: existe un estándar, el ANSI C, lo que asegura que se pueden convertir programas en C de un ordenador a otro o de un sistema operativo a otro con bastante menos esfuerzo que en otros lenguajes. C++, un lenguaje desarrollado a partir de C, que permite Programación Orientada a Objetos, por lo que resulta más adecuado para proyectos de una cierta envergadura. Creado por Bjarne Stroustrup. Java, desarrollado a su vez a partir de C++, que elimina algunos de sus inconvenientes, y ha alcanzado una gran difusión gracias a su empleo en Internet. PHP, es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Se usa principalmente para la interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado Desarrollo de Aplicaciones Informáticas 6 Departamento de informática Entornos de desarrollo desde una interfaz de línea de comandos o en la creación de otros tipos de programas. Python, es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional 1.4 PROCESO DE OBTENCIÓN DE CÓDIGO EJECUTABLE A PARTIR DE CÓDIGO FUENTE Se le da el nombre de código fuente a los programas escritos en un determinado lenguaje de programación y que está compuesto por instrucciones escritas por un programador. Se llama código objeto al código que resulta de la compilación del código fuente. Consiste en lenguaje máquina o bytecode y se distribuye en varios archivos que corresponden a cada código fuente compilado. Para obtener un código ejecutable se han de enlazar todos los archivos de código objeto con un programa llamado enlazador Traductores de un Lenguaje de Programación Al programador y a la máquina les cuesta hablar el mismo idioma. Por eso se inventaron los programas traductores. Los traductores son programas que traducen los programas en código fuente, escritos en lenguajes de alto nivel, a programas escritos en lenguaje máquina. L e n g u a j ed e A l t o N i v e l T r a d u c t o r C o m p i l a d o r = L e n g u a j e M á q u i n a I n t é r p r e t e Compilador Desarrollo de Aplicaciones Informáticas 7 Departamento de informática Entornos de desarrollo El programa original (fichero fuente) sólo se traduce una vez, creando un nuevo archivo (fichero ejecutable) que puede ejecutarse cuantas veces se desee. Como una parte fundamental de este proceso de traducción, el compilador le hace notar al usuario la presencia de errores en el código fuente del programa. Vea la siguiente figura. Los lenguajes C y C++ son lenguajes que utiliza un compilador. El trabajo del compilador y su función es llevar el código fuente escrito en C/C++ a un programa escrito en lenguaje máquina. Entrando en más detalle, un programa en código fuente es compilado obteniendo un archivo parcial (un objeto) que tiene extensión obj. Luego el compilador invoca al “linker” que convierte al archivo objeto en un ejecutable con extensión exe; este último archivo es un archivo en formato binario (ceros y unos) y puede funcionar por sí sólo. Intérprete El programa es traducido cada vez que se vaya a ejecutar. Los intérpretes no producen un lenguaje objetivo como en los compiladores. Un intérprete lee el código como está escrito e inmediatamente lo convierte en acciones; es decir, lo ejecuta en ese instante. Existen lenguajes que utilizan un intérprete (como por ejemplo JAVA) que traduce en el instante mismo de lectura el código en lenguaje máquina para que pueda ser ejecutado. La siguiente figura muestra el funcionamiento de un intérprete. Compilador + Intérprete Desarrollo de Aplicaciones Informáticas 8 Departamento de informática Entornos de desarrollo El programa es compilado la primera vez a un formato intermedio. El archivo resultante debe ser interpretado cada vez que desee ejecutarse. El lenguaje Java, primero pasa por una fase de compilación en la que el código fuente se transforma en “bytecode”, y este “bytecode” puede ser ejecutado luego (interpretado) en ordenadores con distintas arquitecturas (procesadores) que tengan todos instalados la misma “máquina virtual” Java. Diferencia entre compilador e intérprete Los compiladores difieren de los intérpretes en varios aspectos: Un programa que ha sido compilado puede correr por sí sólo, pues en el proceso de compilación se lo transformo en otro lenguaje (lenguaje máquina). Un intérprete traduce el programa cuando lo lee, convirtiendo el código del programa directamente en acciones. La ventaja del intérprete es que dado cualquier programa se puede interpretar en cualquier plataforma (sistema operativo). En cambio, el archivo generado por el compilador solo funciona en la plataforma en donde se le ha creado. Sin embargo, hablando de la velocidad de ejecución, un archivo compilado es más rápido que un archivo interpretado. ¿Cuánto? Investigad. Depuradores El depurador es un programa independiente del editor, el compilador y el enlazador. Suele estar integrado con los otros tres, de modo que desde el entorno de programación se puede lanzar cualquiera de los programas, pero también se puede usar por separado. El depurador es una herramienta fundamental para localizar y corregir los errores en tiempo de ejecución. 1.5 FASES DEL DESARROLLO DE UNA APLICACIÓN Desarrollo de Aplicaciones Informáticas 9 Departamento de informática Entornos de desarrollo El desarrollo de un software o de un conjunto de aplicaciones pasa por diferentes etapas desde que se produce la necesidad de crear un software hasta que se finaliza y está listo para ser usado por un usuario. Ese conjunto de etapas en el desarrollo del software responde al concepto de ciclo de vida del programa. No en todos los programas ni en todas las ocasiones el proceso de desarrollo llevará fielmente las mismas etapas en el proceso de desarrollo; no obstante, son unas directrices muy recomendadas. Hay más de un modelo de etapas de desarrollo, sin embargo vamos a estudiar uno de los modelos más extendidos y completos, el modelo en cascada Las fases o etapas son: - Análisis. Diseño. Codificación Pruebas Documentación Explotación. Mantenimiento ANÁLISIS En esta fase se establece el producto a desarrollar, siendo necesario especificar los procesos y estructuras de datos que se van a emplear. Debe existir una gran comunicación entre el cliente y el analista para poder conocer todas las necesidades que precisa la aplicación. En el caso de falta de información por parte del usuario se puede recurrir al desarrollo de prototipos para saber con más precisión sus requerimientos. Es importante que haya una comunicación bilateral, aunque el cliente puede pretender que la comunicación sea unilateral, es necesario un contraste y consenso por ambas partes para llegar a definir los requisitos verdaderos del software. Al final de esta fase tenemos que tener claro las especificaciones de la aplicación, creando un informe ERS (Especificación de Requisitos del Sistema) DISEÑO En esta fase se alcanza con mayor precisión una solución optima de la aplicación, teniendo en cuenta los recursos físicos del sistema (tipo de ordenador, periféricos, comunicaciones, etc…) y los recursos lógicos. (sistema operativo., programas de utilidad, bases de datos, etc…) Se define por lo tanto el entorno que requerirá el sistema, aunque también se puede establecer en sentido contrario, es decir, diseñar el sistema en función de los recursos de los que se dispone. En la fase de diseño se crearán los diagramas de casos de uso y de secuencia para definir la funcionalidad del sistema. Desarrollo de Aplicaciones Informáticas 10 Departamento de informática Entornos de desarrollo Se especificará también el formato de la información de entrada y salida, las estructuras de datos y la división modular. Con todo esto se obtiene el denominado cuaderno de carga. CODIFICACIÓN En las etapas anteriores se ha conseguido un análisis completo del sistema que hay que codificar y una especificación de la estructura básica que se necesita. Consiste en traducir los resultados obtenidos a un determinado lenguaje de programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de carga. No se está exento de necesitar un reanálisis o rediseño al encontrar un problema al programar el software PRUEBAS Se deben de realizar las pruebas necesarias para comprobar la calidad y estabilidad del programa. Por una parte, la codificación tiene que ser exitosa y el software no debe contener errores, y por otra parte, el software hace lo que debe hacer. En general, las pruebas las realiza, personal diferente al que codificó la aplicación, con una amplia experiencia en programación, personas capaces de saber en qué condiciones un software puede fallar de antemano sin un análisis previo. Las pruebas se pueden clasificar en: Pruebas unitarias: Sirven para comprobar que cada módulo realice bien su tarea. Pruebas de interconexión: Sirven para comprobar en el programa el buen funcionamiento en conjunto de todos sus módulos. Pruebas de integración: Sirven para comprobar el funcionamiento correcto del conjunto de programas que forman la aplicación. (el funcionamiento de todo el sistema) DOCUMENTACIÓN La documentación para el usuario debe mostrar una información completa y de calidad que ilustre mediante los recursos más adecuados como manejar la aplicación. Por otro lado, tenemos la documentación técnica, destinada a equipos de desarrollo, que explica el funcionamiento interno del programa. Se pretende con ello permitir a un equipo de desarrollo cualquiera poder entender el programa y modificarlo si fuera preciso EXPLOTACIÓN Desarrollo de Aplicaciones Informáticas 11 Departamento de informática Entornos de desarrollo En esta fase se realiza la implantación de la aplicación en el sistema o sistemas físicos donde van a funcionar habitualmente y su puesta en marcha para comprobar el buen funcionamiento. Actividades a tener en cuenta o realizar: • Instalación del/los programa/s. • Pruebas de aceptación al nuevo sistema. • Conversión de la información del antiguo sistema al nuevo (si hay una aplicación antigua) • Eliminación del sistema anterior. MANTENIMIENTO Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de solventar los posibles errores o deficiencias de la aplicación. Existe la posibilidad de que ciertas aplicaciones necesiten reiniciar el ciclo de vida. Mantenimiento correctivo: Consiste en corregir errores no detectados en pruebas anteriores y que aparezcan con el uso normal de la aplicación. Este mantenimiento puede estar incluido en la garantía o mantenimiento de la aplicación. Mantenimiento adaptativo: Consiste en modificar el programa a causa de cambio de entorno gráfico y lógico en el que estén implantados. (nuevas generaciones de ordenadores, nuevas versiones del sistema operativo, etc.) Mantenimiento perfectivo: Consiste en una mejora sustancial de la aplicación al recibir por parte de los usuarios propuestas sobre nuevas posibilidades y modificaciones de las existentes. Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida, debiendo proceder de nuevo al desarrollo de cada una de sus fases para obtener un nuevo producto. Desarrollo de Aplicaciones Informáticas 12