Apuntes DAM
Tema 1 de 7ED · 1º DAM/DAW

Entornos de Desarrollo

Desarrollo de Software

Descubre los conceptos básicos del desarrollo de software, incluyendo metodologías y mejores prácticas.

20 min lecturaPrincipianteRevisado el

Que es el Software?

El software es el conjunto de programas, aplicaciones, instrucciones y datos que permiten a un sistema informático realizar tareas concretas. A diferencia del hardware, el software no es físico, sino lógico, y es el encargado de indicar al hardware cómo debe funcionar.

Incluye desde sistemas operativos y aplicaciones hasta herramientas de desarrollo y servicios que hacen posible el uso y aprovechamiento de los dispositivos informáticos.

El software se puede clasificar en varios tipos según su función y el uso que se le da dentro de un sistema informático. Comprender esta clasificación es fundamental para entender cómo se estructura la informática y cómo se construyen las aplicaciones que utilizamos en el día a día.

Sabías que?

El término software fue utilizado por primera vez en 1958 por el estadístico John W. Tukey. En ese momento sirvió para diferenciar los programas y las instrucciones de los componentes físicos del ordenador, sentando las bases del concepto de informática moderna.


Tipos de Software

1. Software de Sistema

Este tipo de software tiene como objetivo principal permitir que el hardware del ordenador funcione correctamente y que otros programas puedan ejecutarse.
Es la capa intermedia entre el usuario, las aplicaciones y la máquina. Aquí encontramos los sistemas operativos (como Windows, Linux o macOS), los controladores de dispositivo que permiten usar impresoras, tarjetas gráficas o discos externos, y las herramientas del sistema (antivirus, compresores de archivos y programas de copia de seguridad). Sin el software de sistema, el resto de programas no podrían ejecutarse.


2. Software de Aplicación

El software de aplicación está diseñado para que el usuario realice tareas específicas.
Puede ir desde programas de ofimática (procesadores de texto y hojas de cálculo) hasta navegadores web, reproductores multimedia o videojuegos. Es el software más cercano al usuario, ya que responde directamente a sus necesidades. Un aspecto importante es que el software de aplicación depende del sistema operativo para funcionar, puesto que se apoya en él para acceder al hardware.


3. Software de Desarrollo

Este tipo de software está orientado a desarrolladores y programadores. Proporciona las herramientas necesarias para crear otros programas, desde el código fuente hasta su ejecución final.
Incluye editores de texto especializados, compiladores e intérpretes,entornos de desarrollo integrados (IDE) y depuradores. Gracias a este software, los programadores pueden escribir, probar y mantener el código de las aplicaciones y sistemas.

Best Practice

Comprende los distintos tipos de software (de sistema, de aplicación y de desarrollo). Saber para qué sirve cada uno te ayudará a elegir las herramientas adecuadas, resolver problemas con mayor rapidez y entender mejor cómo funcionan las aplicaciones que utilizas y desarrollas.


Relación Hardware-Software

El software es el conjunto de programas, instrucciones y datos que permiten a un ordenador realizar tareas. Estos programas se ejecutan sobre el hardware, que es la parte física del ordenador.
Para que el software funcione, intervienen varios componentes básicos del hardware:

  • CPU - ejecuta las instrucciones de los programas realizando operaciones simples (aritméticas y lógicas).
  • Memoria RAM - almacena temporalmente los datos y programas que se están ejecutando en el sistema.
  • Unidades de entrada y salida - permiten la comunicación entre el ordenador y el exterior mediante periféricos.
  • Disco duro - guarda de forma permanente los programas y los datos.

ComponenteFunción principalEjemplos
SoftwareProgramas e instrucciones que indican al ordenador qué hacerSistema operativo, aplicaciones
CPUEjecuta las instrucciones de los programasRealiza sumas, comparaciones, operaciones lógicas
RAMAlmacena temporalmente programas y datos en usoProgramas abiertos, datos en ejecución
EntradaIntroduce datos en el ordenadorTeclado, ratón
SalidaMuestra información al usuarioPantalla, impresora
Entrada/SalidaEnvía y recibe informaciónTarjeta de red, módem
Disco duroAlmacena de forma permanente los programas y los datosArchivos, programas instalados


