Alan Zeichick | Estratega de contenido | 6 de septiembre de 2024
Sistemas back-end para control de inventario, recursos humanos y contabilidad. Aplicaciones de productividad para crear correos electrónicos, documentos y hojas de cálculo. Software orientado al cliente, como su sitio web o aplicación móvil. Sistemas especializados para equipos de TI, diseñadores gráficos, gerentes de proyectos, ejecutivos y conductores de camiones.
Se te ocurre la idea: se necesita mucho código para ejecutar una empresa moderna.
La mayoría de las aplicaciones de las que depende su empresa probablemente fueron creadas por proveedores de software y tienen licencia, a menudo con un modelo de software como servicio. Piensa en tu Microsoft Office, tu Oracle NetSuite o tu Adobe Photoshop. Otros fueron escritos o personalizados según tus especificaciones, tanto por equipos de desarrollo internos como por contratistas. Este artículo pone el foco en este segundo caso.
El desarrollo de aplicaciones, o AppDev, es el proceso de diseño, creación, prueba e implementación de software. Para garantizar un desarrollo de aplicaciones eficaz, se requieren personas con diversas competencias. Un equipo de AppDev puede tener programadores, ingenieros de software, arquitectos de software, diseñadores de interfaces de usuario, probadores, especialistas en garantía de calidad y gerentes de proyectos.
En esencia, el desarrollo de aplicaciones comienza cuando existe un problema que resolver o una oportunidad que aprovechar. Dado que se necesitan recursos para desarrollar, implementar y mantener todo tipo de software, debe haber una buena probabilidad de que el beneficio para el usuario sea igual o mayor que el costo. Una vez que se ha acordado el caso de uso, las organizaciones asignan recursos (dinero, personal y tiempo) para el proyecto de desarrollo, que generalmente sigue una de las dos rutas:
Desarrollo planificado. Se determinan de forma anticipada todos los requisitos de la aplicación y son aprobados por todas las partes interesadas. A continuación, el software se diseña, se prueba y se implementa para que lo utilicen los empleados o los clientes. Este proceso puede ser insoportablemente lento para los grandes proyectos, tardando años en completarse, y mientras eso está sucediendo, los requisitos cambian y las aplicaciones no son tan útiles como se esperaba.
Desarrollo iterativo. Una versión ligera del software está diseñada, construida y probada. Luego se mejora gradualmente, con nuevas características y funciones agregadas en ráfagas cortas, a menudo tomando solo unas pocas semanas. Los despliegues se realizan con frecuencia. Este enfoque, a menudo denominado ágil, es más flexible, puede ofrecer beneficios empresariales con mayor rapidez y brinda capacidad de respuesta a los constantes cambios en las necesidades.
Conclusiones clave
El desarrollo de aplicaciones es más que una simple programación. La escritura de código mediante un lenguaje como Java, JavaScript, Python, Go, Rust o SQL es solo una pequeña parte del proceso. Los equipos deben asegurarse de que la aplicación respalde el caso de uso empresarial de la organización, ya sea aumentando las ventas con un sitio web actualizado, mejorando la eficiencia operativa con una aplicación que proporciona información en tiempo real sobre el inventario o aumentando la satisfacción de los empleados al permitir que los trabajadores accedan a los nóminas y soliciten tiempo libre a través de un portal de autoservicio.
Igualmente importantes son los criterios de diseño, incluidos los siguientes:
La responsabilidad de todo lo anterior es principalmente del arquitecto de la aplicación, y estos requisitos deben ser entendidos por todo el equipo de desarrollo de aplicaciones.
Sin aplicaciones, la mayoría de las empresas no podrían realizar operaciones diarias. Para muchos, las aplicaciones son clave para la competitividad, y la capacidad de adquirir, personalizar y crear rápidamente un nuevo software es fundamental para su capacidad de adaptarse a los mercados que cambian rápidamente.
En algunos casos, una empresa puede utilizar software listo para usar o adaptar una aplicación comercial ampliando su funcionalidad mediante API (interfaces de programación de aplicaciones) o SDK (kits de desarrollo de software). Pero a veces, no hay ninguna aplicación comercial que pueda hacer lo que necesita o manejar la experiencia única de su empresa o la propiedad intelectual. Es entonces cuando las organizaciones que pueden desarrollar sus propias aplicaciones logran una ventaja competitiva.
El proceso de desarrollo de aplicaciones requiere muchos pasos y participantes, desde partes interesadas y campeones empresariales para iniciar y financiar el proyecto hasta especialistas técnicos para crear el software. Muchas ideas, y a veces prioridades en conflicto, deben conciliarse para ofrecer aplicaciones que sean seguras, funcionales y aporten valor a la empresa.
¿Por qué crear software? Hay dos razones principales: es tu negocio o ayuda a tu negocio.
No todas las aplicaciones se construyen de la misma forma. Los grandes proyectos de desarrollo de software implican un proceso formal que puede tardar meses o años en entregar una aplicación utilizable. Los proyectos más pequeños pueden completarse en una semana, o incluso en un día. Los stakeholders en el proyecto trabajarán con el equipo técnico de desarrollo para determinar el mejor enfoque.
Diseño con poco/sin código
No todas las aplicaciones requieren los esfuerzos completos descritos anteriormente. Piensa unas décadas atrás, cuando los usuarios avanzados —a veces llamados "desarrolladores ciudadanos"— creaban macros sofisticadas en hojas de cálculo para resolver problemas empresariales. Más recientemente, ha surgido un tipo de desarrollo llamado low-code/no-code que permite a los usuarios empresariales escribir aplicaciones usando herramientas visuales que les permiten usar fuentes de datos, algoritmos y flujos de trabajo específicos. Estas aplicaciones se ejecutan en la nube y empleados, clientes u otros partners tienen acceso a ellas. A menudo, esas aplicaciones low-code/no-code se ejecutan en un navegador web estándar o en un dispositivo móvil, como un teléfono, tableta o quiosco.
Hay muchos beneficios en el enfoque low-code/no-code, incluyendo un desarrollo y despliegue mucho más rápidos; el modelo de seguridad incorporado de la plataforma de alojamiento; un costo considerablemente menor para construir y mantener; y, por supuesto, reducir la necesidad de desarrolladores profesionales mientras se empodera a los empleados. Sin embargo, a los desarrolladores profesionales también les gustan estas herramientas para manejar problemas más simples que no requieren un proyecto de desarrollo de aplicaciones completo.
Si bien las aplicaciones de bajo costo/sin código no pueden rivalizar con la sofisticación de una aplicación construida desde cero por arquitectos, diseñadores, codificadores y probadores, pueden superar las personalizaciones de las hojas de cálculo y ofrecer una interfaz innovadora y fácil de usar que tanto aprecian los que no son programadores. Estas aplicaciones también se pueden utilizar para vincular otras aplicaciones de forma ad hoc, perfectas para manejar problemas a corto plazo o aprovechar oportunidades inmediatas.
La naturaleza simplificada de estas herramientas también es práctica para programadores experimentados. Consulta Oracle APEX para comenzar a desarrollar aplicaciones con poco código.
Móvil
El desarrollo de aplicaciones móviles implica una amplia gama de herramientas, servicios y productos para crear y distribuir aplicaciones. Google Android y Apple iOS son las plataformas más populares para aplicaciones móviles, y admiten un amplio abanico de herramientas y metodologías de desarrollo. Las aplicaciones móviles a menudo se diseñan mediante una arquitectura de microservicios, donde la aplicación se divide en tareas más pequeñas que se comunican entre sí.
Debido a la ubicuidad de los dispositivos Android e iOS y a la naturaleza siempre conectada de los teléfonos y las tablets, muchas empresas han adoptado las aplicaciones móviles como una excelente manera de servir tanto a los empleados como a los clientes. En el mundo corporativo, los empleados utilizan aplicaciones móviles para ventas, planificación de recursos empresariales, autoservicio de RR. HH. de empleados, seguridad, partes de tiempos, mensajería y mucho más. Si bien muchas aplicaciones móviles son creadas por empresas especializadas, también puede diseñarlas, desarrollarlas y desplegarlas internamente para sus empleados y clientes.
Base de datos
Las aplicaciones empresariales se ejecutan en datos como transacciones de ventas, hojas de precios de productos, materiales de RR. HH., correos electrónicos, registros bancarios, información de contacto del cliente y finanzas de la empresa. El lugar más eficaz para almacenar datos empresariales está en una base de datos, por lo que se pueden recuperar, buscar, actualizar, proteger y analizar fácilmente.
Tanto las aplicaciones estándar como las personalizadas pueden acceder a las bases de datos a través de lenguajes de consulta altamente eficientes, formatos de intercambio de datos estándar e interfaces de programación sólidas. Sin embargo, algunas bases de datos de alta gama, como Oracle Database 23ai, pueden ejecutar aplicaciones en el propio motor de base de datos, que a menudo proporciona a las aplicaciones un acceso rápido, seguro y sólido a esos datos. Las herramientas de desarrollo pueden dirigirse al propio motor de base de datos para dichas aplicaciones, un enfoque que tiene la ventaja añadida de permitir a los administradores de bases de datos gestionar y ajustar esas aplicaciones después de su despliegue.
Microservicios
Las aplicaciones diseñadas en una arquitectura de microservicios en la nube suelen ser fáciles de mantener y desplegar y muy sólidas. Puede haber cientos o miles de microservicios diminutos, cada uno de ellos un bloque de construcción escrito para realizar una sola tarea de manera eficiente y para comunicarse con otras aplicaciones o microservicios mediante protocolos de comunicación simples.
Las aplicaciones basadas en microservicios también son altamente escalables; el diseño y la arquitectura centrados en la nube significan que si un servicio en particular se utiliza en gran medida, la nube simplemente puede hacer y ejecutar muchas copias según sea necesario, automáticamente. Además, dado que los microservicios individuales se centran en una tarea específica, son fáciles de diseñar, codificar, probar y desplegar.
El enfoque del equipo de desarrollo para crear una aplicación es la metodología. El término incluye filosofías de diseño; enfoques de gestión de proyectos; e interacciones entre el equipo de desarrollo, los clientes y otros actores clave. A veces, la metodología dicta, o al menos orienta, la decisión sobre las herramientas técnicas que usará el equipo de desarrollo.
No importa qué metodología se elija, hay dos verdades: el objetivo es siempre un proyecto exitoso, y todos los involucrados tendrán una opinión. En términos generales, las metodologías modernas de desarrollo de software se dividen en dos categorías básicas: cascada y ágil.
Cascada
El desarrollo en cascada, también conocido como el modelo monolítico o clásico, se centra en una progresión lineal de pasos: recopilar requisitos, diseñar, codificar, probar, aprobar, desplegar, mantener. Cada paso se realiza de forma exhaustiva y solo se continúa con el siguiente paso una vez que se completa el anterior. Una vez que se ha completado un paso, rara vez, o nunca, se vuelve a revisar, lo que significa que el desarrollo en cascada no puede adaptarse a situaciones que cambian rápidamente o a las necesidades empresariales en evolución. Eso hace que los enfoques de cascada sean mejores para los proyectos que deben estar bien la primera vez, como el software que entra en un automóvil, una planta de energía nuclear o un dispositivo médico.
Agilidad
El desarrollo ágil adopta el enfoque opuesto. Agile se centra en la rápida implementación y despliegue de aplicaciones mediante la construcción de un producto pequeño y mínimamente viable (MVP), para luego realizar mejoras iterativas para agregar nuevas características y funciones, abordar las deficiencias, aprovechar las nuevas tecnologías e ideas y mejorar el rendimiento.
No existe una metodología ágil; de hecho, hay docenas, cada una con su propia historia, adherentes y lógica. En el caso del desarrollo basado en pruebas, por ejemplo, antes de que los codificadores creen una nueva pieza de código, primero escriben las pruebas automatizadas que garantizarán que el nuevo código funcione correctamente. Esto ayuda a garantizar que todo el código se pruebe antes de incorporarse a la última iteración de la aplicación.
La mayoría de las metodologías ágiles requieren que cada iteración sea muy corta, a menudo solo un par de semanas de duración. Durante esas iteraciones, llamadas sprints, el equipo de desarrollo se centra en agregar funciones o funcionalidades a la aplicación.
Rapidez
A veces, una aplicación es conceptualmente fácil de diseñar y desplegar, como una aplicación basada en formularios, un generador de reportes o una herramienta de consulta para una base de datos. En esos casos, puede no ser necesario un proceso completo de desarrollo de aplicaciones como cascada o ágil. Ahí es donde entra el desarrollo rápido de aplicaciones, o RAD. RAD cae dentro del enfoque ágil y se caracteriza por herramientas fáciles de usar que permiten a un equipo de desarrollo muy pequeño —o incluso a una sola persona— crear una interfaz de usuario, codificar la lógica interna y conectarse con fuentes de datos empresariales.
Históricamente, el desarrollo RAD se usaba para crear un prototipo visual de una aplicación deseada para que los desarrolladores y las partes interesadas pudieran acordar su apariencia y funcionalidad antes de comenzar el esfuerzo de programación “real”. Eso llevó a otro término para RAD: prototipado rápido. Sin embargo, con la aparición de herramientas low-code y no-code, el desarrollo RAD ha demostrado ser útil para aplicaciones simples que pueden construirse y desplegarse simplemente a partir de ese prototipo rápido. Además, el tiempo de desarrollo puede reducirse a días, lo que agrada a los usuarios empresariales. Si una aplicación puede construirse con un enfoque RAD, a menudo debería hacerse así.
Diferencias clave
| Menor tiempo de implementación. Con desarrollo ágil, los empleados o clientes de la organización pueden comenzar a usar la aplicación antes de que esté completamente desarrollada. Ágil es común en aplicaciones móviles, donde constantemente se añaden nuevas funciones. | Requisitos rígidos. Se prefiere un modelo en cascada cuando los requisitos son muy específicos y la aplicación no debe desviarse de ellos. Considera el software de un dispositivo médico, por ejemplo, o para sistemas de control industrial. |
| Los prototipos pueden volverse reales. Un proceso de desarrollo rápido puede ser el mejor para aplicaciones simples. Con el enfoque RAD y herramientas no-code/low-code, un desarrollador o incluso un usuario avanzado puede crear y desplegar un generador de reportes, una interfaz móvil para una base de datos o un formulario para la recolección de datos en días—quizás solo en horas. | Adaptable a necesidades cambiantes. Con desarrollo ágil, los cambios en los requisitos pueden incorporarse en ciclos futuros como una nueva función más. Tal vez una aplicación deba poder ejecutarse en una tableta portátil completamente nueva o incorporar inteligencia artificial generativa; esas cosas quizás ni siquiera se consideraron cuando se concibió la aplicación por primera vez. |
Aquí tienes tres ejemplos de diferentes aplicaciones empresariales construidas con metodologías específicas para adaptarse mejor a los casos de uso.
Las aplicaciones pueden empoderar a clientes y empleados, expandir el negocio o simplemente abordar puntos problemáticos. Dicho esto, el desarrollo de aplicaciones también puede ser costoso y requerir muchos recursos, y si el nuevo software tiene fallas de seguridad, puede representar un riesgo para la empresa y sus clientes. Aquí tienes algunas buenas prácticas que pueden ayudar a minimizar riesgos y maximizar el éxito.
La inteligencia artificial generativa se está utilizando para muchas tareas orientadas al texto: resumir informes, escribir sonetos, redactar correos de servicio al cliente, hacer que los chats sean más contextuales. Resulta que GenAI también es buena escribiendo código de software: un lenguaje de programación es un lenguaje, y desde la perspectiva del software, no es muy diferente del inglés, el español o el mandarín.
En lo que respecta al desarrollo de aplicaciones, GenAI es buena traduciendo la intención escrita de un desarrollador, expresada en lenguaje humano conversacional, en código completo y listo para ejecutar. Según experimentos iniciales, este código generado por IA es funcional, eficiente y seguro. Esto es especialmente evidente en las partes del código que son tediosas de desarrollar, como el código de acceso a bases de datos o los textos repetitivos que se usan para configurar microservicios.
Otra área donde GenAI puede ayudar a los desarrolladores es examinando código escrito por humanos para buscar errores, detectar vulnerabilidades potenciales y señalar dónde el programador no siguió las mejores prácticas. Espera que la asistencia basada en IA se convierta en una función estándar de las herramientas y plataformas de desarrollo de software más comunes.
El desarrollo de software es una práctica en evolución. Como se ha señalado, GenAI será de gran ayuda al liberar a los desarrolladores de tareas tediosas. Se convertirá en un componente básico del desarrollo de aplicaciones y estará integrado en las herramientas de desarrollo comunes. Nuevas arquitecturas como los microservicios permitirán construir nuevas aplicaciones rápidamente mediante un enfoque modular. Pero hay otras tendencias que hemos notado.
La seguridad sigue siendo una prioridad. Los actores maliciosos seguirán amenazando a las organizaciones, por lo que las aplicaciones no solo deben ser diseñadas y construidas teniendo en cuenta la seguridad, sino que también deben actualizarse continuamente a medida que surjan nuevas herramientas de ataque.
La movilidad llegó para quedarse. Para muchas personas, el teléfono inteligente es su dispositivo principal de cómputo, lo que significa que las organizaciones deben sentirse cómodas desarrollando aplicaciones móviles o diseñando para su uso en un navegador móvil.
Democratización del desarrollo. Los empleados seguirán exigiendo herramientas sin código o con poco código que les permitan desarrollar sus propias aplicaciones rápidamente. ¿Cómo fomentar esto sin sacrificar la calidad o la seguridad?
Oracle ofrece una amplia gama de herramientas, servicios y plataformas de desarrollo que pueden adaptarse a cualquier proyecto de desarrollo de aplicaciones. Además, Oracle ofrece la colección más completa de aplicaciones empresariales listas para usar, que pueden personalizarse e integrarse con tus propias aplicaciones para ayudar a cubrir tus necesidades.
¿Dónde realizar la implementación? Oracle ofrece la Oracle Cloud Infrastructure (OCI) de segunda generación, que cuenta con las bases de datos, servicios para desarrolladores, servicios de integración y almacenamiento que necesitarás. Estos están complementados con redes, análisis e inteligencia empresarial, herramientas low-code/no-code y nuevos servicios de IA que pueden aprovecharse en aplicaciones empresariales. Súmale a eso la seguridad de aplicaciones de Oracle, herramientas de cumplimiento y de gestión de costos, y ya estarás listo para comenzar.
Comparado con otras nubes, Oracle ofrece mejor relación precio/rendimiento, menores costos de almacenamiento y 48 regiones comerciales y gubernamentales en todo el mundo para satisfacer mejor tus necesidades. ¿No estás buscando la nube para tu próximo proyecto? Consulta los sistemas locales de Oracle, incluida la plataforma de bases de datos empresariales Oracle Exadata.
Puedes examinar la enorme variedad de tecnologías para desarrolladores de Oracle y luego ver cómo puedes crear, probar y desplegar aplicaciones en Oracle Cloud, de forma gratuita.
Tanto los desarrolladores como sus colegas del negocio pueden beneficiarse de aplicaciones nativas en la nube diseñadas específicamente para maximizar la agilidad, escalabilidad y eficiencia. Aprende más y encuentra 10 maneras adicionales en que la nube está mejorando.
¿Qué hace un desarrollador de aplicaciones?
Un desarrollador de aplicaciones crea aplicaciones empresariales —o más precisamente, forma parte de un equipo que construye esas aplicaciones. Un desarrollador debe tener habilidades técnicas, como conocimiento de metodologías ágiles; uno o más lenguajes de programación como Java, SQL, Python y JavaScript; y un entendimiento sólido de arquitecturas de software. Las responsabilidades específicas pueden incluir diseño arquitectónico, codificación, pruebas y depuración, diseño de interfaces de usuario, integración de bases de datos, redacción de informes y mantenimiento del software.
¿Cuáles son los pasos en el desarrollo de aplicaciones?
Hay ocho pasos principales en el desarrollo de aplicaciones; algunos de estos pueden realizarse en paralelo y, dependiendo de la metodología, pueden llevarse a cabo de forma iterativa.