L. S. C. Edgar Darío Ramírez de León [email protected] NO SILVER BULLET: ESSENCE AND ACCIDENTS OF SOFTWARE ENGINEERING (ENSAYO) Resumen Este ensayo discute las aseveraciones de Brooks [1] sobre las características y/o problemas intrínsecos (esencia, como los denomina el autor), los avances “accidentales” que han resuelto algunos problemas de la ingeniería de software y las esperanzas en más avances, tecnologías, desarrollos e investigación para resolver aquellos problemas no resueltos aún por dicha disciplina. Dentro de las características y/o problemas intrínsecos el autor discute: complejidad, conformidad, mutabilidad e invisibilidad del software. Por su parte, señala como avances o desarrollos accidentales: lenguajes de alto nivel, tiempo compartido y ambientes de programación unificados. Finalmente, como esperanzas destaca: avances en lenguajes de alto nivel, programación orientada a objetos, inteligencia artificial, sistemas expertos, programación “automática”, programación gráfica, verificación de programas, ambientes y herramientas, y estaciones de trabajo. 1. Introducción Brooks [1] desarrolla un ensayo donde plantea características y/o problemas intrínsecos (esencia), donde señala: complejidad, conformidad, mutabilidad e invisibilidad del software. Por otra parte, argumenta avances “accidentales” que han resuelto algunos problemas de la ingeniería de software, avances tales como: lenguajes de alto nivel, tiempo compartido y ambientes de programación unificados. Finalmente discute algunas esperanzas en más avances, tecnologías, desarrollos e investigación para resolver problemas no resueltos aún por dicha disciplina, en consecuencia, el autor discute sobre los lenguajes de alto nivel, programación orientada a objetos, inteligencia artificial, sistemas expertos, programación “automática”, programación gráfica, verificación de programas, ambientes y herramientas, y estaciones de trabajo. Como en una película de terror, donde se busca matar al lobo (el monstruo de la película), usando balas de plata, Brooks trata esas esperanzas computacionales como la(s) posible(s) bala(s) de plata que acabará con el monstruo computacional, concretamente en el área de ingeniería de software. De dicha analogía deriva el titulo: No silver bullet. El presente ensayo está dividido de la siguiente manera: la sección 2 comprende el análisis del trabajo del autor. En de dicha sección se encuentran: la sección 2.1 donde se describe, de manera general el contenido del artículo (dividido en 3 subsecciones, uno correspondiente a los problemas –esencia- del software, otro a las dificultades resueltas, y un último sobre las esperanzas para la solución de los problemas inherentes) y la sección 2.2 enfatiza detalles relevantes de dicha investigación (con 3 subsecciones asimilando las subsecciones en 2.1) con las Página 1 de 6 L. S. C. Edgar Darío Ramírez de León [email protected] subsecciones, indicando los conceptos en los que existe mutuo acuerdo (opinión personal) y algunas discrepancias ideológicas. La sección 2.2 es, en esencia, la crítica al artículo. Por último, se presentan las conclusiones del análisis del ensayo de Brooks. Y, al igual que en [2] se proponen algunas líneas o temas de investigación futuros, no una gran cantidad ya que el ensayo analizado no provee, en mi opinión, elementos cuantitativos que permitan el desarrollo de otras investigaciones, más allá de la simple emisión de juicios personales. 2. Análisis del artículo Para tener una mayor comprensión del tema, así como de las discrepancias ideológicas (personales) respecto al mismo, es necesario, describir un panorama general del artículo, destacando sus puntos importantes. Por tanto, a manera de lista, describiré a grandes rasgos el desarrollo del tema, para posteriormente desplegar el análisis. 2.1. Descripción general del artículo Para el desarrollo de su ensayo, Brooks adopta el concepto del esencialismo de Aristóteles [3], [4], donde Aristóteles plantea la esencia como todo aquello inherente de la naturaleza (en este caso, naturaleza del software, y concretamente, Brooks señala esencia como los problemas inherentes del software), y los accidentes, aquellas dificultades que han sido resueltas en la naturaleza, que, sin embargo no son las inherentes a ella (en este caso, avances, tecnologías, desarrollos e investigación para resolver problemas no resueltos aún por la ingeniería de software, y cuya naturaleza problemática no es inherente al software). A continuación se presentan dichos elementos y las esperanzas en la búsqueda de la bala de plata que acabe con los monstruos de la ingeniería de software. 2.1.1. Esencias (problemas inherentes del software) 1. El autor plantea características y/o problemas intrínsecos (esencia) del software. En ellos, señala la complejidad, conformidad, mutabilidad e invisibilidad del software. 2. Señala que las entidades de software son más complejas por su tamaño que quizás, cualquier otra construcción humana, ya que no existe, en un software dos partes iguales (al menos a nivel de código). 3. Indica que la conformidad es algo difícil de lograr en un software, debido a que muchos aspectos de conformidad son forzados sin ritmo o razón por sistemas e instituciones humanas. 4. La mutabilidad del software, de acuerdo con el autor, es aún mayor que en otro tipo de construcciones. Presenta como ejemplo, construcción de edificios, carros y computadoras. En dichos ejemplos, los cambios difícilmente se hacen a un producto acabado (carro), y si se necesitasen remodelaciones, estas son mínimas y en periodos de tiempo considerables. Este escenario no existe en los sistemas. Brooks menciona además, que los sistemas, en corto tiempo, estarán sujetos a múltiples factores sociales, leyes, usuarios, entre otros que forzarán una mayor naturaleza dinámica en los sistemas. Página 2 de 6 L. S. C. Edgar Darío Ramírez de León [email protected] 5. Para concluir con la esencia (problemas) del software, destaca que éste es invisible, una abstracción de una entidad. 2.1.2. Accidentes (dificultades resueltas en el software) 1. Brooks argumenta avances “accidentales” que han resuelto algunos problemas (no intrínsecos) de la ingeniería de software, avances tales como: lenguajes de alto nivel, tiempo compartido y ambientes de programación unificados. 2. Concibe al génesis de los lenguajes de alto nivel, como el ataque más poderoso en los problemas de productividad, fiabilidad y simplicidad del software. Afirma que los lenguajes de alto nivel liberan mucho de la complejidad accidental de un programa, proporcionando operaciones, tipos de datos, secuencias y condiciones. 3. Con el concepto de tiempo compartido, se logró una mayor productividad de los programadores y en la calidad de sus productos. 4. El autor, ve a los ambientes unificados de programación como una manera de atacar las dificultades que resultan del uso individual de programas, proveyendo en un mismo entorno, librerías, unified file formats, filtros, entre otros. 2.1.3. Esperanzas de encontrar la bala de plata (avances técnicos) 1. Avances en los lenguajes de alto nivel. Brooks señala que cuando la efectividad del lenguaje de programación Ada sea juzgada, se verá que habrá hecho una gran diferencia. No por las opciones particulares del lenguaje, ni por la combinación de ellas. La gran contribución de Ada habrá sido el cambio ocasionado en los programadores adoptando técnicas modernas de diseño de software. 2. Brooks, concuerda con muchos estudiantes quienes tienen muchas esperanzas en la programación orientada a objetos que cualquier otra técnica de moda en los 80’s. 3. Duda que Inteligencia Artificial sea el descubrimiento revolucionario que impacte enormemente en la productividad y calidad del software. En esencia, no cree que las técnicas o algoritmos de la IA sean lo suficientemente genéricos para ser aplicados en cualquier dominio de problemas, por ejemplo, algoritmos de reconocimiento de imágenes pudieran servir en reconocimiento de voz. 4. Ve que los Sistemas expertos seguramente pondrán al servicio lo que personas expertas pondrán a disposición de personas sin tanta experiencia en un área específica. 5. Concibe el origen de la programación “automática” como una técnica para la construcción de generadores de sistemas. 6. El autor, no considera que la programación gráfica resuelva los problemas inherentes del software ya que como algo abstracto, los sistemas son difíciles de visualizar. 7. No cree en la verificación de programas como algo para aumentar la productividad. 8. Considera a las herramientas y entornos como algo que seguramente aumentará la productividad y fiabilidad del software. 9. La evolución de las estaciones de trabajo, proceso que seguramente se dará, no será algo mágico que proporcione mejoras en los problemas de software. Página 3 de 6 L. S. C. Edgar Darío Ramírez de León [email protected] 2.2. Críticas y aseveraciones respecto al artículo Antes de presentar las críticas y aseveraciones relacionadas con los puntos indicados en las secciones anteriores, restaría destacar tres puntos que por razones estructurales no fueron presentados anteriormente. Estos son: 1. Brooks opina que la adquisición de software a la medida ha cambiado en relación con la compra de paquetes de software generalizados y que este gran cambio se debe a la proporción en costo software/hardware. Hace años, quien compraba una computadora de un millón, consideraba que pagar cien mil para adquirir un programa contable a la medida era viable. No obstante, dado que el costo en hardware se ha reducido, es ahora inviable pagar cien mil cuando un equipo de cómputo cuesta diez mil. 2. Considera al refinamiento de requisitos y desarrollo de prototipos como una técnica importante para el desarrollo de software, no sólo proyectos “pequeños” (ningún proyecto es pequeño realmente), sino también, en grandes proyectos. 3. Critica el hecho que muchas organizaciones se centran en la búsqueda de grandes administradores y, creen que ellos (los administradores) les resolverán todos los problemas. Señala entonces, que no sólo se debe contar con un buen administrador del proyecto, además, debe existir un buen diseñador del mismo, y sus beneficios (equipo, financiamiento, infraestructura, etc.) deben ser los mismos que los del equipo de administración del proyecto. Aunque no existen críticas (personales) en cuanto a lo que Brooks llama esencias y accidentes en la ingeniería de software, y concretamente, en sus productos (software), se detallarán el porqué de la ausencia de críticas en las secciones correspondientes a continuación. Por su parte, en la “búsqueda por la bala de plata” sí se emitirán juicios personales, algunos contrariando las opiniones del autor, otros confirmándolos y añadiendo más argumentos que sostienen las opiniones del autor. 2.2.1. Críticas a las esencias (problemas inherentes del software) Cualquier persona quien haya participado en el desarrollo de un software, estaría de acuerdo con los problemas inherentes del software de los que habla Brooks (complejidad, conformidad, mutabilidad e invisibilidad). Por tanto, en cuanto a las esencias (problemas inherentes del software) de las que trata el ensayo no hay refutación alguna y siguen siendo, hoy en día, temas de investigación. 2.2.2. Críticas de los accidentes (dificultades resueltas en el software) En lo que define Brooks como los avances técnicos “accidentales” que han resuelto algunos problemas de la naturaleza (no inherente) del software, muchas concordaríamos en que los puntos expuestos por el autor, son indudables ya que tratan avances significativos en el desarrollo de software, avances que han marcado una época. Página 4 de 6 L. S. C. Edgar Darío Ramírez de León [email protected] 2.2.3. Críticas en las esperanzas de encontrar la bala de plata (avances técnicos) Las siguientes críticas corresponden a la lista de puntos de la sección 2.1.3. 1. Lo que señala el autor en el punto 1, tuvo relevancia en su momento. Hoy en día, Ada ha dejado de ser un lenguaje en uso, debido principalmente a la existencia de lenguajes de alto nivel más potentes y técnicas de programación orientada a objetos. Sin embargo, no podemos negar que los conceptos de modularidad y demás que introdujo Ada y sus lenguajes contemporáneos fueron fundamentos de los lenguajes y técnicas modernas. 2. La POO ha demostrado, hoy por hoy, ser una técnica poderosa para el desarrollo de software. Por lo que las aseveración de Brooks (punto 2) y muchos estudiantes de los 80’s ha sido atinada. 3. Acuerdo totalmente con el autor sobre el punto 3. Muchas investigaciones se realizan hoy en día en el campo de la IA. No obstante, no creo que las computadoras puedan, algún día resolver problemas de la misma manera en que lo hacemos los humanos. Las computadoras sólo pueden resolver problemas si los humanos las programamos para ello, y un problema en particular. El desarrollo vertiginoso en las tecnologías del ser humano es visto por Monserrat [5] como una “involución crítico fundamental”. La IA no debería escapar de este dictamen. Por ser una disciplina creada por el ser humano, que forma parte del cúmulo de conocimientos generados por el proceso de evolución del mismo ser humano, sería interesante hacer una evaluación de qué tenemos, dónde estamos, hacia dónde vamos y qué queremos de nuestra humanidad. García [6], en “¿Qué inventar? Hacia una “involución crítico fundamental” dice: “La idea sería la de hacer un stop en la evolución, abrir un paréntesis, para volver (involución) críticamente sobre los fundamentos mismos de dicha evolución… El caso es que dicha reflexión crítica se podría hacer sobre muchos aspectos y repercusiones, sociales entre otras, del avance tecnológico…”. Más allá del debate filosófico y social y lo que las repercusiones tecnológicas de ello implica, dudo mucho que la IA sea la disciplina que acabe con los problemas del mundo, del ser humano y por consecuencia, ser la bala de plata para los monstruos de la ingeniería de software. 4. En los puntos 4, 5 y 6 me encuentro totalmente de acuerdo con el autor. 5. Respecto a la verificación de programas, es totalmente cierto que no contribuye en la productividad del desarrollo de software, por el contrario, incrementa la complejidad y disminuye la productividad al requerirse, además del software mismo, técnicas o métodos los verifiquen. 6. En cuanto a las herramientas y entornos (punto 8 de la sección 2.1.3) es, hoy en día un hecho que éstas aumentan la productividad en el desarrollo de software. Página 5 de 6 L. S. C. Edgar Darío Ramírez de León [email protected] 7. Finalmente, lo que Brooks comenta sobre las estaciones de trabajo y cómo estas no proporcionarán alguna mejora en el desarrollo de software no estoy de acuerdo. Por el contrario, se requieren equipos de cómputo acordes con las exigencias de los sistemas actuales, y, mientras más potentes sean los equipos, el desempeño de los sistemas será mejor. 3. Conclusiones y posibles líneas o temas de investigación El ensayo presentado por Brooks, es un reflejo, en su mayor parte (salvo en las criticas personales realizadas en la sección anterior) de la ingeniería de software y sus productos (software). Hoy en día, factores como la complejidad, conformidad, mutabilidad, invisibilidad del software siguen siendo la esencia (problemas inherentes) de los mismos. Tal vez no exista una bala de plata, sino más bien se requiera de balas de plata (en plural) para acabar con los monstruos del software. Es decir, se necesita de la combinación de las técnicas, métodos y disciplinas tecnológicas para atacar de manera eficiente y reducir (muy lejos de acabar) la fortaleza de los monstruos del software. Finalmente, la línea o tema de investigación que sería muy interesante analizar es la “involución crítico fundamental” y que consiste, básicamente en detenernos y no sólo evaluar dónde estamos tecnológicamente hablando, sino también, detenernos para organizarnos y tal vez, empujar todos para una misma dirección. ¿Cuál dirección? Eso no lo sabremos hasta que no lo sometamos a escrutinio. Referencias [1] Brooks, F. P. 1986. No Silver Bullet Essence and Accidents in Software Engineering. Proceedings of the IFIP Tenth World Computing Conference, pp. 10691076, 1986 [2] Ramírez de León, E. D. 2009. Calidad en modelos conceptuales: un análisis multidimensional de modelos cuantitativos basados en la ISO 9126 (Ensayo). http://edario-it.blogspot.com/iso9126 [3] Estrada, C., Oyarzún, M., y Yzerbyt, V. 2007. Teorías implícitas y esencialismo psicológico: herramientas conceptuales para el estudio de las relaciones entre y dentro de los grupos. http://redalyc.uaemex.mx/redalyc/pdf/967/96716109.pdf [4] Molina Cantó, E. 2002. Principio de No-Contradicción y usos del verbo ser en Aristóteles. http://onomazein.net/7/ser.pdf [5] Monserrat, J. 1984. Epistemología Evolutiva y Teoría de la Ciencia. Madrid: Publicaciones de la Universidad Pontificia Comillas. [6] García García, P. E. ¿Qué inventar? Hacia una “involución crítico fundamental”. http://www.uam.es/personal_pdi/psicologia/pei/download0607/pablo_garcia.pdf Página 6 de 6
© Copyright 2024