Inicio » Ingeniería del Software
Archivos de la categoría: Ingeniería del Software
¿ Tu API está preparada para crecer sin romperse?
Por Nerea Tanarro Ferrero
Actualmente, en el mundo digital, las APIs son las grandes facilitadoras: conectan aplicaciones, plataformas y servicios casi sin que nos demos cuenta. Pero no basta con que una API funcione. ¿Qué pasa cuando de repente recibe miles de peticiones por minuto? ¿Y si alguien intenta colarse y acceder a datos sensibles? Hoy te cuento cómo diseñar una API que no solo funcione, sino que aguante el crecimiento y sea segura desde el primer día.
¿Qué es una API y por qué deberías entenderla?
Una API es como el camarero de un restaurante. Tú haces un pedido (la petición del cliente), él lo lleva e informa a la cocina (el servidor), y vuelve con el plato (la respuesta). Así funciona la mayoría de las aplicaciones modernas. ¿Quieres ver el tiempo en tu ciudad? Tu app lanza una petición a una API meteorológica. ¿Quieres pagar con Bizum? Otra API entra en juego.
Hoy en día, hay dos grandes formas de servir esos datos: REST, que ofrece un menú fijo de opciones, y GraphQL, que permite al cliente pedir exactamente lo que necesita. Ambas tienen sus ventajas, pero elijas la que elijas, hay dos ingredientes clave que no pueden faltar: escalabilidad y seguridad.
Que no se caiga el sistema: escalabilidad
Imagina que montas una web de venta de entradas. Al principio todo va bien, pero el día que un artista famoso lanza gira, tu API colapsa. Para evitarlo, hay que diseñar pensando en el futuro.
Existen dos grandes arquitecturas:
- Monolitos, donde toda la aplicación está unida como una sola pieza. Son fáciles de montar, pero difíciles de escalar.
- Microservicios, que dividen la aplicación en módulos independientes. Son como pequeñas tiendas especializadas que se pueden abrir o cerrar según la demanda.
Los microservicios permiten responder mejor a picos de uso y facilitan el mantenimiento, aunque requieren una gestión más compleja.

Figura 1: Diferencia entre una aplicación monolítica y una basada en microservicios. Referencia: Atlassian – Microservices vs. monolithic architecture
Que nadie entre donde no debe: seguridad
Una API mal protegida es como dejar la puerta de tu casa abierta. Los ataques más comunes incluyen inyecciones de código, accesos no autorizados o exposición innecesaria de datos. ¿Cómo evitarlos?
- OAuth2 y JWT: funciona como llaves digitales. Solo quien tenga la llave adecuada puede entrar.
- Rate limiting: limita el número de peticiones que un usuario puede hacer por minuto, evitando abusos o ataques tipo DDoS.
- Cifrados TLS: asegura que los datos viajen de forma segura, como si fueran en una caja fuerte digital.
- Versionado y control de accesos: cada cambio debe estar bien documentado y separado, y no todo el mundo debería ver todo.

