ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Informe "No hay balas de plata" - Informática.


Enviado por   •  17 de Noviembre de 2016  •  Apuntes  •  2.876 Palabras (12 Páginas)  •  2.207 Visitas

Página 1 de 12

   

            NO HAY BALAS DE PLATA

         “Esencia y accidentes de la ingeniería de software”

                                   Informe por Eliana Morales

                                              Algoritmos y programación I

        

Índice

  • Introducción………………………………………………………………………………..…. 4

  • Resumen………………………………………………………………………………...……. 4
  • Dificultades esenciales y accidentales. Diferencias………………………….……….….. 7
  • Características de las dificultades esenciales del software……………………….......... 7
  • Conclusiones……………………………………………………………………………….… 8
  • Sobre el autor………………………………………………………………………………… 8
  • Bibliografía…………………………………………………………………………………… . 10

Introducción

El presente informe resume el artículo “No hay balas de plata” a sus conceptos más fundamentales. En este se tratan las diferencias entre el avance del desarrollo de software y hardware y el porqué de éstas. Más adelante se clasificarán las dificultades a la hora de desarrollar software, a su vez las diferenciaremos como esenciales y accidentales y se proporcionarán las características de cada una dadas por su escritor, Frederick Brooks. Conclusiones y desarrollos técnicos que están forjándose como posibles “balas de plata”. Llegando hacia el final de este informe se contará con información del propio autor, sobre el artículo – fecha de publicación, contexto – y aportes que Frederick Brooks ha realizado a la informática.

Resumen

Se comienza con una analogía sobre una leyenda que remite al título del artículo; los hombres lobo. Estos representaban el mayor horror en tiempos antiguos, inclusive un ser amado podía convertirse en un asesino, se decía que se podía acabar con ellos con una bala de plata. En la informática los proyectos de software representan al hombre lobo, en este artículo se abordará cómo los técnicos están en una constante búsqueda de una bala de plata que permita reducir los costes económicos, temporales y de eficiencia de este. El resultado de esta búsqueda dependerá del paso a paso, el esfuerzo y la perseverancia, aceptando no encontrar soluciones a corto plazo.

¿Es necesario que sea difícil? – Dificultades esenciales

En primer lugar, se aclara que no es que el desarrollo de software avanza lentamente, sino que las mejoras de hardware progresan muy rápido y no se pueden esperar cambios de gran magnitud en un período corto de tiempo.

Por otra parte, se deben analizar las dificultades del desarrollo de software para establecer la cantidad de avances que podemos esperar en un horizonte cercano. Siguiendo una línea de pensamiento aristotélica, como en el artículo se indica, podemos dividir estas dificultades en esencia y accidentes.

Frederick Brooks afirma que la esencia es abstracta (algoritmos, tipos de de datos, etc.) y aún así precisa. Aún hoy en día, más allá de los errores de sintaxis, en el desarrollo de software se cometen muchos errores conceptuales que permiten inferir que construir software siempre será difícil y consecuentemente no hay bala de plata.

Los adelantos del pasado se deben a dificultades accidentales

Lenguajes de alto nivel

Los lenguajes de alto nivel mejoraron el desarrollo de software haciendo más amena la comunicación, elimina complejidad extra del programa y elimina la necesidad de constructos de bajo nivel.

Tiempo compartido

Mejoró la productividad. El tiempo en el que una computadora ejecuta programas de forma concurrente son cada vez más breves. Se espera que pase el umbral humano de lo detectable.

Ambientes integrados de Desarrollo de Programas

Mejoraron la productividad y la eficiencia al ofrecer bibliotecas integradas, tubos y filtros, entre otros recursos.

Esperanza de plata

