Introducción
Una futura reducción a los costos de software parece ser un poco difícil, ya que a mi parecer podría haber pocos inventos que puedan mejorar la productividad y al mismo tiempo otorgar mayor confianza y simplicidad en el software, como lo hicieron pasados inventos como transistores y circuitos integrados en los componentes electrónicos (hardware) de las computadoras.
Y es que al parecer el progreso del software no es lento, si no que el progreso que se ha hecho en el hardware de la computadora es muy rápido, ha crecido exponencialmente tanto en tecnología como en ganancias, y a reducido sus costos más que cualquier otra tecnología.
Dificultades esenciales
El proceso de creación de Software no es algo sencillo, pienso que la parte difícil es el diseño y estructuración del software, más que la programación. Por eso mismo, apoyo al autor de "No Silver Bullet: Essence and Accidents of Software Engineering", Frederick Brooks, al decir que para eso no puede haber invento que mejore la producción, la complejidad para crear software existirá siempre.
Aunado a la complejidad de esto, se generan dificultades como la comunicación entre miembros de proyectos , fallas y retrasos en el producto, estas dificultades podrían tener solución con equipos mejor estructurados y con mayor organización.
Hablando de la conformidad, pienso que el diseño de las interfaces es un proceso complejo también, ya que cada interfaz debe de conformar tanto como a los ingenieros del producto como al usuario, de nada serviría un programa muy bien estructurado y funcional que tenga una interfaz poco intuitiva y difícil de utilizar. Por ello, gran complejidad viene de la conformación de otras interfaces.
La mutabilidad del software es otros de los procesos que lo hacen complicados, ya los productos necesita mantenerse actualizados para mejorar su funcionamiento, servicio y rendimiento. ¿Cuántas veces no hemos visto nuevas actualizaciones para un SO como Windows?
Avances que resolvieron dificultades accidentales
Los últimos avances que resolvieron dificultades accidentales del software me parece que el más importante es el lenguaje de alto nivel. El lenguaje de alto nivel a venido a revolucionar la forma de programar, así como a facilitar la vida para los programadores e ingenieros en software.
Otro que me parece un gran avance son los entornos de programación unificados, ya que incluyen librerías y bibliotecas que son de gran utilidad para el programador, sin mencionar lo útil que es también la revisión automática de la sintaxis del código. Y la microprogramación que no se queda atrás, que ha venido a optimizar mucho el tiempo de los procesos y mejores rendimientos del CPU.
Esperanzas de plata
Entre las posibles balas de plata para mi, son la inteligencia artificial y la programación automática, estos dos puntos podrían llegar a revolucionar la forma en que se programa actualmente, pero para hacer estos sistemas expertos es necesario reunir a cientos expertos que sean capaces de resolver todo tipo de problemas y concentrar ese conocimiento en un sistema artificial.
Otra de las posibles balas de plata mencionadas por Frederick Brooks es la verificación de software, estoy de acuerdo en que ayudaría en la corrección de errores y así se evitaría tanta mutabilidad de software, pero esta posible bala no terminaría con el problema que es el diseño y estructuración del software que, desde mi punto de vista, es lo más complicado, ni tampoco ayudaría en los procesos de producción, ahorro de tiempo y de materia prima. Con respecto a el desarrollo de nuevas herramientas y de entornos pienso que esto vendrá a beneficiar un poco de el proceso de la producción de software, con editores más inteligentes y más capaces, pero esto no llegará a resolver muchos problemas.
Los ataques prometedores en la esencia conceptual
Uno de los ataques más prometedores para mí es el comprar software en lugar de hacerlo, esto podría ser un punto importante y de mucho apoyo en el desarrollo de software, es impresionante lo que menciona Brooks en su ensayo, el dice que comprar software cuesta aproximadamente lo mismo que lo que cuesta un programador al año. Desde mi punto de vista esto ha sido de gran ayuda para las empresas, y más si hablamos de third-party code, que ha venido a ayudar muchísimo tanto a los que estamos empezando en nuestra carrera de sistemas como a las empresas más grandes a ahorrar dinero y materia prima .
Acerca de requerimientos, refinamiento y la rápida creación de software pienso que es uno de los puntos más importantes, el desarrollo de sistemas que te ayuden a planear y crear prototipos de sistemas será uno de los golpes más duros contra los problemas de esencia. Los sistemas prototipo ayudan muchísimo en la planificación del software y también en el proceso de desarrollo de software y ayudan a realizar la estructura conceptual del problema. Otro de los puntos más importantes me parece que es la inversión para generar grandes diseñadores de software. El diseño es la parte medular de el proceso de desarrollo en el software y es difícil de corregir en el futuro algún error de lógica en el diseño.
Conclusión
Pienso que las llamadas "balas de plata" son una gran opción para mejorar el proceso de desarrollo de software, pero al mismo tiempo pienso que son ideas que tardarán algunos años en desarrollarse de buena forma, por lo tanto tenemos que lidiar con la complejidad que es la producción de software computacional.
Bibliografía
Brooks, Frederick P., "No Silver Bullet: Essence and Accidents of Software Engineering" Computer, Vol. 20, No. 4 (April 1987) pp. 10-19.
No hay comentarios:
Publicar un comentario