¿Qué es un ecosistema software?

Esta es una de esas entradas que llevo tiempo queriendo escribir y tras un tiempo pensando e intercambiando ideas con otros compañeros, he pensando que es momento de proporcionar mi perspectiva sobre los ecosistemas software.

En una de las entradas del blog de Brett Porter leí como usaba el término development ecosystem para referirse a como herramientas como Maven, Archiva y Continuum pueden ayudar a los equipos de desarrollo a ser más eficientes.

Un ecosistema software es un espacio de trabajo en el que conviven una serie de herramientas que acompañadas de unas buenas prácticas permiten a un equipo de desarrollo modelar una metodología de trabajo.

Me resulta complicado proporcionar una definición corta para transmitir una idea que es simple pero que implica muchísimas cosas:

  • […una serie de herramientas…]: ¿Qué herramientas?
  • […acompañadas…]: ¿Quiere decir esto que las herramientas por sí solas aportan poco?
  • […buenas prácticas…]: Aquel documento donde está explicado qué hacer, cómo y cuándo.
  • […modelar una metodología…]: Planificación, organización, medición, control, etc.

Todos los equipos de desarrollo software, incluyendo aquellos que se organizaban para realizar las prácticas de alguna asignatura de la carrera, tienen su propio ecosistema software. Los ecosistemas software surgen como necesidad de alcanzar nuestros objetivos de la forma más eficiente posible. Un equipo de trabajo puede alcanzar sus objetivos siguiendo Métrica v3 y usando poco más que una suite ofimática como OpenOffice y cualquier IDE de desarrollo para las tareas propias de codificación. Sin embargo, siendo este nuestro ecosistema software creo que nos costaría muchísimo responder a ciertas preguntas como:

  1. Cuál es el próximo hito en la planificación
  2. Qué sistema de versionado (version naming) se está llevando a cabo y cómo comprobarlo
  3. Cuánto costó elaborar un informe de calidad previo a obtener una nueva versión
  4. Cuál es la actividad del proyecto
  5. Qué métricas e indicadores de calidad se tienen del proyecto y cómo se obtienen
  6. y un largo etcétera.

Es cierto que el caso que he expuesto es algo extremista, pero os puedo asegurar, porque lo he sufrido, como un proyecto se lleva adelante a base de documentos de texto, hojas de cálculo, intercambio de correo y de vez en cuando intercambio de código fuente a través de correo para que un miembro del equipo hiciera que aquello “ensamblase” bien.

Por lo tanto, la correcta definición de un ecosistema software nos ayudará a flexibilizar y agilizar tareas, que en cierta medida se traducen en eficiencia y productividad.

Algunos factores que condicionan la definición y configuración de un ecosistema software:

  1. Marco tecnológico: Las herramientas que conformen nuestro ecosistema software en gran medida estarán condicionadas por nuestro marco tecnológico. Obviamente no es igual trabajar con tecnología Java que con tecnología .NET
  2. Desarrollo de negocio: Es muy importante si nuestra actividad se centra en el desarrollo de soluciones a medida o por el contrario desarrollamos una línea de productos. En el primer caso, una vez entregada una versión estable, nuestra implicación queda resumida a una garantía de mantenimiento. Sin embargo, desarrollar un producto tiene muchas más implicaciones que requieren atender de forma eficiente la interacción con los consumidores de nuestros productos.

Disponer de un ecosistema software estable y bien definido puede ser un valor añadido de cara a nuestros clientes. Construir un ecosistema software no es sencillo ni es una tarea que se pueda llevar a cabo en semanas, entre otras cosas porque implica un cambio en la cultura de empresa puesto que estamos hablando de nuestra forma de trabajar.

Más adelante intentaré hablar sobre los ecosistemas software como paso previo para las factorías de software.

20 thoughts on “¿Qué es un ecosistema software?

  1. Hola Manu,

    Leyendo tu artículo se han resuelto algunas de las dudas que tenía sobre los ecosistemas software, pero aún sigo teniendo una, ¿qué ocurre cuando el marco tecnológico de nuestra empresa es heterogéneo?, es decir, cómo debemos enfocar la construcción de nuestro ecosistema software si, por ejemplo, hacemos unos proyectos con tecnología Java y otros con tecnología Python.

    Entiendo que, en este caso, una posible aproximación pasará por reutilizar aquellos elementos de nuestro ecosistema software que sean independientes de la tecnología, como por ejemplo el sistema de control de versiones, y utilizar los componentes específicos que la tecnología concreta provea para aquellos elementos del ecosistema que sean dependientes de la tecnología, como podría ser el servidor de integración continua.

    ¿Qué opinas/ais?

    Un saludo,

    Ángel C. Lázaro

  2. Pingback: Ya estamos aquí « Ángel C. Lázaro

  3. Hola Ángel:

    En primer lugar enhorabuena por la iniciativa de crear un blog, creo que es un muy buen ejercicio y una intención clara de compartir.
    Con respecto a tu pregunta creo que tú mismo has dado con la respuesta. Es probable que algunas de las herramientas no estén condicionadas por la tecnología, sin embargo, otras sí. Donde hay más “inconvenientes” es cuando en tu marco tecnológico deben coexistir tecnologías como JAVA y .NET. Nosotros por ejemplo trabajamos tanto con Java como PHP y Python, y el ecosistema es único.

    Un saludo

  4. Pingback: Mi espacio » El software no es sólo desarrollo

  5. Pingback: Mi espacio » Cuidando los pequeños detalles con las propiedades de subversion

  6. Pingback: Mi espacio » Introducción a m2eclipse

  7. Pingback: Mi espacio » ¿Qué le pedirías a una herramienta de modelado de requisitos?

  8. Pingback: Mi espacio » DEIN - Ecosistema Software

  9. Pingback: Mi espacio » Un problema al que le faltan datos

  10. Pingback: Beecoder’s dev blog » Blog Archive » Nuestro ecosistema software

  11. Pingback: Mi espacio » Administración electrónica y proveedores de software

  12. Pingback: Qué aporta Clinker a devops? « klicap – ingeniería del puzle

  13. Pingback: Clinker – Ecosistema de Desarrollo Software | Fábricas de Software

  14. Pingback: ¿Cuánto cuesta poner en marcha un ecosistema de desarrollo software? « klicap – ingeniería del puzle

  15. Pingback: Los ecosistemas de software o como mejorar mi manera de desarrollar software (I) — Farmer Dev's Blog

  16. Pingback: Ecosistemas de desarrollo de software: lineas de automatización. « Jbravomontero's Blog

  17. Pingback: Mi espacio » Concurso Universitario de Software Libre (6ª edición)

Leave a Reply

Your email address will not be published. Required fields are marked *