Inicio arrow Artículos arrow Críticas a la ingeniería del software Make Text BiggerMake Text SmallerReset Text Size
Críticas a la ingeniería del software E-mail
Valoración del artículo: / 40
MaloBueno 
17.04.2005

Son muchas las críticas que argumentan que la ingeniería del software se asienta sobre bases y conceptos erróneos. En algunas se afirma incluso que el desarrollo de software no se sujeta a los principios científicos y rigurosos, propios de las ingenierías.

Este artículo es una versión modificada del publicado en wikipedia "Criticism of software engineering" , y recoge la relación de críticas más frecuentes hacia la ingeniería del software; acompañadas de sus correspondientes reflexiones.
El espíritu de muchas de ellas es común a otras actividades humanas.

Gestión de las expectativas

crítica
La ingeniería del software considera transcendental para el éxito de sus proyectos, satisfacer las expectativas del cliente relativas al resultado y a las fechas de entrega. Por esta razón se parece más a la sicología o al marketing, y no a una ingeniería tradicional con regulación legal de responsabilidades por incumplimiento de intereses generales para la sociedad o para sus clientes.

Respuesta
Todas las profesiones e ingenierías gestionan expectativas. De hecho el concepto de responsabilidad frente a intereses generales de la sociedad implica la satisfacción de las expectativas de quienes en mayor o menor medida resultan implicados por los proyectos de ingeniería.

Requisitos deficientes

Crítica
La mayoría de los proyectos de ingeniería del software tienen requisitos incompletos o inconsistentes. Unas veces se debe a la poca experiencia de los clientes para especificar requisitos. Otras a que no saben bien qué es lo que necesitan y se limitan a decir "Lo sabré cuando lo vea". Incluso los clientes que conocen qué es exactamente lo que quieren encuentran difícil expresarlo en forma de requisitos.
Además de estas dificultades suele ser normal que los clientes esperen más de lo que han expresado, o que los documentos de requisitos describan aplicaciones sin una solución práctica informatizable.

Respuesta
El nivel de certidumbre que se puede obtener de la visión final de un sistema al comenzar su construcción varía en función de sus características: sistemas novedosos sin antecedentes similares previos, sistemas para integrarse en dispositivos de hardware, sistemas para realizar operaciones en negocios veteranos y conocidos o novedosos y sin experiencia previa por parte de los clientes, etc.

Optar por evitar todos los proyectos con requisitos deficientes o difíciles, o por aplicar siempre técnicas de prototipado y desarrollo ágil, o sus contrarias de no comenzar a trabajar hasta tener definido el sistema no son soluciones válidas.
La aplicación de metodologías de ingeniería de requisitos preventiva, o de desarrollo ágil reactivo debe decidirse según las características de cada proyecto.

Complejidad creciente

Crítica
Los críticos señalan el incremento en la complejidad de los requisitos y de las expectativas de los usuarios; y aunque se ha producido una mejora paralela en las tecnologías y las prácticas empleadas, no ha sido capaz de cerrar la brecha entre expectativas y resultados.

Respuesta
El incremento de la complejidad refleja el éxito de la profesión, porque la demanda es una consecuencia de la oferta. El hecho de que los clientes pidan más muestra su confianza en la capacidad de de respuesta de la profesión.

Cambio continuo

Crítica
Los profesionales del software desarrollan de forma continua nuevas prácticas y técnicas para aplicar en todos los entornos posibles. Los críticos argumentan que este desarrollo constante de nuevas prácticas evidencia los fallos de los anteriores.

Respuesta
Muchos ven en el cambio continuo una prueba de que la ingeniería del software se desarrolla y aprende de forma satisfactoria. También las ingenierías tradicionales desarrollan prácticas y técnicas nuevas de forma constante.

Fallos continuos

Crítica
Los críticos argumentan que son muy frecuentes los sistemas con diseños o desarrollos pobres, y que los desastres iniciales del software no han sido capaces de prevenir los siguientes.