Lenguajes de Programación

Las instrucciones de los programas que ha de ejecutar el ordenador para resolver un problema deben estar escritas en el lenguaje que comprenda el ordenador: el lenguaje binario (ceros y unos). Sin embargo, sería muy complicado para un programador escribir programas únicamente en binario.

Para facilitar la creación de programas complejos, se utilizan los lenguajes de programación de alto nivel, más cercanos al lenguaje natural. Los lenguajes de programación se pueden clasificar según su cercanía al lenguaje máquina.

Definición

Un lenguaje de programación es una notación para escribir programas que permiten comunicarse con el hardware y ejecutar tareas. Está definido por una gramática y utiliza un conjunto de símbolos.

Elementos básicos de los lenguajes de programación

  • Identificadores: nombres simbólicos para variables, tipos, módulos, etc.
  • Constantes: datos que no cambian durante la ejecución del programa.
  • Operadores: símbolos que representan operaciones entre variables y constantes.
  • Instrucciones: símbolos que representan estructuras de procesamiento y definición.
  • Comentarios: texto para documentar los programas.

Clasificación según cercanía al hardware

  • Identificadores: nombres simbólicos para variables, tipos, módulos, etc.
  • Constantes: datos que no cambian durante la ejecución del programa.
  • Operadores: símbolos que representan operaciones entre variables y constantes.
  • Instrucciones: símbolos que representan estructuras de procesamiento y definición.
  • Comentarios: texto para documentar los programas.

Clasificación según cercanía al hardware

  • Lenguajes de bajo nivel o lenguaje máquina: único lenguaje que entiende directamente la máquina. Utiliza 0 y 1. Cada instrucción se corresponde con una dirección de memoria y el programador debe asignar cada dato manualmente.
    machine-code
    1// Ejemplo simple en lenguaje máquina
    210110000 01100001  // Instrucción que mueve un valor a un registro
    311000011           // Salto a otra dirección
  • Lenguajes intermedios o ensambladores: sustituyen códigos numéricos por representaciones simbólicas. Cada instrucción del ensamblador corresponde a una del lenguaje máquina. Se traducen a lenguaje máquina mediante un ensamblador.
    assembly
    1; Ejemplo en lenguaje ensamblador
    2MOV AL, 61h   ; Mueve el valor 0x61 al registro AL
    3JMP 0x03      ; Salta a la dirección 0x03
    Código en Ensamblador
  • Lenguajes de alto nivel: liberan al programador de tareas complejas. Se parecen al lenguaje natural y ofrecen abstracción, facilidad de corrección, instrucciones potentes y estructuras de datos complejas.
    • Instrucciones con caracteres alfanuméricos y especiales.
    • Variables y estructuras de datos complejas.
    • Líneas de comentarios.
    • Instrucciones aritméticas, lógicas, y de tratamiento de caracteres.
    • Menor tiempo de codificación y depuración.
    • Curva de aprendizaje más corta.
    HelloWorld.java
    1// Ejemplo en Java (alto nivel)
    2public class HelloWorld {
    3    public static void main(String[] args) {
    4        System.out.println("Hola, mundo!");
    5    }
    6}
    hello.py
    1# Ejemplo en Python (alto nivel)
    2def main():
    3    print("Hola, mundo!")
    4
    5if __name__ == "__main__":
    6    main()

    Inconvenientes de los lenguajes de alto nivel

    No se ejecutan directamente, requieren traducción y ocupan más memoria debido al traductor y al programa resultante.

Mira este video introductorio que explica los diferentes tipos de lenguajes de programación, sus características y ejemplos prácticos.

Fundamentos de Programación - LENGUAJES DE ALTO, BAJO NIVEL Y COMPILACION - (video 6) — INFORMATICONFIG


Del código fuente al código máquina

Las instrucciones que ejecutan los ordenadores para resolver un problema deben estar escritas en el lenguaje que estos comprenden: el lenguaje binario. Sin embargo, programar directamente en binario es una tarea muy compleja y tediosa.