Figura 2: Diagrama del flujo de autenticación y generación de tokens con Oauth2. Referencia: Auth0 (https://auth0.com/docs).
Los detalles también importan
Aunque una API funcione, si no está bien documentada, mantenerla se convierte en una pesadilla. Las pruebas automatizadas, la gestión de errores clara y el uso de herramientas como Swagger o OpenAPI ayudan a que otros desarrolladores puedan entenderla y trabajar con ella sin volverse locos. Además, contar con monitorización en tiempo real permite detectar caídas o fallos antes de que los usuarios los sufran. En un entorno donde cada segundo cuenta, esto marca la diferencia.
Diseñar APIs bien hechas: más allá del código
Una buena API no es solo código. Es arquitectura, seguridad, documentación y prevención. Diseñarla bien desde el inicio ahorra sustos, cuida tus datos y permite que tu proyecto crezca sin romperse.
¿Te has peleado alguna vez con una API mal hecha? Cuéntanos tu historia en los comentarios. ¡Ayudémonos entre todos!
Referencia
Basado en el artículo académico “Diseño estratégico de APIs escalables y seguras para la integración de sistemas y aplicaciones” (Leones Zambrano et al., 2024).
¿Tus algoritmos no encajan? FastAPI y Python pueden ser la solución
Por Jesús María Díez Gómez
En el mundo actual, gran cantidad de servicios web utilizan algoritmos para algo, como recomendaciones de series nuevas o una persona en común en Instagram. Estos algoritmos pueden volverse muy complejos y, a veces, tienen que adaptarse al lenguaje de la plataforma. ¿Pueden integrarse, actualizarse y mantenerse sin afectar a lo demás? Aquí entran en juego Python y FastAPI, dos herramientas para diseñar algoritmos basados en modularidad. Con esto se logran algoritmos más eficientes y veloces, pero… ¿cómo funciona esto?
¿Qué es exactamente la “modularidad”?

Para entender esto, vamos a utilizar un juguete que todos hemos tenido: los LEGO. La modularidad o funcionalidad modular en programación es como dividir un algoritmo en diferentes piezas, llamadas módulos, que pueden hacer diferentes tareas.
Si nuestro algoritmo es para una aplicación del tiempo, una pieza puede calcular la temperatura media, otra limpiar los datos y otra predecir si es mejor que cojas un paraguas mañana.
Al estar todo separado, podemos cambiar esa pieza, actualizar la otra, añadir una nueva y más sin que sea necesario tocar todo el algoritmo. ¿Imaginas tener que tirar toda una pared de ladrillos porque la ventana está mal colocada? Exacto.
Pero no nos desviemos del tema. ¿Cómo ayuda Python y FastAPI a esto? Vamos a verlo.
FastAPI: Conectar tus módulos con el mundo
FastAPI es similar a un sistema de correos. Tu aplicación o web envía una petición a otra aplicación o web para pedir información (datos del clima, por ejemplo). FastAPI envía esa petición y, cuando la aceptan, recibe la respuesta y la pasa a tu estructura de módulos para que sea usada.
Ahora, esto es lo que generalmente hacen las APIs, pero FastAPI, como puede deducirse del nombre, es más rápida que otras gracias a como está configurada para esperar estos pares petición/respuesta.
Así no es necesario que tu algoritmo esté en ambas aplicaciones, lo cual implicaría hacer muchos cambios, ajustes, mantenimiento, etc. ¡Además habría que cambiar dos veces lo mismo cada vez!
A estas alturas quizás te preguntes, ¿pero tener más piezas no implica más trabajo?
Comprobar que las piezas cumplen con su función
Efectivamente, separar todo en diferentes piezas significa más a lo que prestar atención. Si todo está en una pieza y se rompe, puede ser algo muy grave. Sí, que pase con varias piezas sigue siendo grave, pero tener varias también tiene su ventaja. Si todo está separado, también significa que es más fácil aislar y detectar errores. Además, se pueden probar las partes por separado, para ver que funcionan antes de añadirlas: ver que el módulo de cálculo realiza operaciones correctamente, que las predicciones son acertadas, que los datos se reciben y almacenan correctamente…
Entonces, ya hemos visto que FastAPI y la modularidad son de gran ayuda para los algoritmos, pero hay que asegurarse que todos los módulos puedan comunicarse entre sí.
El idioma común de los módulos: las interfaces
Las interfaces sirven como las reglas que permiten a los diferentes módulos comunicarse entre sí e intercambiar información para que el algoritmo funcione, aunque aquí un C1 en inglés no va a servir de mucho.
Lo importante es que todos los módulos se mantengan conectados bajo una sola interfaz común, de forma que, si se cambia algo del módulo o se actualiza, pueda seguir “hablando” con el resto sin que todo el algoritmo falle.
Esto es de gran utilidad si, por ejemplo, se trabaja en un equipo. Mientras tú editas el módulo de predicción, tu compañero puede hacer lo mismo con el de cálculo sin miedo a que todo el sistema de desmorone.
Veamos ahora cómo se aplican estos algoritmos en Python.
De la teoría al mundo real
Muchos de los algoritmos, como hemos dicho al comienzo, pueden ser extremadamente complejos y, aunque Python puede trabajar con ello facilmente, puede consumir mucho tiempo del desarrollo de la aplicación o web. Es mejor comenzar en alguna plataforma para desarrollo matemático, como MATLAB.
Con la estructura bien organizada y perfeccionada, podemos pasarlo a Python para su implementación e introducirlo en el módulo de FastAPI para conectarlo a otros dispositivos. Python y FastAPI transforman los cálculos de MATLAB en herramientas reales a las que puede acceder cualquier dispositivo con conexión.

Conclusiones: divide y vencerás
Muchas veces, los algoritmos se escriben con código directamente en la aplicación, haciéndola mucho más pesada y más tediosa de actualizar y mantener (volvemos al tener que actualizartodo). Al separar algoritmo y plataforma la actualización y mantenimiento son mucho más cómodos y simples.
Para esto, Python y FastAPI ofrecen un método no solo práctico, sino sencillo y accesible desde cualquier dispositivo. Puede parece algo de utilidad para web y aplicaciones grandes o de empresas, pero cualquiera que trabaje con algún tipo de algoritmo puede beneficiarse. Con Python y FastAPI puedes lograr más orden, más control y menos problemas.
¿Te interesaría hacerlo incluso más eficiente? Pues no te pierdas nuestro artículo sobre Docker y contenedores.
Fuentes consultadas
Definición de interfaz registrada en la RAE: https://dle.rae.es/interfaz
Artículo científico “Investigación sobre modelos algorítmicos en Python Fast API”, Junqiao Chen: https://bcpublication.org/index.php/FSE/article/view/5591/5434
Low-Code-No-Code: El futuro de la programación sin escribir código
Por Alma Estefanía Merino

¿Te imaginas desarrollar soluciones tecnológicas complejas o implementar algoritmos avanzados sin escribir una sola línea de código, usando simplemente interfaces visuales e intuitivas? Esta es la propuesta de Low-Code-No-Code (LCNC), una tendencia que está acercando la programación a quienes nunca pensaron que podrían programar. En esta entrada, exploraremos qué es exactamente esta revolución y cómo está permitiendo a investigadores, profesionales y cualquier persona con una idea aprovechar el poder de los algoritmos y la inteligencia artificial para transformar ideas en soluciones funcionales de manera rápida y visual, sin necesidad de escribir código manualmente.
¿El fin de la programación tradicional? Cómo está cambiando el juego

Al principio, programar era algo complejo, había que hablar a la máquina en su propio idioma. Era como construir una casa desde cero, ladrillo a ladrillo. Solo un pequeño grupo de expertos podía hacerlo. Con el tiempo, la cosa se fue simplificando. Empezamos a usar lenguajes que se parecían un poco más a cómo hablamos nosotros, pero aun así hacía falta aprender ese “nuevo idioma”.
Hoy en día, estamos presenciando una transformación impulsada por las plataformas LCNC, que permiten crear aplicaciones sin escribir una sola línea de código. ¿Cómo? A través de interfaces visuales fáciles de usar, donde basta con arrastrar y soltar bloques para crear aplicaciones. Es como montar un mueble de Ikea: tienes las piezas listas y solo necesitas seguir las instrucciones para montarlo, sin necesidad de ser un experto.
El CEO de GitHub, en 2017, predijo que “el futuro de la codificación es no codificar”. Esa visión se ha hecho realidad gracias a estas plataformas, que permiten crear soluciones digitales sin escribir código, abriendo el desarrollo de software a un público mucho más amplio.
El poder del “arrastrar y soltar”. ¿Qué es Exactamente LCNC?
El término LCNC, que significa Poco Código/Sin Código, hace referencia a la creación de soluciones tecnológicas con la mínima cantidad de código manual posible, o incluso sin escribir una sola línea. La clave de esta revolución es el “arrastrar y soltar” o “drag and drop”.

Imagina que deseas crear una aplicación o automatizar una tarea. En lugar de escribir instrucciones complejas en un lenguaje que solo entiende la máquina, LCNC te ofrece una interfaz visual en la que trabajas con bloques o piezas preconstruidas. Es como jugar al Lego digital: las piezas están listas para unirse y crear lo que quieras.
Esto significa que ya no es necesario ser un programador experto para hacer realidad tus ideas. LCNC permite que cualquier persona, con solo entender el proceso o problema que quiere resolver, pueda diseñar y crear aplicaciones o flujos de trabajo. Ha hecho que la creación de tecnología sea más rápida, accesible y con una inversión inicial mucho menor en comparación con los métodos tradicionales.
El otro lado de la moneda: desafíos y limitaciones del LCNC
A pesar de sus múltiples beneficios, las plataformas LCNC también presentan algunos desafíos y limitaciones que deben considerarse. Una de las principales es la dependencia del proveedor (“Vendor Lock-In”); si decides cambiar de plataforma, tendrás que rehacer todo el trabajo, ya que no se integran fácilmente entre sí. También falta flexibilidad, ya que los usuarios están limitados por lo que la plataforma permite hacer, y no pueden crear aplicaciones más personalizadas o móviles.

La mayoría de estas plataformas funcionan en la nube, lo que las hace inapropiadas para sistemas que necesitan trabajar con datos muy sensibles o que requieren funcionar sin conexión. Además, las aplicaciones que necesitan un rendimiento alto, como las que usan empresas grandes o sistemas críticos, pueden ser demasiado caras en estas plataformas. Por último, las suscripciones continuas pueden ser un gasto que algunas organizaciones no pueden permitirse.
¿Reemplazará el LCNC a los programadores?
A pesar de que LCNC está cambiando la forma en que creamos software, es poco probable que reemplace a los programadores. Las plataformas LCNC son ideales para proyectos más simples o específicos, pero las aplicaciones complejas, escalables o altamente personalizadas aún requieren el conocimiento y la experiencia de un programador. LCNC complementa el trabajo de los desarrolladores, permitiéndoles enfocarse en tareas más complejas, mientras que otros usuarios, con menos conocimientos técnicos, pueden crear soluciones funcionales por sí mismos. En lugar de reemplazar a los programadores, estas plataformas los hacen más eficientes y amplían las posibilidades de colaboración.
Ahora ya sabes que, si tienes una idea y quieres hacerla realidad sin escribir una sola línea de código, el futuro está a tu alcance. ¿Te animas a probarlo? ¡Explora estas plataformas y lleva tus ideas al siguiente nivel! Si ya has utilizado alguna, nos encantaría saber tu opinión.
¡Deja tu comentario y comparte tus experiencias!
Fuentes bibliográficas y referencias
Algorithms in Low-Code-No-Code for Research Applications: A Practical Review. Algorithms 2023, 16(2), 108; https://doi.org/10.3390/a16020108
Everything You Need to Know About Low-code VS No-code. Artem Arkhipov 2022; https://www.techmagic.co/blog/low-code-vs-no-code
Investigar en Ingeniería del Software: crear, no solo observar
Artículo por Carla Esteban
¿Sabías que en Ingeniería del Software se investiga construyendo?
Cuando oímos la palabra “investigación”, solemos imaginar laboratorios, microscopios o ecuaciones difíciles. Pero en Ingeniería del Software (IS), la cosa va por otro lado. Aquí no se trata tanto de observar el mundo tal como es, sino de imaginar nuevas formas de hacer las cosas: nuevas herramientas, nuevos procesos, nuevas ideas. En lugar de estudiar lo que ya existe, ¡creamos lo que aún no existe!
Investigar en IS es como programar…pero con hipótesis
Sí, así como lo lees. Investigar en Ingeniería del Software se parece más a programar una app que a mirar por un telescopio. Primero detectas un problema, luego diseñas una posible solución, la pruebas, la ajustas, y así hasta mejorarla. En lugar de tener un cliente que pide una app, tienes una pregunta de investigación que pide una respuesta construida. Iterar, probar, fallar, mejorar… el ciclo es muy similar.

¿Y qué tipo de preguntas se investigan?
Mientras que en otras ciencias se estudia el qué es, en IS se investiga el cómo debería ser. Por ejemplo:
- ¿Cómo diseñar un proceso más ágil para equipos remotos?
- ¿Qué herramienta facilita el desarrollo colaborativo sin errores?
- ¿Qué método reduce el coste sin perder calidad?
Estas preguntas no se responden observando, sino proponiendo soluciones y poniéndolas a prueba. Es decir: ¡programando ideas!
Entonces… ¿no usamos el método científico clásico?
No exactamente. Aunque a veces se recogen datos y se hacen experimentos (como encuestas o pruebas de rendimiento), muchas investigaciones en IS necesitan otros métodos más flexibles: cualitativos, creativos y hasta colaborativos. Imagina diseñar una nueva metodología de desarrollo: no puedes medir algo que aún no existe. Lo construyes, lo aplicas, y luego ves si realmente mejora algo. Esa es la validación.
Un ejemplo real de investigación creativa en IS
Imagina que un equipo de investigación quiere crear una nueva metodología para desarrollar aplicaciones web accesibles. En lugar de observar datos existentes, comienzan revisando qué metodologías hay, cuáles son sus puntos fuertes y qué limitaciones tienen.
Luego, diseñan una nueva metodología adaptada a proyectos pequeños con alta rotación de personal. Pero, ¿cómo saben si su propuesta es buena?
- Primero, la prueban desarrollando una app real (por ejemplo, una biblioteca digital para una ONG).
- Registran dificultades, tiempos, errores, mejoras…
- Repiten el proceso en varios contextos.
- Publican su metodología con casos reales.
Esto no es ciencia de laboratorio. Es investigación como diseño: se construye, se valida y se comparte para que otros lo usen y lo mejoren.
Una historia (casi) real: el caso de Sofía

Sofía es estudiante de último año de Ingeniería del Software. En su TFG decide investigar cómo mejorar la comunicación entre desarrolladores y clientes usando herramientas visuales. No hay muchos estudios previos, así que diseña su propia propuesta. Primero entrevista a equipos de startups. Luego diseña unas plantillas visuales tipo “canvas” adaptadas a metodologías ágiles. Las convierte en un prototipo digital y las prueba en dos proyectos reales. Recoge feedback, mejora la herramienta, documenta todo. ¿El resultado? Una solución práctica y validada.
Sofía no solo entrega un trabajo académico: crea una herramienta útil y original. Y entiende que investigar también es dejar huella.
Tipos de investigación en Ingeniería del Software

No toda investigación en IS es igual. Se pueden distinguir tres grandes tipos:
- Ingenieril: crear algo nuevo (una técnica,modelo o proceso). Requiere creatividad y validación práctica.
- Empírica: estudiar algo que ya existe. Se basa en experimentos, métricas, datos.
- Social: observar cómo se usa el software en contextos reales. Involucra entrevistas, análisis cualitativo.
Cada enfoque necesita un método diferente: a veces números, a veces intuición. Pero todos persiguen lo mismo: mejorar la forma en que construimos y usamos software.
Comparando enfoques: investigar no es solo probar.
- Un físico mide la velocidad de caída. En IS medimos cuánto mejora un proceso.
- Un matemático prueba teoremas. En IS probamos ideas, diseños, herramientas.
- Un sociólogo entrevista personas. En IS también lo hacemos: usuarios, testers, equipos…
La IS combina lo mejor de varios mundos: rigor, diseño, empatía y lógica. Eso la hace tan especial (y tan útil).
Conclusión: si programas, ya piensas como investigadora
Muchos estudiantes creen que investigar es algo lejano, reservado a unos pocos. Pero si alguna vez te has preguntado cómo mejorar una herramienta, cómo resolver un problema con una nueva idea, o cómo ayudar a tu equipo a trabajar mejor… ¡ya estás pensando como alguien que investiga en IS!
La clave está en observar, imaginar, construir, probar, mejorar… y compartir. Porque en Ingeniería del Software, investigar es programar ideas.
¿Quieres ver un ejemplo en acción?

Este vídeo, titulado ¿Quieres ser un ingeniero de software?, ofrece una explicación clara y atractiva sobre qué implica realmente investigar y trabajar en este campo. Ideal para comprender el enfoque práctico, creativo y estructurado de la Ingeniería del Software.
¿Te ha gustado este enfoque? ¿Has vivido algo parecido en tu carrera o proyecto?
Cuéntanos en los comentarios. Y si quieres seguir explorando el mundo de la investigación creativa, no te pierdas nuestra próxima entrada.