Respuesta
Todas las profesiones que trabajan para realizar proyectos, cada vez mejores y más grandes cometen errores. La ingeniería tradicional también tiene fallos: Los automóviles matan a 40.000 personas cada año en los Estados Unidos. Los accidentes nucleares de Three Mile Island y Chernobyl o el desastre de la planta química de Bhopal mataron a centenares de personas. Las explosiones de las lanzaderas espaciales Columbia y Challenger; o el uso como aditivo para la gasolina del MTBE, que termina por contaminar el agua potable son algunos ejemplos.
Aunque se han desarrollado, y se desarrollan grandes sistemas de software, la presencia de errores es un problema tanto en la ingeniería del software como en la ingeniería tradicional.
Por eso hay quien afirma que la ingeniería del software ofrece ya resultados tan fiables y predecibles como la ingeniería aeroespacial o la biológica.

Fallos para determinar las causas con exactitud

Crítica
Las críticas afirman que mientras los ingenieros tradicionales analizan los errores, establecen con precisión sus causas y diseñan métodos para evitarlos en el futuro; los ingenieros de software no pueden establecer métodos rutinarios y sistemáticos para determinar con precisión sus causas, o tardan demasiado para evitar con garantías repeticiones futuras.

Respuesta
La depuración es la actividad que establece con claridad la causa de los fallos de las aplicaciones. Los procesos de mejora incluyen la búsqueda de la causa de los problemas en los procesos. Los ingenieros de software delimitan de forma sistemática las causas, y emplean los resultados para desarrollar mejores lenguajes, bases de datos, procesos y aplicaciones.

Nada nuevo

Crítica
Las críticas afirman que los ingenieros de software no crean nada nuevo, sino que se limitan a emplear lo ya conocido por la ciencia de la computación.

Respuesta
Motu proprio, los ingenieros de software optimizan compiladores, desarrollan sistemas para trazar y gestionar errores, para la gestión de la configuración, como CVS, o métodos de trabajo como Extreme Programming. Independientemente de quien crea o mejora las tecnologías y las prácticas, los ingenieros de software son brillantes a la hora de adoptar las mejores.

Cualquiera puede hacer ingeniería del software

Crítica
Cualquier persona hábil en otros campos (ingenieros, científicos, personas de negocio) pueden diseñar plantillas para hojas de cálculo o simulaciones, y de modo accidental llegar a escribir grandes aplicaciones, suponiendo así que son ingenieros de software. Por esta razón, la ingeniería de software no requiere conocimientos especiales.

Respuesta
La ingeniería de software es una práctica que requiere aprendizaje específico y práctica. Son ingenieros de software las personas que cuentan con la formación y práctica adecuadas, y se mantienen al día en la evolución de la tecnología, los métodos y las aplicaciones. Esto es aplicable a todas las profesiones.

No sabemos qué es la ingeniería del software

Crítica
La ingeniería del software no se ajusta a los modelos ortodoxos de definición y clasificación propios de las ingenierías (cálculo y rigor científico).

Respuesta
Esta afirmación la suelen realizar a menudo los críticos que quieren imponer sus propias definiciones.
Es mucho lo que sabemos en la actualidad de la ingeniería del software. Las tecnologías, prácticas y aplicaciones, así como la propia comunidad de la ingeniería del software está en continuo crecimiento. Por supuesto, los ingenieros de software mantienen desacuerdos sobre muchos detalles.

El software no es ciencia

Crítica
Las ingenierías civiles, eléctricas, mecánicas o químicas se construyen sobre resultados físicos o químicos cuyo rigor y solidez científica permiten construir sistemas complejos con métodos institucionalizados y sistemáticos. Sin embargo no ocurre lo mismo con el software, donde no es posible descomponer de forma sistemática un sistema complejo. Al no tener un acuerdo unificado sobre la Ingeniería del Software resulta difícil evaluar la cualificación de quienes la practican.

