Introducción: Aplicaciones - Ines023/Vampiro-Chaminade GitHub Wiki

📱💻 Introducción a las Aplicaciones

❓ ¿Qué es una Aplicación?

Una aplicación es parte del software de un ordenador (con ordenador hablamos de dispositivos como móviles o incluso una nevera inteligente, no solo ordenadores de escritorio).
Veamos algunas de los elementos que conforman el software de un ordenador para saber qué diferencia una aplicación de otras cosas.

En paralelo, vamos a plantear la alegoría del ordenador como un restaurante hecho para brindarte unos servicios gastronómicos.

🖥️ Sistema Operativo

El sistema operativo (SO) es el software principal que gestiona todos los recursos del ordenador y proporciona servicios a las aplicaciones.
Con estos servicios hablamos de:

  • Una estructura de archivos para poder crear, leer, modificar o ejecutar archivos.
  • Gestión de memoria: cómo se asigna y libera.
  • Inicio y terminación de procesos (programas en ejecución), multitarea, etc.
  • Interfaz de usuario: terminal e incluso interfaz gráfica.
  • Servicios de red.
  • Seguridad, permisos y autenticación...

Ejemplos:
Windows, macOS y Linux.

El Sistema Operativo es el jefe de cocina. Es quien gestiona todo. Hace de intermediario entre proveedores, cocineros...
Las decisiones y necesidades pasan por él y se las hace llegar a quienes corresponda. En este caso, aplicaciones y utilidades necesitarán ciertos recursos y el SO se lo transmitirá a los controladores para traer de vuelta la respuesta.

🛠️ Controladores (Drivers)

Los controladores son programas generalmente desarrollados por el fabricante de un dispositivo.

Sin embargo, si se usa un estándar publicado al hacer la electrónica se pueden usar drivers ya desarrollados por otras compañías, como Microsoft.

Es el único software que "sabe comunicarse" con el hardware de un dispositivo, permitiendo que SO y aplicaciones interactúen con impresoras, tarjetas gráficas, discos duros... Aún así también calificamos de controladores a otros tipos de software que se ejecutan en modo kernel (sin ninguna restricción a los recursos del ordenador) sin llegar a interactuar con el Hardware. Pero no vamos a entrar en detalle en eso.

Diagrama de un controlador

Imaginemos que en esa cocina al SO le dicen los de cocina que necesitan más tomates. Se lo hará llegar a la empresa distribuidora. Ese distribuidor puede ser nuestro controlador. El distribuidor entonces hará llegar a un repartidor (el hardware: donde físicamente ocurre algo) las necesidades de los de arriba.

🧰 Utilidades del Sistema

Las utilidades del sistema son programas que realizan tareas de mantenimiento y gestión del sistema operativo. Suelen funcionar en segundo plano y tener una interfaz más técnica orientada a administradores del sistema. Interactúan muy directamente con el Sistema Operativo y pueden modificar configuraciones del sistema.

Ejemplos:
Antivirus y Antimalware, Herramientas de Limpieza de Disco, Programas de Copia de Seguridad, Monitores del Rendimiento del Sistema.

En nuestra cocina son los que coordinan que se revise que el horno, la estufa... funcionen bien. También un coordinador de limpieza que ordena el espacio...
Como cliente del restaurante es probable que no interactúes con ellos. Pero si eres el dueño y sabes lo que ocurre de puertas adentro puedes pedir que ordenen las cosas de cierta manera o que cambien la configuración de la cocina poniendo una estufa de gas en vez de inducción. Ellos hablarán con los técnicos, los controladores de antes, para que traduzcan lo que les has pedido a cambios en la cocina.

📱 Aplicaciones

Las aplicaciones son programas diseñados para realizar tareas centradas en proporcionar funcionalidades adicionales y específicas para el usuario. Tienen una interfaz/presentación dirigida al público general. Su propósito no es para ordenador en sí sino de cara al usuario, para usar el dispositivo como herramienta para cumplir otra función como:

  • Escribir documentos
  • Navegar por internet
  • Escuchar música
  • Ver una película

