← Ir a portada

Críticas a la ingeniería del software

Acabo de leer las críticas a la ingeniería del software de las que se hace eco  Ricardo Galli en su artículo. Me parecen muy interesantes. Copipego aquí directamente:

  • Hoy en día todos comprendemos que las métricas de software cuestan dinero y tiempo, y que deben ser usadas con moderación.
  • El desarrollo de software es inherentemente diferente de las ciencias naturales tales como las física, por lo que sus métricas son muchas menos precisas para capturar lo que deben describir.
  • La frase más citada del libre es «No puedes controlar lo que no puedes medir». Esta frase contiene una verdad real, pero cada vez me sentía más incómodo con el uso que hice de ella. Está implícita en la frase (y en título del libro) que el control es un aspecto importante, quizás el más importante, de cualquier proyecto de software. Pero no lo es.
  • Muchos proyectos se han realizado sin demasiado control pero han generado productos maravillosos tales como Google Earth o la Wikipedia.
  • Esto nos lleva a la desagradable conclusión que el control estricto es algo que importa mucho en proyectos relativamente inútiles y mucho menos en proyectos útiles. Sugiere que mientras más te enfoques en el control aumenta la probabilidad de que estás trabajando en un proyecto que se esfuerza por generar algo de valor relativamente menor.
  • ¿Estoy diciendo que está bien ejecutar proyecto sin control o con un control relativamente menor? Casi. Estoy sugiriendo que deberíamos seleccionar primero a los proyectos cuyo control preciso no importe demasiado.
  • Estoy llegando gradualmente a la conclusión que el momento de la ingeniería del software vino y se marchó.
  • En los últimos 40 años nos hemos torturado por nuestra ineptitud en acabar proyectos a tiempo y con el presupuesto previsto. Pero como sugerí antes, no debería haber sido el objetivo supremo.
  • El objetivo más importante es la transformación, crear software que cambie el mundo, o que transforme una empresa, o la forma en que hace negocios.
  • El desarrollo de software es y será siempre algo experimental. Lo construcción real de software no es necesariamente experimental, pero sí lo es su concepción. Allí deberíamos enfocar nuestros esfuerzos. Allí es donde deberíamos haberlo hecho siempre.

Respecto a éstas críticas, básicamente estoy de acuerdo. Respecto al propio artículo de Galli, dejaré aquí mi opinión:

No creo que nadie dude hoy en día de que los métodos clásicos de desarrollo importados de la ingeniería clásica no se ajustan al desarrollo de software. Esto no es nada polémico. Tampoco creo que nadie dude del éxito del software libre a través de proyectos como el Kernel de Linux y otros muchos. Pero también creo que se ha demostrado la eficacia de las llamadas metodologías ágiles, de ciertas métricas como Code Coverage, etc.

Actualización, dos opiniones más que interesantes al hilo del mismo artículo de Coding Horror:

Apuntes relacionados:

6 Respuestas a “Críticas a la ingeniería del software”

  1. > La mayoría de los gurús actuales abrazan los “métodos ágiles” y estos son la corriente principal.

    El artículo que referencio como los míos no van en contra de las “ágiles”, más bien lo contrario.

    > No creo que exista ninguna incompatibilidad entre hacer software libre y utilizar métodos ágiles.

    Tampoco lo dije, todo lo contrario. De hecho digo que cuando se pusieron de moda (especialmente la XP) ya hace años que se usaban en el software libre.

    > Utilizar el kernel de Linux como ejemplo es un poco tendencioso.

    Tampoco hay muchos proyectos de software libre como la Wikipedia (que tampoco es solamente un proyecto de software, es mucho más). No veo que sea “tendencioso”, tampoco hay muchos proyectos de software que se parezcan al IBM 360 (que sirvió de base a la “biblia” “The Mythical Man-Month”).

    El ejemplo de Linux es paradigmático es cómo se puede desarrollar software grande (+ 6 millines de líneas), complejo, portable y escalable de forma colaborativa, sin diseño previo (salvo ideas básicas de Unix) y con una “coordinación débil” vía lista de correos y peer review.

    > ¿Qué software? No es lo mismo programar un misil tierra aire, el World of Warcraft, la página web de una PYME o un software bancario…

    Tampoco dije lo contrario, de hecho es la ingeniería tradicional del software la que pretendió unificarlo y tratarlo de forma genérica.

  2. Luis Artola dice:

    Hola Ricardo,

    recuerdo éste post tuyo:
    http://gallir.wordpress.com/2008/04/16/disenos-ingenieria-agiles-y-frameworks/

    de ahí me viene la idea de que no crees que los frameworks, patrones o metodologías ágiles sean de especial valor, frente lo que ha aportado el software libre. Y yo no creo que eso sea así.

    Pero si lo que pretendías con tu artículo era meterte con las metodologías clásicas, me da la sensación de que llegas realmente tarde. Yo creo que ya está asumidísimo que eran un error…

    [puya]
    quizá sea porque en el ámbito académico todo siempre va con unos años de retraso… :-P
    [/puya]

    Un saludo y gracias por molestarte en contestar a mi artículo, bastante tienes con contestar a toda esa gente que escribe en los comentarios de tu blog y que, al parecer, está cabreadísima… :-D

  3. Luis, esto es lo que escribí en ese apunte que enlazas:

    Luego seguí la pista al Extreme Programming (que decían que era “revolucionario”, pero la verdad es que era bastante parecido y menos radical de lo que se hace en los proyectos gordos de software libre)

    Sigo pensando igual: mucho hype sobre algo ya “usado” ampliamente. Pero eso no significa que critique a lo “usado”.

    Sobre mi artículo, no hablo sólo de las metodologías clásicas, sino en la “obsesión de control/medición” que se promovió desde la “ingeniería del software” y que es válido tanto en las pesadas como las ágiles.

    Pero, lo que no me cuadra es que cuando se habla de “ingeniería del software” todo el mundo se ponga a discutir sobre una metodología u otra, pesdas o ligeras. Como si las “metodologías” lo fuesen todo, ni siquiera son “científicas” (de allí lo de pseudociencia, cuando se las intenta hacer pasar como que tienen base científica).

    Dentro de 10 años quizás no se usen ninguna de las que se usan ahora.

    Sobre que esté asumidísimo que sean un error, me parece que estás equivocado. Todavía se siguen dedicando horas y horas de clases aprendiendo de memoria Metrica 3 en muchas universidades.

    > gente que escribe en los comentarios de tu blog y que, al parecer, está cabreadísima…

    Si necesitas trolles escribe sobre software, te saldrán miles de expertos que te dirán que no tienes puta idea, o porque eres empresario, o porque eres académico, o porque eres ambos…

  4. Joserra dice:

    Bueno, bueno, la verdad que el artículo original es muy bueno: http://www.codinghorror.com/blog/archives/001288.html

    Yo en este tema estoy dividido, estoy seguro de qué la informatica se CONVERTIRÁ en una Ingeniería (entendiendo por esto por que llegarán a existir métodos y procesos para validar los desarrollos). Pero somos demasiado jóvenes como profesión, y no creo que tengamos la mínima idea de cómo se va a lograr esto :)

  5. Luis Artola dice:

    @ricardo, respecto a si 10 de diez años se seguirán utilizando las mismas… dios santo, espero que no, espero que todavía la cosa evolucione muchísimo.
    Sobre lo asumido o no del error… madre mía, ¡Métrica 3! Supongo que tú tendrás una visión mucho más exacta de lo que se enseña en las universidades. De todas formas, la distancia entre la forma de programar real en las empresas y las teorías que se enseñan en las universidades, en vez de disminuir, creo que va en aumento. Aunque esto sería objeto de otro amplíiiiisimo debate (sobre el que tú has escrito y yo he leído ;-) )

    @joserra, yo también creo que la Ingeniería del software tiene que seguir de fracaso en fracaso hasta el triunfo final… y también creo que a día de hoy ya existe una Ingeniería del software, entendida como un conocimiento específico para el desarrollo del software que aunque comparta ideas con otras ingenierías sigue su propio camino. No soy especialmente fan de utilizar la palabra “ingeniería”… pero es que no se me ocurre otra mejor …

  6. Pavel Franco Marín dice:

    Buen día.

    Posiciones muy radicales y polémicas se pueden encontrar al abordar este tema, en particular si se habla de que la Ingenierá del Software se marchó de nuestro contexto.

    Personalmente, como estudioso de las metodologías de desarrollo de software desde la práctica y desde la teoría, pienso es demasiado rápido pensar en que la Ingeniería del Software se marchó básicamente porque la última palabra no está dicha aún, además, pienso que no se trata de lanzar juicios al respecto de las familias metodológicas (tradicionales, ágiles e híbridas -definidas por Ivar Jacobson-), más bien se trata de determinar qué tipo de proyecto se va a trabajar y cuales las necesidades que el mismo tiene, a partir de lo que se deberá establecer cuáles son las necesidades metodológicas.

    Sin embargo, no quiero decir que no estoy en la misma línea cuando de la crítica (constructiva) se trata, me explico, claramente el problema que la Ingeniería del Software tiene actualmente, versa no sobre lo buenas o malas que pueden ser las metodologías existentes (una metodología puede ser buena en un escenario y en otro no), sino sobre las necesidades que existen en función de los proyectos de software que actualmente se ejecutan, específicamente estoy hablando de que actualmente no se cuenta con una metodología que efectivamente se ajuste a cualquier tipo de proyecto y que entregue elementos inherentes a la calidad, la gestión, la organización y el negocio mismo, entre otros, claramente definidos.

    Saludos.

Deja un comentario