Respuesta
Los ingenieros de software emplean lógica, teorías probadas y matemática discreta para crear funciones en el desarrollo de programas.

No hay teoremas sobre personas y proyectos.

Crítica.
No hay teoremas que expliquen porqué unos ingenieros de software son más productivos que otros. Tampoco los hay capaces de explicar porqué unos proyectos fracasan y otros no. No se puede elaborar una ingeniería sin conocer esto.

Respuesta
Las ingenierías implican actividades sociales complejas. Ningún teorema puede explicar porqué un ingeniero mecánico es más productovo que otro. Ningún teorema puede explicar por qué algunos proyectos civiles como la construcción de carreteras Big Dig de Boston desbordan las estimaciones y presupuestos, o por qué se incendian las lanzaderas espaciales.

¿Qué es éxito?

Crítica
Según un estudio de Standish Group de 2000, el 28% de los proyectos de software se ejecutaban cumpliendo todas las condiciones de éxito (funcionalidad adecuada, cumplimiento de agendas y presupuestos); mientras que el 23% fallaba en todas.

Respuesta
Son muchos los proyectos de ingeniería incapaces de satisfacer las expectativas: muchos puentes y edificios se construyen desbordando agendas y costes. Considere que el 40% de las lanzaderas espaciales se han incendiado y el resto han quedado fuera de servicio para unos cuantos años. Casi todas las construcciones de casas suelen sobrepasar los costes y las agendas. El exito en los proyectos de software no es muy diferente al de su entorno.

Por arte de magia

Crítica
Después de un duro trabajo de programación para desarrollar un sistema, ocurre con frecuencia que los clientes no son conscientes de la dificultad que encierra.

Respuesta.
Esto ocurre en todas las profesiones.

El desarrollo de software es inherentemente creativo


Crítica
El software es un conocimiento para la ejecución que se descubre a través de un proceso creativo, donde el aprendizaje, el trabajo por prueba y error y la capacidad para lidiar con los retos de las propias asunciones son importantes. Para la fase de construcción se cuenta con el trabajo automatizado de los compiladores, pero los aspectos más difíciles se encuentran en la obtención de los requisitos y en el diseño del sistema, etapas más próximas a la creación artística que a la ingeniería o a la ciencia. Por eso el ámbito de los beneficios de la ingeniería del software se ciñe a facilitar que los desarrolladores puedan probar sus ideas, y puedan descubrir los errores con la mayor agilidad posible proporcionándoles información sobre el estado del sistema de software.

Respuesta
Desarrollar software supone construir artefactos lógicos con capacidad de trabajo. Las actividades de construcción entremezclan el componente técnico con el creativo que el diseñador, como autor de la obra, puede desarrollar en mayor o menor medida. De forma similar ocurre en otras ingenierías de construcción. En la arquitectura, por ejemplo, la faceta de ingeniería cubre el componente técnico. El nivel de creatividad y diseño se apoya más en el talento del creador, uso de maquetas, prototipos, etc.
Muchos ingenieros de software emplean métodos ágiles para desarrollar software, porque encuentran en ellos menos trabas para desarrollar la faceta creativa.
La ingeniería de requisitos establece procesos y técnicas para la obtención, análisis y especificación de las funcionalidades, parámetros de rendimiento y calidad que debe satisfacer el sistema; así como para su gestión y mantenimiento durante el ciclo de vida.

No hay consenso


Crítica
En las ingenierías tradicionales hay un área de consenso clara sobre cómo deben construirse las obras, con qué estándares y los riesgos que se asumen al descuidarlos. Los ingenieros que no siguen las prácticas de su profesión pueden ser demandados. Sin embargo no hay un consenso similar en la ingeniería del software, donde cada cual promueve sus propios métodos, proclamando grandes beneficios de productividad que generalmente no se respaldan con evidencias científicas imparciales.