Las aplicaciones pueden ser tan simples como una calculadora o tan complejas como un sistema de gestión empresarial.

Ejemplos:
Microsoft Word, WhatsApp y Google Chrome.

Son los cocineros de la cocina. No tienen relación con cómo se ha montado la cocina ni la van a cambiar, se dedican a cocinar ciertos platos en los que están especializados aprovechando la cocina que se han encontrado montada, organizada y mantenida.


🗂️ Tipos de Aplicaciones

Según dónde se ejecutan:

  • 💻 Aplicaciones de Escritorio:
    Se ejecutan en un ordenador de escritorio o portátil.
    Ejemplos:
    Microsoft Excel y Adobe Photoshop.

  • 📱 Aplicaciones Móviles:
    Se ejecutan en dispositivos móviles como smartphones y tablets.
    Ejemplos:
    Instagram y Spotify.

  • 🌐 Aplicaciones Web:
    Se accede en un navegador web, aunque parte de la app se ejecuta en un servidor remoto (la nube).
    (Los navegadores pueden ser apps de escritorio o móviles)
    Ejemplos:
    Gmail y Facebook.


🛠️ Componentes de una Aplicación

Como hemos visto el término aplicación es un poco general.
Con que sea un software dirigido a dar un servicio al usuario parece cumplir ya los requisitos.
El desarrollo de software tiene una larga historia y evolución, por lo que las aplicaciones "han tenido muchas formas y colores".

Entendamos mejor qué es una aplicación y sus partes a través de modelos comunes.

NOTA ANTES DE EMPEZAR: Con "Lógica" me referiré a toma de decisiones. Piensa en algoritmos, estos gráficos.
.
Si p entonces q. Si eres programador y necesitas una implementación para entender un concepto piensa en "if, while, for, switch..."

🗂️ Modelo-Vista-Controlador (MVC)

Este modelo divide una aplicación en tres componentes principales: Modelo, Vista y Controlador.

📙 Modelo (Model)

El Modelo es la "traducción" de la situación real a la estructura cuadriculada que necesita un ordenador. Vamos a romper todo en cachitos masticables.
Un buen modelado de la realidad es súper importante: es la base de todo lo particular para nuestra app.

En este caso, en cuanto hice un buen modelo del vampiro me dio juego para meter muchas cosas nuevas y muy útiles, como los duelos de medianoche, las retiradas.
También ayudó a encontrar errores más fácilmente, ya que los conceptos quedaban muy aislados y podías ver exactamente cuál fallaba.
Y abrió muchas puertas a meter cosas extra como posibles "roles especiales" en el futuro, como en el juego de "hombres lobo".

Al modelar debemos "traducir" dos partes esenciales: La información y lo que hacemos con ella.

📊 Base de Datos

La base de datos es donde se almacenan los datos que la aplicación necesita para funcionar.

La pregunta es: ¿Cómo los guardamos?

En un negocio... Podemos hacer una tabla de:

  • Clientes: ClientID, Nombre, correo electrónico, datos de facturación...
  • Productos: ProductID, Nombre, Precio...
  • Existencias: ProductID, Unidades Disponibles...
  • Encargos: ClientID, ProductID, Unidades encargadas, Estado (Pagado, Enviado, Cerrado)

Y la lista sigue.
Sabremos que hemos modelado algo bien cuando de un solo vistazo ya sepas qué hay en cada sitio. Cuanto menos haga falta leer código y documentación para entender cómo corresponde con la realidad, mejor será nuestro modelo.

Veremos más info sobre BBDD relacionales y no relacionales en la página dedicada a ello.

📐 Lógica de Negocio

La lógica de negocio recoge el "¿Qué hacemos?" con toda la información que hemos guardado.

