Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSara Franco Vidal Modificado hace 6 años
1
UT1. Herramientas de desarrollo de programas informáticos
Entornos de Desarrollo CFGS DAM
2
EL CONCEPTO DE PROGRAMA
4
• El funcionamiento de un ordenador consiste en:
¿Qué es un programa? • Programa: – Un conjunto de instrucciones que son almacenadas secuencialmente en posiciones o direcciones de sucesivas de memoria y que serán ejecutadas una detrás de otras • El funcionamiento de un ordenador consiste en: Extraer instrucciones de la memoria principal Interpretar las instrucciones Extraer de memoria los datos usados por la operación Enviarlos a la ALU Almacenar el resultado en memoria –
5
¿Qué es un programa? • A tener en cuenta
– ¿Funcionan los programas de un sobremesa HP en un portátil Asus? – ¿Funcionan los programas de Linux sobre Windows? – ¿Se pueden ejecutar los programas de un PC (Linux) en un Smartphone (Android=Linux)?
6
¿Cómo funciona un programa?
7
Relacción Hardware-Software
• El sistema operativo es el encargado de coordinar al hardware. Las aplicaciones necesitan: – Tiempo de CPU – Espacio en memoria RAM – Acceso a disco – Acceso a los dispositivos de E/S
8
LENGUAJES DE PROGRAMACIÓN
9
• Lenguaje máquina – Sus instrucciones son combinaciones de unos y
ceros. – Es el único lenguaje que entiende directamente el ordenador. (No necesita traducción). – Fue el primer lenguaje utilizado. – Es único para cada arquitectura de procesador. I.E. no es portable de una arquitectura a otra. EJ. ARM vs x86 (pero sí i3 e i5) – Hoy día nadie programa en este lenguaje.
11
• Lenguaje ensamblador:
– Sustituyó al lenguaje máquina para facilitar la labor de programación. – En lugar de unos y ceros se programa usando mnemotécnicos (instrucciones complejas). – Necesita traducción al lenguaje máquina para poder ejecutarse. – Sus instrucciones son sentencias que hacen referencia a la ubicación en memoria. – Es difícil de utilizar.
12
.data .space 160 .text addi lw two elements theArray: main: li $t6,
4 # Sets t6 to 1 t7 to 4 sw $t6, theArray($0) theArray($t7) # Sets the first term to 1 the second term to 1 li $t0, 8 # Sets t0 to 8 loop: addi lw $t3, $t4, $t1, $t2, $t0, -8 $t0, -4 theArray($t3) theArray($t4) # Gets the last two elements add $t5, $t1, $t2 # Adds them together... sw addi blt $t5, $t0, theArray($t0) $t0, 4 160, loop # ...and stores the result Moves to next "element" of theArray If not past the end of theArray, repeat jr $ra
13
• Lenguaje de alto nivel:
– Sustituyeron al lenguaje ensamblador para facilitar más la labor de programación – En lugar de mnemotécnicos, se utilizan sentencias y órdenes derivadas (generalmente) del idioma inglés – Necesita traducción al lenguaje máquina – Son más cercanos al razonamiento humano
14
public class DSCOrdenDeVariables
{ void DetectaOrden(int a,int b,int c) { if (a<b && b<c) System.out.println(“Orden CRECIENTE"); else if (a>b && b>c) System.out.println(“Orden DECRECIENTE"); else System.out.println("DESORDEN"); }
15
Capacidad de abstracción
• • El ser humano posee una capacidad innata denominada “capacidad de abstracción”, la cual nos permite construir modelos o esquemas mentales “cuasi tangibles” a partir de simples símbolos o conceptos. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?"
16
Nivel de abstracción • Según lo cerca que esté del lenguaje humano
– Lenguajes de alto nivel (de abstracción) • Están más próximos al razonamiento humano • Son más sencillos de entender y programar • C < Java – Lenguajes de bajo nivel (de abstracción) • Están más próximos al funcionamiento interno de la computadora • Lenguaje Máquina < Lenguaje Ensamblador
17
PARADIGMAS DE PROGRAMACIÓN
18
Paradigmas de Programación
Imperativa Declarativa Funcional Orientada a objetos Estructurada Lógica Modular
19
Paradigmas de programación
• Imperativo o por procedimientos – Describe la programación en términos del estado del programa (variables) sentencias que cambian dicho estado – Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea – C, Pascal
20
Paradigmas de programación
• Programación estructurada y modular -.Es imperativa pues indica CÓMO resolver un problema – Uso de bloques de código, funciones, etc. – Todo procedimiento tiene claramente definido su principio y su final – Sólo hay tres tipos de sentencias • Sentencias secuenciales. • Sentencias selectivas (condicionales) • Sentencias repetitivas (iteraciones o bucles). – Los programas son más fáciles de entender: pueden ser leídos de forma secuencial
22
#include <stdio.h>
#include <stdlib.h> int main() { int num1, num2; int resultado; printf("Da el numero: "); scanf("%d",&num1); scanf("%d",&num2); resultado=num1+num2; printf("El resultado de la suma de %d + %d es igual a %d \n", num1,num2,resultado); return 0; }
23
Paradigmas de programación
• Orientado a Objetos – Utiliza objetos que se colaborar para realizar acciones – Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad: • El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos). • El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él. • La identidad es una propiedad de un objeto que lo diferencia del resto – Ventajas • Objetos reutilizables • Más fácil de entender (metáfora del mundo real) – Java, C++, C#, SmallTalk
24
} public class Persona { private SistemaDigestivo sd;
private boolean alimentado = false; public void come(Alimento a) { this.sd.digiere(a); boolean alimentado = true; } //cuando una persona come, el estado alimentado pasa a ser verdadero public static void main(String [] args) { Persona p = new Persona(); p.come(new Calabaza()); }
26
Paradigmas de programación
• Funcional: uso de funciones, sin manejo de estados. (valores de entrada + valores de salida) Es declarativa pues en teoría el programa no tiene ningún estado – Puros: Haskell, Erlang, F# – Mixtos: Scala, Lisp – El significado de una expresión depende únicamente del significado de sus subexpresiones, y por tanto, hay carencia total de efectos colaterales.
27
let anInt = 5 let aString = "Hello" // Perform a simple calculation and bind anIntSquared to the result. let anIntSquared = anInt * anInt let square n = n * n // Call the function to calculate the square of anInt, which has the value 5. let result = square anInt // Display the result. System.Console.WriteLine(result)
28
Paradigmas de programación
• Lógico – Basado en lógica matemática – Gira en torno al concepto de predicado (lógica de predicados) – Es un lenguaje declarativo: digo qué, no cómo – PROLOG
29
gato(tom) :- true. # Es Tom un gato? ?- gato(tom). Yes # ¿Qué cosas son gatos? ?- gato(X). X = tom
30
gato (tom) . raton (jerry). come (tom,jerry). animal (oso). animal (X) : -gato(X). animal(X):-raton(X) . animalpeligroso(X):-animal(X),(X=oso;come(X,Y)) //Un animal peligroso es un animal que es un oso o que //come a alguien //consultas: ?- animal(oso). true //respuesta ?-raton(tom). false
31
Algunos enlaces interesantes
• Índice TIOBE: • Poster timeline O’Reilly: • Timeline Wikipedia
32
COMPILADORES
33
Compiladores • Los lenguajes de programación son notaciones
que describen los cálculos a las personas y las máquinas. • Todo el software que se ejecuta en todas las computadoras se escribió en algún lenguaje de programación. • Antes de poder ejecutar un programa, primero debe traducirse a un formato en el que una computadora pueda ejecutarlo.
34
Compilador • Un compilador es un programa que
puede leer un programa en un lenguaje (el lenguaje fuente) y traducirlo en un programa equivalente en otro lenguaje (el lenguaje destino) • Una función importante del compilador es reportar cualquier error en el programa fuente que detecte durante el proceso de traducción.
35
Programa compilado • El programa destino es un programa
ejecutable en lenguaje máquina • El usuario puede ejecutarlo para procesar las entradas y producir salidas (resultados)
36
Intérprete • Un intérprete es otro tipo común de procesador de
lenguaje. • En vez de producir un programa destino como una traducción, el intérprete nos da la apariencia de ejecutar directamente las operaciones especificadas en el programa de origen (fuente) con las entradas proporcionadas por el usuario • A los lenguajes se les conoce como “lenguajes interpretados” o de script
37
Máquinas virtuales • Los procesadores del lenguaje Java o .NET (C#)
combinan la compilación y la interpretación • Se les conoce como lenguajes pseudo- interpretados • Un programa fuente en Java se compilarse en un formato intermedio, llamado bytecodes. • Después, una máquina virtual lo interpreta
39
Máquinas virtuales • El beneficio es que el bytecode se puede
ejecutar en cualquier SO y máquina (que disponga de una máquina virtual de Java). • Por tanto, un programa Java funciona tanto en Linux, como en Windows, como en Mac OSX • Más lento que código máquina. Optimización: – Compiladores JIT (Just in Time): traducen el bytecode a código máquina justo antes de ejecutarlo
40
Preprocesador / Preprocessor
• Un programa fuente puede dividirse en módulos guardados en archivos separados • La tarea de recolectar todos estos ficheros la realiza el preprocesador • También se encarga de expandir fragmentos de código abreviados (Macros)
41
Ensamblador / Assembler
• El programa fuente modificado (preprocesado) alimenta al compilador • El compilador puede producir un programa en código ensamblador (en lugar de en código máquina), ya que es más fácil de producir y es más fácil su depuración • A continuación el programa ensamblador convierte el código ensamblador a código máquina
42
Librerías • Una librería es un programa ya escrito con el fin
de ser reutilizado por otro. – A diferencia de un programa ejecutable, el comportamiento que implementa una biblioteca no espera ser utilizada de forma autónoma – Librerías estáticas (enlace estático): se incluyen dentro del programa ejecutable final – Librerías dinámicas (enlace dinámico): • Únicamente se hace referencia a ellas en el ejecutable • Son compartidas por todos los programas que las usan • Son las famosas DLL de Windows
43
Enlazador / Linker • A menudo los programas extensos se
componen de partes, o bien utilizan librerías de código existentes (library) • El enlazador resuelve las direcciones de memoria externas, en donde el código en un archivo puede hacer referencia a una ubicación en otro archivo
45
Código objeto
46
Fases del compilador • Análisis léxico • Análisis sintáctico
– Se leen los caracteres y se agrupan por lexemas • Análisis sintáctico – Crea una representación de árbol que representa la estructura gramatical de la sentencia
47
Fases del compilador • Análisis semántico
– Utiliza el árbol sintáctico para comprobar la consistencia semántica del programa fuente con la definición del lenguaje – Realiza la verificación de tipos (ej. no se puede sumar una palabra y un número)
48
Fases del compilador • Generación de código intermedio • Optimización
49
¿Cuál es la diferencia entre un compilador y un intérprete?
Preguntas de repaso ¿Cuál es la diferencia entre un compilador y un intérprete? ¿Cuáles son las ventajas de (a) un compilador sobre un intérprete, y (b) las de un intérprete sobre un compilador? ¿Qué ventajas tiene un sistema de procesamiento de lenguajes en el que el compilador produce lenguaje ensamblador en lugar de lenguaje máquina? Describe las tareas que realiza el ensamblador ¿Cómo ocupa más un programa, enlazado de forma estática o dinámica? 1. 2. 3. 4. 5.
50
JAVA Y .NET
51
Java vs .NET JAVA .NET • Sun Microsistems (Oracle) • Nace en 1995
• Multi-sistema (Linux, Win, Mac OSX etc.) • Lenguaje único (se añade posteriormente Scala, …) • Bytecode • JVM: Java Virtual Machine • Historia de una copia .NET • Microsoft • Nace en 2002 • Sólo para Windows (proyecto mono = Linux) • Multilenguaje (C#, VB, C++, J#, etc.) • MSIL: MS Intermediate Lang. • CLR: Common Lang. Runtime • Historia de una copia – JSP AWT JavaFX … – ASP Windows Forms WPF …
52
Java • JRE: Java Runtime Edition • JDK: Java Development Kit
– Máquina virtual y librerías para ejecutar – Multisistema (Linux, Windows, iOS, Android…) • JDK: Java Development Kit – J2SE: versión estándar. Desarrollos comunes – J2EE: versión enterprise. Incluye funcionalidades para desarrollo en servidores
53
JRE: Java Runtime Edition
54
JDK: Java Development Kit
• Proporciona las librerías y herramientas de desarrollo necesarias – javac.exe: es el compilador de Java. – java.exe: es el intérprete de Java. – javadoc.exe: genera la documentación de las clases Java de un programa.
55
J2SE: Java (2) Standard Ed.
56
J2EE: Java (2) Enterprise Ed.
57
.NET
58
CICLO DE VIDA DEL SOFTWARE
59
Fases • ANÁLISIS DE REQUISITOS. Se especifican los requisitos funcionales y no funcionales del sistema. • DISEÑO. Se divide el sistema en partes y se determina la función de cada una. • CODIFICACIÓN. Se elige un Lenguajes de Programación y se codifican los programas. • PRUEBAS. Se prueban los programas para detectar errores y se depuran. • DOCUMENTACIÓN. De todas las etapas, se documenta y guarda toda la información. • EXPLOTACIÓN. Instalamos, configuramos y probamos la aplicación en los equipos del cliente. • MANTENIMIENTO. Se mantiene el contacto con el cliente para actualizar y modificar la aplicación el futuro.
60
Análisis • Se especifican y analizan los requisitos del sistema.
– Funcionales: Qué funciones tendrá que realizar la aplicación. Qué respuesta dará la aplicación ante todas las entradas. Cómo se comportará la aplicación en situaciones inesperadas. – No funcionales: Tiempos de respuesta del programa, legislación aplicable, tratamiento ante la simultaneidad de peticiones, etc. • Herramientas: IBM Rational Requisite PRO
61
Análisis • Documento ERS (Especificación de Requisitos Software).
– Planificación de las reuniones que van a tener lugar – Relación de los objetivos del usuario cliente y del sistema. – Relación de los requisitos funcionales y no funcionales del sistema. – Relación de objetivos prioritarios y temporización.
62
Diseño • Se crea un modelo estructural y funcional especificando
– Módulos que van a componer el software – Modelos E/R de las bases de datos – Lenguajes de programación a usar – Sistema gestor de base de datos a utilizar
63
Codificación • Es la parte en la que se escribe el código
• El programador sigue la guía de diseño (no toma decisiones al respecto) • Las características deseables de todo código son: – Modularidad: que esté dividido en trozos más pequeños. – Corrección: que haga lo que se le pide realmente. – Fácil de leer: para facilitar su desarrollo y mantenimiento futuro. – Eficiencia: que haga un buen uso de los recursos. – Portabilidad: que se pueda implementar en cualquier equipo.
64
Pruebas • Fase en la que se valida y verifica el buen
funcionamiento del código – ¿Cumple requisitos funcionales? – ¿Se ejecuta sin errores? • Se debe realizar en paralelo a la codificación – Prueba unitarias: prueban cada módulo – Pruebas de integración: todo el sistema
65
Documentación • Esta fase está referida a los manuales de usuario
• La documentación del código (comentar qué es lo que hace) se realiza AL MISMO TIEMPO que la codificación. NUNCA se debe dejar para después • Según a quién va dirigida – Técnicos: guía de instalación, requisitos, administración del sistema, solución de errores – Usuarios: guía de uso, lenguaje no técnico.
66
Explotación y Mantenimiento
• EXPLOTACIÓN: Fase en que se empieza a usar la aplicación • MANTENIMIENTO: Cambios en el software – Perfectivos: Para mejorar la funcionalidad del software. – Evolutivos: El cliente tendrá en el futuro nuevas necesidades. Por tanto, serán necesarias modificaciones, expansiones o eliminaciones de código. – Adaptativos: Modificaciones, actualizaciones... para adaptarse a nuevos requisitos (Ej. IVA). – Correctivos: Subsanar bugs.
67
MODELOS DE DESARROLLO DE
SOFTWARE
68
Modelo en Cascada • Una fase detrás de otra • No hay vuelta atrás
• No es realista, no se usa
69
Modelo en Cascada con Realimentación • De los que más se han utilizado
• Evolución del anterior • Proyectos rígidos (pocos cambios) con requisitos claros
70
Modelo Incremental • Evolutivo • Entrega de prototipos
(versiones beta) • Usuario más involucrado • Difícil calcular el coste total del desarrollo
71
Modelo en Espiral
72
Modelo en Espiral • Evolutivo
• Incorpora objetivos de calidad y gestión de riesgos • Cada ciclo se completa con una revisión que incluye todo el ciclo anterior y el plan para el siguiente
73
Técnicas de desarrollo ágil
• Métodos de ingeniería del software basados en el desarrollo iterativo e incremental • Los requisitos y soluciones evolucionan mediante la colaboración con el usuario – Programación Extrema (XP): programación por parejas. Ciclos de prototipado muy cortos (2 semanas). Centrado en cómo programar – SCRUM: Reuniones diarias (Daily Scrum). Ciclos de 1 a 4 semanas. Centrado en la planificación – Desarrollo Dirigido por Pruebas (TDD): se escriben las pruebas antes que el código del programa
74
ACTIVIDADES • Busca información sobre las tres técnicas de
desarrollo ágil vistas. Resume brevemente (a) cómo se planifican y (b) cómo recomiendan que sea la programación
75
HERRAMIENTAS DE DESARROLLO
76
Herramientas de apoyo al desarrollo de software
• Editores: permiten escribir el código. Pueden integrar características de ayuda, como resaltado, coloreado y plegado de código
77
Herramientas de apoyo al desarrollo de software
• Depuradores: permiten ejecutar el código paso a paso y examinar el estado de la máquina para detectar errores • Analizadores estáticos de código: análisis automático del código en búsqueda de bugs • Analizadores de memoria: análisis del estado de la memoria (en ejecución) para detectar sobrecargas y mala gestión
78
Herramientas de apoyo al desarrollo de software
• Analizadores de rendimiento: Análisis de la ejecución para detectar código poco eficiente • : historial de cambios con posibilidad de volver a versiones anteriores, realizar versiones alternativas, y colaboración de varios programadores • Herramientas CASE (Computer Aided Soft. Engineering): requisitos, análisis y diseño • IDE: Integrated Development Environment
79
Herramientas de apoyo al desarrollo de software
• Framework: conjunto de librerías que puede utilizar un programa. Implementan funciones que ayudan al programador – Spring: Desarrollo integral de aplicaciones empresariales (web, mensajería, etc.) – Hibernate: Acceso a bases de datos – JUnit: Pruebas unitarias de código
80
Referencias • Entornos de programación. Concepto, funciones y tipos
• Compiladores. Principios, técnicas y herramientas. Segunda edición. Alfred V. Aho. Pearson Ed.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.