• No se han encontrado resultados

PresPaperNoSilverBullet.pdf

N/A
N/A
Protected

Academic year: 2020

Share "PresPaperNoSilverBullet.pdf"

Copied!
17
0
0

Texto completo

(1)

No Silver Bullet

Gastón Brito

Mariano Barroumeres

Daniel Sebastian Alvarez Amit Stein

Francisco Roslan

Frederick Brooks, 1986

(2)

Sobre el autor

- Nacido en 1931, North Carolina, USA - Trabajó desde 1956 en IBM, entre otras cosas en el OS/360

- En 1975 publicó el libro “The Mythical Man-Month”

- Turing award en 1999

Contexto de la

publicación (1986)

- UML , UP y Scrum todavía no existían - Crisis del software de los 70 y 80

- En los 80 muchas empresas/organizaciones promovían tecnologías como supuestas

(3)

El desarrollo de software tiene una complejidad única, que impide una solución mágica para las principales dificultades

Idea

principal

Dificultad en el desarrollo de software

Esencial

Definir estructuras conceptuales y su funcionamiento

Accidental

Codificar esas estructuras

El desarrollo de hardware ha mejorado en varios ordenes de magnitud en costo y performance, algo que no se

(4)

Resto de la presentación

- Dificultades esenciales en el desarrollo de software

- Dificultades accidentales

- Potenciales balas de plata (que en realidad no son)

- Ataques prometedores para dificultades esenciales

(5)

Dificultades esenciales

Complejidad En el software no se repiten cosas.

Todo es diferente

Incrementar software no es agregar cosas ya

existentes, sino agregar cosas nuevas e integrarlas

Por su tamaño, el software puede tener muchos estados => es difícil de especificar (problemas de

(6)

Conformidad (arbitrariedad)

Otras áreas de estudio como la física deben enfrentar complejidad, pero esta proviene de leyes naturales, que no son caóticas.

En el software la complejidad proviene de personas con distintas ideas y necesidades.

(7)

Invisibilidad El software es invisible y por lo tanto difícil de representar visualmente

Representaciones geométricas no

capturan en forma efectiva la naturaleza del software y no permiten razonar

correctamente acerca de el

Modificabilidad El software es fácil de modificar a

diferencia de objetos físicos

(8)

Dificultades accidentales

- Inicialmente las preocupaciones estaban en el hardware : que no se queme una válvula, conectar cables, etc

- No había tiempo o

conocimiento para mejorar la programación en si

Entonces se terminaba programando a bajo nivel o con compiladores en donde los nombres de variables solo podían tener una letra.

(9)

Soluciones para dificultades accidentales

Lenguajes programación de alto nivel

MOV DX, Vec MOV CX, 200 Inicio:

MOV [DX], 1 ADD DX, 2 LOOP Inicio

int i = 0;

int vec[200];

while (i < 200) { vec[i] = 1;

i++; }

Permiten concentrase en las entidades abstractas del problema y olvidarse de los detalles de la máquina

Multitarea

Entornos de desarrollo

Evita pausas en el trabajo del programador Unix, por ejemplo provee muchas

(10)

Potenciales balas de plata

ADA y otros avances en lenguajes de alto nivel.

- Modularización.

- Tipos Abstractos de Datos - Jerarquización.

“Es, después de todo, solo otro lenguaje de alto nivel” Elimina las complejidades accidentales de la maquina

Programación orientada a objetos

Tal vez lo mejor que se ha logrado, elimina las dificultades accidentales de la expresión de diseño. Pero no puede

(11)

Inteligencia artificial

La IA que disponemos solo permite resolver problemas muy específicos, que no sirven para el desarrollo de software.

Sistemas expertos

Sistema experto = Motor de inferencia + base de conocimientos

Dada la entrada de un problema intentan encontrar una solución. Podrían ayudar a sugerir interfaces y casos de test.

(12)

Programación automática

Dada una especificación una herramienta genera el código para resolver el problema.

Solo funciona para problemas caracterizados por pocos parámetros. La especificación debe ser determinada.

Programación gráfica

Se ha intentado muchas veces hacer cosas parecidas al diseño de circuitos integrados

Metáfora del asiento del avión. Solo se puede ver pocas cosas a la vez.

(13)

Verificación de programas

Es muy difícil verificar programas grandes y aun con un verificador

perfecto solo se consigue saber que se esta cumpliendo la especificación. Lo mas complicado es llegar a esa

especificación.

Entornos y herramientas

Un buen IDE puede ayudar, pero ya no parece haber mucho por hacer. Como mucho se pueden eliminar los errores sintácticos y algunos semánticos

Workstations El incremento continuo de MIPS no va a

(14)

Ataques prometedores para las dificultades

esenciales

Comprar en lugar de

construir

Solución vendida por empresa U$S 100.000 Mismo costo de un programador durante un año.

En los 60 prácticamente no se reutilizaba nada. En los 80 esto ya era distinto, principalmente porque cambió la

relación de costo hardware/software. Cuando se pagaba U$S 2 millones en una máquina tenía sentido invertir en un programa específico. Paquetes para contabilidad,

inventarios, etc terminaron siendo mas flexibles

Como ejemplo las funciones de una hoja de cálculo antes se escribían en COBOL. Debe desarrollarse un mercado de

(15)

Refinamiento de requerimientos y prototipos

tempranos

Lo peor que puede pasar es no tener bien definido lo que el software debe hacer y encima los clientes no saben lo que quieren.

Son necesarias técnicas que ayuden a obtener requerimientos tempranamente y construir prototipos en forma iterativa

Desarrollo incremental

Dado que no siempre se puede especificar un sistema en forma completa antes de

construirlo, es mejor hacer crecer

iterativamente el producto en lugar de construirlo.

(16)

Mejorar a la gente

Los mejores diseños de software son

hechos por los mejores diseñadores, no por la gente promedio.

Las empresas deben tratar a managers y diseñadores con el mismo status.

(17)

Conclusiones

Queda mucho por investigar en ingeniería de software

El paper fue importante por la discusión acerca del progreso de la ingeniería de software : atacar los problemas

inherentes sin recaer en una moda específica. Además de la descripción de desarrollo ágil.

Puede mejorarse la situación actual, pero no va a ser como la ley de Moore

No creer cosas como “tal metodología es un salto

Referencias

Documento similar

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Separa y escribe en los recuadros las sílabas de cada dibujo y en la línea derecha coloca el nombre de la palabra según el número de sílabas que tienen.. Pronuncia las palabras,

Sin embargo, no se presenta la aplicación del entorno de Google Colaboratory para el entrenamiento de una red neuronal convolucional, a excepción del último artículo descrito el

BUBER'NEUaiAMN, Margarete ¡ Von Potsáam ndch Moskau. SMíionen eines Irftveges. Stuttgart, 1957; Deutsche Verlags-Anstalt, 480 págs... DAHM: Deutsches Reckt. Die geschichüichen

Pero mientras en Europa la democracia igualitaria, heredera del anden- régime, tien- de sle suyo a la centralización del poder, la democracia de los Es- tados Unidos

Consiste en hacer usos de una de las memorias distribuidas de la Zybo por inferencia, con lo cual forzamos el uso de este recurso que tenemos disponible siendo más eficiente que

A partir de este momento los modelos se van a re- petir hasta el siglo XV o incluso más tarde, lo que está indicando que habían llegado a un «ideal sonoro».. LOS INSTRUMENTOS

El criptógrafo de Wheatstone mostrado en la figura. -según un invento de Decius Wadsworth desarrollado en 1817- sigue, básicamente, el mismo algoritmo de cifra que el de