Por este motivo, actualmente se utilizan lenguajes de programación de alto nivel, que resultan mucho más fáciles de leer, escribir y mantener por parte de las personas que programan.

Como el ordenador no comprende estos lenguajes directamente, es necesario un proceso de traducción que transforme el programa escrito en un lenguaje de alto nivel en otro escrito en lenguaje máquina. En este proceso aparecen los conceptos de código fuente, código objeto y código ejecutable.

Idea clave

Todo programa escrito en un lenguaje de alto nivel debe ser traducido antes de poder ejecutarse en un ordenador.

Tipos de código

ciclo-del-programa
1Código fuente
2- Escrito directamente por el programador
3- Utiliza un lenguaje de alto nivel (Java, C, Python...)
4
5Código objeto
6- Resultado del proceso de traducción
7- No es legible para las personas
8- Puede no ser ejecutable todavía
9
10Código ejecutable
11- Listo para ser ejecutado por el ordenador
12- Puede ejecutarse tantas veces como se desee

El ordenador no puede ejecutar directamente el código fuente, por lo que este debe transformarse en código objeto y, finalmente, en código ejecutable.

Traductores de código

Según cómo se realice el proceso de traducción del código fuente a código objeto, existen dos tipos principales de traductores:

Compiladores

Los compiladores realizan la traducción de forma global, es decir, analizan todo el programa en un único proceso. Si el programa contiene errores, no se generará el código objeto y se mostrarán mensajes de error para facilitar su corrección.

  • Analizan el programa completo
  • Generan código objeto que se almacena
  • El programa puede ejecutarse varias veces sin recompilar

Ventaja de la compilación

Una vez compilado correctamente, el programa no necesita volver a traducirse cada vez que se ejecuta.

Intérpretes

Los intérpretes combinan el proceso de traducción y ejecución. Analizan el programa por partes, generan el código objeto correspondiente y lo ejecutan inmediatamente.

  • Traducción y ejecución simultáneas
  • No generan código objeto permanente
  • Cada fragmento se almacena solo de forma temporal

Limitación de los intérpretes

Los programas interpretados suelen ser más lentos, ya que el proceso de traducción se repite cada vez que se ejecutan.

El caso del lenguaje Java

En Java se combinan la compilación y la interpretación. En primer lugar, el programa se compila y se genera un formato intermedio llamado bytecode.

Este bytecode es interpretado posteriormente por la Máquina Virtual de Java (JVM), lo que permite ejecutar el mismo programa en distintos sistemas operativos.

proceso-java
1Código fuente Java (.java)
2        ↓ Compilación
3Bytecode (.class)
4        ↓ Interpretación
5Máquina Virtual de Java (JVM)
6        ↓
7Ejecución del programa

Portabilidad de Java

Un programa Java puede ejecutarse en diferentes sistemas operativos sin necesidad de recompilarlo, siempre que exista una JVM compatible.

Herramientas de desarrollo

Para realizar todo el proceso, desde la escritura del código fuente hasta la ejecución del programa, se necesitan diversas herramientas:

  • Editores de texto o herramientas de programación
  • Compiladores o intérpretes
  • Enlazadores, cuando el código objeto no es ejecutable directamente

En la actualidad, en lugar de usar estas herramientas por separado, se suele trabajar con un Entorno de Desarrollo Integrado (IDE).

Ventaja de los IDE

Los IDE integran en una sola aplicación editores, compiladores, depuradores y otras herramientas, facilitando el trabajo y aumentando la productividad.


Ciclo de vida del software

Para la obtención de un software es necesario completar una serie de fases, en cada una de las cuales se realizan tareas concretas. A este conjunto de fases se le denomina ciclo de vida del software.

ciclo-de-vida
1Análisis
2   ↓
3Diseño
4   ↓
5Programación
6   ↓
7Pruebas
8   ↓
9Explotación
10   ↓
11Mantenimiento

Idea clave

Cada fase del ciclo de vida se apoya en la anterior y es fundamental para garantizar la calidad del software final.

Fase de análisis

El objetivo de la fase de análisises estudiar las necesidades de los usuarios del software para determinar qué debe hacer la aplicación.

