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 en un modelo de software como servicio. Piensa en Microsoft Office, Oracle NetSuite o Adobe Photoshop. Otros fueron escritos o personalizados según tus especificaciones, ya sea por equipos de desarrollo internos o por contratistas. Ese segundo caso es el foco de este artículo.
El desarrollo de aplicaciones, o AppDev, es el proceso de diseño, creación, prueba e implementación de software. El desarrollo exitoso de aplicaciones requiere personas con varias habilidades. Un equipo de desarrollo de aplicaciones 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 su núcleo, el desarrollo de aplicaciones comienza con un problema para resolver o una oportunidad para aprovechar. Debido a que todo el software necesita recursos para crearse, implementarse y mantenerse, debe haber una buena probabilidad de que el beneficio del caso 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 dos rutas:
Desarrollo planificado. Todos los requisitos de la aplicación se mapean con antelació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 dolorosamente lento para los grandes proyectos y tardar años en completarse; 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, que a menudo toman solo unas pocas semanas. Los despliegues se realizan con frecuencia. Este enfoque, a menudo denominado ágil, es más flexible y puede ofrecer beneficios empresariales más rápidamente, al tiempo que responde a los requisitos cambiantes.
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 fracción 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 competidoras, 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 pueden ser accesadas por empleados, clientes u otros socios. 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 completo de desarrollo de aplicaciones.
Aunque las aplicaciones low-code/no-code no pueden rivalizar con la sofisticación de una aplicación construida desde cero por arquitectos, diseñadores, programadores y testers, pueden superar las personalizaciones en hojas de cálculo y ofrecer una interfaz sofisticada y fácil de usar que los no programadores aprecian. Estas aplicaciones también se pueden usar para integrar otras aplicaciones de manera ad-hoc, lo que es perfecto para manejar problemas de corto plazo o aprovechar oportunidades inmediatas.
La naturaleza simplificada de estas herramientas también es práctica para programadores con experiencia. Consulta Oracle APEX para comenzar con el desarrollo de aplicaciones low-code.
Móvil
El desarrollo de aplicaciones móviles implica una amplia gama de herramientas, servicios y productos para crear y distribuir apps. Google Android y Apple iOS son las plataformas más populares para aplicaciones móviles y admiten una variedad de herramientas de desarrollo y metodologías. Las aplicaciones móviles suelen diseñarse utilizando 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 la naturaleza siempre conectada de los teléfonos y tabletas, muchas empresas han adoptado las apps móviles como una excelente forma de atender tanto a empleados como a clientes. En el mundo corporativo, los empleados usan aplicaciones móviles para ventas, planificación de recursos empresariales, autoservicio de RR. HH., seguridad, control de tiempo, mensajería y más. Aunque muchas aplicaciones móviles son creadas por empresas especializadas, también puedes diseñarlas, desarrollarlas y desplegarlas internamente para tus empleados y clientes.
Base de datos
Las aplicaciones empresariales funcionan con datos como transacciones de ventas, listas de precios de productos, materiales de RR. HH., correos electrónicos, registros bancarios, información de contacto de clientes y estados financieros de la empresa. El lugar más eficiente para almacenar datos empresariales es en una base de datos, de modo que se puedan recuperar, buscar, actualizar, proteger y analizar fácilmente.
Tanto las aplicaciones comerciales como las personalizadas pueden acceder a bases de datos mediante lenguajes de consulta altamente eficientes, formatos estándar de intercambio de datos e interfaces de programación robustas. Sin embargo, algunas bases de datos avanzadas, como Oracle Database 23ai, pueden ejecutar aplicaciones dentro del propio motor de base de datos, lo que a menudo proporciona a las aplicaciones acceso rápido, seguro y robusto a esos datos. Las herramientas de desarrollo pueden dirigirse al motor de base de datos para dichas aplicaciones, un enfoque que tiene el beneficio adicional de permitir que los administradores de bases de datos gestionen y optimicen esas apps después de su implementación.
Microservicios
Las aplicaciones diseñadas en una arquitectura de microservicios en la nube tienden a ser fáciles de mantener y desplegar, además de muy robustas. Puede haber cientos o miles de microservicios pequeños, cada uno una pieza construida para realizar de manera eficiente una sola tarea y para comunicarse con otras aplicaciones o microservicios usando protocolos de comunicación simples.
Las aplicaciones basadas en microservicios son altamente escalables también; el diseño centrado en la nube y su arquitectura significan que, si un servicio particular se utiliza mucho, la nube puede simplemente crear y ejecutar muchas copias según se requiera, de forma automática. Además, dado que los microservicios individuales están enfocados 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.
Sin importar cuál sea la metodología elegida, hay dos verdades: el objetivo siempre es 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 demandando herramientas de poco/sin código que les permitan desarrollar sus propias aplicaciones rápidamente. ¿Cómo vas a fomentar esto sin sacrificar calidad o 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 desplegar? 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. Conoce más y revisa 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.