Hacemos nuestra app con un fin concreto: el Vampiro es una app web hecha para gestionar el juego del Vampiro en el chami. La lógica de negocio serán todas las decisiones inspiradas en eso. Son únicas para nuestra app.

En el vampiro son todos los pasos que hacemos seguir al programa porque "eso es lo que haríamos manualmente en la vida real", pero traducidos al modelo de datos que hemos hecho.

Si alguien hace llegar el mensaje de que ha muerto en el vampiro:

  • En su info de jugador cambiamos su estado de vivo a muerto
  • Envíamos un correo electrónico cuyo mensaje sea "has muerto".
  • Le damos a su asesino su siguiente víctima y le avisamos por correo de quién es.

📗 Vista (View)

La Vista es la parte de la aplicación con la que interactúa el usuario, mostrando datos y enviando acciones al controlador.

👯 Interfaz de Usuario (UI)

Elementos visuales y de interacción como botones, menús, formularios, ventanas y gráficos.

Es importante plantearla bien, ya que afecta de forma directa a la experiencia de usuario: es lo único que ven. Por eso hay expertos unicamente en UX/UI (User-Experience, User-Interface).

image

Veremos más info sobre las tecnologías implicadas en esta página y en otra dedicada solo a tecnologías de apps web.

📐 Lógica de Pantalla

La lógica específica de navegación entre páginas, actualización dinámica de la UI y la validación de formularios.

Si entras a la página de tu usuario:

  • La Vista toma la decisión (lógica de pantalla) de pedir al Controlador que saque del Modelo tu nombre, foto de perfil...
  • Combina la plantilla que tiene de esa página web rellenando los huecos con tus datos.
  • Si tú ahí aprietas algún botón para, digamos, cambiar tu foto de perfil, lo hace llegar al controlador para que le diga qué pantalla de ajustes mostrarte y con qué información.

📕 Controlador (Controller)

El Controlador actúa como intermediario entre el modelo y la vista.
Procesa las entradas del usuario, llama a los servicios (la lógica que actualiza la BBDD) del modelo y selecciona la vista adecuada para mostrar la respuesta.

📐 Lógica de Aplicación

La lógica que es más un trámite informático que algo particular de nuestra app.

Mientras que rechazar una solicitud porque el nombre no es el correcto el lógica de negocio, rechazarlo porque ha entrado un dato tipo número entero en vez de tipo texto es lógica de aplicación.
Si fuese un formulario sobre tomates la primera condición cambiaría pero la segunda no.
La acción de enviar un correo electrónico que informa de que has muerto es de negocio, pero darle a la información un formato JSON y enviarlo usando el protocolo SMTP es lógica de aplicación.
Si fuese un correo sobre la universidad lo primero cambiaría pero lo segundo no.

Decir que es la lógica que coordina las interacciones entre Vista y Modelo me parece una definición incompleta/errónea aunque se puede oír así. Incluye tareas que no son del modelo ni la vista como:

  • la gestión de flujos de trabajo
  • la coordinación/orquestación de servicios
  • etc.

Ya hemos visto que nos gusta mucho encapsular todo mucho y separar las cosas en la práctica si lo podemos hacer conceptiualmente (hace que todo se entienda mejor).

No esperes sin embargo encontrar la implementación/el código de la lógica de negocio y la de aplicación en archivos diferentes. Inevitablemente estarán al lado, ya que la lógica de aplicación es un trámite para implementar la lógica de negocio, un trámite para gestionar con informática información del mundo real.

Esto es programación. Saber el lenguaje que usas y saber leer la documentación de las librerías que importas.

🔭 API (Interfaz de Programación de Aplicaciones)

¿Recuerdas la UI de antes? En concreto GUI (Graphic User Interface). Pues esto es lo opuesto. Interactúas con una app, sí, pero con código.