Durante esta fase se realiza una comunicación inicial con el cliente que ha encargado el desarrollo, con el fin de recopilar toda la información necesaria.

Preguntas clave del análisis

  • ¿Qué información debe procesar el sistema?
  • ¿Qué funciones debe realizar?
  • ¿Qué nivel de rendimiento se espera?
  • ¿Qué interfaces debe tener?
  • ¿Qué restricciones de diseño existen?
  • ¿Qué criterios permiten validar que el sistema es correcto?

Resultado del análisis

Se obtiene una especificación del sistema: una documentación que describe qué debe hacer el software, pero no cómo debe hacerlo.

Fase de diseño

Una vez definido qué debe hacer el sistema, en la fase de diseño se decide cómo se va a resolver el problema.

En esta etapa se traducen los requisitos del análisis en componentes de software concretos.

  • Diseño de bases de datos (tablas, relaciones, campos)
  • Programas, funciones o procedimientos
  • Clases con atributos y métodos
  • Interfaz de usuario

También se toman decisiones técnicas importantes, como el sistema gestor de bases de datos a utilizar (MySQL, Oracle, SQL Server, etc.).

Relación con el análisis

El diseño es un refinamiento de la fase de análisis: transforma los requisitos en una solución técnica concreta.

Fase de programación

En la fase de programación se traducen los resultados del diseño a un lenguaje que la máquina pueda entender.

Se escribe el código fuente de cada componente del sistema utilizando un lenguaje de programación determinado.

Resultado de la programación

El resultado de esta fase es el código ejecutable del software.

Fase de pruebas

La fase de pruebas permite comprobar que la aplicación funciona correctamente y cumple los requisitos del cliente.

  • Pruebas unitarias: se prueba cada componente por separado
  • Pruebas de integración: se combinan los componentes progresivamente
  • Pruebas del sistema completo

Importancia de las pruebas

Detectar errores en fases tempranas reduce el coste y el tiempo de desarrollo del software.

Explotación y mantenimiento

Explotación

En esta etapa se realiza la instalación y puesta en marcha del software en el entorno de trabajo del cliente.

Mantenimiento

Tras su entrega, el software suele sufrir modificaciones por corrección de errores, mejoras o cambios en las necesidades del cliente.

El mantenimiento consiste en aplicar nuevamente las fases del ciclo de vida sobre el software ya existente.

Dato importante

La fase de mantenimiento suele ser la más larga y costosa del ciclo de vida del software.

Mira este video que explica las fases del ciclo de vida del software.

Fundamentos de Programación -DESARROLLO DE SOFTWARE - (video 7) — INFORMATICONFIG


Modelos de ciclo de vida del software

Un ciclo de vida del software determina el orden en el que se deben llevar a cabo las tareas en el proceso de desarrollo de software, así como los criterios que deben cumplirse para poder pasar de una tarea a la siguiente.

Estos criterios consisten, por un lado, en la obtención de una serie de productos intermedios y, por otro, en indicar las características que deben cumplir dichos productos para poder avanzar a la fase posterior.

Por ejemplo, como resultado de la tarea de análisis se debe obtener una ERS (Especificación de Requisitos del Software), y se pueden establecer las condiciones que debe cumplir dicha especificación para permitir el paso a la fase de diseño.

Importancia del ciclo de vida

La selección del modelo de ciclo de vida para un proyecto es una tarea muy relevante, ya que puede influir de manera decisiva en el éxito o fracaso del desarrollo del software.

Modelo en cascada

El modelo en cascada, también denominado ciclo de vida clásico, fue el primer modelo que surgió y ha resultado fundamental para el desarrollo posterior de otros modelos.

En este modelo se identifican prácticamente todas las clases de actividades que intervienen en el desarrollo y explotación del software.

Se propone un enfoque sistemático y secuencial para el desarrollo de software, comenzando con el análisis y continuando con el diseño, la programación y las pruebas, hasta llegar al software terminado, sobre el cual también se pueden aplicar operaciones de mantenimiento.

flujo-cascada
1Análisis
2↓
3Diseño
4↓
5Programación
6↓
7Pruebas
8↓
9Explotación
10↓
11Mantenimiento