Respuesta.
Sí, es cierto. La ingeniería del software es una disciplina muy joven que escasamente cuenta con cinco décadas de vida. El contraste y la experiencia de tendencias es el camino de la experiencia que da madurez a todas las ingenierías.

Revisión: 17 abril 2005

Copyright (c)2005 Juan Palacio
Con permiso para la copia, distribución y/o modificación de este documento en los términos de la licencia
GNU Free Documentation License, en sus versión 1.02 o cualquiera de las posteriores publicadas por la Fundación de Software Libre.

Comentarios (10)
... : Invitado
:?
September 02, 2005
Muy Cierto todo : Invitado
ni mas q decir todo claro
May 04, 2006
No comparto algunas Crticas : -
Quien dijo que la Ingeniería debe ser en base a modelos númericos, ya sean matemáticos o físicos? Ingeniería viene de INGENIO (Creatividad), por lo tanto esto es lo que utiliza la Ingeniería de Software, el ingenio. Toda ingeniería utiliza la lógica en sus proyectos, la de software también. Existen estandares de desarrollo que pueden aplicar las empresas que están probados y aprobados, y si bien cada empresa puede crear su propio estandar de trabajo, eso no es CREATIVIDAD = INGENIO = INGENIERIA.
Proximo a recibirme en Ing. de Sistemas
October 26, 2006
Michoacano : Michoacano : http://HTTP://michoacano.com.mx
La ingenieria del software se basa en sentido común, por lo que es muy idiota estudiar esto, mejor estudio administración, que es lo mismo.
February 25, 2007
Para el que dice que es muy idiota estudiar esto y mejor estudia administración : Ingeniero de software
La ingeniería de software es un área en la cuál se requiere de mucha "Lógica" y el sentido común no necesariamente es "lógico" varía de acuerdo al coeficiente intelectual de cada persona y de acuerdo a su mundo de qué es lógico para sí.
Por otro lado sin ofender a las personas que estudian administración, normalmente la persona que dice que mejor estudia administración en vez de ingeniería del software es porque normalmente no les dió la cabeza para entenderlo.

Saludos,

Un Ingeniero de Software
April 07, 2007
Mi punto de vista : inGNUcious
Ingeniería de software, es el uso de principios y prácticas desarrolladas por el ambito de las ciencias de la computación (Licenciados en ciencias de la computación), probadas y estandarizadas a travez del tiempo... y claro el ingeniero hace uso de estas herramientas de manera ingeniosa, pero no hace ningun descubrimiento (por lo menos ese no es su rol).
Lo que pasa que en si el desarrollo de software necesita de ingenio, descubrimiento y análisis del dominio en particular, en el que se enfoca el software que se desarrollará.
Por eso parece que el ingeniero, descubre cosas nuevas y/o establece nuevas formas de desarrollo. Lo cual en realidad es un metodo de desarrollo gral aplicado a un dominio en particular.
Y con respecto a lo que dice el Lic. en administración, el sabe sobre administración... de proyectos. Pero sinceramente le digo, que la administración de proyectos de software es un caso totalmente diferente a lo que el a estudiado en toda su carrera. Y si le intereza un poco algo de administración en este tema, que se haga una maestria y estudie al director administrativo de google. Ese tipo ha escrito biblias de la administración (libros de ese estilo), pero uno de sus ultimos retos fue administrar una empresa de software...

Saludos.
Un Licenciado en Ciencias de la administracion especializado en administración de proyectos de software e ingenieria de software.
April 09, 2007
Comentario : Fe
Sobre la respuesta de la critica "Fallos continuos" no me parece que sea una buena respuesta la comparacion con otras ciencias y tecnologias que a la larga causas daños faltales en la sociedad, la exucas de que otros sistemas tambien fallan no es la solucion, la tecnologia por muy fiable que parezca aun sigue siendo creada por el hombre y por consiguiente tiende a sufrir errores, la forma en que la IS retoma esos errores y los previene (prototipos/pruebas) es la contraparte de la critica.

