Tendencias clave de desarrollo de software

Publicación del inglés original: martes, 23 de febrero de 2010 a las 12:03 PM por Somasegar

Más que nunca, hoy en día los desarrolladores están abiertos a considerar el uso de varias tecnologías para poder crear de manera sencilla soluciones y ofrecerlas a sus clientes rápidamente. Aumenta el número de opciones disponibles para los desarrolladores en términos de estilos de programación. Nuestro objetivo es proporcionar un buen soporte para todos los estilos de programación dentro de nuestras herramientas para permitir a nuestros clientes crear excelente software.

Están surgiendo varias tendencias dentro del área de desarrollo de software. A continuación se presentan algunas de las tendencias más importantes y recientes que he pensado. Esta lista no es exhaustiva de todas las tendencias de desarrollo, pero cada una representa un área en la que Microsoft está actualmente invirtiendo o va a invertir para ofrecérsela a nuestros clientes.

Computación en la nube

Computación en la nube permite a las empresas utilizar sólo los recursos informáticos que necesitan hoy en día, escalar para manejar las cargas máximas y evitar la sobrecarga de administración de hardware. Computación en la nube nivela el campo de juego para que compañías pequeñas puedan competir con empresas grandes y establecidas, con un costo razonable y previsible. Windows Server, Windows Azure, Azure SQL y servicios como Windows Live, Office y Xbox Live se encuentran en la nube. Microsoft se ha comprometido a aportar la mejor plataforma de computación en la nube y los servicios para el ecosistema de Windows. La nube es sólo un ejemplo de una plataforma informática virtual y la próxima generación de herramientas de desarrollo debe permiten a los desarrolladores crear software que se implemente y funcione bien en la nube y en otros entornos virtuales.

La web como una plataforma

El explorador proporciona un entorno enriquecido y un simple acceso a las aplicaciones. Los desarrolladores seleccionan cada vez más la web como su plataforma de software y desarrollo de software. Cada vez más, los desarrolladores y diseñadores usan herramientas que ofrecen una experiencia de desarrollo variado y una depuración y generación de perfiles diseñadas para el web. Las bibliotecas de JavaScript permiten a los desarrolladores de web a ser más eficaces que nunca con JavaScript al llegar a un amplio público. Las eficaces aplicaciones de internet, como las escritas para Silverlight, permiten a los desarrolladores a eliminar las limitaciones HTML y a aprovechar una amplia gama de características y recursos a la vez que se garantiza la compatibilidad entre plataformas.

Computación en paralelo

Según la ley de Moore, la predicción de que el rendimiento de la CPU se dobla cada dieciocho meses, ahora se cumple mediante la adición de más núcleos de procesador en lugar de un mayor rendimiento de un solo núcleo, aportando la potencia de procesamiento de núcleos múltiple para máquinas de bajo coste. Las nuevas tendencias en informática aprovechan las ventajas de procesadores gráficos de escritorio económicos y ampliamente disponibles para determinadas tareas. En el extremo superior de la capacidad de procesamiento, los centros de superordenadores están aprovechando clústeres para realizar complejas tareas de cálculo. En la actualidad, un puñado de programadores tiene los conocimientos necesarios para escribir código que se comporta bien en entornos de múltiples y varios núcleos. En el futuro, bibliotecas paralelas, depuración, creación de perfiles y herramientas de diagnóstico permitirán a los desarrolladores a aprovechar más los recursos informáticos paralelos.

Proliferación de dispositivos

Con la disponibilidad creciente de dispositivos económicos que se conectan a internet, todos queremos acceder e interactuar con nuestros datos de maneras que son adecuadas para las capacidades de nuestros dispositivos. Esperamos obtener acceso a nuestras identidades en línea y datos de manera fácil y segura en todos nuestros dispositivos. En la actualidad, Microsoft proporciona acceso a datos de los usuarios a través de Windows Live y Xbox LIVE. Con la proliferación de dispositivos ha llegado una proliferación de paradigmas de interfaz de usuario que permiten la interacción natural e intuitiva con dichos dispositivos. A medida que las soluciones basadas en cámaras, en voz y táctiles se vuelven disponibles y rentables, Microsoft está evolucionando el software para aprovechar las ventajas de estas capacidades para crear interfaces de usuario intuitivas. Windows 7 proporciona excelente compatibilidad para aplicaciones táctiles. Silverlight y WPF han adoptado interacciones de cámara y multitoque, como tiene MFC. Espero ejemplos de interfaz de usuario para continuar evolucionando y que se vuelven más intuitivas y eficaces.

Proceso de desarrollo Agile

Los procesos de desarrollo Agile, incluyendo Scrum, desarrollo controlado por pruebas e integración continua, suelen utilizarse tanto en las grandes empresas de desarrollo como en las más pequeñas, a menudo en combinación con otras prácticas de desarrollo. Dentro de Microsoft, muchos equipos han integrado elementos de prácticas de desarrollo Agile a su proceso. Visual Studio 2010 abre la puerta a metodologías Agile, lo que ofrece compatibilidad para algunos procesos Agile, tales como pruebas unitarias y planificación de iteraciones. Seguiremos soportando más metodologías Agile.

Desarrollo distribuido

El desarrollo distribuido permite a los miembros del equipo trabajar estrechamente a pesar de la separación geográfica entre sí, reuniendo así el talento en todo el mundo para trabajar sin problemas hacia un objetivo o proyecto común. La experiencia de un equipo de trabajo a través de distintas zonas horarias y fronteras debe ser tan buena como la experiencia para un solo desarrollador, pero también incluye compatibilidad con actividades de desarrollo basado en la nube tales como las revisiones de código distribuido, programación remota emparejada, y colaboración desarrollador o evaluador y uso compartido de recursos. Las grandes herramientas de desarrollo distribuido en equipo permitirán a los desarrolladores a crear la próxima generación de software, aprovechando el talento en todo el mundo.

Para concluir…

Estas tendencias no representan una lista completa de factores influyentes para todas las áreas, pero son algunas de las áreas que creemos pueden avanzar el desarrollo de software. Me gustaría conocer su perspectiva: ¿Cuáles de estas tendencias cree que será la más importante en el futuro? ¿Existen tendencias que cree que deberían incluirse en esta lista? Deje un comentario en el blog original de Soma con su opinión.