8.1. La aplicación de ejemplo
Vamos a escribir nuestra primera aplicación de ejemplo porque practicando es como realmente se aprende. En lugar de implementarla por completo y pulirla para luego escribir este capítulo, vamos a diseñarla juntos desde el principio para ver en realidad cómo se razona y se itera en el desarrollo dirigido por tests.
La aplicación ocupará este capítulo y los siguientes para que tengamos la oportunidad de afrontar toda la problemática de cualquier aplicación real. Sin embargo, no es una aplicación empresarial como pudiera ser un software de facturación, sino que se basa en un dominio de negocio que todos conocemos.
Se podría argumentar que el software que vamos a desarrollar no es muy común o muy real pero incluye todas las piezas que lleva una aplicación más real. Imagínese que para entender el código fuente que nos ocupa tuviese uno que estudiar primero contabilidad o derecho.
Tenga confianza en que nuestra aplicación de ejemplo es perfectamente válida y representa a pequeña escala el modo en que se desarrolla una aplicación mucho más grande. Nos adentramos ya en las vicisitudes de este pequeño gran desarrollo de software. Sentémonos con el cliente para escucharle hablar sobre su problema y hacer un primer análisis. Lo que nos cuenta es lo siguiente:
Quiero lanzar al mercado un software educativo para enseñar matemáticas a niños. Necesito que puedan jugar o practicar a través de una página web pero también a través del teléfono móvil y quizás más adelante también en la consola Xbox.
El juego servirá para que los niños practiquen diferentes temas dentro de las matemáticas y el sistema debe recordar a cada niño, que tendrá un nombre de usuario y una clave de acceso. El sistema registrará todos los ejercicios que han sido completados y la puntuación obtenida para permitirles subir de nivel si progresan.
Existirá un usuario tutor que se registra a la vez que el niño y que tiene la posibilidad de acceder al sistema y ver estadísticas de juego del niño. El tema más importante ahora mismo es la aritmética básica con números enteros.
Es el primero que necesito tener listo para ofrecer a los profesores de enseñanza primaria un refuerzo para sus alumnos en el próximo comienzo de curso. El módulo de aritmética base incluye las cuatro operaciones básicas (sumar, restar, multiplicar y dividir) con números enteros.
Los alumnos no solo tendrán que resolver los cálculos más elementales sino también resolver expresiones con paréntesis y/o con varias operaciones encadenadas. Así aprenderán la precedencia de los operadores y el trabajo con paréntesis: las propiedades distributiva, asociativa y conmutativa.
Los ejercicios estarán creados por el usuario profesor que introducirá las expresiones matemáticas en el sistema para que su resultado sea calculado automáticamente y almacenado. El profesor decide en qué nivel va cada expresión matemática. En otros ejercicios se le pedirá al niño que se invente las expresiones matemáticas y les ponga un resultado.
El programa dispondrá de una calculadora que sólo será accesible para los profesores y los jugadores de niveles avanzados. La calculadora evaluará y resolverá las mismas expresiones del sistema de juego. Cuando el jugador consigue un cierto número de puntos puede pasar de nivel, en cuyo caso un email es enviado al tutor para que sea informado de los logros del tutelado. El número mínimo de puntos para pasar de nivel debe ser configurable.