El modelo plantea un flujo secuencial de actividades, y para pasar de una fase a la siguiente es necesario cumplir ciertos objetivos. Al finalizar cada fase se realiza un análisis de la documentación generada con el fin de comprobar que está exenta de errores.

No obstante, si en una fase se detecta un error cometido en una etapa anterior, será necesario volver atrás para corregirlo antes de poder continuar con el desarrollo.

Ejemplo de retroceso

Si durante la fase de mantenimiento se detecta un error de diseño, será necesario corregir dicho diseño y repetir las fases posteriores de programación y pruebas.

El modelo en cascada es fácil de entender, planificar y seguir, y cuenta con herramientas que lo apoyan. Sin embargo, en la práctica rara vez se cumple estrictamente su flujo secuencial.

Detectar errores en fases tardías resulta muy costoso, ya que obliga a rehacer etapas anteriores. Además, el cliente debe esperar hasta el final del proceso para disponer de una versión funcional del software, con el riesgo de descubrir errores graves demasiado tarde.

Limitación principal

Debido a la necesidad actual de adaptarse a cambios frecuentes, el modelo en cascada suele ser inadecuado, salvo en proyectos con requisitos muy estables y bien definidos desde el inicio.
Modelo en CASCADA | Modelo de desarrollo de Software — Gerald José Avalos Severiche

Modelos de proceso incremental

Uno de los principales inconvenientes del modelo en cascada es que el cliente no dispone de una versión funcional del sistema hasta una fase muy avanzada del desarrollo.

Los modelos de proceso incrementalproponen proporcionar al cliente funcionalidades parciales del software mediante una serie de entregas sucesivas, denominadas incrementos.

Para la elaboración de cada incremento se siguen las actividades propias del modelo en cascada: análisis, diseño, programación y pruebas.

incrementos
1Incremento 1 → Funcionalidad básica
2Incremento 2 → Nuevas funciones
3Incremento 3 → Ampliaciones
4Incremento n → Sistema completo

Este enfoque permite reducir riesgos asociados a retrasos, cambios y problemas de aceptación del sistema, ya que el cliente puede evaluar el software de forma progresiva.

Cuándo es recomendable

Es especialmente adecuado cuando los requisitos no están completamente definidos desde el inicio y se espera que evolucionen durante el desarrollo.
Modelos de ciclo de vida: Desarrollo incremental — Practitioner Lab

Modelos de proceso evolutivo

Los modelos de proceso evolutivo parten de la idea de que el software cambia con el tiempo, ya que los requisitos evolucionan durante el propio desarrollo.

No resulta realista seguir una trayectoria lineal hacia el producto final, por lo que estos modelos son iterativos y generan versiones cada vez más completas del software.

Construcción de prototipos

La construcción de prototipos consiste en desarrollar sistemas auxiliares que permiten probar experimentalmente soluciones parciales a los requerimientos del usuario.

Los prototipos pueden centrarse en la interacción hombre-máquina, en subconjuntos de la funcionalidad o en aspectos técnicos concretos, como la eficiencia de un algoritmo o la compatibilidad con un sistema.

El proceso de prototipado es iterativo e incluye comunicación con el cliente, diseño rápido, construcción del prototipo y evaluación, repitiéndose el ciclo hasta obtener una versión adecuada.

prototipado
1Comunicación
2↓
3Diseño rápido
4↓
5Construcción
6↓
7Evaluación
8↓
9Refinamiento

Modelo en espiral

El modelo en espiral es un modelo evolutivo que combina las mejores características del modelo en cascada y del prototipado, incorporando el análisis de riesgos.

El desarrollo se organiza en ciclos iterativos o vueltas alrededor de una espiral. En las primeras iteraciones se pueden generar prototipos, mientras que en las posteriores se obtienen versiones más completas del sistema.

espiral
1Planificación
2↓
3Análisis de riesgos
4↓
5Ingeniería
6↓
7Evaluación
8↓
9Nueva iteración

La principal ventaja de este modelo es que permite identificar y gestionar riesgos de forma temprana. Sin embargo, requiere una gran experiencia en análisis de riesgos.