Conrespecto al comentario de "Michoacano" La IS tiene bases probabilisticos y matematicos no es puramente sentido comun, y lo veraz en "administracion" que NO ES LO MISMO, La IS en su etapa de analisis pone en prueba la capacidad intelectual o menta -en general- del Ing. y ese analisis no lo sacas de ningun modelo matemático.

Fe
May 06, 2007
la realidad es bonita : Sara
Soy estudiante de Ingeniería de Sistemas y como Ingeniero de Sistemas, estudio los sistemas como un todo, por lo que tengo que conocer tanto del hardware como del software, la Ingeniería del Software como su propia denominación se define: Ingenio aplicado en la rama del Software, por ser ingeniero no solamente nos basamos en el ingenio sino también en los modelos matemáticos, físicos, o cualquier rama o ciencia que expresan o cuantifican los fenómenos.
May 15, 2007
... : MAURO
Para el amigo michoacano
no se si tendra aunque sea un poquito de etica y menos quiero pensar en etica profesional, pero por lo que describe es una persona que esta intentando decidirse por una carrera universitaria asi que te recomiendo que leas una guia del estudiante y definas tu futura profesion por lo que ademas te dejara un poco mas claro las diferencias entre una carrera y otra, comparto los comentarios de los demas colegas o no colegas.
Toda ingeniería como bien lo dice mas arriba y como bien se sabe proviene tanto del latin "ingenio" (creatividad) o en arabe "geometria" por lo tanto la matematica, como las comparaciones logicas son axiomaticas que son las que mayormente se aplican en la ingenieria en software o en otras "que claramente es una ingenieria" ya que toda ingenieria apunta al beneficio de la humanidad, ni hace falta que cite ejemplos... por lo tanto amigo el "sentido comun" dejalo para la vida cotidiana... saludos


June 12, 2007
... : Cristhian
La ingenieria de sistemas es la representacion logica de la realidad que se intenta plasmar, obviamente la informacion proveniente de la mente de un niño, producira un software al nivel de un niño pero si diseñas un sistema finaciero utilizara parte de esta ciencia con la finalidad de otorgar un sistema al nivel del usuario utilizando su propia logica, sin embargo un niño podria pedir con su imaginacion infantil cosas imposibles a lo cual la IS intentara resolver y entregar una solucion logica segun la teoria de sistema. matematicas discretas y la mas optima segun el analisis de algoritmo, si el sofware representa la realidad que el usuario desea impregnar en su pantalla; la calidad será optima, independiente si el conocimiento del usuario es objetivo. Siendo asi el estudio cientifico es observado por el hombre y si el hombre falla la ciencia falla y los sistemas entonces tambien fallan. por otra parte, la IS utiliza conceptos administrativos aplicados a la informatica a nivel sistematico y no especificos por que los recursos son dismiles. La IS como es nueva hereda conceptos anteriores de otras ramas de la ciencia especialmente de la computación. finalmente los aspectos legales de la IS tienen que ver con la infinidad de productos que producen los software desde juegos con distintas clasificaciones(infantil, adulto) o sistemas bancarios donde la seguridad es fundamental. Para esto es nesesario la utilizacion rigurosa de herramientas que garanticen la calidad, segun la necesidad del usuario (un niño o la NASA), se prevengan y monitoreen los riesgos, documentar la información del sistema y se economicen los recursos obviamente y lo mas importante el gran costo en analisis de la realidad anivel conceptual o de informacion, ningun arquitecto posee todos los recursos del mundo para gastarlos en un proyecto, ni siquiera Bill Gates... En el futuro esta rama crecera a grandes niveles de estandarización, debido a la recabacion de experiencia el cual es el "error" que comete la IS... smilies/angry.gif
June 12, 2007
Escribir comentario

 
< Anterior

En Navegapolis
En Internet


Artículos relacionados