no silver bullet
TRANSCRIPT
![Page 1: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/1.jpg)
1
No hay bala de plata: esencia y accidentes de la Ingeniería de Software
M.C. Ricardo QuinteroM.C. Ricardo Quintero
([email protected])([email protected])
1ra Etapa de Capacitación Nacional
![Page 2: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/2.jpg)
2
Reflexiones
El disfrute del oficio Las desgracias del oficio La leyenda del Hombre-lobo Dificultades esenciales y accidentales La esencia del software Conclusiones - ¿Qué podemos
intentar?
![Page 3: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/3.jpg)
3
El disfrute del oficio
Lo divertido de hacer cosas...El placer de que las cosas que hacemos sean útiles a otras
personas
La fascinación de diseñar complejos rompecabezas...
La diversión que conlleva el siempre
aprender...
El disfrute de trabajar con algo tan maleable: el pensamiento
(como los poetas)...
![Page 4: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/4.jpg)
4
El disfrute del oficioLa programación es divertida porque despierta
la creatividad que hay dentro de nosotros, con la cual podemos obtener placeres comunes que tenemos todos los seres
humanos.
![Page 5: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/5.jpg)
5
Las desgracias del oficio
Debe realizarse perfecto
Dependemos de otros
Otra persona nos asigna los objetivos,
recursos y la información necesaria
Diseñar conceptos es divertido, pero construirlos es el trabajo real
Usualmente el producto que se está construyendo se nos vuelve obsoleto antes de terminarlo
![Page 6: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/6.jpg)
6
A pesar de todo ...
Para muchos de nosotros el disfrute sobrepasa a las desgracias y hemos decidido continuar con esta profesión ...
![Page 7: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/7.jpg)
7
La leyenda del “Hombre-lobo”
De todos los monstruos que tenemos como parte del folclore de nuestras pesadillas, ninguno es más
terrorífico que el Hombre-lobo, porque se transforma –
inesperadamente- de lo familiar a lo horrorífico ...
![Page 8: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/8.jpg)
8
La leyenda del “Hombre-lobo”
Para el Hombre-lobo buscamos una bala de plata que pueda -
mágicamente- destruirlo ...o al menos “mandarlo a descansar”
![Page 9: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/9.jpg)
9
Los proyectos de software tienen algo del “Hombre-lobo”...
Al principio son inocentes y hasta parecen factibles (y hasta fáciles) ...
Entregas fuera de tiempo ...
Presupuestos incorrectos ...
y productos inútiles
Pero son capaces de convertirse en
Caracterizados por ...
![Page 10: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/10.jpg)
10
Ley de Brooks - 1986“...there is no single development, in either
technology or management technique, which by itself promises
even one order of magnitud improvement in productivity, in reliability, in simplicitiy within ten
years ...”Frederick P. Brooks
ganador del premio A. M. Turing (ACM) en 1999
(El Premio Nobel de la Computación)
![Page 11: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/11.jpg)
11
Las Dificultades pueden ser Esenciales o Accidentales Esencial: una cualidad fundamental del
software.Constituye o forma parte de la esencia de
algo; es inherente. Accidental: un problema en los métodos
de producción actualesRelativo a una propiedad, factor o atributo
que no es esencial
![Page 12: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/12.jpg)
12
Pero muchas de las dificultades accidentales ya han sido resueltas, por ejemplo...
La dificultad de programar por el bajo nivel de abstracción de los lenguajes ...
Facilitar el acceso al poder de cómputo ...
El uso de múltiples herramientas: ambientes integrados de desarrollo ...
Mucha de la ganancia lograda en productividad de software ha sido consecuencia de eliminar estas barreras artificiales que hacen que las tareas accidentales sean “inordinariamente” difíciles
![Page 13: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/13.jpg)
13
¿Cuánto del esfuerzo realizado por los ingenieros de software es hacia lo accidental y no hacia lo esencial?
“...para que exista una mejora significativa en la productividad,
confiabilidad y simplicidad, el 90% de las dificultades al
desarrollar software deberían ser accidentales (poco
probable) y las técnicas y herramientas deberían buscar
reducirlas al 0% (difícil que ocurra)...”
![Page 14: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/14.jpg)
14
¿Cuál es la esencia del software?
El software es una construcción de conceptos interrelacionados:
Conjuntos de datos
Relaciones entre datos
Algoritmos
Invocación de funciones
Esta esencia es abstracta, en el sentido de que la construcción
conceptual es la misma bajo muchas representaciones diferentes. No obstante es altamente precisa y
ricamente detallada.
![Page 15: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/15.jpg)
15
¿Cuál es la esencia del software?
“...La parte difícil de construir software es la especificación, diseño y prueba de esta construcción conceptual, no la
labor de representarla y probar la fidelidad de esta representación...”
Si esto es verdad, construir software siempre será difícil. De forma
inherente la bala de plata no existe ...
Consideremos entonces las propiedades inherentes de esta esencia irreducible de los sistemas de software:
complejidad, conformidad, maleabilidad e invisibilidad
![Page 16: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/16.jpg)
16
El software es complejo
Porque: No hay dos partes iguales (a menos a nivel superior
al estatuto, si así fuera lo hacemos subrutina). El número de estados del software es mucho mayor
que cualquier otro hardware creado por el hombre. Escalar software no es la repetición de elementos
en un tamaño mayor: es necesario incrementar el número de elementos (y esto se ve afectado por el aumento en la complejidad de la interrelación con los elementos restantes).
![Page 17: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/17.jpg)
17
Por esta complejidad se han generado muchos de los problemas del desarrollo de software
Dificultad de comunicación entre los miembros del equipo... Dificultad de enumerar (mucho menos
entender) todos los posibles estados de un programa (y de ahí viene la falta de confiabilidad)...
Dificultad de invocar funciones complejas, lo cual hace a los programas difíciles de utilizar
![Page 18: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/18.jpg)
18
Por esta complejidad se han generado muchos de los problemas del desarrollo de software
Dificultades de gestión del proyecto
![Page 19: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/19.jpg)
19
Por esta complejidad se han generado muchos de los problemas del desarrollo de softwareEstas dificultades en la gestión de proyectos conllevan al problema de Integridad Conceptual
Muchas catedrales Europeas muestran diferencias en los planes
y el estilo arquitectónico entre partes construidas por diferentes
generaciones y diferentes constructores. Los últimos
intentaron mejorar los diseños de los primeros por moda o gusto
personal ...
La Integridad Conceptual es la consideración más importante en el
diseño de sistemas.
Es mejor tener un sistema que omita ciertas características
fantásticas y mejoras, pero que refleje un conjunto de ideas de
diseño coherente y no un conjunto de ideas brillantes independientes
y no coordinadas
![Page 20: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/20.jpg)
20
ConformidadNo solamente la gente que desarrolla software se enfrenta a la complejidad. Los físicos, por ejemplo se tienen que enfrentar con objetos terriblemente complejos, aún en las partículas fundamentales...
Sin embargo, los físicos fundamentan su labor en una fe firme de que existen principios unificadores que deben encontrarse en cualquier área de su estudio
“Deben existir explicaciones sencillas de la naturaleza, porque Dios no es caprichoso o arbitrario ...”
![Page 21: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/21.jpg)
21
ConformidadMuchas de las veces los sistemas de software llegan después que los sistemas de negocios (estos ya existen). A diferencia de la naturaleza, estos sistemas fueron creados por humanos...
Mucha de la complejidad que debe enfrentar el ingeniero de software es arbitraria, forzada sin ritmo y razón por las instituciones humanas y los sistemas a los cuales las interfaces de la aplicación debe conformarse “Como el sistema suele ser el último
que llega, a él le toca conformarse. Además siempre es visto como lo
más fácil de conformar (sic) ...”
![Page 22: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/22.jpg)
22
Maleabilidad
Los cambios en edificios, automóviles y hardware de computadoras ocurren pero no con la misma frecuencia que el software...
Esto es porque el software encierra funcionalidad y esta es la parte más sujeta a la presión del cambio. A su vez esta funcionalidad está hecha del material más altamente maleable: el pensamiento “Los edificios también se pueden
cambiar, pero los costos son altos y eso impide el cambio
frecuente..”
![Page 23: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/23.jpg)
23
Maleabilidad
Todo software exitoso tiene cambios en dos aspectos principales ...
Conforme el software resulta útil, los usuarios intentan usarlo en nuevos casos en la frontera del dominio (o más allá) inventan nuevos usos para él ...
El software exitoso sobrevive más allá de la vida normal del hardware
![Page 24: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/24.jpg)
24
Invisibilidad
El software es invisible y no visualizable...
Las abstracciones geométricas son poderosas para capturar realidades geométricas, pero la realidad del software es que no está incrustado en el espacio
![Page 25: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/25.jpg)
25
InvisibilidadLa realidad es que los aspectos estructurales son ...
Muy complejos ...
Ocultos ...
Y poseen solamente una vista externa de entrada/salida
![Page 26: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/26.jpg)
26
¿Hay alguna esperanza?Comparemos con la medicina
Se dejó a un lado las soluciones simples y creencias falsas para curar las enfermedades...
Para aplicar un esfuerzo persistente que lentamente logre erradicar las enfermedades
![Page 27: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/27.jpg)
27
¿Hay alguna esperanza?Y comparemos con la química
Se dejó a un lado la alquimia ...
Para invertir muchos años en la comprensión del átomo y después aprender a sintetizar el oro...
¿Podremos aprender algo de estas disciplinas?
![Page 28: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/28.jpg)
28
¡ Sí !“...Un esfuerzo
disciplinado, consistente para desarrollar,
propagar y explotar estas innovaciones, debería llevarnos a una mejora
significativa en orden-de-magnitud. No hay camino de reyes, pero al menos
hay un camino...”
¡Este se parece a mi!
![Page 29: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/29.jpg)
29
¿Qué podemos hacer para tratar de atacar la esencia?
Ningún monto de actividad que se dedique a la expresión
de las construcciones conceptuales de las tareas
puede darnos grandes ganancias en productividad
Se debe entonces considerar atacar la esencia del software, en pocas palabras “la formulación
de las complejas estructuras conceptuales”
![Page 30: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/30.jpg)
30
¿Qué podemos intentar para tratar de atacar la esencia?
Comprar, no construir (reutilizar)...
Refinamiento de requisitos y prototipado rápido ...
Desarrollo incremental (grow don’t build)...
Más entrenamiento en SE y nutrirse de los grandes
![Page 31: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/31.jpg)
31
Algunas referencias
Parnas, D.L. “Designing software for ease of extention and contraction”, IEEE Trans. on SE, 5,2 (March, 1979), pp. 128-138
Parnas, D.L. “Software aspects of strategic defense systems”, Communications of the ACM, 28, 12 (De. 1985). Pp. 1326-1335.
Boehm, B.W., “A spiral model of software development and enhancement”, Computer, 20, 5 (May, 1985).
![Page 32: No Silver Bullet](https://reader033.vdocuments.site/reader033/viewer/2022052504/55492629b4c90547498bc28a/html5/thumbnails/32.jpg)
32