Riesgo del modelo

Si no se detecta un riesgo importante a tiempo, el proyecto puede verse seriamente comprometido.
Modelos de ciclo de vida: Desarrollo evolutivo — Practitioner Lab


Metodologías Ágiles de Producción

Una metodología ágil es una forma de organizar y trabajar en proyectos de software (y también en otros ámbitos) que busca ser rápida, flexible y cercana al cliente. Su principal ventaja es la facilidad para incorporar cambios durante el desarrollo con menor coste, especialmente si se detectan pronto.

En lugar de planificar todo al detalle durante meses, se trabaja en pequeñas partes del proyecto llamadas iteraciones o sprints. Cada iteración entrega una versión funcional del software, aunque simple, que se mejora progresivamente con la retroalimentación del cliente.

  • Las personas y la comunicación son más importantes que los procesos rígidos.
  • Lo más valioso es tener software funcionando, no documentos largos.
  • El cliente participa y colabora constantemente.
  • Los planes pueden cambiar, y el equipo debe adaptarse rápido.

12 Principios de Agilidad

La Alianza Ágil ha establecido doce principios que definen la filosofía del desarrollo ágil. Puedes ver el Agile Manifesto oficial.
  1. La máxima prioridad es satisfacer al cliente mediante la entrega rápida y continua de software valioso.
  2. Los requisitos cambiantes son bienvenidos incluso en etapas avanzadas del desarrollo.
  3. Entregas frecuentes de software funcional, preferiblemente cada 2 semanas a 2 meses.
  4. Responsables del negocio y del desarrollo trabajan conjuntamente a diario durante todo el proyecto.
  5. Los proyectos son desarrollados por individuos motivados con el entorno y apoyo adecuados.
  6. La comunicación cara a cara es el método más eficaz y eficiente.
  7. El software que funciona es la principal medida del progreso.
  8. Los procesos ágiles fomentan un desarrollo sostenible a ritmo constante.
  9. La atención continua a la excelencia técnica y al buen diseño mejora la agilidad.
  10. La simplicidad es esencial: maximizar la cantidad de trabajo no realizado.
  11. Las mejores arquitecturas, requisitos y diseños surgen de equipos autoorganizados.
  12. El equipo reflexiona regularmente para mejorar eficacia y ajustar su comportamiento.

XP (Programación Extrema)

Los cinco valores originales de la programación extrema son Simplicidad, Comunicación, Retroalimentación, Valentía y Respeto:

  • Simplicidad: Diseñar solo lo necesario y refactorizar posteriormente para mejorar diseño o mantenimiento.
  • Comunicación: Mantener comunicación cercana e informal con el cliente y evitar documentos voluminosos.
  • Retroalimentación: Incrementos de software frecuentes, pruebas constantes y retroalimentación continua del cliente.
  • Valentía: Seguir las prácticas XP sin temer al cambio ni diseñar para requisitos futuros innecesarios.
  • Respeto: Cumplir los cuatro principios anteriores fomentando respeto entre miembros del equipo y demás participantes.

XP utiliza la orientación a objetos como paradigma preferido y organiza el desarrollo en cuatro actividades principales:

  • Planificación: Se crean historias de usuario escritas por el cliente, se asignan prioridades y estimaciones de tiempo. Historias más largas de tres semanas se dividen en otras más pequeñas. El equipo y el cliente deciden qué historias se incluirán en el siguiente incremento.
  • Diseño: Diseño sencillo, creación de prototipos si hay dificultades, y refactorización para mejorar legibilidad y mantenimiento sin cambiar el comportamiento.
  • Codificación: Programación por parejas, desarrollo guiado por pruebas unitarias, integración continua y revisión constante del código.
  • Pruebas: Unitarias, integración y validación continua, más pruebas de aceptación especificadas por el cliente.

Ejemplo Práctico de XP