El mundo está lleno de apps y código, y como podrás intuir el público objetivo no siempre es el usuario promedio. A veces hay empresas que hostean en un servidor una app y te dicen cómo preguntarle cosas y qué te va a responder. Nos ofrecen esa interfaz, esa forma de interactuar con la app, pero ahora de programación.

O ejecutas un protocolo tal cual en la terminal o (normalmente) lo hace automáticamente otra app. Por eso podemos entender un API como una especie de idioma para que apps se comuniquen entre ellas.

Puedes entender cada app como un edificio público con mucha gente trabajando dentro. Tu app necesita algo así que habla con recepción/atención al cliente. No puede acceder directamente al interior del edificio y ver todo lo que hay dentro; pero sí hay una serie de servicios que se le ofertan. Para conseguirlos debe rellenar un formulario específico correctamente o no sabrán qué quiere.

Con el término API nos referimos tanto a las posibles interacciones que hay como a su formato.

Veremos más info sobre APIs en la página dedicada a ello.

🎣 Servicios de Red

Los servicios de red permiten que la aplicación se comunique con otros sistemas y servicios a través de redes locales e internet. Los servicios de red son esenciales para aplicaciones que dependen de recursos externos o que necesitan interactuar con otros sistemas.

Veremos más info sobre Redes e Internet en la siguiente página.

🍻 Gestión de Estado

La gestión de estado se refiere a cómo la aplicación maneja y mantiene la información a lo largo del tiempo.

Esto incluye:

  • La sesión del usuario.

    ¿Quién era? ¿Le gusta el modo oscuro o claro?

  • Almacenamiento de datos temporales.

    ¿Se ha quedado a medias rellenando un formulario? Guardémos qué ponía para que no tenga que empezar de cero.

  • Sincronización de estados entre diferentes componentes de la aplicación.

    Si diferentes partes de la app actuan sobre los mismos datos, es importante sincronizarlas.

Veremos más info sobre Gestión de Estado en la página dedicada a ello.

👮 Seguridad

Todo lo que sea protección de la información y procesos. Que no haya accesos no autorizados, que no se puedan filtrar datos, o que si se filtran no se puedan descifrar.

Veremos más info sobre Seguridad en la página dedicada a ello.

🌳 Otros modelos

Aún habiendo explicado ya partes principales de una app, veamos otros modelos superficialmente para entender el contexto de las aplicaciones y como las que desarrollemos encajan en él.

🐖 Monolítica

Según cómo organizamos y desplegamos el código de la app.

La arquitectura monolítica es un enfoque en el que toda la aplicación se construye y despliega como una única unidad. Todos los componentes de la aplicación están interconectados y se ejecutan en un solo proceso.

El Vampiro es una aplicación monolítica. Es más sencillo a la hora de desarrollarla y desplegarla, pero complica la escalabilidad y hace que un fallo en un componente pueda hacer que falle todo.

🐐 Microservicios

Según cómo organizamos y desplegamos el código de la app.

La arquitectura de microservicios divide la aplicación en pequeños servicios independientes que se comunican entre sí a través de APIs. Cada servicio se encarga de una funcionalidad específica y puede ser desarrollado, desplegado y escalado de manera independiente.

Netflix tiene una red inmensa de microservicios. Requiere mucho más trabajo de diseño pero hace la actualización de recursos más segura y facilita inmensamente la escalabilidad.

image

🐌 ¿Y entonces qué es una app Serverless?

Este es un tema muy popular últimamente.

Se trata de delegar toda la gestión de infraestructura en el proveedor de servicios en la nube. Los programadores no crean aplicaciones completas, sino que se les facilitan recursos donde pueden programar ciertas funciones/automatizaciones que tienden a responder a eventos.

Nosotros hay partes de nuestra aplicación que gestionaremos de esta manera.

Diferencias entre Serverless y Despliegue Tradicional en la Nube
Serverless:

Ejecución bajo demanda: El código se ejecuta solo cuando es necesario.
Pago por uso: Solo pagas por el tiempo de ejecución del código.
Gestión automática: El proveedor de servicios gestiona la infraestructura.

Ejemplo: Azure Functions.

Despliegue Tradicional en la Nube:

Ejecución continua: La aplicación está siempre en ejecución.
Pago por recursos: Pagas por los recursos asignados (CPU, memoria, almacenamiento) independientemente del uso.
Gestión parcial: Aunque el proveedor de servicios gestiona la infraestructura subyacente, tú gestionas la aplicación completa.

Ejemplo: Azure App Service.


🌓 Front vs Back

Otra forma de ver una aplicación web es distinguir Frontend y Backend.

Generalmente encuentras mucho diseñador gráfico y profesional de UX/UI en el frontend mientras que el backend es un campo de ingenieros de software.

🌕 FrontEnd

El FrontEnd es la parte de la aplicación que interactúa directamente con el usuario. Incluye todo lo que ves y tocas en la pantalla.
La Vista que hemos mencionado antes.

🌑 BackEnd

El BackEnd es la parte de la aplicación que maneja la lógica de negocio, la base de datos y la comunicación con otros sistemas.
Una combinación de Modelo y Controlador.

📧 Lenguajes y Frameworks

💡 Definiciones

📢 Lenguaje de Marcado

Un lenguaje de marcado es un sistema para anotar un texto. Utilizando etiquetas, nos permite añadir información sobre su estructura y el significado de su contenido.

En el contexto de la web, HTML (HyperText Markup Language) se utiliza para estructurar el contenido de las páginas web.

📢 Lenguaje de Estilo

Un lenguaje de estilo describe la presentación de un documento escrito en un lenguaje de marcado.

CSS (Cascading Style Sheets) se utiliza para diseñar la apariencia de las páginas web, incluyendo colores, fuentes y disposición.

📢 Lenguaje de Programación

Un lenguaje de programación es un conjunto de instrucciones que un ordenador puede entender y ejecutar.

JavaScript es un lenguaje de programación utilizado para añadir interactividad a las páginas web.

📢 Biblioteca

Una biblioteca es una colección de funciones y procedimientos reutilizables que los desarrolladores reaprovechan para realizar tareas comunes.

React es una biblioteca de JavaScript para construir interfaces de usuario interactivas.

📢 Framework

Un framework es una estructura de software reutilizable que proporciona una base sobre la cual se puede construir y desarrollar aplicaciones generalmente monolíticas, proporcionando una solución todo en uno a las necesidades de una app completa.

Angular y Vue.js son frameworks de JavaScript para construir aplicaciones web robustas y escalables.

Un framework progresivo está diseñado para ser adoptado poco a poco (a diferencia de uno normal que debes adoptar completo desde el inicio). Esto significa que puedes empezar utilizando solo una parte e ir añadiendo funcionalidades a medida que las necesites.

📢 Microframework

Un microframework es un tipo de framework que es más ligero y minimalista. Proporciona solo las funcionalidades básicas necesarias para construir aplicaciones, permitiendo a los desarrolladores añadir solo los componentes que necesitan.

Express.js y Flask son ejemplos de microframeworks.

📢 Entorno de Ejecución

Un lenguaje de programación requiere de más elementos para que el código actúe como una serie de instrucciones que activen procesos en el ordenador. Debe ejecutarse en un ENTORNO DE EJECUCIÓN que contenga un compilador, un intérprete, librerías propias del lenguaje... La definición de qué lo constituye exactamente es compleja.

Node.js prepara los elementos necesarios para que JavaScript, un lenguaje hecho para enriquecer documentos HTML, pueda ejecutarse en un servidor y utilizarse en el backend.

💿 Aplicaciones de Escritorio

Lenguaje Usado para aplicaciones...
C++ de alto rendimiento.
Java multiplataforma.

