A.3.1 y A.3.2 · Teoría · Metodologías de desarrollo y enfoque Top-Down
Cómo se construye un programa: metodologías y enfoque Top-Down
Programación y Computación · 2º de Bachillerato · Saberes A.3.1 y A.3.2
1. Para empezar: un problema que ya conoces
Imagina que mañana empiezas a preparar un examen de un tema entero. Si te sientas y piensas «tengo que estudiar el Tema 5», probablemente no sepas por dónde empezar. Pero si lo piensas así:
- primero me estudio la teoría;
- después me aprendo las fórmulas;
- luego hago ejercicios de cada tipo;
- y al final lo repaso todo,
ya tienes un plan. Acabas de hacer, sin darte cuenta, lo que hacen los programadores con cualquier problema grande: dividirlo en partes más pequeñas. En esta lección vas a ver cómo se hace de forma ordenada.
2. A.3.1 · Metodologías de desarrollo de software
2.1 ¿Qué es una metodología?
Un programa no se escribe de golpe. Se construye siguiendo unas fases, y una metodología es la forma de organizar esas fases. Las fases son casi siempre las mismas:
| Fase | Pregunta que responde |
|---|---|
| 1. Análisis | ¿Qué hay que hacer exactamente? |
| 2. Diseño | ¿Cómo lo vamos a organizar? |
| 3. Programación | Lo construimos. |
| 4. Pruebas | ¿Funciona como debe, también cuando algo sale mal? |
| 5. Mantenimiento | ¿Qué hay que cambiar o arreglar después? |
Lo que cambia de una metodología a otra es cómo se recorren estas fases.
2.2 Un ejemplo: preparar una tarta de cumpleaños
Modo cascada. Se diseña toda la tarta, se compran todos los ingredientes, se hace entera y solo al final, cuando llegan los invitados, se prueba. Si le falta azúcar, ya no hay tiempo. Cada fase se termina del todo antes de pasar a la siguiente. Se llama cascada (waterfall) y funciona bien cuando todo está muy claro desde el principio y no va a cambiar.
Modo iterativo. Se hace primero un bizcocho pequeño, se prueba y se corrige («más dulce»); luego se le añade el relleno, se vuelve a probar; después la cobertura. En cada vuelta se pasa por análisis, diseño, hacerlo y probarlo, pero con un trozo pequeño. Se llama iterativo e incremental: cada vuelta añade algo que ya funciona. Los errores se encuentran pronto, cuando arreglarlos es barato.
| Cascada | Iterativa | |
|---|---|---|
| Cómo se trabaja | Una sola vuelta, larga | Varias vueltas cortas |
| Cuándo se ve el resultado | Al final | Desde la primera vuelta |
| Cuándo se detectan errores | Tarde | Pronto |
| Mejor cuando… | Se sabe exactamente lo que se quiere | Se va descubriendo lo que se quiere |
2.3 Metodologías ágiles
Las metodologías ágiles son formas concretas de trabajar de manera iterativa, en equipos pequeños y hablando a menudo con quien encarga el programa. Dos nombres que te sonarán en cualquier empresa:
- Scrum: se trabaja en periodos cortos llamados sprints y se acaba cada uno con algo que se puede enseñar. Hay una lista ordenada de tareas pendientes, el backlog.
- Kanban: un tablero con tres columnas: Por hacer · En curso · Hecho. Se intenta no tener muchas cosas «en curso» a la vez.
Lo importante para este curso: vamos a trabajar de forma iterativa. Haremos versiones pequeñas que funcionen y las iremos mejorando. En una lección posterior lo veremos con más detalle.
3. A.3.2 · Enfoque Top-Down: dividir un problema grande
3.1 La idea
Top-Down significa «de arriba abajo». Se empieza por el problema completo, arriba del todo, y se va dividiendo en trozos cada vez más pequeños hasta que cada trozo es tan sencillo que sabes cómo resolverlo. Esto se llama también fragmentación de problemas o descomposición. Los pasos son:
- Escribe el problema entero en una frase.
- Divídelo en 3 a 5 partes.
- Haz lo mismo con cada parte que siga siendo complicada.
- Para cuando cada parte sea algo que puedas resolver con unos pocos pasos.
3.2 Ejemplo: aprobar el examen de un tema
Problema: prepararme el examen del Tema 5.
Nivel 1 (partes grandes):
- Estudiar la teoría
- Aprender las fórmulas
- Hacer ejercicios
- Repaso final
Nivel 2 (dividimos las partes que aún son complicadas):
- Estudiar la teoría
- Leer cada página
- Hacer un resumen de la página
- Comprobar que me la sé
- Aprender las fórmulas
- Hacer una lista de fórmulas
- Memorizarlas
- Comprobar que me las sé
- Hacer ejercicios
- Identificar los tipos de ejercicio
- Practicar cada tipo hasta que salga bien
- Repaso final (ya es sencillo: no se divide más)
Cada punto del último nivel es una pieza que puedes resolver. El problema grande se ha convertido en una lista de problemas pequeños.
3.3 Cada pieza es un algoritmo
Un algoritmo es una lista de pasos, ordenados y sin ambigüedades, que resuelve un problema. Tiene que acabar en algún momento: una receta, las instrucciones de un mueble, el método para resolver una ecuación. Cuando escribimos un algoritmo con frases cortas y palabras como SI o MIENTRAS, sin preocuparnos de ningún lenguaje de programación, lo llamamos pseudocódigo.
Solo necesitas tres herramientas, que ya conoces de la programación:
| Herramienta | Para qué sirve | Cómo se escribe |
|---|---|---|
| Secuencia | Hacer pasos uno detrás de otro | Un paso por línea |
| Decisión | Hacer una cosa u otra según una condición | SI … ENTONCES … SINO … FIN SI |
| Repetición | Repetir pasos hasta que algo se cumpla | MIENTRAS … HACER … FIN MIENTRASPARA CADA … HACER … FIN PARA |
3.4 Los algoritmos del ejemplo
Pieza: estudiar la teoría. Repetimos cada página hasta que nos la sabemos, y entonces pasamos a la siguiente:
ALGORITMO EstudiarTeoria
PARA CADA página DEL tema HACER
me_la_se ← NO
MIENTRAS me_la_se SEA NO HACER
Leer la página
Escribir un resumen de la página
Taparme el resumen y explicarlo en voz alta
SI lo he explicado sin mirar ENTONCES
me_la_se ← SÍ
SINO
Volver a leer las partes que he olvidado
FIN SI
FIN MIENTRAS
FIN PARA
FIN ALGORITMO
Observa: me_la_se es una variable que guarda un «sí» o un «no». El bucle MIENTRAS se repite hasta que su valor cambia. La flecha ← significa «guardar este valor».
Pieza: practicar un tipo de ejercicio. Aquí contamos aciertos seguidos. Cuando tengo tres bien seguidos, doy el tipo por aprendido:
ALGORITMO PracticarTipoDeEjercicio
aciertos_seguidos ← 0
MIENTRAS aciertos_seguidos < 3 HACER
Hacer un ejercicio de este tipo
SI me ha salido bien ENTONCES
aciertos_seguidos ← aciertos_seguidos + 1
SINO
aciertos_seguidos ← 0
Mirar la solución y apuntar en qué me he equivocado
FIN SI
FIN MIENTRAS
FIN ALGORITMO
Y arriba del todo, el algoritmo principal solo llama a las piezas por su nombre, en orden. No necesita saber cómo funciona cada una por dentro:
ALGORITMO PrepararExamen
EstudiarTeoria
AprenderFormulas
PARA CADA tipo DE ejercicio HACER
PracticarTipoDeEjercicio
FIN PARA
RepasoFinal
FIN ALGORITMO
3.5 ¿Para qué sirve dividir así?
- Se entiende mejor. Un problema enorme da miedo; cinco problemas pequeños, no tanto.
- Se puede repartir. En un equipo, cada persona se encarga de una pieza.
- Se puede probar por partes. Si algo falla, sabes en cuál de las piezas buscar.
- Se puede cambiar. Si cambias cómo memorizas las fórmulas, no tienes que rehacer el resto del plan.
Una regla útil: si para describir una pieza necesitas la palabra «y» («leo la teoría y hago el resumen y repaso»), probablemente son varias piezas y toca dividirla otra vez.
Y lo mismo se hace en programación. Cada pieza acaba siendo una función, como las que ya has hecho en Python. Más adelante tomarás un problema real y harás este mismo recorrido hasta llegar al código.
4. Resumen en cinco frases
- Un programa se construye por fases: análisis, diseño, programación, pruebas y mantenimiento.
- Una metodología es la forma de recorrer esas fases: de una vez (cascada) o en vueltas cortas (iterativa, ágil).
- El enfoque Top-Down divide un problema grande en piezas cada vez más pequeñas.
- Cada pieza pequeña se resuelve con un algoritmo.
- Un algoritmo se puede escribir en pseudocódigo con secuencia, decisión y repetición.
5. Vocabulario técnico
| Español | Inglés |
|---|---|
| Metodología de desarrollo | development methodology |
| Ciclo de vida del software | software development life cycle |
| Cascada | waterfall |
| Iterativo / incremental | iterative / incremental |
| Ágil | agile |
| Lista de tareas pendientes | backlog |
| De arriba abajo | top-down |
| Descomposición / fragmentación | decomposition |
| Algoritmo | algorithm |
| Pseudocódigo | pseudocode |
| Bucle | loop |
6. Autoevaluación
- Cita las cinco fases del ciclo de vida de un programa.
- Estás haciendo una aplicación y el cliente no sabe del todo qué quiere. ¿Cascada o iterativa? ¿Por qué?
- ¿Qué significa «top-down»?
- En el algoritmo
PracticarTipoDeEjercicio, ¿qué pasa conaciertos_seguidoscuando fallas un ejercicio? ¿Por qué crees que es así? - Una pieza de tu plan dice «escribir el trabajo y revisarlo y entregarlo». ¿Qué problema tiene?
Ver respuestas
- Análisis, diseño, programación, pruebas, mantenimiento.
- Iterativa: se enseñan versiones pequeñas pronto y el cliente va aclarando lo que quiere.
- Empezar por el problema completo y dividirlo en partes cada vez más pequeñas.
- Vuelve a 0, porque la condición pide tres aciertos seguidos. Así el algoritmo asegura que de verdad domino el tipo de ejercicio y no que he tenido suerte.
- Son tres cosas en una. Hay que dividirla en «escribir», «revisar» y «entregar».
A.3.1 y A.3.2 · Tarea · Divide el problema y escribe los algoritmos
Tarea: divide un problema y escribe sus algoritmos
Programación y Computación · 2º de Bachillerato · Saberes A.3.1 y A.3.2 · Trabajo individual o en pareja; la entrega es individual
Qué vas a hacer
En la teoría hemos dividido «prepararme el examen del Tema 5» en piezas y hemos escrito el algoritmo de algunas. Ahora te toca a ti hacer lo mismo con otro problema parecido. No hay que programar nada: todo se hace en papel o en un documento de texto, y los algoritmos van en pseudocódigo.
Paso 1 · Elige tu problema
Elige uno de estos tres (o propón otro parecido al profesor):
- Preparar una exposición oral de 5 minutos sobre un tema de otra asignatura.
- Organizar la salida de fin de curso de tu clase.
- Preparar un trabajo de investigación para otra asignatura (buscar información, redactar, entregar).
Escribe el problema en una frase.
Paso 2 · Divídelo (Top-Down)
Haz un esquema como el del ejemplo de la teoría, con dos niveles:
- Nivel 1: entre 3 y 5 partes grandes.
- Nivel 2: divide al menos dos de esas partes en piezas más pequeñas.
Comprueba cada pieza del último nivel: ¿se puede describir sin usar la palabra «y»? Si no, divídela otra vez.
Paso 3 · Escribe los algoritmos en pseudocódigo
Elige dos piezas del último nivel y escribe su algoritmo en pseudocódigo, con el estilo de la teoría:
- Uno de ellos debe tener una repetición (
MIENTRASoPARA CADA). - El otro debe tener una decisión (
SI … ENTONCES … SINO).
Escribe también el algoritmo principal, el de arriba del todo, que solo llama a las piezas por su nombre y en orden.
Paso 4 · Pruébalo a mano
Un algoritmo se prueba antes de usarlo. Elige uno de tus algoritmos con repetición e invéntate un caso concreto. Haz una tabla con lo que va pasando en cada vuelta, como esta (ejemplo de la teoría con tres ejercicios, el segundo fallado):
| Vuelta | ¿Ha salido bien? | aciertos_seguidos |
|---|---|---|
| (al empezar) | – | 0 |
| 1 | Sí | 1 |
| 2 | No | 0 |
| 3 | Sí | 1 |
¿Acaba tu algoritmo? ¿Hay algún caso en que se quedaría repitiendo para siempre?
Paso 5 · Piensa en la metodología
En 3 o 4 líneas: si este problema fuera un proyecto con otras personas, ¿lo harías en cascada o de forma iterativa? Explica tu respuesta con un detalle concreto de tu problema.
Niveles (empieza por donde te resulte cómodo)
| Nivel | Qué entregas |
|---|---|
| Básico | Pasos 1, 2 (con 3 partes y solo una dividida), 3 con un algoritmo y el principal, y 5. |
| Medio | Todo lo que se pide arriba. |
| Avanzado | Todo lo anterior y, además: añade a un algoritmo qué hacer cuando algo sale mal (se acaba el tiempo, no encuentras información…) y haz una segunda tabla del paso 4 con ese caso. |
Qué se entrega y cómo
- Un solo documento en PDF, con el esquema, los algoritmos, la tabla y la reflexión. Vale una foto o escaneo de lo hecho a mano, si se lee bien.
- Súbelo a esta tarea de Moodle. Si trabajas en pareja, cada uno sube su documento.
- Para que pueda evaluarse, comprueba que tu perfil de Moodle tiene la foto de carné y que el trabajo está subido a la plataforma. Si falta algo, la tarea queda pendiente de evaluación hasta que se complete.
Para pensar (opcional, va al porfolio)
Cuando divides un problema, ¿cómo decides dónde acaba una pieza y empieza otra? ¿Hay un tamaño «justo» para una pieza?
Cómo se evalúa
| Qué se mira | Se valora cuando… |
|---|---|
| El esquema Top-Down | Las piezas tienen sentido, ninguna lleva «y» y los niveles están bien repartidos. |
| Los algoritmos | Son claros, ordenados, y usan bien la repetición y la decisión. |
| La prueba a mano | La tabla refleja lo que realmente haría el algoritmo, y se piensa si termina. |
| La reflexión | La metodología elegida se justifica con algo concreto del problema. |