Imagina que el cliente quiere una aplicación para gestionar pedidos de un restaurante.
- Planificación: Se crean historias como "Registrar un nuevo pedido" y "Ver pedidos pendientes".
- Diseño: Se dibuja un prototipo simple de la interfaz y se decide el diseño mínimo.
- Codificación: Un par de programadores implementa la funcionalidad de "Registrar pedido" mientras el otro verifica pruebas unitarias.
- Pruebas: Se ejecutan pruebas automáticas y el cliente revisa el resultado, dando retroalimentación para mejorar la siguiente iteración.

What is Extreme Programming (XP)? Agile Software Development Explained — PM Aspirant

Scrum

Scrum es un modelo ágil nacido en los años 90, cuyo objetivo es entregar valor al cliente en cortos periodos de tiempo. Se basa en tres pilares:

  • Transparencia: Todos conocen el estado del proyecto en todo momento.
  • Inspección: Evaluación constante del progreso por el equipo.
  • Adaptación: Ajustes rápidos ante cambios para alcanzar objetivos.

Actividades estructurales: requerimientos, análisis, diseño, evolución y entrega. Cada actividad se divide en sprints, periodos de tiempo que permiten entregar valor al cliente (máx. 1 mes, recomendable 2 semanas).

Eventos clave dentro de cada sprint:

  • Sprint Planning: Planificación de tareas y objetivos del sprint.
  • Daily Scrum: Reunión diaria de máximo 15 minutos para revisar progreso y problemas.
  • Sprint Review: Entrega y demostración del producto al cliente, con retroalimentación.
  • Retrospectiva: Evaluación del sprint y propuestas de mejora para el siguiente.

Ejemplo Práctico de Scrum

Siguiendo con el ejemplo del restaurante: - El equipo define un sprint de dos semanas para implementar "Registrar pedidos" y "Ver pedidos pendientes".
- Sprint Planning: Se acuerdan las tareas y prioridades.
- Daily Scrum: Cada día el equipo indica qué hizo, qué hará y posibles problemas.
- Sprint Review: Se entrega al cliente un prototipo funcional para recibir feedback.
- Retrospectiva: El equipo analiza qué funcionó y qué se puede mejorar para el siguiente sprint.

Introduction to Scrum - 7 Minutes — Uzility

Ejercicios Prácticos

Ejercicio Práctico
Fácil

Clasifica el software

Indica si cada uno de estos programas es software de sistema, de programación o de aplicación: 1. Windows 11 2. IntelliJ IDEA 3. Microsoft Excel 4. El compilador javac 5. El driver de una tarjeta gráfica 6. Spotify

Ejercicio Práctico
Medio

Compilado, interpretado o ambos

Explica cómo se traduce a código máquina un programa escrito en cada lenguaje y qué ventaja principal tiene cada enfoque: 1. C 2. Python 3. Java Pista: piensa en qué ocurre antes de ejecutar el programa y qué ocurre durante la ejecución.

Ejercicio Práctico
Medio

Fases del ciclo de vida

Un instituto encarga una aplicación para gestionar las faltas de asistencia. Indica en qué fase del ciclo de vida se realiza cada tarea: 1. Reunirse con jefatura de estudios para saber qué datos se deben registrar 2. Escribir las clases Java que guardan las faltas en la base de datos 3. Dibujar el diagrama de clases y el modelo de la base de datos 4. Comprobar que al registrar 3 faltas se envía un aviso a la familia 5. Añadir, un año después, la opción de justificar faltas desde el móvil 6. Instalar la aplicación en el servidor del centro y formar al profesorado

Ejercicio Práctico
Difícil

Elige el modelo de ciclo de vida

Justifica qué modelo o metodología (cascada, incremental, prototipos, espiral o Scrum) usarías en cada caso: 1. Software de control de un marcapasos, con requisitos cerrados y normativa muy estricta 2. Una startup que quiere lanzar su app cuanto antes y cambiarla según la opinión de los usuarios 3. Un cliente que no sabe explicar bien cómo quiere la interfaz de su tienda online 4. Un sistema bancario grande y con muchos riesgos técnicos que hay que analizar en cada etapa

¿Has encontrado un error, algo desactualizado o una explicación que no se entiende? Avísanos y lo corregimos.

¿Has terminado este tema?

Crea una cuenta gratis para guardar qué temas has terminado, subir de nivel y ganar medallas.

Guardar mi progreso