Download Tema 1 Entornos de Desarrollo

Document related concepts

Haxe wikipedia , lookup

Programación funcional wikipedia , lookup

Racket (lenguaje de programación) wikipedia , lookup

Clojure wikipedia , lookup

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