📱 Aplicaciones Móviles

Lenguaje Usado para aplicaciones...
Swift iOS.
Kotlin Android.

📡 Aplicaciones Web

Lenguajes de Marcado, Estilo y Programación (Frontend)

Tipo de Lenguaje Lenguaje/Framework Descripción
Lenguaje de Marcado HTML Lenguaje de marcado para estructurar contenido en la web.
Lenguaje de Estilo CSS Lenguaje de estilos para diseñar la apariencia de las páginas web.
Lenguaje de Programación JavaScript Lenguaje de programación para añadir interactividad a las páginas web.
Lenguaje de Programación TypeScript Superset/Extensión de JavaScript (añade tipos de dato estáticos y hace el código más robusto).

Frameworks y Bibliotecas del Lado del Cliente (Frontend)

Tipo Lenguaje/Framework Descripción
Biblioteca React Biblioteca de JavaScript para construir interfaces de usuario interactivas.
Framework Angular Framework de JavaScript para construir aplicaciones web robustas y escalables.
Framework Vue.js Framework progresivo de JavaScript para construir interfaces de usuario.
Biblioteca jQuery Biblioteca de JavaScript que simplifica la manipulación del DOM, el manejo de eventos y las solicitudes AJAX.

Lenguajes de programación (Backend)

Lenguaje de programación Frameworks habituales Descripción
PHP Laravel, Symfony Ampliamente utilizado para el desarrollo web.
Python Django, Flask (Microframework) Conocido por su simplicidad y legibilidad.
JavaScript (Node.js) Express.js (Microframework), Koa Utilizado para construir aplicaciones web escalables en el servidor.
Ruby Ruby on Rails, Sinatra Conocido por su enfoque en la convención sobre la configuración.
Java Spring, Hibernate Utilizado para aplicaciones empresariales robustas.
C# ASP.NET, .NET Core Utilizado para aplicaciones web y servicios en la plataforma .NET.
Go Gin, Echo Conocido por su rendimiento y eficiencia.
Kotlin Ktor, Spring Utilizado para aplicaciones modernas y seguras.
Elixir Phoenix Conocido por su rendimiento y escalabilidad en aplicaciones concurrentes.

Otros: Wordpress

Probablemente hayas oído hablar de WordPress al pensar en páginas web. Gran parte de internet está construido utilizándolo por lo fácil que es.

WordPress es un sistema de gestión de contenidos (CMS) construido en PHP. Proporciona una interfaz gráfica intuitiva por lo que se puede añadir y editar contenido, gestionar medios, personalizar el diseño y añadir funcionalidades con plugins tisin tener mucha idea de programación.

Otros ejemplos de CMS: Joompla y Drupal también basados en PHP

En resumen, es una aplicación ya hecha que descargas y ejecutas en un servidor. Necesitas tener PHP instalado, una base de datos (comunmente MySQL), es recomendable phpmyadmin para interactuar con la BBDD. Y una vez ha empezado a funcionar un usuario que no sabe programar puede hacerse una web estilo blog con la interfaz gráfica.

Nosotros estamos hablando de hacer la app nosotros mismos, con un Framework para no empezar de cero, pero programarla nosotros.

🌌 Ciclo de Vida de una Aplicación

Con Ciclo de vida nos referimos a todas las fases por las que pasa una aplicación en su proceso de creación.

image

🌜 Desarrollo

Donde se crea la aplicación.