En esta sección se exponen los desarrollos que pueden significar un gran avance hacia una “bala de plata” y se realiza una breve descripción de cada uno.

  • Ada y otros lenguajes de programación de alto nivel: Ada es un lenguaje de        propósito general que surgió en los años ’80. El lenguaje en sí mismo no es la bala de plata, pero si los programadores adoptan este tipo de lenguajes, también adoptarán con ellos técnicas vanguardistas de ingeniería de software.
  • Programación orientada a objetos: la programación orientada a objetos quita dificultad accidental al proceso, pero no hace más que eso, la complejidad del diseño es en sí, esencial.
  • Inteligencia Artificial (IA): Brooks aquí toma una cita de Parnas1 en la cual se especifican dos tipos de IA; IA-1 e IA-2. Se dan los detalles a continuación:
  • IA-1: es el uso de computadoras para resolver problemas que pudieron haberse solucionado la inteligencia humana. El autor se toma la libertad de aclarar que no confía demasiado en el aporte significativo de esta tecnología y en su capacidad de das más que ganancias marginales
  • IA-2 o “Sistemas expertos”: es la parte más avanzada de la IA. Esta tecnología apunta a que la máquina pueda analizar una situación y examinar todas los caminos a tomar, las consecuencias posibles, pueda llegar a conclusiones y poder explicar el razonamiento utilizado, de la misma manera en la que lo hacen los humanos. Una buena aplicación de esta tecnología podría ser la creación de un “consejero” que advierta sobre errores en la programación, que ofrezca soluciones y explique al usuario el motivo de las mismas, entre otras. Pondría al servicio del programador novato el conocimiento de los mejores programadores.
  • Programación automática: la gente se refiere a este término comúnmente para hablar de un programa que se genera automáticamente a partir de establecer las condiciones iniciales. En el texto, Brooks nuevamente se refiere a Parnas2 para aclarar que esto no es más que un lenguaje de altísimo nivel.

    [1], [2]- Parnas, David Lorge (10 de febrero, 1945, Canadá). Pionero de la ingeniería de software.
    Desarrolló el concepto de
    information hiding en programación modular, importante elemento de
    la programación orientada a objetos.
  • Programación gráfica: aplicación de gráfica computacional para el diseño de software. El autor expresa que en su opinión, los diagramas de flujo son una mala representación de la estructura del software, En efecto, el software es difícil de visualizar por cualquier medio.
  • Verificación de programas: la verificación de programas es muy importante para cosas como la seguridad del sistema operativo. De todas maneras, esta tecnología no promete ahorras esfuerzos. La verificación no es solo programas sin errores, sino elaborar una especificación adecuada y consistente.
  • Entornos y herramientas: la mejora de entornos y herramientas de programación permitirá el ahorro de errores sintácticos.
  • Estaciones de trabajo: un incremento en la capacidad, poder y memoria de las estaciones de trabajo mejorará ampliamente la productividad debido a que la creación de programas depende en gran parte de la velocidad.

Ataques prometedores a la esencia conceptual

  • Comprar vs. construir: “La posible solución más radical para construir software es no construir ninguno.” La revolución de la computadora personal creó variedad de mercado para el software. Esto hizo que la nueva medida de productividad sea la cantidad de usuarios satisfechos. Un punto de inflexión fue la relación de coto hardware/software, los programas eran especializados en tareas específicas en grandes y costosas máquinas, pero el abaratamiento del hardware permitió que se pudiera implementar un mismo software para tareas más generales y permitir a los usuarios adaptar sus procesos a él.
  • Refinamiento de requerimientos y prototipado: Brooks comienza diciendo que la parte más difícil de construir es saber qué construir, es muy difícil transmitir un concepto o una idea a un programa con detalles técnicos. Además de eso los usuarios no saben qué es lo que quieren o necesitan. La mejor forma de aproximarse a un producto que le sea de utilidad al cliente es que éstos cooperen con los diseñadores escalonadamente. En resumen; crecer a partir de las bases, no construir nuevamente.
  • Grandes diseñadores: “Los grande diseños vienen de grandes diseñadores. La construcción de software es un proceso creativo”. En estos conceptos se pueden resumir y basar la propuesta de Brooks para estimular el desarrollo de nuevas formas para la formación de grandes diseñadores. Para incentivar la producción de nuevas mentes, el autor, expresa que las empresas deben reconocer a sus grandes diseñadores y darles tanta importancia como a los grandes ejecutivo, ya que a fin de cuentas son ellos los que impulsarán las nuevas ideas y con ello, el crecimiento de la empresa.

 Dificultades esenciales y accidentales. Diferencias

La complejidad es una parte inherente al desarrollo de software, es esencial. Sin embargo, sobre la marcha podemos añadir complejidad al programa complicando su ejecución, a esta la denominaremos complejidad accidental, es decir, que no es una característica propia del software sino que es una dificultad agregada por el mismo programador.
Las dificultades accidentales si bien son un foco de problemas a solucionar, son evitables, se deben a un error humano. Además reducir todas las dificultades accidentales a cero no dará una mejora de orden de magnitud. Brooks expresa que solo se llegara a mejoras importantes atacando la complejidad esencial con una serie de innovaciones que se ocupen de optimizar las características de las dificultades esenciales que enumeraremos en la próxima sección.

...

Descargar como (para miembros actualizados) txt (18 Kb) pdf (182 Kb) docx (18 Kb)
Leer 11 páginas más »
Disponible sólo en Clubensayos.com