Etapas:

  1. Requisitos:
    Aquí analizamos el problema que nos solucionará la app. ¿Qué necesita el usuario?¿Qué funciones debe tener la app? ¿Cómo debe comportarse?
  2. Diseño:
    Dejamos el mundo de ideas felices y hacemos un esquema real de la arquitectura de la aplicación. Todo tiene que ser cuadriculado, así que modelamos lo abstracto de la realidad a cachitos controlables. Diseñamos la estructura de datos, la lógica de negocio y la interfaz de usuario. Se elaboran diagramas y modelos para guiar el desarrollo.
  3. Implementación:
    Escribímos el código en sí. Antes hemos diseñado los algoritmos, ahora escogemos un lenguaje de programación tal vez un framework, y a hacerlo realidad línea a línea.
  4. Integración:
    Si el diseño era bueno habremos creado la app de forma modular, cada cosa de forma ordenada en su lugar. Aquí hay que hacer que todas las partes de la app funcionen bien juntas y que interactúen bien con la base de datos, servicios internos, otros sistemas...

🌞 Pruebas

Donde comprobamos que todo funciona como debería. Se pueden diseñar pruebas sin ver cómo se ha implementado una función, por eso a menudo probadores y desarrolladores trabajan en paralelo. Si tienes un algoritmo, sabes cuál debería ser la salida en base a una entrada, eso es lo que comprobaremos, sin ver exactamente cómo se hace por dentro.

Tipos de pruebas:

  1. Pruebas Unitarias:
    "Los componentes individuales funcionan correctamente". Hacemos pruebas de CADA método.
  2. Pruebas de Integración:
    "Los módulos y sistemas interactúan correctamente". Comprobamos que los componentes que hemos integrado se comportan como deberían al trabajar juntos.
  3. Pruebas de Sistema:
    "La app funciona correctamente". Cumple requisitos funcionales (usabilidad) y no funcionales (rendimiento, seguridad).
  4. Pruebas de Aceptación:
    Validación final por usuarios/clientes para asegurar que cumple sus requisitos y expectativas. Aquí entran las versiones alfa, beta, revisiones de usuarios...

Es muy importante probar todo. Tanto como el desarrollo. Soy una hipócrita y por prisas probé todo a lo bruto, pero hay que programar tests.

🌍 Despliegue

Disponibilitamos la aplicación a usuarios.

  1. Preparamos el Entorno:
    Configuramos la infraestructura. (Servidores, bases de datos y otros recursos necesarios)
  2. Implementamos: Transferimos el código desde el entorno en el que estábamos desarrollando al de producción. (Compilamos el código, configuramos los servidores, instalamos dependencias)
  3. Configuración: Añadimos configuraciones específicas del entorno de producción (Variables de entorno, configuraciones de red, ajustes de seguridad)
  4. Verificación: Ahora que hemos puesto la app a funcionar en otro sitio y con otra configuración, nos aseguramos de que funciona como debería.

⛅ Mantenimiento

Mantenemos la app en funcionamiento e incluso la vamos mejorando con el tiempo.

Estas si quieres no acaban nunca

  1. Corrección de errores: Cuando se identifique o se informe de un problema (bugs, problemas de rendimiento se sacarán parches para solucionarlo.
  2. Actualizaciones y mejoras: Una vez se está en modo producción se pueden seguir añadiendo funcionalidades y mejoras basadas en nuevas necesidades o sugerencias de los usuarios.
  3. Monitoreo y Soporte: Hay que hacer un seguimiento de la app, su disponibilidad y rendimiento además de ofrecer soporte técnico a los usuarios.
  4. Gestión de la seguridad: El mundo de la seguridad es constantemente cambiante. Es importante revisarla e introducir mejoras y parches para proteger la app de vulnerabilidades y amenazas.

:octocat: Conclusión

Esta página ha tocado por encima lo que conforma una aplicación y su creación, detallando un poco más lo correspondiente a las aplicaciones web. Aún así, ahondaremos más en los conceptos importantes para desarrollar y desplegar una app web en las siguientes páginas de la wiki.

Soy consciente de que esta en concreto ha sido dura de leer. Estoy tan quemada de escribirla que creo que la he simplificado menos de lo normal. Pero espero que haya servido de contexto para lo que nos sigue a continuación. Lee todo con calma y dosifícatelo para no morir en el intento. Un besazo